Здраствуйте. Я только начинаю осваивать 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.1ping 192.168.0.1 - пинг шлюза. ОК
ping 172.31.0.1 - пинг компа за шлюзом. Болт
ping www.ya.ru - не может разрешить dns-имяЧто я сделал неправильно?
И еще - провайдер ввел vpn-соединение. Как мне сделать шлюз для такого типа соединения? Всмысле чтобы мой шлюз коннектился к провайдеру (172.31.0.1) по vpn, а я из локальной до шлюза уже без него (надеюсь это правильный подход?)
Все написано по памяти, поэтому могут быть опечатки.
>Здраствуйте. Я только начинаю осваивать 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, а я из локальной до шлюза уже без него (надеюсь
>это правильный подход?)
>Все написано по памяти, поэтому могут быть опечатки.Поскольку ты не поднял кэширующий ДНС на гейте, почему ты его прописываешь на клиенте?
Пропиши ДНС 81.26.176.1 и 81.26.176.3 а там видно будет
А вообще - тебе сюда http://www.freebsd.org.ua/doc/ru_RU.KOI8-R/books/handbook/ne... тут все подробно ))
>А вообще - тебе сюда http://www.freebsd.org.ua/doc/ru_RU.KOI8-R/books/handbook/ne... тут все подробно ))
оттуда все и брал... И вообще я не сразу в форем полез - почитал статьи, поковырялся. Ну не работает блин!dns на клиенте поправил
>Здраствуйте. Я только начинаю осваивать 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 никогда не сработают!Так что будьте внмательны с этими вещами...
>После установки перекомпилировал ядро с добавлением
>
>options IPFIREWALL
>options IPDIVERT
>options IPFIREWALL_DEFAULT_TO_ACCEPT
>options IPFIREWALL_VERBOSE
>options IPFIREWALL_DEFAULT_TO_ACCEPT --- вопрос спорный, я предпочитаю по умолчанию все закрыть и по мере надобности нужное - открывать
и попробуй еще добавить options IPFIREWALL_FORWARD
Начинаю разбираться с правилами для брандмауэра! Смущает то, что в хендбуке написано: "Внешний, или Интернет-интерфейс машины с natd не требует особых настроек для работы natd(8)". Это строчка, до которой я дочитал и начал проверят работоспособность системы. Видать ошибочное заявление...Нашол в мане по ipfw:
ipfw -f flush
ipfw add divert natd all from any fo any via ed0В моем случае ed0 есть rl1. Выполняю вторую строчку - ошибка:
ip_fw_ctl: invalid command
ipfw: getsockopt invalid argumentЭто еще чего такое???
Кто-нибудь может мне на пальцах объяснить все это???Примного благодарен за терпение!
options DUMMYNET
решило мою проблему с divert`ом
рекомендую mpd, он конечно сложнее чем pptpclient, но зато он универсальнее и более гибок в настройках. Хотя можешь повозиться и с pptpclient, может тебе и повезёт и он у тебя заработает. У меня например pptpclient не соединяется в упор, вообще никак хоть что хошь делай, а mpd соединяется но там надо пару роутов изменить при соединении, а при разединени обратно их вовзращать, по другому никак :( .