Вводные:Компьютер под FreeBSD5.4
Сетевые адаптеры:
fxp1: 10.200.10.36:255.255.255.0
fxp2: 192.168.0.1:255.255.255.0
Ядро скомпилировано GENERIC + опции
options BRIDGE
options IPDIVERT
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options IPFIREWALL_FORWARD
options IPFIREWALL_FORWARD_EXTENDED # на всякий пожарный
device pf
device pflog
device pfsync
rc.conf:
natd_enable="YES"
natd_interface="fxp1"
defaultrouter="10.200.10.1"
firewall_enable="YES"
pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pflog_flags=""
Сеть провайдера: 10.0.0.0:255.0.0.0
10.200.10.1 - gateway для моего сегмента
10.200.4.1 - VPN сервер
10.200.4.100 - Сервер с расшаренными по "Netbios over TCP/IP" папками с видеофильмами
Моя маленькая сеть 192.168.0.0:255.255.255.0
192.168.0.2 - Web, FTP, POP3, SMTP сервер
192.168.0.11 - рабочая станция 1
192.168.0.12 - рабочая станция 2
Возникшие вопросы:
1) Настроил ipfw для хождения с 192.168.0.11 на 10.200.4.100 через natd работает и сейчас. Затем настроил шлюз для хождения с 192.168.0.11 на 10.200.4.100, но на этот раз в качестве NAT выступал PF.
В pf.conf для этого я добавил только одну строку
nat on fxp1 from 192.168.0.0/24 to 10.0.0.0/8 -> (fxp1)
Работает, но ping -l 2000 10.200.4.100 работает только при NAT=natd, а при pf такой пинг не проходит. Ну и с natd соответственно файлы копируются с сервера на рабочую станцию 3-4 минуты, а с pf 9-10 минут. Для pf "магическая" длина пакета оказалась 1472 (мог соврать +/- 3, точно не помню)
При этом правило ipfw для nat выглядело вот так:
${fwcmd} add 500 divert natd all from any to any via fxp1
А для pf я такого не писал. Может как то тоже через divert передавать в pf. Или в pf.conf еще каких параметров надо добавить чтобы он пропускал пакеты до 25000 длиной?
PS использовать PF в качестве одного единственного файрвола пока не хочу, ибо пока я в нем совсем новичек.
2) Вот по этой статье
http://www.opennet.me/base/net/pptp_client.txt.html
Добавил в ppp.conf секцию vpn со всеми описанными строками без изменений, за исключением пароля и логина. Установил пакет pptp
Затем прописал в /etc/rc.d/*NETWORKING
route add -host 10.200.4.1 10.200.10.1
route add -net 10.0.0.0 10.200.10.1
/usr/local/sbin/pptp 10.200.4.1 vpn &
В resolv.conf DNS провайдера записан
При загрузке все вроде идет без ошибок до появления приглашения login(ttyv0):
проходит пара секунд и появляется сообщение:
ppp[303]: tun0: Error: rt_Set: Cannot add a route with gateway 0.0.0.0
После чего интернет работает, но все попытки пропинговать интернет хосты проваливаются со 100% потерей. При просмотре счетчиков ipfw выяснилось что все пинги на интернет почемуто идут просто на fxp1, а не на tun0.
В случае с PPTP я организую второй NAT на PF
nat on tun0 from 192.168.0.0/24 to !10.0.0.0/8 -> (tun0)
Хочется добить icmp на интернет
Последняя непристойность: после всех перезагрузок и настроек появились файлы pptp.core в корне и в папке /root - это нормально при shutdown -r now ?
В логах ppp просто куча сообщений:
15:00:04 ppp[303]: tun0: CPP: DeflateInput: Seq error: Got 110, expected 108
15:00:04 ppp[303]: tun0: CPP: deflink: SendResetReq(116) state = Openned
15:00:04 ppp[303]: tun0: CPP: deflink: RecvResetReq(116) state = Openned
15:00:04 ppp[303]: tun0: CPP: deflate: Input channel reset
15:00:08 ppp[303]: tun0: CPP: DeflateInput: Seq error: Got 83, expected 81
15:00:08 ppp[303]: tun0: CPP: deflink: SendResetReq(117) state = Openned
15:00:08 ppp[303]: tun0: CPP: deflink: RecvResetReq(117) state = Openned
15:00:08 ppp[303]: tun0: CPP: deflate: Input channel reset
15:00:11 ppp[303]: tun0: CPP: DeflateInput: Seq error: Got 157, expected 156
15:00:11 ppp[303]: tun0: CPP: deflink: SendResetReq(118) state = Openned
15:00:11 ppp[303]: tun0: CPP: deflink: RecvResetReq(118) state = Openned
15:00:11 ppp[303]: tun0: CPP: deflate: Input channel reset
и т.п и т.д.
Прошу помощи. Спасибо что не поленились дочитать. :)