Připojení k Azure přes OpenVPN

Dan Ohnesorg 31. 8. 2016

Pokud spojujete svou síť s cloudem, zpravidla to děláte přes IPsec. To je sice roky ověřené řešení, ale přesto nastávají situace, kdy úplně nevyhovuje. My jsme úspěšně použili OpenVPN.

Řešili jsme problém zákazníka, který trpěl nekvalitou spojení do Microsoft Azure. Přece jen je to spojení přes půl Evropy a několik poskytovatelů, stačí malý problém u jednoho z nich, nastane packet loss a následně rozpad IPsec tunelu. To je poměrně nepříjemná situace, protože znovu navázání trvá relativně dlouho a nemáte ani moc možností ovlivnit konfiguraci, protože ta na straně Azure je jedna a je pevně daná.

Navíc uživatelé pracují přes vzdálenou plochu a vidí tedy okamžitě každou nestabilitu konektivity.

Proto jsme se rozhodli zkusit OpenVPN, která má dvě přednosti, lépe se vyrovná se ztrátami paketů a umí přenášená data komprimovat, takže šetří pásmo a peníze za datové přenosy z cloudu. Současně oddaluje okamžik, kdy se linka provozem „ucpe“.

Instalace Linuxu do Azure je snadná operace a již se o tom na Rootu psalo, takže to nebudu rozepisovat. Zajímavá je jiná část konfigurace. Ta IPsec gateway má totiž v rámci Azure specifické postavení, provoz je přes ní směrován automaticky, pokud v konfiguraci vyjmenujeme, jaké síťové rozsahy lokální síť používá.

Při použití jiné VPN brány si musíme nastavit routing sami. To se nedá udělat přes GUI, ale naštěstí existuje velmi pěkná řádková utilita jménem Azure CLI. Její instalace je opravdu jednoduchá, pokud máme instalovaný node package manager, stačí zadat

npm install azure-cli -g

to -g znamená, že balíček bude dostupný globálně, ne jen pro jeden projekt. Potom se musíme přihlásit do Azure, opět jednoduchá operace

dan@dan:~> azure login
info:    Executing command login
info:    To sign in, use a web browser to open the page https://aka.ms/devicelogin. Enter the code XXXXXXX to authenticate.
info:    Added subscription AdminIT Production
+
info:    login command OK

Utilita vypíše URL, které navštívíte v prohlížeči a zadáte kód a tím získáte možnost pracovat s Azure. Pokud pro správu nepoužíváte dvoufaktorovou autentizaci, tak je možné zadat jméno a heslo přímo, tento režim se použije, pokud je na příkazové řádce uveden parametr -u následovaný uživatelským jménem.

Od této chvíle můžete z příkazové řádky udělat cokoliv, co ostatní konfigurují přes web, a spoustu dalších věcí.

Další krok je výběr režimu utility a tím současně verze Azure, kterou budete používat. Můžete zadat buď

azure config mode asm

nebo

azure config mode arm

Rozdíly mezi verzemi přesahují tento článek, berte to tak, že ASM je první verze cloudu a ARM je druhá vylepšená verze. Nové projekty tedy určitě chtějí ARM.

Azure má jednu specifickou vlastnost, síť propojující jednotlivé virtuální servery není L2 a je potřeba na to nezapomínat, když něco nefunguje. Náš virtuální stroj s OpenVPN nedostane pakety, které nejsou určeny přímo pro něj, tedy nemůže vidět náš plánovaný routovaný provoz. To mu musíme nejdříve dovolit. A to je věc, kterou lze snadno nastavit jen v novém režimu, tedy v ARM.

azure network nic set -g linuxOpenVPN -n NIC1 -f true

V ASM není tato volba k dispozici a budete muset požádat windows-kolegu, aby v rámci PowerShellu spustil

Get-AzureVM -ServiceName YOUR_CLOUD_SERVICE -Name linuxOpenVPN | Set-AzureIPForwarding -NetworkInterfaceName NIC1 -Enable

Zbytek návodu už platí pro obě verze stejně.

Konečně se dostávám k routovacím tabulkám. Tedy v terminologii Azure User Defined Routing. Routovací tabulky si vypíšeme přes

azure network route-table list

ale ve výchozím stavu je tento seznam prázdný. Musíme si tedy routovací tabulku vytvořit

azure network route-table create -n 'openvpn' -l 'West Europe'

Co jsem udělal je asi jasné, vytvořil jsem routovací tabulku jménem openvpn v lokalitě West Europe, tedy v Holandsku.

A rovnou si do ní přidám routu do naší sítě:

azure network route-table route set -r 'openvpn' -n 'openvpn1' -a 10.10.10.0/24 -t VirtualAppliance -p 192.168.1.1

Tady jsem do routovací tabulky openvpn přidal routu jménem openvpn1 a říkám, že cesta do sítě 10.10.10.0/24 povede přes virtuální server s IP adresou 192.168.1.1. Síť 10.10.10.0/24 se nachází ve firmě, tedy tzv. OnPremise a adresa 192.168.1.1 je virtuální server s instalovanou OpenVPN uvnitř Azure.

Tato routovací tabulka se ale ještě nepoužívá, nejříve ji musím připojit k subnetu uvnitř Azure.

azure network vnet subnet route-table add -t 'AdminIT Azure' -n 'FrontEnd' -r 'openvpn'

Tady jsem v síti jménem AdminIT Azure, která je rozdělena na více subnetů, přidal do subnetu jménem FrontEnd nově vytvořenou routovací tabulku. Od této chvíle, resp. v průběhu hodiny, než se konfigurace zreplikuje napříč cloudem, budou všechny do něj připojené stroje posílat pakety do sítě 10.10.10.0/24 přes ten linuxový router.

Rout do routovací tabulky mohu přidat libovolné množství, každá musí mít unikátní jméno, přes které ji potom např. mohu smazat.

Samozřejmě tento postup lze použít i pro mnoho dalších aplikací, např. pro instalaci IDS, IPS, použití vlastních loadbalancerů a podobně.

widgety

Na závěr graf odezev linky:

Vidíte tam dva zlomové momenty, první je výměna poskytovatele za takového, který garantuje větší šířku pásma do zahraničí a potom na začátku února nahrazení IPsec tunelu za OpenVPN.

Našli jste v článku chybu?
Podnikatel.cz: Rohlik.cz testoval roboty pro rozvážku

Rohlik.cz testoval roboty pro rozvážku

DigiZone.cz: RRTV: frekvence pro Country Radio

RRTV: frekvence pro Country Radio

Podnikatel.cz: Babišovi se nedá věřit, stěžovali si hospodští

Babišovi se nedá věřit, stěžovali si hospodští

Podnikatel.cz: I vám můžou vykrást značku. Braňte se

I vám můžou vykrást značku. Braňte se

Vitalia.cz: Voda z Vltavy před a po úpravě na pitnou

Voda z Vltavy před a po úpravě na pitnou

DigiZone.cz: Regionální tele­vize CZ vysílá "Mapu úspěchu"

Regionální tele­vize CZ vysílá "Mapu úspěchu"

Podnikatel.cz: ČSSZ posílá přehled o důchodovém kontě

ČSSZ posílá přehled o důchodovém kontě

120na80.cz: Co je padesátkrát sladší než cukr?

Co je padesátkrát sladší než cukr?

DigiZone.cz: Budoucnost TV vysílání ve Visegrádu

Budoucnost TV vysílání ve Visegrádu

Podnikatel.cz: Udělali jsme velkou chybu, napsal Čupr

Udělali jsme velkou chybu, napsal Čupr

Vitalia.cz: Tohle všechno se dá usušit

Tohle všechno se dá usušit

DigiZone.cz: DVB-T2 ověřeno: seznam TV zveřejněn

DVB-T2 ověřeno: seznam TV zveřejněn

Lupa.cz: Odkazy na pirátský obsah mohou být nelegální

Odkazy na pirátský obsah mohou být nelegální

Vitalia.cz: Antibakteriální mýdla nepomáhají, spíš škodí

Antibakteriální mýdla nepomáhají, spíš škodí

Lupa.cz: Jak se prodává firma za miliardu?

Jak se prodává firma za miliardu?

Lupa.cz: Jak levné procesory změnily svět?

Jak levné procesory změnily svět?

DigiZone.cz: Nova opět stahuje „milionáře“

Nova opět stahuje „milionáře“

Vitalia.cz: Nová vakcína proti chřipce se aplikuje nosem

Nová vakcína proti chřipce se aplikuje nosem

120na80.cz: Galerie: Čínští policisté testují českou minerálku

Galerie: Čínští policisté testují českou minerálku

DigiZone.cz: Sat novinky: NASA Ultra HD (4K)

Sat novinky: NASA Ultra HD (4K)