Instabile VPN-Verbindung zwischen Microsoft Azure und Vyatta

17659406_blogWir haben bereits in einem Blogbeitrag erwähnt, wie ein Site-To-Site VPN-Tunnel in Azure am Beispiel eines Vyatta-Routers aufgebaut werden kann. Kürzlich wollten wir den Tunnel für ein anderes virtuelles Netzwerk in Azure aufbauen und sind dabei auf folgendes Problem gestoßen: die Verbindung war instabil. Sie brach nach bestimmten Zeitintervallen immer wieder ab. Das Problem ist uns nicht sofort aufgefallen, da die Daten größtenteils erfolgreich übertragen werden konnten.

Zwar antworteten die virtuelle Maschinen in Azure auf Ping sowie zudem die Remote Desktop Verbindung realtiv gut funktionierte, dennoch scheiterte die Synchronisierung des Domain Controllers in Azure. Nun haben wir uns auf die Fehlersuche begeben. Vyatta (bzw. VyOS) setzt Openswan für den Aufbau des IPsec-Tunnels ein. Um das Logging für einen bestehenden IPsec-Tunnel in Vyatta einzuschalten, kann beispielsweise folgende Befehlsfolge verwendet werden:

$ configure
# set vpn ipsec logging log-modes all
# commit && save && exit

Um die produzierten Logs zu lesen, muss folgender Befehl eingegeben werden:

$ show vpn debug detail

In dem Log ist uns aufgefallen, dass dort ab und zu ein Eintrag steht:

pluto[26353]: "peer-123.45.67.89-tunnel-4" #9298: max number of retransmissions (2) 
reached STATE_MAIN_R1
(123.45.67.89 ist die Adresse des Gateways in Azure)

Der Fehler verweist darauf, dass der Router Anfragen an das Azure-Gateway sendet, aber die Antwort ausfällt. Lange haben wir nach Lösungen gesucht: Weder Wiederaufbau des Tunnels, noch Anbieterwechsel, noch Reboot des Routers konnten uns helfen. Letzlich haben wir den Gateway in Azure gelöscht, neuerstellt, den Tunnel aufgebaut und (oh Wunder!) es ging sofort ohne seltsame Abbrüche.

Man kann es kaum glauen, aber in Azure können durchaus technische Probleme entstehen und diese dürfen auf keinem Fall komplett ausgeschlossen werden. Sollten Sie auf ähnliche Probleme stoßen, so können Sie uns jederzeit kontaktieren.

Während der Fehlersuche haben wir den Tunnel oft neuaufgebaut: Um den Vorgang zu beschleunigen, haben wir ein kleines Skript für Vyatta geschrieben, welches in wenigen Sekunden den Tunnel erstellt. Als Bonus für die Leser möchte ich das Skript hier veröffentlichen:

#!/bin/vbash
#Gateway IP's
azure_gateway_ip="123.45.67.89"
local_gateway_ip="98.76.54.43"

 

#Key muss beim Gateway in Azure abgelesen werden

azure_pre_shared_secret="presharedkeyfromazure"

 

#Networks

azure_net="10.10.20.0/24"
local_net="10.10.10.0/24"

 

#Change in Vyatta-Mode

source /opt/vyatta/etc/functions/script-template

 

#Configure

echo "In Configure-Mode beigetretten"
echo "Eine site-to-site VPN-Verbindung zwischen ${azure_gateway_ip} und
{$local_gateway_ip} wird aufgebaut..."
set vpn ipsec site-to-site peer $azure_gateway_ip
set vpn ipsec site-to-site peer $azure_gateway_ip description 'Azure-VPN'
set vpn ipsec site-to-site peer $azure_gateway_ip connection-type respond

#IKE&ESP-Groups sollten bereits bestehen

set vpn ipsec site-to-site peer $azure_gateway_ip default-esp-group esp-azure
set vpn ipsec site-to-site peer $azure_gateway_ip ike-group ike-azure
set vpn ipsec site-to-site peer $azure_gateway_ip local-address $local_gateway_ip
set vpn ipsec site-to-site peer $azure_gateway_ip authentication pre-shared-secret
$azure_pre_shared_secret

 

#Tunnels einrichten

set vpn ipsec site-to-site peer $azure_gateway_ip tunnel 1 local prefix $local_net
set vpn ipsec site-to-site peer $azure_gateway_ip tunnel 1 remote prefix $azure_net

 

#Aenderungen speichern

commit
save
echo "Verlasse configuration-mode..."
exit
echo "Fertig..."

Um das Skript auf der Vyatta ausführen zu können, brauchen Sie die Rechte zum Ausführen von chmode +x script.sh.

Ähnlicher Blogartikel: Windows Azure mit VPN (Vyatta) verbinden

Autor: Walter Nuss

PT_Blog_VK_WNuss_jpg

Hinterlasse eine Antwort