iptablesルールが期待どおりに機能しない

iptablesルールが期待どおりに機能しない

このルールを正しく機能させることはできません。

私のインターフェース:

#WAN
auto wan0
iface wan0 inet dhcp

#LAN
auto lan0.7
iface lan0.7 inet static
    address 172.17.7.1
    netmask 255.255.255.0
    vlan-raw-device lan0

#DMZ
auto lan0.17
iface lan0.17 inet static
    address 172.17.17.1
    netmask 255.255.255.0
    vlan-raw-device lan0

問題のあるiptablesルールは次のとおりです。

iptables -A FORWARD -i lan0.17 -o lan0.7 -j DROP

ここでの目標は、DMZ トラフィックが LAN に流れるのを防ぐことですが、その逆ではありません。上記のルールはLANをDMZに切り替えることもあります。私がここで何を間違っているのか?

出力iptables -nvL

Chain INPUT (policy ACCEPT 578 packets, 70339 bytes)
 pkts bytes target     prot opt in     out     source               destination                                                                                                                                                                                                                                              

Chain FORWARD (policy ACCEPT 2062 packets, 173K bytes)
 pkts bytes target     prot opt in     out     source               destination                                                                                                                                                                                                                                              
  164 13776 DROP       0    --  lan0.17 lan0.7  0.0.0.0/0            0.0.0.0/0                                                                                                                                                                                                                                               

Chain OUTPUT (policy ACCEPT 402 packets, 33334 bytes)
 pkts bytes target     prot opt in     out     source               destination

答え1

トラフィックは、特にTCPの場合は双方向です。 lan0.7からlan0.17へのトラフィックを取得するにはlan0.17からlan0.7への応答トラフィックを取得するには、最初の応答:SYN / ACKで開始して許可する必要があります。それ以外の場合は通信を続行できません。 (LANクライアントはSYN-SENT状態を持ち、DMZサーバーはSYN-RECV状態を持ちます)国の規則お問い合わせネットフィルタ接続追跡(システムから見たすべてのフロー状態の追跡)応答トラフィック(およびICMPエラーなどの関連トラフィック)が最初に許可されます。残りは応答トラフィックではありません。必要に応じてフィルタリングします。たとえば、lan0.17からlan0.7に応答しないトラフィックを削除します(以前のルールで許可されています)。

iptables -A FORWARD -i lan0.17 -o lan0.7 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i lan0.17 -o lan0.7 -j DROP

実際、conntrackステータスルールをさらにフィルタリングする理由はありません。これは複数の同時状況で使用でき、1つのルールですべての状況を処理できます。したがって、どのインターフェイスに適用されるかを明記しないでください。

iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i lan0.17 -o lan0.7 -j DROP

関連情報