iptables はホスト自体の他の IP への転送をブロックしません。

iptables はホスト自体の他の IP への転送をブロックしません。

ゲートウェイとして使用されるホストがあります。

net.ipv4.conf.all.rp_filter=0

代わりに使用される iptables rpfilter

iptables -t raw -A PREROUTING -m rpfilter --invert -j LOG-DROP-RP

私のホストには、IP 10.0.0.1/8のeth1とIP 192.168.0.1/16のeth2インターフェイスが2つあります。1破棄され記録されたパケットを送信します。転送テーブルは、eth1 と eth2 間のパケット転送もブロックします。1ethの場合は192.168.0.22転送ルールによってブロックされ記録されます。

ただし、ethでIP 10.0.0.2を持つホストの場合1192.168.0.1にパケットを送信すると、rpfilterは転送テーブルも無視するようです。

これを防ぐにはどうすればよいですか?これは、プライベートサービスがリスニングするプライベートインターフェイスeth3を持つ可能性があり、不要な場所にアクセスできるためです。

答え1

Linuxは弱いものを使うホストモデル:すべてのインターフェイスに割り当てられたIPアドレスは、全体としてホストに属します。 10.0.0.2から192.168.0.1に達すると、宛先アドレスがホストに属するため、転送は不要です。パケットはフィルタ/INPUTによって処理されません。 by filter/FORWARD (したがって、このパケットについては評価されません) パケット移動の詳細な回路図を見つけることができます。そこ

これはルーティング以上ではないためトリガされません。厳格なリバースパスの転送ルーティングスタックまたはiptables'Srpfilter基準寸法。

したがって、それをIPアドレスに追加するには明示的なルールを追加する必要があります。生のテーブル、住所タイプ一致は、宛先がローカルであるか(またはブロードキャストであるか)確認するために機能します。 SRPFテストの後、次の規則を追加できます(ただし、.1 IPアドレスではなく複数のIPアドレスがホストに割り当てられている場合は機能します)。

iptables -t raw -A PREROUTING -s 10.0.0.0/8 ! -d 10.0.0.0/8 -m addrtype --dst-type LOCAL,BROADCAST -j DROP
iptables -t raw -A PREROUTING -s 192.168.0.0/16 ! -d 192.168.0.0/16 -m addrtype --dst-type LOCAL,BROADCAST -j DROP

わからないiptables使用している特定のアドレスに関連する詳細を含まない一般的な規則を追加する方法は次のとおりです。nftables:

# drop packets to address not configured on incoming interface
filter prerouting fib daddr . iif type != { local, broadcast, multicast } drop

関連情報