web-dev-qa-db-ja.com

Haproxy用のiptablesの設定

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ルールがありませんか?

2
invulnarable27

あなたが言ったように、あなたはデフォルトのチェーンポリシーを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つにのみヒットします。」

はい、その通りです。パケットがヒットします:

  1. INPUTローカルマシン宛てのチェーン。
  2. OUTPUTチェーン(ローカルマシンから発信された場合)。
  3. それ以外の場合はFORWARDチェーン(別のマシンから受信し、他のマシンに転送する必要があります)。
2
Khaled