Połączenie VPN między Windows Azure a domowym laboratorium
Jedną z funkcjonalności jaką udostępnia Windows Azure jest możliwość połączenia lokalnej sieci firmowej z wirtualną siecią zlokalizowaną w chmurze. Połączenie realizowane jest za pomocą VPN Site to Site (S2S) przy wykorzystaniu szyfrowania opartego o IPSec. Microsoft w dokumentacji do Windows Azure wskazał listę oficjalnie wspieranych urządzeń i oprogramowania, dzięki którym możliwe jest zestawienie tunelu VPN. Lista ta znajduje się pod tym adresem: lista urządzeń. Pomimo kilkunastu pozycji na tej liście, ich dostępność i wykorzystanie w domowej sieci jest mało opłacalne i osiągalne. Dodatkowo, urządzenie takie musi zostać umieszczone na brzegu naszej domowej sieci i uzyskać nasz publiczny adres IP. W większości przypadków wiązałoby się to z zastąpieniem obecnego urządzenia.
Rozwiązanie problemu
Rozwiązaniem problemu jest oprogramowanie Vyatta. Miałem już okazję pisać o prostym zastosowaniu Vyatty w labie – WIRTUALNY ROUTER W LABIE, CZYLI INSTALACJA I PODSTAWOWA KONFIGURACJA VYATTY NA HYPER-V. W poprzednim wpisie znajdziecie informację jak ją zainstalować i skonfigurować podstawowe parametry.
Powyżej schemat przedstawia sieć, dla jakiej będzie opisana poniższa konfiguracja Vyatty.
- Domowa sieć IP to 192.168.1.0/24.
- Sieć wirtualna w Windows Azure to 172.16.0.0/16.
- Domowy router jest podłączony do Internetu z publicznym adresem IP.
- Domowy router od strony LANu ma adres 192.168.1.1
- Serwery testowe są w sieci domowej.
- Vyatta posiada tylko jedną kartę sieciową.
- Vyatta ma adres 192.168.1.3
Konfiguracja będzie składać się z następujących kroków:
- Instalacja Vyatty i konfiguracja adresu IP oraz włączenie SSH.
- Konfiguracja przekierowania portów potrzebnych dla IPSec na domywam routerze na Vyattę.
- Konfiguracja statycznego VPN w Azure.
- Konfiguracja VPN w Vyatta.
- Konfiguracja routingu.
Instalacja Vyatty
Pierwszym krokiem będzie przygotowanie maszyny wirtualnej z wirtualnym routerem i oraz jego podstawowa konfiguracja. Odsyłam do mojego poprzedniego wpisu jak to zrealizować - WIRTUALNY ROUTER W LABIE, CZYLI INSTALACJA I PODSTAWOWA KONFIGURACJA VYATTY NA HYPER-V. Z tamtego wpisu pomijamy konfigurację dodania drugiej karty sieciowej, natowania oraz konfigurację serwera DHCP. Wystarczy tylko jedna karta sieciowa z adresem sieci domowej i włączenie SSH.
Kiedy mamy gotową Vyattę czas na domowy router. Na routerze należy przekierować porty 50, 500 oraz 4500 na adres IP Vyatta. Poniżej zrzut konfiguracji przekierowania portów z mojego routera NETGEAR JNR300.
Konfiguracja Windows Azure
Konfigurację statycznego VPN( Static routing VPNs) po stronie Azure dokonujemy zgodnie z dokumentację dostępną tutaj. Kiedy skonfigurujemy po stronie Azure VPN trzeba odczekać około 15 minut na jego stworzenie.
Konfiguracja Vyatta
Czas teraz na Vyattę. Logujemy się do niej po SSH za pomocą putty lub innego klienta i dokonujemy konfiguracji. Przechodzimy do trybu konfiguracji na Vyatta:
configrue
Rozpoczynamy od konfiguracji ogólnych ustawień IPSec:
set vpn ipsec disable-uniqreqids
set vpn ipsec ipsec-interfaces interface eth0
set vpn ipsec nat-traversal enable
Teraz konfiguracja ESP:
set vpn ipsec esp-group esp-azure lifetime 3600
set vpn ipsec esp-group esp-azure pfs disable
set vpn ipsec esp-group esp-azure proposal 1 encryption aes256
set vpn ipsec esp-group esp-azure proposal 1 hash sha1
Konfiguracja IKE:
set vpn ipsec ike-group ike-azure lifetime 28800
set vpn ipsec ike-group ike-azure proposal 1 dh-group 2
set vpn ipsec ike-group ike-azure proposal 1 encryption aes256
set vpn ipsec ike-group ike-azure proposal 1 hash sha1
Teraz konfiguracja samego połączenia z Azure. W polecaniach W ostatniej linijce zdefiniowaliśmy adres wirtualnej sieci w Azure. Ważne jest, aby podać cały adres sieci wirtualnej, a nie tylko jednej z utworzonych podsieci w ramach Azure, ponieważ połączenie IPSec nie zadziała. Ostatnim poleceniem do wykonania przy konfiguracji VPNu jest podanie współdzielonego klucza do uwierzytelnienia połączenia IPSec. Klucz uzyskujemy z tej samej strony, co adres IP bramy Azure. Kiedy mamy już klucz możemy go wprowadzić do konfiguracji: Pozostaje tylko zapisać konfigurację Vyatty. W moim przypadku cała konfiguracja VPN wygląd następująco: Po stronie Vyatty możemy sprawdzić stan połączenia za pomocą polecenia show vpn ipsec sa. Jeżeli wszystko skonfigurowaliśmy dobrze to wynik polecenia będzie następujący dla powyższej konfiguracji: Szczegółowe logi IPSec są dostępne z polecenia show log vpn ipsec. Po stronie Azure po prawidłowym połączniu będziemy mogli zobaczyć taki widok: Ostatnim krokiem jest konfiguracja routingu w sieci domowej. Ponieważ Vyatta nie jest bramą domyślaną dla urządzeń w sieci lokalnej trzeba skonfigurować routing do Azure przez nią. Możemy dokonać tego na dwa sposoby: Opcja pierwsza wymaga konfiguracji na każdym z urządzeń. W systemach Windows dokonamy tego poleceniem: Drugą możliwością jest ustawienie statycznego routingu na domowym routerze. Większość urządzeń dedykowanych do domowych sieci pozwala na realizację takiej konfiguracji. Pozwoli to na dostęp wszystkich urządzeń w sieci lokalnej do wirtualnej sieci w Windows Azure. Poniżej zrzut konfiguracji z mojego routera NETGEAR JNR300.set vpn ipsec site-to-site peer <AzureIP>
set vpn ipsec site-to-site peer <AzureIP> connection-type respond
set vpn ipsec site-to-site peer <AzureIP> default-esp-group esp-azure
set vpn ipsec site-to-site peer <AzureIP> ike-group ike-azure
set vpn ipsec site-to-site peer <AzureIP> local-address 192.168.1.3
set vpn ipsec site-to-site peer <AzureIP> tunnel 1 local prefix 192.168.1.0/24
set vpn ipsec site-to-site peer <AzureIP> tunnel 1 remote prefix 172.16.0.0/16
set vpn ipsec site-to-site peer <AzureIP> authentication pre-shared-secret <klucz do uwierzytelnienia>
commit
vpn {
ipsec {
disable-uniqreqids
esp-group esp-azure {
lifetime 3600
pfs disable
proposal 1 {
encryption aes256
hash sha1
}
}
ike-group ike-azure {
lifetime 28800
proposal 1 {
dh-group 2
encryption aes256
hash sha1
}
}
ipsec-interfaces {
interface eth0
}
nat-traversal enable
site-to-site {
peer 137.117.241.21 {
authentication {
pre-shared-secret ncyj3RF1E3uYA95zRmfqzLWJo6RhiA6p
}
connection-type respond
default-esp-group esp-azure
ike-group ike-azure
local-address 192.168.1.3
tunnel 1 {
local {
prefix 192.168.1.0/24
}
remote {
prefix 172.16.0.0/16
}
}
}
}
}
}
Peer ID / IP Local ID / IP
------------ -------------
137.117.241.21 192.168.1.3
Tunnel State Bytes Out/In Encrypt Hash NAT-T A-Time L-Time Proto
------ ----- ------------- ------- ---- ----- ------ ------ -----
1 up 9.5K/9.6K aes256 sha1 yes 1201 3600 all
route add 172.16.0.0 mask 255.255.0.0 192.168.1.3 –p