Haproxy の iptables の設定

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 ルールが不足していますか?

答え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 つにのみヒットします。」

はい、その通りです。パケットは次のようになります:

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

関連情報