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

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

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

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

«ВХОД, ПЕРЕДАЧА и ВЫХОД — это отдельные процессы. Пакет попадет только в одну из трех цепей».

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

решение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цепочек.

Это действительно зависит от ваших потребностей и от того, что вы хотите разрешить, а что запретить.

Что касается предложения:

«ВХОД, ПЕРЕСЫЛКА и ВЫХОД — это отдельные процессы. Пакет попадет только в одну из трех цепей».

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

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

Связанный контент