30 | Начало | Rolling Stones в Белград

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

Eдин коментар към “Openswan: The Internet as a big subnet”

  1. Милен Панков каза:

    Тази конфигурация работеше доста време без проблеми, докато тези дни не се натъкнах на един. В някои случаи компютри от точка 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.

Вашият коментар

Моля, пишете на кирилица!
Коментари на латиница се игнорират автоматично.