
2 つのネットワーク カードを備えた haproxy を実行している Ubuntu マシン。1 つは WAN (wan0 と呼ばれる) に接続され、もう 1 つは LAN (lan0 と呼ばれる) に接続されています。すべてのチェーンは DROP トラフィックに設定されています。
# Masquerade traffic from LAN to WAN
-A POSTROUTING -o wan0 -s 192.168.x.x/24 -j MASQUERADE
# Allow traffic from LAN to WAN
iptables -I FORWARD -i lan0 -o wan0 -j ACCEPT
# Allow HTTP traffic in/out both interfaces
-A INPUT -p tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp --sport 80 -j ACCEPT
*** Is below rule needed? ***
# -A FORWARD -i wan0 -o lan0 -p tcp –dport 80 -j ACCEPT
WAN から LAN への HTTP (ポート 80) トラフィックを許可し、haproxy がそれをバックエンド サーバーにルーティングするようにしたいと考えています。私が読んだドキュメントには次のように書かれています。
「INPUT、FORWARD、OUTPUT は別々です。パケットは 3 つのチェーンのうちの 1 つにのみヒットします。」
インターフェース間で HTTP (ポート 80) トラフィックをルーティングする iptable ルールが不足していますか?
答え1
おっしゃるとおり、デフォルトのチェーン ポリシーは に設定されています。したがって、許可するトラフィックの種類ごとにDROP
明示的にルールを設定する必要があります。ACCEPT
lan0
次のルールは、インターフェイスから来てインターフェイスから出て行くトラフィックがボックスを通過することを許可しますwan0
。
iptables -I FORWARD -i lan0 -o wan0 -j ACCEPT
また、次のようなルールを使用して、RELATED や ESTABLISHED などの他の種類のトラフィックを許可することをお勧めします。
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
これは、応答トラフィックを通過させるために必要です。INPUT
およびOUTPUT
チェーンについても同様に行います。
それは本当にあなたのニーズと、何を許可し、何を拒否したいかによって決まります。
次の文について:
「INPUT、FORWARD、OUTPUT は別々です。パケットは 3 つのチェーンのうちの 1 つにのみヒットします。」
はい、その通りです。パケットは次のようになります:
INPUT
ローカル マシン宛ての場合はチェーンになります。OUTPUT
ローカル マシンから発信された場合のチェーン。FORWARD
それ以外の場合はチェーンします (別のマシンから受信され、別のマシンに転送する必要があります)。