IPTABLESは、サブネット内のすべてのトラフィックをプロキシに透過的にルーティングします。

IPTABLESは、サブネット内のすべてのトラフィックをプロキシに透過的にルーティングします。

192.168.255.0 と 172.16.255.0 の間にファイアウォールがあります。どちらも /24 です。192.168.255.0 は、172.16.255.5:8080 のプロキシ サーバーに DNAT されます。これを継続したいのですが、テスト用に直接接続したい Web サーバー 172.16.255.50 があります。このステートメントを試しましたが、追加しようとすると iptables でエラーが発生し続けます。

iptables -I PREROUTING -i eth1 -d \! 172.16.255.50 -p tcp --dport 80 -j DNAT --to-destination 172.16.255.5:8080

ありがとう!!

答え1

ここでは2つの問題があります

  1. を省略したため、テーブル内の存在しないチェーン-t natに追加しようとしています。PREROUTINGfilter
  2. 「not」(!)は の前に置く必要があります-d

実用的な解決策:

iptables -t nat -I PREROUTING -i eth1 \! -d 172.16.255.50 -p tcp --dport 80 -j DNAT --to-destination 172.16.255.5:8080


あるいは、このようなことを実行する別の方法として、例外トラフィックに一致して何もしないルールをその前に配置する方法があります。Iptables は、最初に一致するルールに到達すると停止するため、後のルールには到達しません。

iptables -t nat -A PREROUTING -i eth1 -d 172.16.255.50 -p tcp --dport 80
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination 172.16.255.5:8080

関連情報