Никак не могу понять, в чем дело. Стоит 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, для него создалось динамическое правило, информация в обе стороны прошла, правило закрылось)?
Надеюсь, объяснение не очень непонятное. Благодарю за помощь.
Никто, как я вижу, не понял, что я имел в виду. Попробую еще раз, может, поможет. Хочу заметить, что на 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 dc0dc0 -- внешний интерфейс, ed1 -- внутренний
Я даже, кажется, понимаю, почему это не работает :) Но вот как написать так, чтобы работало -- не понимаю. Хелп?
>Никто, как я вижу, не понял, что я имел в виду. Попробую
>еще раз, может, поможет. Хочу заметить, что на 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-statepomojmu emu i tco nuzhen ;]