IPFW+NATD один сетевой интерфейс

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
sandakov.a
проходил мимо

IPFW+NATD один сетевой интерфейс

Непрочитанное сообщение sandakov.a » 2012-09-25 12:44:55

Доброго времени суток. Имеется:
em0 - 192.168.10.15
Сетевой интерфейс единственный. На нем висит nat.
Необходимо пробросить порт 53 с из внутренней сети во ВНУТРЕННЮ сеть. Настраивал данную конфигурацию на iptables, но теперь нужно и на ipfw. Редирект порта работает, а вот подмена источника нет.
Вот конфигурация natd.conf

Код: Выделить всё

instance default
interface em0
same_ports
log
unregistered_only

redirect_port udp  192.168.10.1:53 53
Где-то читал, что natd не умеет пробрасывать порты во внутреннюю сеть. Действительно ли это так? Прошу не задавать вопросом зачем мне это. Возможно я что-то напутал с правилами. Я решил делать все по шагам и на текущий момент застрял именно на подмене источника, в Iptables это "по-научному" называется SNAT, здесь не знаю. Вот список правил которые отвечают за часть прохода пакета. Подскажите, что нужно добавить. Изначальная идея заключалось в том, чтобы запрашивать DNS запрос из внутри сети, в данной ситуации, ip 192.168.10.15, а Фряха перенаправляла запрос на другой сервер, владеющий этой информацией, подменяя источник и назначение. Я так понимаю, что источник заменяется на айпи укзанный в директиве interface в natd.conf, он почему подмены не происходит

Код: Выделить всё

$cmd 00025 divert natd log all from $admin_ip to any domain via $int_if
$cmd 00026 allow log all from $admin_ip to me domain via $int_if keep-state
Заранее спасибо
Последний раз редактировалось f_andrey 2012-09-25 12:52:21, всего редактировалось 1 раз.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения, и оформляйте его по человечески.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

werder31
сержант
Сообщения: 217
Зарегистрирован: 2009-12-22 10:48:41
Откуда: from Ukraine
Контактная информация:

Re: IPFW+NATD один сетевой интерфейс

Непрочитанное сообщение werder31 » 2012-09-27 10:54:10

1-е fwd в IPFW "$cmd fwd 127.0.0.1,53 tcp from any to 192.168.0.1 53 out via $OUT_INT"
2-е rinetd - отлично пробрасывает все :)
3-е копатся в нате
Любите жизнь, ведь она все равно отымеет..так хоть по любви!

sandakov
проходил мимо
Сообщения: 4
Зарегистрирован: 2012-09-25 12:27:54

Re: IPFW+NATD один сетевой интерфейс

Непрочитанное сообщение sandakov » 2012-09-27 13:30:46

Уважаемый werder31
fwd - это NAT ядредный. Я использую NATD.
С Натом я разобрался. Вопрос остался только в том. Как сделать обратный редирект(не знаю как правильно выразиться).
Логи вот такие:
Пакет улетает

Код: Выделить всё

ipfw: 22 Divert 8668 UDP 192.168.10.72:59354 192.168.10.15:53 in via em0
ipfw: 26 Accept UDP 192.168.10.72:59354 8.8.8.8:53 in via em0
ipfw: 24 SkipTo 10000 UDP 192.168.10.72:59354 8.8.8.8:53 out via em0
ipfw: 10000 Divert 8668 UDP 192.168.10.72:59354 8.8.8.8:53 out via em0
ipfw: 10001 Accept UDP 192.168.10.15:59354 8.8.8.8:53 out via em0


Пакет летит обратно.

Код: Выделить всё

ipfw: 25 SkipTo 10000 UDP 8.8.8.8:53 192.168.10.15:59354 in via em0
ipfw: 10000 Divert 8668 UDP 8.8.8.8:53 192.168.10.15:59354 in via em0
ipfw: 10001 Accept UDP 8.8.8.8:53 192.168.10.72:59354 in via em0
ipfw: 26 Accept UDP 8.8.8.8:53 192.168.10.72:59354 out via em0
После прохождения 1000 правила второго блока(когда пакет летит обратно) нужно поменять адрес источника с 8.8.8.8:53 на адрес Фряхи(192.168.10.15:53)
куда мне нужно это засунуть? Вот правила(/etc/ipfw.rules):

Код: Выделить всё

$cmd 00022 divert natd log udp from any to me 53 in via $int_if keep-state

$cmd 00024 skipto 10000 log udp from any to any 53 out via $int_if
$cmd 00025 skipto 10000 log udp from any 53 to any in via $int_if
$cmd 00026 allow log all from any to any via $int_if


$cmd 10000 divert natd log  all from any to any
$cmd 10001 allow log  udp from any to any

$cmd 30000 deny log all from any to any
Содержимое /etc/natd.conf

Код: Выделить всё

instance default
use_sockets yes
interface em0
same_ports yes
log yes
unregistered_only yes

redirect_port udp 8.8.8.8:53 192.168.10.15:53

Спасибо заранее. Надеюсь на помощь

Аватара пользователя
MASiK
лейтенант
Сообщения: 625
Зарегистрирован: 2008-09-19 20:09:41
Откуда: Оттуда
Контактная информация:

Re: IPFW+NATD один сетевой интерфейс

Непрочитанное сообщение MASiK » 2012-09-27 13:55:51

Уважаемый sandakov
fwd - Это средства перенаправления к нату отнащения он не какого не имеет
http://www.freebsd.org/doc/ru_RU.KOI8-R ... -ipfw.html

Решенее вашей задачи было описано товарищем werder31
Самурай

sandakov
проходил мимо
Сообщения: 4
Зарегистрирован: 2012-09-25 12:27:54

Re: IPFW+NATD один сетевой интерфейс

Непрочитанное сообщение sandakov » 2012-09-27 19:51:18

У меня заработало. Через протокол UDP. Но почему то не работает с протоколом TCP. Пробрасываю 3389 TCP порт. Я просто поменял в правилах UDP на all. Добавил redirect_port и нифига. Лог таков

Код: Выделить всё

freebsd kernel: ipfw: 22 Divert 8668 TCP 192.168.10.72:55181 192.168.10.15:3389 in via em0
 freebsd kernel: ipfw: 24 SkipTo 10000 TCP 192.168.10.72:55181 192.168.10.1:3389 in via em0
 freebsd kernel: ipfw: 10000 Divert 8668 TCP 192.168.10.72:55181 192.168.10.1:3389 in via em0
 freebsd kernel: ipfw: 10001 Accept TCP 192.168.10.72:55181 192.168.10.1:3389 in via em0
 freebsd kernel: ipfw: 24 SkipTo 10000 TCP 192.168.10.72:55181 192.168.10.1:3389 out via em0
 freebsd kernel: ipfw: 10000 Divert 8668 TCP 192.168.10.72:55181 192.168.10.1:3389 out via em0
 freebsd kernel: ipfw: 10001 Accept TCP 192.168.10.15:55181 192.168.10.1:3389 out via em0
Судя по логу пакет почему-то идет только в одну сторону, а обратно ничего нет. Хотя правила есть. DNS запрос то работает. Не пойму в чем дело. Подскажите плиз. Обновленный список правил вот:

Код: Выделить всё

$cmd 00022 divert natd log all from any to me 3389,53 in via $int_if
$cmd 00024 skipto 10000 log all from any to any 3389,53 out via $int_if
$cmd 00025 skipto 10000 log all from any 3389,53 to any via $int_if
$cmd 00027 allow log all from any to any via $int_if
$cmd 10000 divert natd log  all from any to any
$cmd 10001 allow log  all from any to any