Решил настроить себе НАТ на FreeBSD4.9
В ядре присутствует IPDIVERT и все опции файрволла. Файрволл у меня даже работал до этого.В rc.conf
gateway_enable="YES" #действительно ли это необходимо?
natd_enable="YES"
natd_flags="-f /etc/natd.conf"
natd_interface="ppp0"
natd.conf
dynamic yes
same_ports yes
use_sockets yes
log yes
deny_incoming yes
unregistered_only yes
локалка 192.168.5.0/24 адрес шлюза (vx0) 192.168.5.1
На клиентских машинах default gateway 192.168.5.1
НАТ запустился, ps -ax|grep natd показывает его, netstat -an показывает слушающийся порт 8868
Конфа файрволла писалась с расчётом на то, что пакет после divert возвращается обратно и проходит оставшиеся правила.
(Можете раскритиковать) Таким образом сначала идут стандартные правила, потом правила фильтрации пакетов из локалки, в конце заворачивается на НАТ, после divert идут правила фильтрации исходящего пакета в интернет, потом входящего пакета из интернета, в конце divert, потом правила фильтрации пакетов идущих в локалку, чтобы пакет из Интернета после divert прошёл фильтрацию входящих в локалку.
Вроде ничего не забыл. В итоге получается так, что ни хрена не работает. Пакеты заворачиваются на 1600 divert и там пропадают. Пинг с хоста-шлюза посылается, ответы перехватываются "обратным divertом" (правило 4800) или 4700, если это icmp. В итоге никакого интернета ни на шлюзе ни в локалке. В логе /var/log/alias.log всего одна строка о том, что НАТ запустился. Это я и так вижу. Я вроде прочитал все мануалы, понимал, что делаю, и вообще, считаю себя очень хитрожопым. Хотя, если оно не работает, то наверное, что-то я сделал не так, но не знаю, что именно. Почитал тут всё на форуме, но ничего похожего на то, что у меня не нашёл. Ниже результат команды ipfw show. Понимаю, что много, но на крайняк это можно всё удалить :)
Просьба не копировать текст вопроса в ответы, а то вообще трактат получится. Заранее спасибо.
00100 34 3346 allow ip from any to any via lo0
00200 0 0 deny log ip from any to any not ipver 4
00300 0 0 deny log ip from any to me src-ip me
00400 0 0 deny log ip from me to me
00500 0 0 reject log ip from not me to any out via ppp0
00600 0 0 reject log ip from not 192.168.5.0/24 to any in via vx0
00700 0 0 reject log ip from any to any in via vx0 ipoptions ssrr
00800 9 540 allow tcp from 192.168.5.0/24 to me via vx0 setup dst-port 53,25,953,22,23,21
00900 38 3326 allow tcp from any to me via vx0 established src-port 1024-65535 dst-port 53,25,953,22,23,21,20
01000 38 4854 allow tcp from me to any via vx0 established src-port 53,25,953,22,23,21,20 dst-port 1024-65535
01100 0 0 allow tcp from me to 192.168.5.2 via vx0 dst-port 1024-65535 src-port 1024-65535
01200 0 0 allow tcp from 192.168.5.2 to me via vx0 dst-port 1024-65535 src-port 1024-65535
01300 0 0 allow tcp from me to any via vx0 established src-port 1024-65535 dst-port 53,25,953,22,23
01400 0 0 allow tcp from any to me via vx0 established src-port 53,25,953,22,23 dst-port 1024-65535
01500 0 0 deny log icmp from any to any in via vx0 frag
01600 0 0 divert 8868 icmp from any to not me in via vx0 icmptypes 3,4,8,11,12
01700 11 840 allow icmp from any to any via vx0 icmptypes 0,3,4,8,11,12
01800 24 1200 divert 8868 tcp from any to not me in via vx0 src-port 1024-65535 dst-port 25,21,80,110,143,1024-65535
01900 157 22581 allow udp from any to me via vx0 src-port 1024-65535 dst-port 53 keep-state
02000 1 129 allow udp from me to any via vx0 src-port 53 dst-port 1024-65535 keep-state
02100 5 312 allow udp from me to any via vx0 src-port 1024-65535 dst-port 53 keep-state
02200 2 120 allow udp from any to me via vx0 src-port 53 dst-port 1024-65535 keep-state
02300 0 0 allow udp from any to me in via vx0 src-port 53 dst-port 53 keep-state
02400 0 0 deny log ip from any to any via ppp0 src-ip 127.0.0.0/8
02500 0 0 deny log ip from any to any via ppp0 dst-ip 127.0.0.0/8
02600 0 0 deny log ip from any to any via ppp0 src-ip 10.0.0.0/8
02700 0 0 deny log ip from any to any via ppp0 dst-ip 10.0.0.0/8
02800 0 0 deny log ip from any to any via ppp0 src-ip 172.16.0.0/12
02900 0 0 deny log ip from any to any via ppp0 dst-ip 172.16.0.0/12
03000 0 0 deny log ip from any to any via ppp0 src-ip 192.168.0.0/16
03100 0 0 deny log ip from any to any via ppp0 dst-ip 192.168.0.0/16
03200 0 0 deny log ip from any to any via ppp0 src-ip 224.0.0.0/4
03300 0 0 deny log ip from any to any via ppp0 dst-ip 224.0.0.0/4
03400 0 0 deny log ip from any to any via ppp0 src-ip 240.0.0.0/4
03500 0 0 deny log ip from any to any via ppp0 dst-ip 240.0.0.0/4
03600 0 0 deny log ip from any to any via ppp0 src-ip 0.0.0.0/8
03700 0 0 deny log ip from any to any via ppp0 dst-ip 0.0.0.0/8
03800 0 0 deny log ip from any to any via ppp0 src-ip 169.254.0.0/16
03900 0 0 deny log ip from any to any via ppp0 dst-ip 169.254.0.0/16
04000 0 0 deny log ip from any to any in via ppp0 ipoptions ssrr
04100 0 0 deny log icmp from any to any via ppp0 frag
04200 0 0 deny log tcp from any to me in via ppp0 setup
04300 0 0 deny log tcp from any to any in via ppp0 dst-port 0-1023
04400 0 0 deny log tcp from any to any out via ppp0 src-port 0-1023
04500 0 0 deny log tcp from any to any in via ppp0 dst-port 6000-6063
04600 0 0 deny log tcp from any to any out via ppp0 src-port 6000-6063
04700 9 396 divert 8868 tcp from any to me in via ppp0 src-port 25,21,80,110,143,1024-65535 dst-port 1024-65535
04800 19 1596 divert 8868 icmp from any to me in via ppp0 icmptypes 0,3,4,11,12
04900 0 0 allow tcp from any to any via ppp0 established
05000 6 312 allow tcp from me to any setup
05100 0 0 allow icmp from any to me in via ppp0 icmptypes 0,3,4,11,12
05200 19 1596 allow icmp from me to any out via ppp0 icmptypes 3,4,8,11,12
05300 105 13723 allow udp from me to any out via ppp0 src-port 1024-65535 dst-port 53 keep-state
05400 1 172 allow udp from any to me in via ppp0 src-port 53 dst-port 1024-65535 keep-state
05500 0 0 deny log ip from any to not 192.168.5.0/24 out via vx0
05600 0 0 deny log ip from any to any out via vx0 ipoptions ssrr
05700 0 0 deny log icmp from any to any out via vx0 frag
05800 0 0 allow icmp from any to any out via vx0 icmptypes 0,3,4,11,12
05900 0 0 allow tcp from any to 192.168.5.0/24 out via vx0 established src-port 25,21,80,110,143,1024-65535 dst-port 1024-65535
06000 0 0 allow udp from me to any out via vx0 src-port 53 dst-port 53 keep-state
06100 0 0 reject log ip from any to any in via vx0
65535 0 0 deny ip from any to any