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ルールがありませんか?
あなたが言ったように、あなたはデフォルトのチェーンポリシーを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
チェーン(別のマシンから受信し、他のマシンに転送する必要があります)。