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:
#!/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;
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; }
10.2.0.90 1234
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.
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.
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# 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