Столкнулся со следующей проблемой, уже пару дней не могу победить.
Итак, что у нас есть:
Два подключения по PPPoE:
Код: Выделить всё
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1460
inet 85.159.0.X --> 188.0.95.255 netmask 0xffffffff
ng1: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1460
inet 79.143.32.X --> 81.30.160.2 netmask 0xffffffff
Код: Выделить всё
vlan9: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 46.164.148.X netmask 0xfffffff8 broadcast 46.164.148.X
ether 00:0e:2e:95:d0:5e
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
vlan: 9 parent interface: rl0
Маршрут по умолчанию - одно из PPPoE подключений:
Код: Выделить всё
default 81.30.160.2 UGS 6182 993560 ng1
Создаем gre в текущем офисе:
Код: Выделить всё
gre1: flags=9051<UP,POINTOPOINT,RUNNING,LINK0,MULTICAST> mtu 1400
tunnel inet 46.164.148.X --> 24.173.208.X
inet 10.255.255.100 --> 10.255.255.99 netmask 0xffffff00
Код: Выделить всё
gre0: flags=9051<UP,POINTOPOINT,RUNNING,LINK0,MULTICAST> mtu 1400
tunnel inet 24.173.208.X --> 46.164.148.X
inet 10.255.255.99 --> 10.255.255.100 netmask 0xffffff00
Удаленный офис:
Код: Выделить всё
[~]:tcpdump -npli gre0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on gre0, link-type NULL (BSD loopback), capture size 96 bytes
04:46:51.911323 IP 10.255.255.99 > 10.255.255.100: ICMP echo request, id 647, seq 1405, length 64
04:46:52.912318 IP 10.255.255.99 > 10.255.255.100: ICMP echo request, id 647, seq 1406, length 64
04:46:53.913329 IP 10.255.255.99 > 10.255.255.100: ICMP echo request, id 647, seq 1407, length 64
Код: Выделить всё
[~]:tcpdump -npli fxp1 proto gre
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on fxp1, link-type EN10MB (Ethernet), capture size 96 bytes
04:47:23.117482 IP 79.143.32.X > 24.173.208.X: GREv0, length 88: IP 10.255.255.100 > 10.255.255.99: ICMP echo reply, id 647, seq 1436, length 64
04:47:23.943578 IP 24.173.208.X > 46.164.148.X: GREv0, length 88: IP 10.255.255.99 > 10.255.255.100: ICMP echo request, id 647, seq 1437, length 64
04:47:24.122490 IP 79.143.32.X > 24.173.208.X: GREv0, length 88: IP 10.255.255.100 > 10.255.255.99: ICMP echo reply, id 647, seq 1437, length 64
04:47:24.944596 IP 24.173.208.X > 46.164.148.X: GREv0, length 88: IP 10.255.255.99 > 10.255.255.100: ICMP echo request, id 647, seq 1438, length 64
Это же подтверждается tcpdump'ом в локальном офисе:
Код: Выделить всё
[~]:tcpdump -npli ng1 proto gre
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ng1, link-type NULL (BSD loopback), capture size 96 bytes
12:49:13.131120 IP 46.164.148.X > 24.173.208.X: GREv0, length 88: IP 10.255.255.100 > 10.255.255.99: ICMP echo reply, id 647, seq 1546, length 64
12:49:14.133034 IP 46.164.148.X > 24.173.208.X: GREv0, length 88: IP 10.255.255.100 > 10.255.255.99: ICMP echo reply, id 647, seq 1547, length 64
12:49:15.132920 IP 46.164.148.X > 24.173.208.X: GREv0, length 88: IP 10.255.255.100 > 10.255.255.99: ICMP echo reply, id 647, seq 1548, length 64
Со входящим трафиком все нормально:
Код: Выделить всё
[~]:tcpdump -npli vlan9 proto gre
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan9, link-type EN10MB (Ethernet), capture size 96 bytes
12:50:48.229123 IP 24.173.208.X > 46.164.148.X: GREv0, length 88: IP 10.255.255.99 > 10.255.255.100: ICMP echo request, id 647, seq 1641, length 64
12:50:49.229072 IP 24.173.208.X > 46.164.148.X: GREv0, length 88: IP 10.255.255.99 > 10.255.255.100: ICMP echo request, id 647, seq 1642, length 64
12:50:50.229140 IP 24.173.208.X > 46.164.148.X: GREv0, length 88: IP 10.255.255.99 > 10.255.255.100: ICMP echo request, id 647, seq 1643, length 64
12:50:51.233972 IP 24.173.208.X > 46.164.148.X: GREv0, length 88: IP 10.255.255.99 > 10.255.255.100: ICMP echo request, id 647, seq 1644, length 64
Код: Выделить всё
[~]:netstat -rn | grep 24.173
24.173.208.X/32 46.164.148.Y UGS 0 0 vlan9
Если пустить ping, traceroute или mtr - пакеты уходят с vlan9, а вот gre уходит с ng1 вместо vlan9.
Помогите, пожалуйста, в какую сторону хоть смотреть и как изменить это поведение.
P.S. Также тему создал на BSDPortal'е.