
質問
iptable ルールで次の条件を使用した場合、どのような効果がありますか? 自分を対象とした接続を指定するのと同じですか?
! -d 127.0.0.0/8 -p tcp -m addrtype --dst-type LOCAL
背景
具体的には、ホスト上のポート (パブリック IP、たとえば 150.200.30.40) を LXC コンテナーの 1 つ (IP 10.0.3.202) にリダイレクトするために使用しています。これらの 2 つのルールは、ホストのパブリック IP アドレスでアドレス指定されたトラフィックに対して同等であるように見えます。
## IPTABLE RULE FOR INCOMING CONNECTIONS??
iptables -t nat -A PREROUTING ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -p tcp --dport 2222 -j DNAT --to-destination 10.0.3.202:22
## EQUIVALENT RULE?? (for connections directed at 150.200.30.40)
iptables -t nat -A PREROUTING -d 150.200.30.40 -p tcp --dport 2222 -j DNAT --to-destination 10.0.3.202:22
答え1
これら 2 つが同一ではない場合があります。その理由は次のとおりです (ここではプロトコルやポートなどの他の一致については説明しません)。
- 最初のルールは、パケットがローカル アドレス (127.0.0.0 の範囲を含まない) 宛てである場合に一致します。
- 2 番目のルールは、パケットが特定の IP アドレス (前述のようにこのマシンに割り当てられている) 宛てである場合に一致します。
このマシンに割り当てられているアドレスが 150.200.30.40 のみである場合、これらは同一になります。両方とも、127.0.0.0 の範囲に一致しないローカル アドレス宛てのパケットと一致します。
前述のパブリック IP 以外のインターフェイスに少なくとも 1 つのアドレスが割り当てられている場合 (もちろん、特別なプライベート範囲 127.0.0.0 は除く)、それらは異なります。
記載されているパブリック IP がこのマシンに割り当てられていない場合、それらは確実に異なります。