Как часть моей работы, я должен быть осведомлен о доступности сервера в корпоративной сети моего клиента. Просто чтобы усложнить мою жизнь, вся их сеть скрыта за парой шлюзовых машин (для этого мы можем просто притвориться, что есть только одна машина) под управлением FreeBSD 7.1-PRERELEASE (нет, я понятия не имею, почему они используют старую версию). , предварительная версия, версия).
К сожалению, варианты BSD запускают PF, и мои навыки PF довольно ограничены, поэтому я попытался адаптировать примеры здесь: http://home.nuug.no/~peter/pf/en/rdr2servers.html к моей ситуации и сделал следующие правила:
(Обратите внимание, порт NRPE - 5666, а буквы X в IP-адресах просто скрывают реальные IP-адреса)
rdr в $ ext_if inet proto tcp с любого порта на $ ext_if 5666 -> 192.168.X.X
передать протокол proto tcp с любого на порт 1966.168.X.X 5666 флагов S / SA, состояние синтаксиса
Попытки подключиться к демону NRPE в 192.168.X.X: 5666 приводят к тайм-ауту.
Я подтвердил, что порт 5666 доступен с компьютера шлюза (nmap -p5666 192.168.X.X) и что по крайней мере что-то там существует (nc 192.168.X.X 5666). Я также подтвердил, что NRPE правильно работает на отслеживаемой машине (используя nrpe_check -H localhost) и что всем хостам разрешено общаться с демоном NRPE (через nrpe.cfg).
Может кто-нибудь помочь мне переписать мои правила PF, чтобы заставить это работать? Для справки, их системный администратор написал следующие правила PF (которые также не работали):
rdr передает $ ext_if inet proto tcp с любого порта на $ ext_if 5666 -> 192.168.X.X
раздать на $ int_if inet proto tcp с любого порта 192.168.X.X 5666