Добрый день, уважаемые коллеги!
Возникла проблема с NAT. До этого настраивал на другой машине, перенес оттуда конфиги, все вроде бы делаю также, но что-то пока не взлетит. Что есть: машина( centos), шлюз (openbsd). В шлюзе 2 сетевухи, одна смотрит в локалку, к другой подключена другая сеть(в которую надо попасть с машины centos).
Прописал маршрут с машины centos в другую сеть:[root@master]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.111.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
172.16.0.0 192.168.0.155 255.255.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
224.0.0.0 0.0.0.0 240.0.0.0 U 0 0 0 eth1
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
Сама машина имеет адрес 192.168.0.200.
На шлюзе:
192.168.0.155 - локальная сетевуха (ste0), 172.16.6.2(xl0) - сетевуха внешняя.
# netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Mtu Prio Iface
127/8 127.0.0.1 UGRS 0 0 33200 8 lo0
127.0.0.1 127.0.0.1 UH 0 0 33200 4 lo0
172.16/16 172.16.6.1 UGS 0 3 - 8 xl0
172.16.6.0/28 link#2 UC 2 0 - 4 xl0
172.16.6.0/28 172.16.6.2 UGS 0 0 - 8 xl0
172.16.6.1 00:19:2f:a1:d7:1a UHLc 2 585 - 4 xl0
172.16.6.2 00:04:79:66:41:d3 UHLc 0 2 - 4 lo0
172.16.52.2 172.16.6.1 UGHS 0 1012 - 8 xl0
192.168.0/24 link#3 UC 3 0 - 4 ste0
192.168.0.1 00:22:57:61:b8:d2 UHLc 0 6 - 4 ste0
192.168.0.200 00:1f:29:c4:79:de UHLc 0 9 - 4 ste0
192.168.0.212 00:0c:6e:dd:e6:9f UHLc 1 80993 - 4 ste0
224/4 127.0.0.1 URS 0 0 33200 8 lo0
Форвардинг включен:
# sysctl net.inet.ip.forwarding
net.inet.ip.forwarding=1
#
PF:
# cat /etc/pf.conf
# $OpenBSD: pf.conf,v 1.44 2009/06/10 15:29:34 sobrado Exp $
#
# See pf.conf(5) for syntax and examples; this sample ruleset uses
# require-order to permit mixing of NAT/RDR and filter rules.
# Remember to set net.inet.ip.forwarding=1 and/or net.inet6.ip6.forwarding=1
# in /etc/sysctl.conf if packets are to be forwarded between interfaces.
ext_if="xl0"
int_if="ste0"
set skip on lo
nat pass on $ext_if inet proto {tcp,udp} from ($int_if:network) port > 1024 to any ->($ext_if:0)
pass out on $ext_if inet proto tcp from any to any keep state
pass quick inet proto icmp
block log all
block log quick on $int_if inet proto tcp from ($int_if:network) to any port 25
pass out quick on $ext_if inet proto {tcp,udp,icmp} from ($ext_if:0) to any flags S/SAFR
pass in on $int_if inet proto {tcp,udp} from ($int_if:network) port > 1024 to any flags S/SAFR
#
tcpdump-ом вижу, что не натится локальный адрес 192.168.0.200 на 172.16.6.2.
17:48:56.593546 802.1d STP config root=0.0:15:c7:9b:e8:a rootcost=8 bridge=800a.0:d:65:da:5b:0 port=6 ifcost=128 age=2/0 max=20/0 hello=2/0 fwdelay=15/0
17:48:57.527308 192.168.0.200 > 172.16.6.1: icmp: echo request (id:0250 seq:3) (DF) (ttl 63, id 0, len 84)
17:48:58.527317 192.168.0.200 > 172.16.6.1: icmp: echo request (id:0250 seq:4) (DF) (ttl 63, id 0, len 84)
17:48:58.597908 802.1d STP config root=0.0:15:c7:9b:e8:a rootcost=8 bridge=800a.0:d:65:da:5b:0 port=6 ifcost=128 age=2/0 max=20/0 hello=2/0 fwdelay=15/0
17:48:59.527322 192.168.0.200 > 172.16.6.1: icmp: echo request (id:0250 seq:5) (DF) (ttl 63, id 0, len 84)
17:49:00.527329 192.168.0.200 > 172.16.6.1: icmp: echo request (id:0250 seq:6) (DF) (ttl 63, id 0, len 84)
17:49:01.527329 192.168.0.200 > 172.16.6.1: icmp: echo request (id:0250 seq:7) (DF) (ttl 63, id 0, len 84)