Azure Hub-Spoke Network Topology

Fritz Gerald
ecomindo-dev
Published in
6 min readJun 30, 2021

Dalam membangun network infrastructure dibutuhkan perencanaan topology yang jelas dan sesuai kebutuhan sehingga manajemen biaya dan resource yang dibutuhkan dapat dialokasi semaksimal mungkin. Pada artikel kali ini, kita akan membahas mengenai implementasi Hub-Spoke topology menggunakan Azure.

Perlu diketahui sebelumnya, artikel ini lebih ditujukan untuk orang-orang yang memiliki pengetahuan dasar mengenai networking dan Azure.

Apa Itu Topology Hub-Spoke?

Hub-Spoke Network Topology

Network model Hub-Spoke terdiri dari dua bagian, yaitu Hub dan Spoke. Hub (sesuai dengan namanya) adalah bagian central dari network model ini. Hub mengatur konektivitas yang terdapat di dalam network dan juga dapat memuat service atau application lain yang mungkin digunakan oleh Spoke yang terhubung dengan Hub tersebut, seperti Azure Firewall atau Virtual Network Gateway.

Spoke adalah virtual network yang terhubung dengan Hub tersebut. Spoke sendiri berguna untuk mengisolasi workload yang ada sehingga dapat dikelola dengan lebih baik, misalkan terdapat Spoke A yang diisi dengan Database dan Spoke B yang diisi dengan resource Machine Learning.

Hub dan Spoke dihubungkan dengan menggunakan fitur Virtual Network Peering untuk dapat berkomunikasi satu sama lain. Pada dasarnya, Spoke tidak dapat berkomunikasi dengan Spoke lain, tetapi dapat dilakukan konfigurasi yang mengizinkan hal tersebut jika dibutuhkan.

Spoke yang Saling Terhubung

Implementasi dengan Menggunakan Azure

Hub Virtual Network

Pertama kita akan membuat Hub terlebih dahulu. Kita akan membuat virtual network bernama hub-vnet sebagai Hub. hub-vnet memiliki subnet bernama hub-vm yang akan memuat Virtual Machine (VM) yang nanti akan dibuat. Berikut merupakan konfigurasi yang digunakan.

Konfigurasi hub-vnet

Spoke Virtual Network

Kemudian kita akan membuat dua Spoke bernama spoke-dev-vnet dan spoke-test-vnet. spoke-dev-vnet dan spoke-test-vnet akan memiliki subnet bernama spoke-dev-vm dan spoke-test-vm.
Berikut merupakan konfigurasi yang digunakan.

Konfigurasi spoke-dev-vnet
Konfigurasi spoke-test-vnet

Hub Virtual Machine

Kita akan membuat VM bernama hub-vm1 di hub-vnet. hub-vm1 akan menggunakan subnet hub-vm yang telah dibuat sebelumnya. hub-vm1 memiliki public ip address yang nantinya akan digunakan untuk melakukan remote connection.
Berikut merupakan konfigurasi yang digunakan.

Konfigurasi hub-vm1

Spoke Virtual Machine

Kemudian kita akan membuat VM bernama dev-vm1 di spoke-dev-vnet dan test-vm1 di spoke-test-vnet. dev-vm1 akan menggunakan subnet spoke-dev-vm dan test-vm1 akan menggunakan subnet spoke-test-vm. Kedua VM juga memiliki public ip address yang akan digunakan untuk melakukan remote connection.
Berikut merupakan konfigurasi yang digunakan.

Konfigurasi dev-vm1
Konfigurasi test-vm1

Network Peering

Untuk menghubungkan hub-vnet dengan spoke-dev-vnet dan spoke-test-vnet dibutuhkan virtual network peering yang terjadi antara Hub dan setiap Spoke. Hal ini akan mengizinkan terjadinya komunikasi antara Hub dan Spoke tanpa mengganggu isolasi yang ada antara setiap Spoke.

Virtual Network Peering dapat dilakukan dengan menggunakan fitur Peerings di blade Settings virtual network.

Peerings

Pertama kita akan membuat peering antara hub-vnet dan spoke-dev-vnet. Terdapat beberapa opsi konfigurasi disini:

This virtual network

  • Peering link name : nama dari peering yang terjadi antara virtual network ke remote virtual network. Karena saya membuat peering dari hub-vnet ke spoke-dev-vnet maka spoke-dev-vnet dianggap sebagai remote virtual network. Biasanya penamaannya menggunakan format <nama_this_virtual_network>-<nama_remote_virtual_network>.
  • Traffic to remote virtual network : opsi ini akan mengizinkan komunikasi antara kedua virtual network yang dipeer, block jika komunikasi dari remote virtual network tidak diinginkan.
  • Traffic forwarded from remote virtual network : opsi ini akan mengizinkan traffic yang di forward (traffic tidak berasal dari remote virtual network, tetapi hanya diteruskan oleh remote virtual network, bisa saja melalui virtual appliance) masuk ke this virtual network melalui peering.
  • Virtual network gateway or Route Server : opsi ini akan mengizinkan virtual network untuk menggunakan Virtual Network Gateway sebagai jalur komunikasi, biasanya Virtual Network Gateway ini digunakan sebagai Gateway untuk koneksi Point-to-Site (P2S).

Untuk bagian Remote virtual network sama seperti bagian This virtual network, tapi kali ini hub-vnet dianggap sebagai remote virtual network.
Berikut konfigurasi yang digunakan.

Konfigurasi peering hub-vnet ke spoke-dev-vnet

Dapat dilihat dibagian Virtual network gateway or Route Server terdapat opsi yang greyed out atau tidak bisa dipilih. Hal ini terjadi karena kedua virtual network tidak memiliki virtual network gateway atau Route Server yang dapat digunakan.

Jika peering berhasil dibuat maka akan muncul peering dari bagian spoke-dev-vnet ke hub-vnet secara otomatis

Peering dari hub-vnet ke spoke-dev-vnet
Peering dari spoke-dev-vnet ke hub-vnet

Hal yang sama dapat dilakukan untuk peering dari hub-vnet ke spoke-test-vnet. Peering yang telah dibuat hanya mengizinkan komunikasi antara Hub dan Spoke, jika menginginkan komunikasi antara Spoke terdapat beberapa cara. Cara yang paling mudah adalah dengan membuat network peering antara Spoke dengan Spoke lain, tetapi terdapat limitasi dimana jumlah network peering yang terjadi dalam suatu virtual network terbatas. Cara yang lain adalah dengan membuat User Defined Route (UDR) untuk menentukan alur traffic yang ada untuk melewati suatu Gateway atau Firewall

Testing

Kita akan melakukan testing dengan melakukan remote connection ke VM yang telah dibuat sebelumnya. Testing ini bertujuan untuk memastikan Hub bisa berkomunikasi dengan Spoke dan sebaliknya, tetapi Spoke tidak dapat berkomunikasi dengan Spoke yang lain. Kita menggunakan RDP sebagai metode remote connection kali ini.

Pertama kita akan melakukan RDP ke public ip address hub-vm1 dan mengirimkan ping ke private ip address dev-vm1 dan test-vm1. Berikut private ip address untuk setiap VM:

  • hub-vm1 : 10.0.0.4
  • dev-vm1 : 10.1.0.4
  • test-vm1 : 10.2.0.4
Test koneksi hub-vm1

hub-vm1 dapat berkomunikasi dengan dev-vm1 dan test-vm1. Selanjutnya kita akan melakukan RDP ke public ip address dev-vm1 dan mengirimkan ping ke hub-vm1 dan test-vm1.

Test koneksi dev-vm1

dev-vm1 dapat berkomunikasi dengan hub-vm1 tetapi tidak dapat berkomunikasi dengan test-vm1, hal ini ditandai dengan munculnya pesan Request timed out. Selanjutnya kita akan melakukan RDP ke public ip address test-vm1 dan mengirimkan ping ke hub-vm1 dan dev-vm1.

Test koneksi test-vm1

Sama seperti dev-vm1, test-vm1 dapat berkomunikasi dengan hub-vm1 yang merupakan bagian dari Hub tetapi tidak dapat berkomunikasi dengan dev-vm1 yang merupakan bagian dari Spoke.

Next

Berdasarkan penjelasan dan langkah-langkah yang telah dilakukan, kita dapat mengimplementasikan Hub-Spoke Network Topology dengan menggunakan Azure. Tentunya network model ini dapat dimodifikasi lebih lanjut sesuai dengan kebutuhan, misalkan menggunakan UDR untuk menggantikan network peering, mengganti ip address dan subnet yang dibutuhkan sehingga tidak terdapat host yang berlebih, dll. Pada artikel selanjutnya kita akan mengimplementasikan Point-to-Site (P2S) Connection menggunakan VPN Gateway pada network yang telah dibuat.

--

--