Прошу помощи с настройкой IPFW + NAT
Проблема:
Есть локалка, клиентская сеть через DHCP (isc DHCP), выход к провайдеру.
Локалка работает, клиентская сеть тоже, НО! С клиентской сети пингуется только Шлюз провайдера и не шагу дальше, кроме 1 пакета с измененным ip адресом в совершенно другом диапазоне. Думал icmp провайдер рубит, но нет… в принципе ничего не качается.
Предварительно:
Система:
FreeBSD WiFiRouterEXPO.domain.ru 9.0-RELEASE FreeBSD 9.0-RELEASE
Ядро:
Код: Выделить всё
include GENERIC
ident ROUTERWIFI
nooptions INET6
options IPFIREWALL
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_FORWARD
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_NAT
options LIBALIAS
options DUMMYNET
options HZ="1000"
options DEVICE_POLLING
options IPDIVERT
Код: Выделить всё
hostname="WiFiRouterEXPO.domain.ru"
ifconfig_em0_name="iflan0"
ifconfig_em2_name="ifnat0"
ifconfig_iflan0="inet 192.**.**.13 netmask 255.255.252.0"
ifconfig_ifnat0="inet 10.67.0.1 netmask 255.255.0.0"
ifconfig_em1="up"
cloned_interfaces="vlan***"
ifconfig_vlan***_name="ifwan0"
ifconfig_ifwan0="inet ***.**.207.253 netmask 255.255.255.192 vlan *** vlandev em1"
defaultrouter="192.**.**.1"
gateway_enable="YES"
sshd_enable="YES"
dhcpd_enable="YES"
dhcpd_ifaces="ifnat0"
dhcpd_conf="/usr/local/etc/dhcpd.conf"
dhcpd_chuser_enable="YES"
dhcpd_withuser="dhcpd"
dhcpd_withgroup="dhcpd"
dhcpd_chroot_enable="YES"
dhcpd_devfs_enable="YES"
dhcpd_rootdir="/var/db/dhcpd"
dhcpd_includedir="/usr/local/etc"
syslog_flags="-l /var/db/dhcpd/var/run/log"
firewall_enable="YES"
firewall_nat_enable="YES"
firewall_nat_interface="ifnat0"
firewall_script="/etc/myfirewall";
Код: Выделить всё
#!/bin/sh -x
ipfw -q flush
cmd="ipfw"
natif="ifnat0"
natip=10.67.0.1 #DHCP SERVER
natnet="10.67.0.0/16"
###---------
lanif="iflan0" #Локалка
lanip="192.**.**.13"
lannet="192.**.**.0/22"
###---------
wanif="ifwan0"
wanip="87.***.***.253" #Провайдер
wanet="87. ***.***.192/26"
wangw="87. ***.***.193"
$cmd add allow ip from any to any via $lanif
$cmd nat 123 config same_ports ip $wanip
$cmd add allow ip from $natnet to any in recv $natif
$cmd add nat 123 ip from $natnet to any out xmit $wanif
$cmd add allow ip from $wanip to any out xmit $wanif
$cmd add nat 123 ip from any to $wanip in recv $wanif
$cmd add allow ip from any to $natnet in recv $wanif
$cmd add allow ip from any to $natnet out xmit $natif
Код: Выделить всё
00010 3443 448429 allow ip from any to any via iflan0
00110 13 2980 allow ip from 10.67.0.0/16 to any in recv ifnat0
00210 3 252 nat 123 ip from 10.67.0.0/16 to any out xmit ifwan0
00310 3 252 allow ip from 87.***.***.253 to any out xmit ifwan0
00410 6 384 nat 123 ip from any to 87.***.***.253 in recv ifwan0
00510 3 252 allow ip from any to 10.67.0.0/16 in recv ifwan0
00610 11 2876 allow ip from any to 10.67.0.0/16 out xmit ifnat0
65535 51 3462 allow ip from any to any
Код: Выделить всё
tcpdump -ni ifwan0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ifwan0, link-type EN10MB (Ethernet), capture size 65535 bytes
10:15:05.627628 ARP, Request who-has 87.***.***.244 tell 87.***.***.193, length 46
{пингую шлюз провайдера}
10:15:12.605802 IP 87. ***.***.253 > 87. ***.***.193: ICMP echo request, id 2068, seq 1, length 64
10:15:12.606022 IP 87. ***.***.193 > 87. ***.***.253: ICMP echo reply, id 2068, seq 1, length 64
10:15:13.606565 IP 87. ***.***.253 > 87. ***.***.193: ICMP echo request, id 2068, seq 2, length 64
10:15:13.606763 IP 87. ***.***.193 > 87. ***.***.253: ICMP echo reply, id 2068, seq 2, length 64
{пингую любой другой адрес или доменное имя}
10:15:28.467049 ARP, Request who-has 87.***.***.199 tell 87.***.***.193, length 46
10:15:28.467055 ARP, Request who-has 87.***.***.194 tell 87.***.***.193, length 46
10:15:28.467058 ARP, Request who-has 87.***.***.196 tell 87.***.***.193, length 46
10:15:28.467059 ARP, Request who-has 87.***.***.195 tell 87.***.***.193, length 46
10:15:28.467131 ARP, Request who-has 87.***.***.197 tell 87.***.***.193, length 46
10:15:28.469158 IP 61.183.172.39.6000 > 87. ***.***.253.9415: Flags [S], seq 1216151552, win 16384, length 0
10:15:28.469247 ARP, Request who-has 87.***.***.240 tell 87.***.***.193, length 46
10:15:28.469422 ARP, Request who-has 87.***.***.239 tell 87.***.***.193, length 46
10:15:28.469426 ARP, Request who-has 87.***.***.246 tell 87.***.***.193, length 46
10:15:28.469429 ARP, Request who-has 87.***.***.244 tell 87.***.***.193, length 46
Код: Выделить всё
net.inet.ip.fw.enable=1
net.inet.ip.fw.one_pass=1
net.inet.tcp.maxtcptw=40960
kern.ipc.somaxconn=4096
kern.ipc.nbmclusters=65536
net.inet.tcp.nolocaltimewait=1
net.inet.ip.portrange.randomized=0