Назад | Перейти на главную страницу

Настройка iptables для Haproxy

На машине Ubuntu работает haproxy с двумя сетевыми картами, одна из которых подключена к WAN (называется wan0), а другая подключена к локальной сети (называется 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

Я хочу разрешить трафик HTTP (порт 80) из WAN в локальную сеть, где haproxy будет направлять его на серверные серверы. В документации, которую я прочитал, говорится:

«INPUT, FORWARD и OUTPUT являются отдельными. Пакет попадет только в одну из трех цепочек».

Мне не хватает каких-либо правил iptable, которые перенаправляли бы трафик HTTP (порт 80) между интерфейсами?

Как вы сказали, у вас есть политика цепочки по умолчанию, установленная на 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 являются отдельными. Пакет попадет только в одну из трех цепочек».

Да, это правда. Пакет попадет:

  1. INPUT цепочка, когда она предназначена для локальной машины.
  2. OUTPUT цепочка, если она исходит от локальной машины.
  3. FORWARD в противном случае цепочка (получена с другой машины и должна быть перенаправлена ​​на другую машину).