Przejdź do treści

Azure – UDR (User Defined Routes)

UDR (User Defined Routes) on MS Azure - blog 2022

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.

 Azure Virtual network - tworzenie sieci virtualnej
 Azure Virtual network - tworzenie sieci virtualnej

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

Azure virtual machine - tworzenie maszyny wirtualnej (basic)
Azure virtual machine - tworzenie maszyny wirtualnej (networking)

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.

Azure route tables
Azure route tables add
Azure create route tables

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ę.

Azure route tables add routes
Azure route tables add route

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.

Azure route tables add subnet
Azure route tables add subnet

Ż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.

Azure Virtual machine networking
Azure Virtual machine networking - włączenie IP forwarding

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.

polecenie ping na serwerze linux
Polecenie tracerout na serwerze linux

Więcej informacji na temat samego peeringu znajdziesz w innym artykule: