>Здраствуйте. Я только начинаю осваивать FreeBSD.
>FreeBSD 4.10
>Есть два интерфейса - rl0 (192.168.0.1), rl1 (172.31.0.153). Первый смотрит во внутреннюю
>сеть, второй - в интернет.
>После установки перекомпилировал ядро с добавлением
>
>options IPFIREWALL
>options IPDIVERT
>options IPFIREWALL_DEFAULT_TO_ACCEPT
>options IPFIREWALL_VERBOSE
>
>Отредактировал rc.conf
>hostname="phenix"
>ifconfig_rl0="inet 192.168.0.1 netmase 255.255.255.0"
>ifconfig_rl1="inet 172.31.0.153 netmase 255.255.255.0"
>
>gateway_enable="YES"
>firewall_enable="YES"
>firewall_type="OPEN"
>natd_enable="YES"
>natd_interface="rl1"
>natd_flags=""
>defaultrouter="172.31.0.1"
>
>Создал /ect/resolv.conf
>search phenix
>nameserver 81.26.176.1
>nameserver 81.26.176.3
>
>Перезагрузка.
>ping 192.168.0.2 - пингует машину из внутренней сети. ОК
>ping 171.31.0.1 - пингует шлюз провайдера. ОК
>ping www.ya.ru - пингует некоторый сервер с разрешением dns. ОК
>
>Команда top не выдает следов пребывания natd (а должна?).
>
>Тут все! Иду за машину из локальной сети. WindowsXP
>Прописываю ip: 192.168.0.2, шлюз: 192.168.0.1, маска подсети: 255.255.255.0
>dns: 192.168.0.1
>
>ping 192.168.0.1 - пинг шлюза. ОК
>ping 172.31.0.1 - пинг компа за шлюзом. Болт
>ping www.ya.ru - не может разрешить dns-имя
>
>Что я сделал неправильно?
>И еще - провайдер ввел vpn-соединение. Как мне сделать шлюз для такого
>типа соединения? Всмысле чтобы мой шлюз коннектился к провайдеру (172.31.0.1) по
>vpn, а я из локальной до шлюза уже без него (надеюсь
>это правильный подход?)
>Все написано по памяти, поэтому могут быть опечатки.
Не, ты конечно молодец, всё написал тут кроме самого главного, а что у тебя в /etc/rc.firewall ? Как по твоему натд узнает что и куда заворачивать? только по одной надписи в /etc/rc.conf natd_interface="rl1" ? А какую подсеть туда кидать? И куда потом обратно оттуда получать? Он что у тебя интелектуальный ?
Покажи что у тебя в /etc/rc.firewall , а если хочешь сэкономить время просто можешь сам поискать приемлемые настройки в rc.firewall в инете, их полно!
И ещё хоть ты и написал firewall_type="OPEN" но неплохо было бы убедиться что у тебя он действительно опен. Для этого просто набери такое
ipfw show
И тебе высветится список всех правил файрвола и правил диверта (как раз того самого natd)
Вот некоторые важные строки из того что он выдаст
00510 25992 1364839 divert 8668 ip from 192.168.0.0/24 to any via rl1
00520 50951 45702283 divert 8668 ip from any to 171.31.0.1 via rl1
00600 187182 125908566 allow ip from any to any established
00610 56835 19455160 allow ip from me to any out xmit rl1
00710 460 101893 allow ip from any to 192.168.0.0/24
01000 570 29611 allow ip from any to any via rl0
65535 156030 18164332 deny ip from any to any
Здесь самая левая колонка это номер правила, вторая и третья это число и кол-во байт пакетов котрые были отработаны по данному правилу. Типа divert перенаправляют пакеты в natd и обратно. Правила типа allow разрешают принимать такой пакет и пускать его до таблицы роутеров (считай что файрвол просто пропустил этот пакет) . Правила типа deny выкидывают пакет. Далее если пакет сработал на одном из правил то дальше он не проверяется по правилам, что это значит? Это на самом то деле подстава о котрой никто почему-то явно не говорит, то ли не знают то ли знают но молчат. В чём эта подстава заключается.
Вот рассмотрим пример такой последовательности правил
00050 156030 18164332 allow all from any to any
00510 0 0 divert 8668 ip from 192.168.0.0/24 to any via rl1
00520 0 0 divert 8668 ip from any to 171.31.0.1 via rl1
Правило номер 50 разрешает всем пакетам ходить куда угодно
Правила номер 510 и 520 перенаправляют все пакеты в NAT и обратно
Вопрос: Будет ли работать NAT при такой последовательности пакетов?
Ответ : НЕ БУДЕТ! Почему? Да потому что на правиле номер 50 сработают все пакеты и дальше никакие правила рассматриваться не будут! Т.е. другие два правила обеспечивающие NAT никогда не сработают!
Так что будьте внмательны с этими вещами...