Bagikan melalui


Gambaran umum DNS anycast

Topik ini menyediakan informasi tentang cara kerja Anycast DNS.

Apa itu Anycast?

Anycast adalah teknologi yang menyediakan beberapa jalur perutean ke sekelompok titik akhir yang masing-masing diberi alamat IP yang sama. Setiap perangkat dalam grup mengiklankan alamat yang sama di jaringan, dan protokol perutean digunakan untuk memilih tujuan mana yang terbaik.

Anycast memungkinkan Anda menskalakan layanan stateless, seperti DNS atau HTTP, dengan menempatkan beberapa node di belakang alamat IP yang sama dan menggunakan perutean multi-jalur (ECMP) dengan biaya sama untuk mengarahkan lalu lintas antara simpul ini. Anycast berbeda dari unicast, di mana setiap titik akhir memiliki alamat IP sendiri yang terpisah.

Mengapa menggunakan Anycast dengan DNS?

Dengan Anycast DNS, Anda bisa mengaktifkan server DNS, atau sekelompok server, untuk merespons kueri DNS berdasarkan lokasi geografis klien DNS. Ini dapat meningkatkan waktu respons DNS dan menyederhanakan pengaturan klien DNS. Anycast DNS juga menyediakan lapisan redundansi tambahan dan dapat membantu melindungi dari penolakan DNS serangan layanan.

Cara kerja Anycast DNS

Anycast DNS bekerja dengan menggunakan protokol perutean seperti Border Gateway Protocol (BGP) untuk mengirim kueri DNS ke server DNS atau grup server DNS pilihan (misalnya: sekelompok server DNS yang dikelola oleh load balancer). Desain ini dapat mengoptimalkan komunikasi DNS dengan mendapatkan respons DNS dari server DNS yang paling dekat dengan klien.

Dengan Anycast, server yang ada di beberapa lokasi geografis masing-masing mengiklankan satu alamat IP yang identik ke gateway lokal (router) mereka. Saat klien DNS memulai kueri ke alamat Anycast, rute yang tersedia dievaluasi, dan kueri DNS dikirim ke lokasi pilihan. Secara umum, lokasi ini adalah yang paling dekat berdasarkan topologi jaringan. Lihat contoh berikut.

Empat server DNS, yang terletak di situs yang berbeda, mengumumkan alamat IP Anycast yang sama ke jaringan

Gambar 1: Contoh jaringan Anycast

  • Empat server DNS (lingkaran biru), yang terletak di situs yang berbeda di jaringan, masing-masing mengumumkan alamat IP Anycast yang sama ke perangkat perutean lokal mereka (tidak ditampilkan).
  • Rute dibagikan di antara perangkat di jaringan (panah hitam).
  • Perangkat klien DNS (lingkaran hijau) mengirimkan kueri DNS ke alamat IP Anycast.
  • Permintaan DNS klien diterima oleh perangkat perutean di jaringan (tidak ditampilkan).
  • Perangkat perutean menganalisis rute yang tersedia ke alamat IP Anycast, dan merutekan kueri DNS menggunakan rute terpendek yang tersedia.
  • Kueri DNS dikirim ke server DNS terdekat (panah biru).

Dns Anycast digunakan biasanya hari ini untuk merutekan lalu lintas DNS untuk banyak layanan DNS global. Misalnya, sistem server DNS root sangat bergantung pada Dns Anycast. Anycast juga bekerja dengan berbagai protokol perutean dan dapat digunakan secara eksklusif pada intranet.

Demo BGP Anycast asli Windows Server

Prosedur berikut menunjukkan bagaimana BGP asli di Windows Server dapat digunakan dengan Dns Anycast.

Persyaratan

  • Satu perangkat fisik dengan peran Hyper-V terinstal.
    • Windows Server 2012 R2, Windows 10, atau yang lebih baru.
  • 2 VM klien (sistem operasi apa pun).
    • Penginstalan alat BIND untuk DNS seperti penggalian disarankan.
  • 3 VM server (Windows Server 2016 atau Windows Server 2019).
    • Jika modul Windows PowerShell LoopbackAdapter belum diinstal pada VM server (DC001, DC002), akses Internet untuk sementara diperlukan untuk menginstal modul ini.

Penyiapan Hyper-V

Konfigurasikan server Hyper-V Anda sebagai berikut:

  • 2 jaringan sakelar virtual privat dikonfigurasi
    • Jaringan Internet tiruan 131.253.1.0/24
    • Jaringan intranet tiruan 10.10.10.0/24
  • 2 VM klien dilampirkan ke jaringan 131.253.1.0/24
  • 2 VM server dilampirkan ke jaringan 10.10.10.0/24
  • 1 server adalah dual-homed dan dilampirkan ke jaringan 131.253.1.0/24 dan 10.10.10.0/24.

Konfigurasi jaringan komputer virtual

Konfigurasikan pengaturan jaringan pada komputer virtual dengan pengaturan berikut:

  1. Klien1, klien2
  • Klien1: 131.253.1.1
  • Klien2: 131.253.1.2
  • Subnet mask: 255.255.255.0
  • DNS: 51.51.51.51
  • Gerbang: 131.253.1.254
  1. Gerbang (Windows Server)
  • NIC1: 131.253.1.254, subnet 255.255.255.0
  • NIC2: 10.10.10.254, subnet (subjaringan) 255.255.255.0
  • DNS: 51.51.51.51
  • Gateway: 131.253.1.100 (dapat diabaikan untuk demo)
  1. DC001 (Server Windows)
  • NIC1: 10.10.10.1
  • Subnet: 255.255.255.0
  • DNS: 10.10.10.1
  • Gerbang: 10.10.10.254
  1. DC002 (Server Windows)
  • NIC1: 10.10.10.2
  • Subnet 255.255.255.0
  • DNS: 10.10.10.2*
  • Gerbang: 10.10.10.254

*Gunakan 10.10.10.1 untuk DNS pada awalnya saat melakukan gabungan domain untuk DC002 sehingga Anda dapat menemukan domain Direktori Aktif di DC001.

Mengonfigurasi DNS

Gunakan Manajer Server dan konsol manajemen DNS atau Windows PowerShell untuk menginstal peran server berikut dan membuat zona DNS statis di masing-masing dari dua server.

  1. DC001, DC002
  • Instal Active Directory Domain Services dan promosikan ke pengendali domain (opsional)
  • Menginstal peran DNS (diperlukan)
  • Membuat zona statis (terintegrasi non-AD) bernama zone.tst pada DC001 dan DC002
    • Tambahkan server nama rekaman statis tunggal di zona jenis "TXT"
    • Data (teks) untuk catatan TXT di DC001 = DC001
    • Data (teks) untuk catatan TXT di DC002 = DC002

Mengonfigurasi adaptor loopback

Masukkan perintah berikut pada prompt Windows PowerShell yang ditingkatkan di DC001 dan DC002 untuk mengonfigurasi adaptor loopback.

Catatan

Perintah Install-Module memerlukan akses Internet. Ini dapat dilakukan dengan menetapkan VM untuk sementara ke jaringan eksternal di Hyper-V.

$primary_interface = (Get-NetAdapter |?{$_.Status -eq "Up" -and !$_.Virtual}).Name
$loopback_ipv4 = '51.51.51.51'
$loopback_ipv4_length = '32'
$loopback_name = 'Loopback'
Install-Module -Name LoopbackAdapter -MinimumVersion 1.2.0.0 -Force
Import-Module -Name LoopbackAdapter
New-LoopbackAdapter -Name $loopback_name -Force
$interface_loopback = Get-NetAdapter -Name $loopback_name
$interface_main = Get-NetAdapter -Name $primary_interface
Set-NetIPInterface -InterfaceIndex $interface_loopback.ifIndex -InterfaceMetric "254" -WeakHostReceive Enabled -WeakHostSend Enabled -DHCP Disabled
Set-NetIPInterface -InterfaceIndex $interface_main.ifIndex -WeakHostReceive Enabled -WeakHostSend Enabled
Set-NetIPAddress -InterfaceIndex $interface_loopback.ifIndex -SkipAsSource $True
Get-NetAdapter $loopback_name | Set-DNSClient –RegisterThisConnectionsAddress $False
New-NetIPAddress -InterfaceAlias $loopback_name -IPAddress $loopback_ipv4 -PrefixLength $loopback_ipv4_length -AddressFamily ipv4
Disable-NetAdapterBinding -Name $loopback_name -ComponentID ms_msclient
Disable-NetAdapterBinding -Name $loopback_name -ComponentID ms_pacer
Disable-NetAdapterBinding -Name $loopback_name -ComponentID ms_server
Disable-NetAdapterBinding -Name $loopback_name -ComponentID ms_lltdio
Disable-NetAdapterBinding -Name $loopback_name -ComponentID ms_rspndr

Konfigurasi perutean komputer virtual

Gunakan perintah Windows PowerShell berikut pada VM untuk mengonfigurasi perutean.

  1. Gerbang Jaringan
Install-WindowsFeature RemoteAccess -IncludeManagementTools
Install-RemoteAccess -VpnType RoutingOnly
Add-BgpRouter -BgpIdentifier “10.10.10.254” -LocalASN 8075
Add-BgpPeer -Name "DC001" -LocalIPAddress 10.10.10.254 -PeerIPAddress 10.10.10.1 -PeerASN 65511 –LocalASN 8075
Add-BgpPeer -Name "DC002" -LocalIPAddress 10.10.10.254 -PeerIPAddress 10.10.10.2 -PeerASN 65511 –LocalASN 8075
  1. DC001
Install-WindowsFeature RemoteAccess -IncludeManagementTools
Install-RemoteAccess -VpnType RoutingOnly
Add-BgpRouter -BgpIdentifier “10.10.10.1” -LocalASN 65511
Add-BgpPeer -Name "Labgw" -LocalIPAddress 10.10.10.1 -PeerIPAddress 10.10.10.254 -PeerASN 8075 –LocalASN 65511
Add-BgpCustomRoute -Network 51.51.51.0/24
  1. DC002
Install-WindowsFeature RemoteAccess -IncludeManagementTools
Install-RemoteAccess -VpnType RoutingOnly
Add-BgpRouter -BgpIdentifier "10.10.10.2" -LocalASN 65511
Add-BgpPeer -Name "Labgw" -LocalIPAddress 10.10.10.2 -PeerIPAddress 10.10.10.254 -PeerASN 8075 –LocalASN 65511
Add-BgpCustomRoute -Network 51.51.51.0/24

Diagram ringkasan

Penyiapan lab untuk demo DNS BGP Anycast asli

Gambar 2: Penyiapan lab untuk demo DNS BGP Anycast asli

Demonstrasi DNS anycast

  1. Memverifikasi perutean BGP di server gateway

    PS C:\> Get-BgpRouteInformation

    DestinationNetwork NextHop LearnedFromPeer State LocalPref MED
    ------------------ ------- --------------- ----- --------- ---
    51.51.51.0/24 10.10.10.1 DC001 Terbaik
    51.51.51.0/24 10.10.10.2 DC002 Terbaik

  2. Pada client1 dan client2, verifikasi bahwa Anda dapat mencapai 51.51.51.51

    PS C:\> ping 51.51.51.51

    Pinging 51.51.51.51 dengan 32 byte data:
    Balas dari 51.51.51.51: bytes=32 kali<1ms TTL=126
    Balas dari 51.51.51.51: bytes=32 kali<1ms TTL=126
    Balas dari 51.51.51.51: bytes=32 kali<1ms TTL=126
    Balas dari 51.51.51.51: bytes=32 kali<1ms TTL=126

    Statistik Ping untuk 51.51.51.51:
    Paket: Dikirim = 4, Diterima = 4, Hilang = 0 (0% hilang),
    Perkiraan waktu pulang pergi dalam milidetik:
    Minimum = 0ms, Maksimum = 0ms, Rata-rata = 0ms

    Catatan

    Jika ping gagal, periksa juga tidak ada aturan firewall yang memblokir ICMP.

  3. Pada client1 dan client2, gunakan nslookup atau gali untuk mengkueri catatan TXT. Contoh keduanya ditampilkan.

    PS C:\> dig server.zone.tst TXT +short
    PS C:\> nslookup -type=txt server.zone.tst 51.51.51.51

    Satu klien menampilkan "DC001" dan klien lain menampilkan "DC002", memverifikasi bahwa Anycast berfungsi dengan baik. Anda juga dapat mengkueri dari server gateway.

  4. Selanjutnya, nonaktifkan adaptor Ethernet pada DC001.

    PS C:\> (Get-NetAdapter).Name
    Loopback
    Ethernet 2
    PS C:\> Disable-NetAdapter "Ethernet 2"
    Konfirmasikan
    Anda yakin ingin melakukan tindakan ini?
    Disable-NetAdapter 'Ethernet 2'
    [Y] Ya [A] Ya untuk Semua [N] Tidak [L] Tidak untuk Semua [S] Tangguhkan [?] Bantuan (default yaitu "Y"):
    PS C:\> (Get-NetAdapter).Status
    Naik
    Nonaktif

  5. Konfirmasikan bahwa klien DNS yang sebelumnya menerima respons dari DC001 telah beralih ke DC002.

    PS C:\> nslookup -type=txt server.zone.tst 51.51.51.51
    Server: TidakDiketahui
    Alamat: 51.51.51.51

    server.zone.tst teks =

    "DC001"
    PS C:\> nslookup -type=txt server.zone.tst 51.51.51.51
    Server: TidakDiketahui
    Alamat: 51.51.51.51

    server.zone.tst teks =

    "DC002"

  6. Konfirmasikan bahwa sesi BGP tidak berfungsi di DC001 dengan menggunakan Get-BgpStatistics di server gateway.

  7. Aktifkan adaptor Ethernet pada DC001 lagi dan konfirmasikan bahwa sesi BGP dipulihkan dan klien menerima respons DNS dari DC001 lagi.

Catatan

Jika load balancer tidak digunakan, klien individual akan menggunakan server DNS back-end yang sama jika tersedia. Ini membuat jalur BGP yang konsisten untuk klien. Untuk informasi selengkapnya, lihat bagian 4.4.3 dari RFC4786: Jalur Biaya Sama.

Tanya jawab umum

T: Apakah Anycast DNS merupakan solusi yang baik untuk digunakan di lingkungan DNS lokal?
A: Anycast DNS bekerja dengan mulus dengan layanan DNS lokal. Namun, Anycast tidak diperlukan agar layanan DNS dapat diskalakan.

T: Apa dampak penerapan DNS Anycast di lingkungan dengan pengontrol domain dalam jumlah besar (misalnya: >50)?
A: Tidak ada dampak langsung pada fungsionalitas. Jika load balancer digunakan, maka tidak diperlukan konfigurasi lain pada pengendali domain.

T: Apakah konfigurasi DNS Anycast didukung oleh layanan pelanggan Microsoft?
A: Jika Anda menggunakan load balancer non-Microsoft untuk meneruskan kueri DNS, Microsoft mendukung masalah yang terkait dengan layanan Server DNS. Lihat vendor load balancer untuk masalah yang terkait dengan penerusan DNS.

T: Apa praktik terbaik untuk Anycast DNS dengan pengontrol domain dalam jumlah besar (misalnya: >50)?
A: Praktik terbaik adalah menggunakan load balancer di setiap lokasi geografis. Load balancer biasanya disediakan oleh vendor eksternal.

T: Apakah Anycast DNS dan Azure DNS memiliki fungsionalitas serupa?
A: Azure DNS menggunakan Anycast. Untuk menggunakan Anycast dengan Azure DNS, konfigurasikan load balancer Anda untuk meneruskan permintaan ke server Azure DNS.