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

iptables REDIRECT scope

Мы запускаем веб-приложение через непривилегированного пользователя на непривилегированных портах. Сценарий запуска выполняется от имени root исключительно для установки правил iptables REDIRECT, затем отбрасывает привилегии и запускает приложение.

Я пытаюсь контролировать это веб-приложение с помощью NAGIOS, но плагин "check_http" по умолчанию, поставляемый в nagios-plugins, не может подключиться к веб-серверу через порт 80. NAGIOS работает на том же хосте, что и веб-приложение.

Я хочу контролировать порт 80, потому что именно так пользователи будут подключаться, поэтому я хочу убедиться, что он перенаправляется адекватно и т. Д.

Конфигурация NAGIOS определяет адрес хоста как частный IP-адрес eth0. Запуск сценария check_http для этого IP-адреса дает:

# libexec/check_http -H 192.168.20.15
В соединении отказано
HTTP CRITICAL - Невозможно открыть сокет TCP

Однако, если я укажу адрес обратной связи локально, это сработает.

# libexec/check_http -H localhost
HTTP OK: HTTP/1.1 200 OK - 8007 bytes in 0.035 second response time|time=0.034517s;;;0.000000 size=8007B;;;0

Подключения от других хостов к порту 80 на этом сервере веб-приложений работают нормально. Но я хочу понять, почему я не могу локально отслеживать его на 80-м порту через eth0 в отличие от lo.

Наши правила iptables пусты, за исключением таблицы nat:

* нац
: PREROUTING ACCEPT [2036: 252802]
: ПРИНЯТЬ РАЗВИТИЕ [478669: 34376409]
: OUTPUT ACCEPT [475605: 34192517]
-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 7999
-A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 7998
-A ВЫХОД -d 127.0.0.1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 7999
-A ВЫХОД -d 127.0.0.1 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 7998
COMMIT

Ой, подожди. Без шуток, это работает, потому что -A OUTPUT линии, отправляющие трафик в порты назначения. Я предполагаю, что это означает, что решение здесь состоит в том, чтобы добавить две дополнительные строки ВЫХОДА для eth0 интерфейс в -d.

Это означает, что продублируйте строки, содержащие 127.0.0.1, и замените этот адрес на 192.168.20.15.

Без шуток...