Страница 1 из 1
ipfw kernel nat - проблемы с redirect_port
Добавлено: 2010-03-17 0:02:43
LogEdge
Привет всем.
Понадобилось завернуть часть DNS запросов на определенный сервер, скажем, 5.5.5.5.
Попробовал сделать так:
Код: Выделить всё
100 ipfw nat 500 config if ${local_if} redirect_port udp 5.5.5.5:53 53
...
3000 ipfw add nat 500 udp from ${local_net} to 8.8.8.8 dst-port 53 in via ${local_if}
ну и соотв. разрешения...
и для отладки в самом начале
Код: Выделить всё
500 ipfw add count from any to any src-port 53
600 ipfw add count from any to any dst-port 53
и что же я вижу??
(192.168.1.2 - хост во внутр. сети, 192.168.1.1 - внутр. ип шлюза, 1.2.3.4 - внешний)
Код: Выделить всё
cat /var/log/security
ipfw: 600 Count UDP 192.168.1.2:39528 8.8.8.8:53 in via sk0
ipfw: 3000 Nat UDP 192.168.1.2:39528 8.8.8.8:53 in via sk0
ipfw: 600 Count UDP 192.168.1.1:39528 8.8.8.8:53 out via ng0
ipfw: 500 Count UDP 8.8.8.8:53 1.2.3.4:39528 in via ng0
т.е. вместо redirect_port нат спокойненько заменил адрес источника на внутреннем интерфейсе - и все...
скажите, это я дурак

или вся деревня с ума сошла??
Re: ipfw kernel nat - проблемы с redirect_port
Добавлено: 2010-03-17 13:01:45
terminus
Ха! Интересно... Это что же пулучается:
- если на нат работающий без deny_in из прохода IN приходт пакет адресованный на IP указанный в параметре if или ip, для которого нет правил redirect_port, то тогда он не меняя адреса отправителя и получателя создает в таблице новую запись и пропускает пакет на сам нат-рутер.
- если же на нат работающий без deny_in из прохода IN приходт пакет адресованный не на IP указанный в параметре if или ip, для которого нет правил redirect_port, то тогда он начинает работать с пакетом как бычный нат (как будто пакет пришел из прохода OUT и его надо маскировать), и заменяет в пакете адрес отправителя на то, что указано в параметре if или ip.
Незнал. Это прикольно
===
по вашей проблеме:
попробуйте так
Код: Выделить всё
100 ipfw nat 500 config ip 8.8.8.8 redirect_port udp 5.5.5.5:53 53
Предпологаю, что алгоритм будет такой: он получит пакет, увидит, что в таблице есть правило redirect_port 8.8.8.8:53 -> 5.5.5.5:53 и заменет в пакете адрес получателя на 5.5.5.5 оставив отправителя 192.168.1.2.
Проверьте.
Re: ipfw kernel nat - проблемы с redirect_port
Добавлено: 2010-03-17 22:08:32
LogEdge
- если же на нат работающий без deny_in из прохода IN приходт пакет адресованный не на IP указанный в параметре if или ip, для которого нет правил redirect_port, то тогда он начинает работать с пакетом как бычный нат (как будто пакет пришел из прохода OUT и его надо маскировать), и заменяет в пакете адрес отправителя на то, что указано в параметре if или ip.
и еще прикольней должно получиться, если использовать reverse - судя по манам. Хотя реальных примеров такого найти не смог...
попробуйте так
Код: Выделить всё
100 ipfw nat 500 config ip 8.8.8.8 redirect_port udp 5.5.5.5:53 53
Предпологаю, что алгоритм будет такой: он получит пакет, увидит, что в таблице есть правило redirect_port 8.8.8.8:53 -> 5.5.5.5:53 и заменет в пакете адрес получателя на 5.5.5.5 оставив отправителя 192.168.1.2.
Проверьте.
не... он заменил адрес отправителя...
Код: Выделить всё
cat /var/log/security
ipfw: 600 Count UDP 192.168.1.2:39528 8.8.8.8:53 in via sk0
ipfw: 3000 Nat UDP 192.168.1.2:39528 8.8.8.8:53 in via sk0
ipfw: 600 Count UDP 8.8.8.8:39528 8.8.8.8:53 out via ng0
Re: ipfw kernel nat - проблемы с redirect_port
Добавлено: 2010-03-17 22:24:45
terminus
Мнда...

надобно подумать...
Re: ipfw kernel nat - проблемы с redirect_port
Добавлено: 2010-06-27 23:20:52
gloom
- если на нат работающий без deny_in из прохода IN приходт пакет адресованный на IP указанный в параметре if или ip, для которого нет правил redirect_port, то тогда он не меняя адреса отправителя и получателя создает в таблице новую запись и пропускает пакет на сам нат-рутер.
не не не...
пришлось редирект прописать
