Страница 1 из 1

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

Добавлено: 2012-09-25 12:44:55
sandakov.a
Доброго времени суток. Имеется:
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
Заранее спасибо

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

Добавлено: 2012-09-27 10:54:10
werder31
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-е копатся в нате

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

Добавлено: 2012-09-27 13:30:46
sandakov
Уважаемый 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

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

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

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

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

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

Добавлено: 2012-09-27 19:51:18
sandakov
У меня заработало. Через протокол 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