Date: Mon, 25 Jan 2010 10:38:15 GMT From: Alexey <vodvorezlaya@i.ua> To: freebsd-gnats-submit@FreeBSD.org Subject: misc/143208: IPSec over gif interface Message-ID: <201001251038.o0PAcFUm077853@www.freebsd.org> Resent-Message-ID: <201001251040.o0PAe6ZO012250@freefall.freebsd.org>
index | next in thread | raw e-mail
>Number: 143208
>Category: misc
>Synopsis: IPSec over gif interface
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Mon Jan 25 10:40:06 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator: Alexey
>Release: 8.0
>Organization:
home
>Environment:
FreeBSD freebsd01.internal.corp 8.0-RELEASE FreeBSD 8.0-RELEASE #4: Wed Jan 20 19:20:35 UTC 2010 root@freebsd01.internal.corp:/usr/obj/usr/src/sys/ROUTER i386
>Description:
There is a simple network with two gateways, each gateway one interface connected to the Internet (em1 interfaces) to a local area network (em0 interfaces).
FreeBSD01:
Code:
freebsd01# ifconfig
em0: inet 192.168.192.151 netmask 0xffffff00 broadcast 192.168.192.255
em1: inet 10.0.0.1 netmask 0xff000000 broadcast 10.255.255.255
lo0: inet 127.0.0.1 netmask 0xff000000
gif0: tunnel inet 10.0.0.1 -> 10.10.10.1
inet 192.168.192.151 -> 192.168.194.1 netmask 0xffffffff
Code:
freebsd02# ifconfig
em0: inet 192.168.194.1 netmask 0xffffff00 broadcast 192.168.194.255
em1: inet 10.10.10.1 netmask 0xff000000 broadcast 10.255.255.255
lo0: inet 127.0.0.1 netmask 0xff000000
gif0: tunnel inet 10.10.10.1 -> 10.0.0.1
inet 192.168.194.1 -> 192.168.192.151 netmask 0xffffffff
Installed tunnel (gif0) between two external interfaces.
Installed and configured racoon, properly configured IPSec.
When I run on freebsd01 command:
ping -S 192.168.192.151 192.168.194.1
in another terminal at
Code:
freebsd01 # tcpdump-pni gif0
IP192.168.192.151> 192.168.194.1: ICMP echo request, id 50693, seq 14, length 64
IP 10.10.10.1> 10.0.0.1: IP 192.168.194.1> 192.168.192.151: ICMP echo reply, id 50693, seq 14, length 64 (ipip-proto-4)
At
Code:
freebsd02 # tcpdump-pni gif0
IP 10.0.0.1> 10.10.10.1: IP 192.168.192.151> 192.168.194.1: ICMP echo request, id 50693, seq 150, length 64 (ipip-proto-4)
IP 192.168.194.1> 192.168.192.151: ICMP echo reply, id 50693, seq 150, length 64
Incoming packets are not encapsulated in strange ways.
If disable IPSec example command setkey -PFall works well.
If you disable IPSec for example the command setkey -PF all works well.
That is not in freebsd 6, but it appeared to freebsd 7 and 8 versions.
Perhaps there is a solution?
RUSSIAN:
Имеется две корпоративные сети (em0) связанные через интернет (em1) через два шлюза (freebsd01 и 02).
Код: Выделить всё • Развернуть
freebsd01# ifconfig
em0: inet 192.168.192.151 netmask 0xffffff00 broadcast 192.168.192.255
em1: inet 10.0.0.1 netmask 0xff000000 broadcast 10.255.255.255
lo0: inet 127.0.0.1 netmask 0xff000000
gif0: tunnel inet 10.0.0.1 -> 10.10.10.1
inet 192.168.192.151 -> 192.168.194.1 netmask 0xffffffff
Код: Выделить всё • Развернуть
freebsd02# ifconfig
em0: inet 192.168.194.1 netmask 0xffffff00 broadcast 192.168.194.255
em1: inet 10.10.10.1 netmask 0xff000000 broadcast 10.255.255.255
lo0: inet 127.0.0.1 netmask 0xff000000
gif0: tunnel inet 10.10.10.1 -> 10.0.0.1
inet 192.168.194.1 -> 192.168.192.151 netmask 0xffffffff
Соответственно установлен gif туннель во внутренние сети через внешние, установлен и настроен racoon, правильно забита база SPD, всё работает.
Но вот когда на одном шлюзов пингуешь внутреннюю сеть другого шлюза:
freebsd01:
Код: Выделить всё • Развернуть
ping -S 192.168.192.151 192.168.194.1
И делаем tcpdump -pni gif0, то получаем следующее:
Код: Выделить всё • Развернуть
freebsd01 # tcpdump-pni gif0
IP192.168.192.151> 192.168.194.1: ICMP echo request, id 50693, seq 14, length 64
IP 10.10.10.1> 10.0.0.1: IP 192.168.194.1> 192.168.192.151: ICMP echo reply, id 50693, seq 14, length 64 (ipip-proto-4)
Код: Выделить всё • Развернуть
freebsd02 # tcpdump-pni gif0
IP 10.0.0.1> 10.10.10.1: IP 192.168.192.151> 192.168.194.1: ICMP echo request, id 50693, seq 150, length 64 (ipip-proto-4)
IP 192.168.194.1> 192.168.192.151: ICMP echo reply, id 50693, seq 150, length 64
Оказывается всегда входящие пакеты появляются инкапсулированными, на обоих шлюзах симметрично.
Если отключить IPSec командой setkey -PF на обоих шлюзах - то всё ходит красиво.
Этот бок проявляется в FreeBSD начиная с 7-й версии.
В 6-й всё работает отлично, но это не позволяет связать 6-ю и 7-ю версии(ping идёт а больше ничего не работает).
Возможно кто либо сталкивался с подобной ситуацией?
Есть ли решение?
Спасибо.
P.S. На всякий случай приведу таблици маршрутизации:
Код: Выделить всё • Развернуть
freebsd01# netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.192.1 UGS 0 0 em0
10.0.0.0/8 link#2 U 1 91 em1
10.0.0.1 link#2 UHS 0 0 lo0
127.0.0.1 link#3 UH 0 26 lo0
192.168.192.0/24 link#1 U 2 245 em0
192.168.192.151 link#1 UHS 0 0 lo0
192.168.194.0/24 192.168.194.1 UGS 0 0 gif0
192.168.194.1 link#4 UH 0 27 gif0
Код: Выделить всё • Развернуть
freebsd02# netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
10.0.0.0/8 link#2 U 1 690 em1
10.10.10.1 link#2 UHS 0 0 lo0
127.0.0.1 link#3 UH 0 0 lo0
192.168.192.0/24 192.168.192.151 UGS 0 225 gif0
192.168.192.151 link#4 UH 0 12 gif0
192.168.194.0/24 link#1 U 0 0 em0
192.168.194.1 link#1 UHS 0 0 lo0
>How-To-Repeat:
Create gif interface, configure IPSec.
Run tcpdump -pni gif0 on both gateways.
Run ping.
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201001251038.o0PAcFUm077853>
