6.07.2007
Openswan: The Internet as a big subnet
Ако решите да свързвате две отдалечени точки с openswan ползвайки NETKEY по начина описан тук, то конфигурацията би следвало да е нещо такова:
точка 1
conn main
left=a.b.c.d
leftsubnet=0.0.0.0/0
leftsourceip=192.168.1.1
leftnexthop=
leftrsasigkey=
right=w.x.y.z
rightsubnet=10.1.10.0/24
rightsourceip=10.1.10.1
rightnexthop=
rightrsasigkey=
auto=start
точка 2
conn main
right=a.b.c.d
rightsubnet=0.0.0.0/0
rightsourceip=192.168.1.1
rightnexthop=
rightrsasigkey=
left=w.x.y.z
leftsubnet=10.1.10.0/24
leftsourceip=10.1.10.1
leftnexthop=
leftrsasigkey=
auto=start
По този начин най-вероятно ще се сблъскате с два проблема. Първият, е че при тази конфигурация в точка 2 openswan-а ще праща всичко през тунела, включително и заявките на компютрите от подмрежа 10.1.10.0/24 към 10.1.10.1. Вторият проблем е, че най-вероятно връзката между подмрежите от двете страни ще е толкова бавна, че няма да можете да достъпвате почти нищо. Причината е, че пакетите между двете модмрежи се фрагментират. Пускайки tcpdump на външния интерфейс на която и да е от двете точки ще видите много съобщения като това:
IP 10.1.10.1 > 10.1.10.27: ICMP 192.168.1.1 unreachable - need to frag (mtu 1428), length 55
И двата проблема се разрешават като се добави следната нова връзка в конфигурацията на точка 2:
conn passthrough
right=192.168.1.1
rightsubnet=10.1.10.0/24
left=10.1.10.1
leftsubnet=10.1.10.0/24
type=passthrough
authby=never
auto=route
19.12.2007 в 14:25
Тази конфигурация работеше доста време без проблеми, докато тези дни не се натъкнах на един. В някои случаи компютри от точка 2 нямат достъп до определени ресурси в интернет. След бая ровене и дъмпване се оказа, че това важи само за пакети, които идват с високо MTU и с флаг “Don’t Fragment”. При tcpdump на външния интерфейс на точка 1 се вижда следното:
IP a.b.c.d > the_ip_on_internet: ICMP a.b.c.d unreachable - need to frag (mtu 1428), length 556
Разбира се отсрещния хост блокира ICMP.
Успях да се справя с това като на точка 2 зададох следното в iptables:
iptables -I FORWARD -o the_internal_dev -p tcp -s 10.1.10.0/24 -d ! 192.168.1.0/24 –tcp-flags SYN,RST SYN -j TCPMSS –clamp-mss-to-pmtuГорното сработва само ако е последна команда във FORWARD ползваща insert.