To będzie dłuższy wpis na temat tego, jak na platformie Azure skonfigurować Tablicę Routingu i niestandardowe trasy tak zwane UDR (User Defined Routes). Postaram się wytłumaczyć ich działanie i pokazać, w jaki sposób można je łatwo skonfigurować na konkretnym przykładzie.
Na początku zakładam, że mamy sieć z trzema podsieciami A, B i C. W każdej podsieci jest uruchomiony jeden server. Nowo stworzone sieci są całkowicie odizolowane od siebie, więc serwery nie mogą się komunikować.
Możemy użyć peeringu i skonfigurować go dla każdej sieci, wtedy serwery będą mogły się dowolnie komunikować ze sobą.
- Sieć A <=> Sieć B
- Sieć B <=> Sieć C
- Sieć A <=> Sieć C
Co jednak, jeśli byśmy chcieli, żeby ruch z sieci A, do sieci C odbywał się tylko, przez sieć B, a nie bezpośrednio?
Wtedy możemy skonfigurować peering tylko między sieciami A i B oraz B i C. Nie tworzymy peeringu między sieciami A i C. Zamiast tego tworzymy tablicę routingu i UDR.
- Sieć A <=> Sieć B
- Sieć B <=> Sieć C
Virtual network:
Zaczynamy od utworzenia sieci wirtualnej i 3 podsieci. Logujemy się na portal.azure.com i klikamy ‘create virtual network’, wybieramy nazwę dla sieci i region. Na następnej karcie wybieramy IP Address i zakres dla tworzonych podsieci.
Należy stworzyć peering między sieciami A i B oraz B i C. Jeśli chcesz się dowiedzieć więcej na temat peeringu, to zapraszam do mojego innego artykułu https://lepczynski.it/azure/azure-peering.
Virtual machine:
Teraz w każdej podsieci tworzymy po jednej maszynie wirtualnej. Należy zwrócić uwagę, żeby maszyny wirtualne były w tej samej lokalizacji co sieć. Ja nie tworzyłem publicznych adresów IP. Zalecam za to włączenie opcji „Boot diagnostics”, żeby można było później uruchomić w przeglądarce „Serial console”
Route tables:
W tym momencie możemy przystąpić do tworzenia tablicy routingu i niestandardowych tras UDR (User Defined Routes). Wyszukujemy „Route Tables” i klikamy na „Add”. Podajemy nazwę, wybieramy grupę zasobów i region, gdzie ma być stworzona nasza tablica routingu.
Gdy mamy stworzoną tabelę routingu, to możemy dodać nasze trasy klikając na ‘Routes’ i ‘Add’. Ja dodałem jedną trasę, bo ruch z sieci A do C ma się odbywać przez maszynę wirtualną VM-B w sieci B. Ruch w drugim kierunku nie będzie obsługiwany. Jeśli chcemy, by ruch w drugą stronę też był obsługiwany to dodajemy kolejną trasę.
Gdy już mamy dodaną trasę należy powiązać ją z konkretną siecią. W moim przypadku jest to sieć A, ponieważ chcę żeby cały ruch z sieci A do sieci C był kierowany przez B.
Żeby ruch mógł się odbywać należy na karcie sieciowej maszyny wirtualne VM-B włączyć IP forwarding. Najprościej to zrobić wyszukując naszą VM klikając na ‘Networking’ i nasz interfejs sieciowy. W nowo otwartej karcie wybieramy ‘IP configurations’ i przy opcji ‘IP forwarding’ klikamy na enabled.
Jeszcze tylko trzeba zalogować się na maszynę wirtualną i włączyć na niej IP forwarding. W tym celu wyszukujemy naszą maszynę wirtualną VM-B wybieramy ‘serial Console’ logujemy się wprowadzamy następujące polecenia:
# sprawdza czy IP forwarding jest włączone
sysctl net.ipv4.ip_forward
# włącza IP forwarding
sysctl -w net.ipv4.ip_forward=1
# żeby zmiany były zachowane na stałe należy edytować plik /etc/sysctl.conf i dopisać do niego
net.ipv4.ip_forward = 1
Test:
To już koniec, teraz możemy zalogować się na maszynę wirtualną VM-A i zobaczyć czy mamy połączenie z maszyną VM-C w sieci C. Na początku sprawdziłem pingi czy maszyna odpowiada, a następnie uruchomiłem polecenie tracerout, żeby zobaczyć którędy przebiega droga do poszczególnych maszyn.
Więcej informacji na temat samego peeringu znajdziesz w innym artykule: