Добрый день!Перелазил кучу форумов и вроде как должно работать, а у меня не работает.
Ситуация такая. Поднял на MS VirtualPC FreeBSD 8.0Пытаюсь настроить pf чтобы заменить в дальнейшем существующий фаервол.
Соответственно интерфейсы все локальные, IP тоже.pf.conf
ext_if = "de0"
ext_ip="192.168.5.11"#нат работает
nat on $ext_if from $int_net to any -> ($ext_if)#а редирект нет
rdr pass on $ext_if proto tcp from any to $ext_if port 443 -> 192.168.0.2 port 443
rdr pass on $ext_if proto tcp from any to $ext_if port 80 -> 192.168.0.2 port 1080pass quick all
Может такое в моей ситуации и не должно работать?
ifconfig FreeBSD
de0 192.168.5.11
de1 192.168.0.245
gate 192.168.5.10ipconfig локальной ВинХП (эмуляция доступа снаружи)
192.168.5.55
gate 192.168.5.11пытаюсь подключиться браузером на https://192.168.5.11 и на http://192.168.5.11 и ничего не получается
если на локальной машине ВинХП (эмуляция доступа изнутри)
192.168.0.201
gate 192.168.0.245
то доступ в интернет естьпинги отовсюду проходят.
пытался отловить на каком месте затык через tcpdump, но в нем тишина, т.к. для редиректа не знаю как логирование настроить.Я подозреваю, что возможно проблема в том, что это все на виртуальной машине крутится на одном физическом интерфейсе?
интересно. нашел на openbsd и вот с такими правилами заработал редиректnat on $int_if from $int_net to any -> ($int_if)
rdr on $int_if proto tcp from any to $int_if port 443 -> 192.168.0.2 port 443
rdr on $int_if proto tcp from any to $int_if port 80 -> 192.168.0.2 port 1080Локальная ВинХП
192.168.0.201
gate 192.168.0.245тогда при подключении https://192.168.0.245 и на http://192.168.0.245 всё отлично.
Буду разбираться почему не работает с внешними интерфейсами.
Похоже разобрался.
При тестировании доступа снаружиВот это правило
>nat on $ext_if from $int_net to any -> ($ext_if)Разрешало НАТ только для локальной сети.
и когда попробовал изнутри редирект, то всё заработалоА как тогда прописать правило чтобы снаружи редирект работал?
>nat on $ext_if from any to any port 443 -> ($ext_if)
Как-то так что-ли?
>А как тогда прописать правило чтобы снаружи редирект работал?
>
>>nat on $ext_if from any to any port 443 -> ($ext_if)
>у меня так
rdr pass on $ext_if proto {tcp,udp} to $my_addr port 27015 -> 192.168.22.33почему ты для редиректа используешь nat?
>
>>А как тогда прописать правило чтобы снаружи редирект работал?
>>
>>>nat on $ext_if from any to any port 443 -> ($ext_if)
>>
>
>у меня так
>rdr pass on $ext_if proto {tcp,udp} to $my_addr port 27015 -> 192.168.22.33
>
>почему ты для редиректа используешь nat?Вообще я НАТ хотел использовать, для доступа в интернет, но т.к. что-то не заработало в первоначальной конфигурации, начал пробовать разные вариации.
С PF разбираюсь только третий день, а c IPFW работал 3 года назад. :)
>Вообще я НАТ хотел использовать, для доступа в интернет, но т.к. что-то
>не заработало в первоначальной конфигурации, начал пробовать разные вариации.
>С PF разбираюсь только третий день, а c IPFW работал 3 года
>назад. :)посмотри живие конфиги http://wiki.zeynalov.com/vagif:docs:freebsd:pf
а вообще есть родная документация http://www.openbsd.org/faq/pf/index.html
>>Вообще я НАТ хотел использовать, для доступа в интернет, но т.к. что-то
>>не заработало в первоначальной конфигурации, начал пробовать разные вариации.
>>С PF разбираюсь только третий день, а c IPFW работал 3 года
>>назад. :)
>
>посмотри живие конфиги http://wiki.zeynalov.com/vagif:docs:freebsd:pf
>а вообще есть родная документация http://www.openbsd.org/faq/pf/index.htmlДа пересмотрел не один конфиг уже и книжку вот эту почитал (раздел про НАТ)
http://www.bsd.md/BSDA/BSDCert/BSDA-course/apcs02.html#pf-pf...Вот у всех правило вот так пишется, как я писал в первом посте
># NAT
>nat on $ext_if from $int_net to any -> ($ext_if)
>rdr on $ext_if proto {udp} to $my_addr port 5060 -> 192.168.22.101у меня так почему-то не работает, а работает только если прописать НАТ правило вот так
>nat on $ext_if from any to any -> ($ext_if)
Мне не нравится "from any"
Может конечно это из-за того что на виртуальной машине всё это хозяйство. Нет возможности протестировать на реальном железе.
Родная документация, кстати есть на русском http://www.openbsd.org/faq/pf/ru/
У меня вот так работает
nat on $ext_if from $nat_user to any -> $ext_if
>ext_if = "de0"
>ext_ip="192.168.5.11"
>
>#а редирект нет
>rdr pass on $ext_if proto tcp from any to $ext_if port 443 -> 192.168.0.2 port 443
>rdr pass on $ext_if proto tcp from any to $ext_if port 80 -> 192.168.0.2 port 1080
>у тебя тут ошибка, надо не "to $ext_if", а "to $ext_ip", то есть
rdr pass on $ext_if proto tcp from any to $ext_ip port 443 -> 192.168.0.2 port 443
rdr pass on $ext_if proto tcp from any to $ext_ip port 80 -> 192.168.0.2 port 1080на русский это переводится так:
повесить правило на внешнюю карту, для tcp пакатов, который приходят откуда угодно, НО НА МОЙ IP АДРЕС, и на такой-то порт - вот их то и перекидывать на такой-то внутренний IP адрес и такой порт.а ты не указал точный адрес, который надо мониторить...
хотя по мне, то могли бы и сделать, чтобы и по все карте смотрело...
>у тебя тут ошибка, надо не "to $ext_if", а "to $ext_ip", то
>есть
>rdr pass on $ext_if proto tcp from any to $ext_ip port 443 -> 192.168.0.2 port 443Здесь нет ошибки, можно и так, и так указывать, если указать интерфейс, то будут браться ИП адреса из rc.conf кажется
В любом случае при просмотре правил НАТ pfctl -sn поле $ext_if заменяется на IP адрес
В общем всем спасибо!Понятно, что правила примерно правильные как и в книжках.
Буду разбираться дальше.
интересно получается. редирект без НАТ совсем не работаетпопробовал настроить редирект из локальной сети.
>ext_if = "de0"
>int_if = "de1"
>ext_ip="192.168.5.11"
>int_ip="192.168.0.245"
>int_net="192.168.0.0/24"
>почтовый сервер 1ая сетевая 192.168.0.2, вторая сетевая 192.168.5.2
>клиент 192.168.0.201
>шлюз 192.168.0.245nat on $ext_if from $int_net to any port -> ($ext_if)
вот такой редирект не работает
rdr on $int_if proto tcp from $int_net to $int_ip port 443 -> 192.168.0.2 port 443
https://192.168.0.245а вот такой работает
rdr on $int_if proto tcp from $int_net to $int_ip port 443 -> 192.168.5.2 port 443
https://192.168.0.245Так же с клиента почтовый сервер
отвечает по https://192.168.0.2 и отвечат по https://192.168.5.2Почему не редиректится на ИП во внутренней подсети, а только на ИП внешней подсети?