Нужно поднять такой же туннель между хостами A и С. Хост C работает на FreeBSD 7.1 (с kernel nat, если это важно).
Все вроде просто. Делаем все по инструкции - http://www.lissyara.su/?id=1328. В результате на хосте A создается еще один гиф - gif1, с туннелем и роутингом. Правится ipsec.conf и racoon.conf. Плюс правила для IPFW (в самом вверху до дивертов и форвардов).
Для хоста C по такой же схеме. Правила IPFW запихиваю в самый вверх (ну почти, IPFW по-умолчанию ставит первыми правила для lo0). И все должно работать. Но не работает.
Хост A имеет айпи 192.168.2.100
Хост C имеет айпи 192.168.1.100
Делаю пинг с хоста A на хост C:
Код: Выделить всё
#ping 192.168.1.100
PING 192.168.1.100 (192.168.1.100): 56 data bytes
^C
--- 192.168.1.100 ping statistics ---
4 packets transmitted, 0 packets received, 100% packet loss
14:28 bess@box [bess]#ping 192.168.1.100
PING 192.168.1.100 (192.168.1.100): 56 data bytes
^C
--- 192.168.1.100 ping statistics ---
5 packets transmitted, 0 packets received, 100% packet loss
Код: Выделить всё
#tcpdump -i gif1
tcpdump: listening on gif1
14:28:42.065241 192.168.2.100 > 192.168.1.100: icmp: echo request
14:28:43.069211 192.168.2.100 > 192.168.1.100: icmp: echo request
14:28:44.079221 192.168.2.100 > 192.168.1.100: icmp: echo request
14:28:45.089228 192.168.2.100 > 192.168.1.100: icmp: echo request
14:28:46.099238 192.168.2.100 > 192.168.1.100: icmp: echo request
Код: Выделить всё
tcpdump -i gif0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on gif0, link-type NULL (BSD loopback), capture size 96 bytes

Делаю пинг с хоста C на хост A - тут намного интереснее:
Код: Выделить всё
# ping 192.168.2.100
PING 192.168.2.100 (192.168.2.100): 56 data bytes
^C
--- 192.168.2.100 ping statistics ---
5 packets transmitted, 0 packets received, 100.0% packet loss
Код: Выделить всё
tcpdump -i gif0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on gif0, link-type NULL (BSD loopback), capture size 96 bytes
14:37:11.783882 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 16288, seq 0, length 64
14:37:12.784145 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 16288, seq 1, length 64
14:37:13.785110 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 16288, seq 2, length 64
14:37:14.786083 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 16288, seq 3, length 64
14:37:15.787051 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 16288, seq 4, length 64
Код: Выделить всё
#tcpdump -i gif1
tcpdump: listening on gif1
14:35:18.292822 192.168.1.100 > 192.168.2.100: icmp: echo request
14:35:18.292832 192.168.2.100 > 192.168.1.100: icmp: echo reply
14:35:19.294324 192.168.1.100 > 192.168.2.100: icmp: echo request
14:35:19.294334 192.168.2.100 > 192.168.1.100: icmp: echo reply
14:35:20.295794 192.168.1.100 > 192.168.2.100: icmp: echo request
14:35:20.295804 192.168.2.100 > 192.168.1.100: icmp: echo reply
14:35:21.295979 192.168.1.100 > 192.168.2.100: icmp: echo request
14:35:21.295989 192.168.2.100 > 192.168.1.100: icmp: echo reply
Народ! Хелп!

