宛先があるサブネット上のすべてのパケットが必要ですDROP
が、特定の宛先()へのアクセスのみを許可したいと思います。192.168.112.0/24
192.168.112.0/24
192.168.112.253
私は次の規則を使用しています。最初の(DROP
)ルールは期待どおりに機能し、すべてのパケットを破棄しますが、2番目の(ACCEPT
)ルールは特定の宛先へのパケットの通過を許可しません。
iptables -I FORWARD -s 192.168.112.0/24 -d 192.168.112.0/24 -j DROP
iptables -I FORWARD -s 192.168.112.0/24 -d 192.168.112.253 -j ACCEPT
ACCEPT
最初のルール()が無視される理由はありますか?
答え1
問題を再現できません。
ここに所有者がいます172.17.0.2/16
。最初は192.168.1.0/24
ネットワーク上のすべてのホストに到達できます。
/ # ping -c1 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: seq=0 ttl=63 time=0.350 ms
--- 192.168.1.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.350/0.350/0.350 ms
/ # ping -c1 192.168.1.6
PING 192.168.1.6 (192.168.1.6): 56 data bytes
64 bytes from 192.168.1.6: seq=0 ttl=63 time=6.690 ms
--- 192.168.1.6 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 6.690/6.690/6.690 ms
中間ルータに次のルールを追加する場合:
iptables -I FORWARD -s 172.17.0.0/16 -d 192.168.1.0/24 -j DROP
192.168.1.0/24
これにより、このホストはネットワーク上のどのホストにも接続できなくなります。
/ # ping -c1 192.118.1.1
PING 192.118.1.1 (192.118.1.1): 51 data bytes
--- 192.118.1.1 ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss
ただし、適切なルールを追加すると、次のようになりますACCEPT
。
iptables -I FORWARD -s 172.17.0.0/16 -d 192.168.1.1 -j ACCEPT
その後、次の接続を復元しました192.168.1.1
。
/ # ping -c1 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: seq=0 ttl=63 time=0.484 ms
--- 192.168.1.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.484/0.484/0.484 ms
ネットワーク上の他のホストへの接続が192.168.1.0/24
ブロックされ続ける場合:
/ # ping -c1 192.168.1.6
PING 192.168.1.6 (192.168.1.6): 56 data bytes
--- 192.168.1.6 ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss
これら2つのルールを追加すると、FORWARD
チェーンは次のようになります。
# iptables -S FORWARD
-P FORWARD ACCEPT
-A FORWARD -s 172.17.0.0/16 -d 192.168.1.1/32 -j ACCEPT
-A FORWARD -s 172.17.0.0/16 -d 192.168.1.0/24 -j DROP
答え2
ACCEPT
あなたが見逃した最も重要なことは、次の回答を許可するルールも必要であることです。192.168.112.253
192.168.112.0/24
-I FORWARD -s 192.168.112.253 -d 192.168.112.0/24 -j ACCEPT
これら2つのルールは、含まれているルールの前(つまり後ろ)ACCEPT
に配置する必要があります。つまり、「許可リスト」に追加するトラフィックは、そのルールによって処理されます。したがって、最初に一致すると、ルールは適用されません。-I
DROP
192.168.112.0/24
192.168.112.253
ACCEPT
しかし、2つのルール自体の順序はACCEPT
互いに「重なっていない」ので、重要ではありません。
ところで、ここでとるアプローチには2つの注意事項があります。まず、ご覧のとおり、ACCEPT
各トラフィック「ペア」には2つの()ルールが必要です。第二に、192.168.112.253
。192.168.112.0/24
通常、すべての応答トラフィックを許可する次の「状態保存」ルールがあります。
-I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
(正確に言えば、ESTABLISHED
接続を開始する最初のトラフィックを除いて、双方向トラフィックは次の状態を持ちます。ポート番号のペアが交換されるだけでなく、元のトラフィックとは異なる識別された特定のRELATED
応答トラフィックにも使用されます。,
トラフィックが同時に両方の状態にない場合でも、「AFAIK」かっこ内の情報を考慮してください。