Правила iptables для lvs, использующих пиранью
Я пытаюсь создать систему lvs, где 202.141.81.239 - это виртуальный IP, а 202.141.81.241 и 202.141.81.242 - маршрутизаторы lvs. Эта система работает нормально в нашей интрасети, но не через Интернет.
Ниже приведена моя конфигурация iptables
# Generated by iptables-save v1.4.7 on Tue Mar 25 12:30:26 2014
*mangle
:PREROUTING ACCEPT [96:9901]
:INPUT ACCEPT [65:5340]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [48:3348]
:POSTROUTING ACCEPT [48:3348]
-A PREROUTING -d 202.141.81.239/32 -p tcp -m tcp --dport 80 -j MARK --set-xmark 0x50/0xffffffff
COMMIT
# Completed on Tue Mar 25 12:30:26 2014
1 ответ
Довольно сложно понять, что здесь происходит с этой информацией, но это зависит от настроенного метода маршрутизации (NAT или Direct).
Например, если вы используете прямой метод, вы должны настроить iptables следующим образом. (Источник). На каждом РЕАЛЬНОМ СЕРВЕРЕ:
iptables -t nat -A PREROUTING -p <tcp|udp> -d <vip> --dport <port> -j REDIRECT
Если он работает из внутренней сети, но не из внешней, но серверы используют общедоступные IP-адреса вместо частных, фактически, это может быть проблемой брандмауэра (у вас есть другой брандмауэр, защищающий ваши серверы?). Если нет, просмотрите iptables для всех ваших серверов (маршрутизаторы LVS и реальные серверы).
Хорошей идеей может быть также отключение iptables и двойная проверка (из внутренней и внешней сети) только для того, чтобы увидеть, что происходит. Может быть, вы используете arptables_jf вместо iptables, чтобы разрешить перенаправление...
Если это все еще не работает, вы можете попробовать использовать таблицы ARP вместо iptables для прямого метода (если вы на самом деле используете этот метод).