iptables、サブネットルールはIPルールよりも優先されます。

iptables、サブネットルールはIPルールよりも優先されます。

宛先があるサブネット上のすべてのパケットが必要ですDROPが、特定の宛先()へのアクセスのみを許可したいと思います。192.168.112.0/24192.168.112.0/24192.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.253192.168.112.0/24

-I FORWARD -s 192.168.112.253 -d 192.168.112.0/24 -j ACCEPT

これら2つのルールは、含まれているルールの前(つまり後ろ)ACCEPTに配置する必要があります。つまり、「許可リスト」に追加するトラフィックは、そのルールによって処理されます。したがって、最初に一致すると、ルールは適用されません。-IDROP192.168.112.0/24192.168.112.253ACCEPT

しかし、2つのルール自体の順序はACCEPT互いに「重なっていない」ので、重要ではありません。

ところで、ここでとるアプローチには2つの注意事項があります。まず、ご覧のとおり、ACCEPT各トラフィック「ペア」には2つの()ルールが必要です。第二に、192.168.112.253192.168.112.0/24

通常、すべての応答トラフィックを許可する次の「状態保存」ルールがあります。

-I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

(正確に言えば、ESTABLISHED接続を開始する最初のトラフィックを除いて、双方向トラフィックは次の状態を持ちます。ポート番号のペアが交換されるだけでなく、元のトラフィックとは異なる識別された特定のRELATED応答トラフィックにも使用されます。,トラフィックが同時に両方の状態にない場合でも、「AFAIK」かっこ内の情報を考慮してください。

関連情報