URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 4438
[ Назад ]

Исходное сообщение
"очередной pf + rdr вопрос."

Отправлено srw , 02-Дек-09 16:42 
Добрый день!

   Перелазил кучу форумов и вроде как должно работать, а у меня не работает.
Ситуация такая. Поднял на 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 1080

pass quick all

Может такое в моей ситуации и не должно работать?
ifconfig FreeBSD
de0 192.168.5.11
de1 192.168.0.245
gate 192.168.5.10

ipconfig локальной ВинХП (эмуляция доступа снаружи)
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, но в нем тишина, т.к. для редиректа не знаю как логирование настроить.

Я подозреваю, что возможно проблема в том, что это все на виртуальной машине крутится на одном физическом интерфейсе?


Содержание

Сообщения в этом обсуждении
"очередной pf + rdr вопрос."
Отправлено srw , 02-Дек-09 17:07 
интересно. нашел на 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 всё отлично.

Буду разбираться почему не работает с внешними интерфейсами.



"очередной pf + rdr вопрос."
Отправлено srw , 02-Дек-09 17:17 
Похоже разобрался.
При тестировании доступа снаружи

Вот это правило
>nat on $ext_if from $int_net to any -> ($ext_if)

Разрешало НАТ только для локальной сети.
и когда попробовал изнутри редирект, то всё заработало

А как тогда прописать правило чтобы снаружи редирект работал?

>nat on $ext_if from any to any port 443 -> ($ext_if)

Как-то так что-ли?


"очередной pf + rdr вопрос."
Отправлено vagif , 02-Дек-09 22:35 

>А как тогда прописать правило чтобы снаружи редирект работал?
>
>>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 + rdr вопрос."
Отправлено srw , 03-Дек-09 10:07 
>
>>А как тогда прописать правило чтобы снаружи редирект работал?
>>
>>>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 + rdr вопрос."
Отправлено vagif , 03-Дек-09 11:00 
>Вообще я НАТ хотел использовать, для доступа в интернет, но т.к. что-то
>не заработало в первоначальной конфигурации, начал пробовать разные вариации.
>С PF разбираюсь только третий день, а c IPFW работал 3 года
>назад. :)

посмотри живие конфиги http://wiki.zeynalov.com/vagif:docs:freebsd:pf
а вообще есть родная документация http://www.openbsd.org/faq/pf/index.html


"очередной pf + rdr вопрос."
Отправлено srw , 03-Дек-09 14:28 
>>Вообще я НАТ хотел использовать, для доступа в интернет, но т.к. что-то
>>не заработало в первоначальной конфигурации, начал пробовать разные вариации.
>>С 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/


"очередной pf + rdr вопрос."
Отправлено cemen13 , 03-Дек-09 14:39 
У меня вот так работает
nat on $ext_if from $nat_user to any -> $ext_if

"очередной pf + rdr вопрос."
Отправлено vagif , 03-Дек-09 18:23 

>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 адрес и такой порт.

а ты не указал точный адрес, который надо мониторить...
хотя по мне, то могли бы и сделать, чтобы и по все карте смотрело...


"очередной pf + rdr вопрос."
Отправлено srw , 04-Дек-09 12:02 
>у тебя тут ошибка, надо не "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 адрес


"очередной pf + rdr вопрос."
Отправлено srw , 04-Дек-09 12:08 
В общем всем спасибо!

Понятно, что правила примерно правильные как и в книжках.
Буду разбираться дальше.


"очередной pf + rdr вопрос."
Отправлено srw , 04-Дек-09 12:33 
интересно получается. редирект без НАТ совсем не работает

попробовал настроить редирект из локальной сети.

>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.245

nat 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

Почему не редиректится на ИП во внутренней подсети, а только на ИП внешней подсети?