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

Исходное сообщение
"ipfw+nat трансляция адресов"

Отправлено Максимка , 11-Июн-03 16:27 
Никак не могу понять, в чем дело. Стоит FreeBSD 4.8, за ней сеть 10.0.0.0/8, запущен natd.
В правилах ipfw я указываю divert на natd всех пакетов через внешний интерфейс. Пакет из серой сети уходит нормально, но ответ на него доходит только до файрвола, который пишет в лог, например,

/kernel: ipfw: 65500 Deny UDP <внешний днс>:53 10.0.0.2:1194 in via <внешний интерфейс>.

Пробовал прописывать правило pass udp from 10.0.0.0/8 to any 53 keep-state, но правило не работает, как я понимаю, из-за того, что пакет уходит в divert раньше, чем до правила доберется, следовательно, динамическое правило не создается и вернуться в серую сеть пакет не может.
Я могу это побороть, прописав pass udp from any 53 to 10.0.0.0/8 , но это мне не кажется очень хорошей идеей по соображениям безопасности. Можно ли заставить ipfw+natd работать с серой сетью так же, как и с публичными адресами (т.е. пришел пакет в правило keep-state, для него создалось динамическое правило, информация в обе стороны прошла, правило закрылось)?
Надеюсь, объяснение не очень непонятное. Благодарю за помощь.


Содержание

Сообщения в этом обсуждении
"ipfw+nat трансляция адресов"
Отправлено Максимка , 17-Июн-03 22:29 
Никто, как я вижу, не понял, что я имел в виду. Попробую еще раз, может, поможет. Хочу заметить, что на FreeBSD 4.6.2 подобный конфиг работает, а на 4.8 не хочет. :\

Итак, ipfw list

00100 allow ip from any to any via lo0
00101 deny ip from any to 127.0.0.0/8
00102 deny ip from 127.0.0.0/8 to any
00150 divert 8668 ip from 10.0.0.0/8 to any out xmit dc0
00160 divert 8668 ip from any to any in recv dc0
00200 allow ip from any to any via ed1
00400 allow udp from <внешний ip> to any 53 keep-state
00450 allow udp from 10.0.0.0/8 to any 53 keep-state
65535 deny ip from any to any

При попытке обратиться к днс из внутренней сети получаем
/kernel: ipfw: 65500 Deny UDP <внешний днс>:53 10.0.0.2:1420 in via dc0

dc0 -- внешний интерфейс, ed1 -- внутренний

Я даже, кажется, понимаю, почему это не работает :) Но вот как написать так, чтобы работало -- не понимаю. Хелп?


"ipfw+nat трансляция адресов"
Отправлено Hugle , 02-Июл-03 22:58 
>Никто, как я вижу, не понял, что я имел в виду. Попробую
>еще раз, может, поможет. Хочу заметить, что на FreeBSD 4.6.2 подобный
>конфиг работает, а на 4.8 не хочет. :\
>
>Итак, ipfw list
>
>00100 allow ip from any to any via lo0
>00101 deny ip from any to 127.0.0.0/8
>00102 deny ip from 127.0.0.0/8 to any
>00150 divert 8668 ip from 10.0.0.0/8 to any out xmit dc0
>00160 divert 8668 ip from any to any in recv dc0
>00200 allow ip from any to any via ed1
>00400 allow udp from <внешний ip> to any 53 keep-state
>00450 allow udp from 10.0.0.0/8 to any 53 keep-state
>65535 deny ip from any to any
>
>При попытке обратиться к днс из внутренней сети получаем
>/kernel: ipfw: 65500 Deny UDP <внешний днс>:53 10.0.0.2:1420 in via dc0
>
>dc0 -- внешний интерфейс, ed1 -- внутренний
>
>Я даже, кажется, понимаю, почему это не работает :) Но вот как
>написать так, чтобы работало -- не понимаю. Хелп?

00500 allow tcp from <внешний ip> to any 53 keep-state
00550 allow tcp from 10.0.0.0/8 to any 53 keep-state

pomojmu emu i tco nuzhen ;]