Title

Dynamic Multipoint VPN mit Linux - DMVPN

Seit ich DMVPN so um 2004/5 kennen gelernt habe halte ich es für eine smarte Kombination von IPSec, GRE und NHRP. Vielen Dank an die Jungens von Cisco (Christoph, Frederick und alle Anderen) für das Entwickeln.

Wenn ihr mehr über DMVPN erfahren wollt könnt ihr das unter "Cisco/DMVPN" mehr erfahren.

Anfang 2009 hab ich dann die Schlüsselkomponente NHRP als OpenSource implementation unter Linux gefunden. Das Projekt heist "OpenNHRP" und könnt ihr auf Sourceforge finden. Hier nun ein kurzer Bericht über meine ersten Erfahrungen mit dem DMVPN und Linux.

Es hat mich eine oder zwei Minuten gekostet eine VM mit Debian und den nötigen Tools zu installiern. Für die Tests hab ich eine Dabian SID Version mit Kernel 2.6.26-1-686 und die IPSec Tools in der Version 0.8-alpha20090126 genutzt.
Nach ein wenig Patchen, configure und make, hatte ich die Vorrausetzungen für OpenNHRP geschaffen.

Hier nun ein wenig zur Konfiguration:

/etc/ipsec-tools.conf
#!/usr/sbin/setkey -f
spdflush;
spdadd 0.0.0.0/0 0.0.0.0/0 gre -P out ipsec esp/transport//require;
spdadd 0.0.0.0/0 0.0.0.0/0 gre -P in ipsec esp/transport//require;

/etc/racoon/racoon.conf
path pre_shared_key "/etc/racoon/psk.txt";
remote anonymous {
	exchange_mode main,aggressive;
	lifetime time 24 hour;
	# nat_traversal on;
	script "/etc/opennhrp/racoon-ph1down.sh" phase1_down;
	proposal {
		encryption_algorithm 3des;
		hash_algorithm sha1;
		authentication_method pre_shared_key;
		dh_group 5;
	}
}
sainfo anonymous {
	lifetime time 12 hour;
	encryption_algorithm 3des, blowfish 448, rijndael;
	authentication_algorithm hmac_sha1, hmac_md5;
	compression_algorithm deflate;
}				

/etc/racoon/psk.txt
 10.2.0.90 1234

/etc/opennhrp/opennhrp.conf
 interface gre1
	map 172.255.255.1/24 10.2.0.90 register cisco
	cisco-authentication 1234
	shortcut

Jetzt ist es an der Zeit den Tunnel zu erstellen.

shell#
ip tunnel add gre1 mode gre key 1234 ttl 64
ip addr add 172.255.255.2/24 dev gre1
ip tunnel change gre1 local 10.0.81.115
ip link set gre1 up

Jetzt schauen wir uns die andere Seite an. Hier habe ich einen Cisco 1812 Router mit IOS 12.4.15T7 verwendet.

Router(conf)#
crypto isakmp policy 10
  encr 3des
  authentication pre-share
  group 5
!
crypto isakmp key 1234 address 0.0.0.0 0.0.0.0
!
crypto ipsec transform-set TRANSFORMSET_3 esp-3des esp-sha-hmac
  mode transport
!
crypto ipsec profile Profile3
  set transform-set TRANSFORMSET_3
!
interface Tunnel888
  ip address 172.255.255.1 255.255.255.0
  no ip redirects
  no ip unreachables
  no ip proxy-arp
  ip mtu 1400
  ip flow ingress
  ip nhrp authentication 1234
  ip nhrp map multicast dynamic
  ip nhrp network-id 10064
  ip nhrp holdtime 360
  ip nhrp max-send 200 every 10
  ip route-cache same-interface
  ip tcp adjust-mss 1350
  load-interval 30
  tunnel source 10.2.0.90
  tunnel mode gre multipoint
  tunnel key 1234
  tunnel protection ipsec profile Profile3
				

und siehe da

Router#
Router# sh dmvpn interface tunnel 888
Load for five secs: 8%/3%; one minute: 9%; five minutes: 10%
Time source is NTP, 22:14:22.148 CET Sat Feb 14 2009
Legend: Attrb --> S - Static, D - Dynamic, I - Incompletea
N - NATed, L - Local, X - No Socket
# Ent --> Number of NHRP entries with same NBMA peer
Tunnel888, Type:Hub, NHRP Peers:1,
# Ent Peer NBMA Addr Peer Tunnel Add State UpDn Tm Attrb
----- --------------- --------------- ----- -------- -----
1 10.0.81.115 172.255.255.2 UP never D
Router# ping 172.255.255.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.255.255.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/8 ms