
Layanan yang mengeluarkan alamat IP ke perangkat di jaringan lokal tampaknya menjadi salah satu yang paling sederhana dan paling akrab. Namun demikian, kolega saya yang lebih muda kadang-kadang masih memiliki pertanyaan seperti "komputer menerima beberapa alamat aneh", dan penampilan server DHCP kedua di satu segmen jaringan menyebabkan beberapa masalah jaringan atau ketegangan.
Agar mereka yang membaca materi ini tidak memiliki pertanyaan seperti itu, saya ingin mengumpulkan banyak informasi dasar tentang operasi mekanisme penerbitan alamat IP, fitur dan contoh konfigurasi dari konfigurasi gagal-aman dan aman. Ya, dan mungkin spesialis yang tidak berpengalaman akan tertarik untuk menyegarkan koneksi saraf.
Sedikit teori dan solusi untuk masalah yang menarik dan tidak terlalu praktis - di bawah potongan.
Dalam jaringan area lokal modern, penerbitan alamat biasanya dilakukan oleh layanan khusus dengan dukungan protokol. Yang paling populer adalah DHCP (Dynamic Host Configuration Protocol).
Zeroconf atau mengapa kita perlu semacam DHCP
Pada prinsipnya, tumpukan teknologi yang disebut Zeroconf dibuat khusus untuk jaringan kecil. Ini memungkinkan Anda melakukannya tanpa layanan dan server terpusat, termasuk, tetapi tidak terbatas pada penerbitan alamat IP. Mereka menutup (baik, atau hampir menutup) pertanyaan-pertanyaan berikut:
Memperoleh alamat IP (Pengalamatan IP Pribadi Otomatis atau APIPA). Sistem itu sendiri memberikan IP dari jaringan 169.254.0.0/16 (kecuali untuk / 24 grid pada awal dan akhir kisaran), berdasarkan alamat MAC dan generator nomor acak semu. Sistem ini memungkinkan Anda untuk menghindari konflik, dan alamat dari jaringan ini disebut tautan-lokal - termasuk karena alamat ini tidak dirutekan.
Cari berdasarkan nama . Sistem mengumumkan nama jaringannya, dan setiap komputer bekerja dengannya seperti halnya DNS, menyimpan entri dalam cache-nya. Apple menggunakan teknologi mDNS (Multicast DNS), dan Microsoft menggunakan LLMNR (Link-local Multicast Name Resolution), yang disebutkan dalam artikel " Domain, Alamat, dan Windows: Campur, tapi Jangan Goyang ."
Cari layanan jaringan . Misalnya, printer. Mungkin protokol yang paling terkenal adalah UPnP , yang, antara lain, dapat membuka port pada router itu sendiri. Protokolnya cukup rumit, ia menggunakan seluruh rangkaian add-on seperti menggunakan http, tidak seperti protokol kedua yang terkenal - DNS-SD (DNS Service Discovery), yang hanya menggunakan catatan SRV, termasuk ketika bekerja dengan mDNS.
Dengan semua keunggulan Zeroconf - tanpa pengetahuan suci apa pun, Anda dapat membangun jaringan yang berfungsi hanya dengan menghubungkan komputer pada tingkat fisik - bahkan dapat mengganggu spesialis TI.

Agak menyebalkan, bukan?
Pada sistem Windows, untuk menonaktifkan pencarian-otomatis pada semua adapter jaringan, Anda perlu membuat parameter DWORD dengan nama IPAutoconfigurationEnabled di bagian HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameter dan mengaturnya ke 0.
Tentu saja, Zeroconf hanya cocok untuk jaringan kecil yang terisolasi (misalnya, Anda bertemu teman dengan laptop, menghubungkannya melalui Wi-Fi dan mari bermain Diablo II, tanpa membuang waktu di beberapa server), dan saya juga ingin mendapatkan jaringan lokal ke Internet . Agar tidak menderita dengan pengaturan statis setiap komputer, protokol khusus dibuat, termasuk pahlawan hari ini - DHCP.
DHCP dan leluhurnya
Salah satu implementasi pertama protokol untuk mengeluarkan alamat IP muncul lebih dari 30 tahun yang lalu dan disebut RARP (Reverse Address Resolution Protocol). Jika kita menyederhanakan prinsip operasinya sedikit, itu tampak seperti ini: klien membuat permintaan ke alamat broadcast jaringan, server menerimanya, menemukan pengikatan alamat MAC dan IP klien dalam databasenya, dan mengirim respons IP.

Skema protokol RARP.
Dan semuanya tampak berhasil. Tetapi protokol tersebut memiliki kekurangannya: perlu mengkonfigurasi server di setiap segmen jaringan lokal, mendaftarkan alamat MAC pada server ini, dan sama sekali tidak mungkin untuk mengirimkan informasi tambahan ke klien sama sekali. Oleh karena itu, untuk menggantinya, protokol BOOTP (Bootstrap Protocol) telah dibuat.
Awalnya, ini digunakan untuk workstation diskless, yang diperlukan tidak hanya memberikan alamat IP, tetapi juga mengirimkan informasi tambahan kepada klien, seperti alamat server TFTP dan nama file unduhan. Tidak seperti RARP, protokol sudah mendukung relai - layanan kecil yang meneruskan permintaan ke server "utama". Ini memungkinkan untuk menggunakan satu server pada beberapa jaringan secara bersamaan. Hanya saja tetap perlu mengkonfigurasi tabel secara manual dan batas ukuran untuk informasi tambahan. Akibatnya, protokol DHCP modern telah memasuki lokasi, yang merupakan ekstensi yang kompatibel dari BOOTP (server DHCP mendukung klien lama, tetapi tidak sebaliknya).
Perbedaan penting dari protokol yang usang adalah kemampuan untuk sementara waktu mengeluarkan alamat (sewa) dan mentransfer sejumlah besar informasi yang berbeda kepada klien. Ini dicapai karena prosedur yang kurang sepele untuk mendapatkan alamat. Jika dalam protokol lama skema itu sederhana, dari jenis permintaan-respons, maka sekarang skemanya adalah sebagai berikut:
- Klien mencari server dengan permintaan siaran, juga meminta pengaturan tambahan.
- Server merespons klien dengan menawarkannya alamat IP dan pengaturan lainnya.
- Klien mengkonfirmasi informasi yang diterima oleh permintaan siaran, yang menunjukkan dalam konfirmasi alamat IP dari server yang dipilih.
- Server setuju dengan klien dengan mengirimkan permintaan kepadanya, setelah menerima yang klien sudah mengkonfigurasi antarmuka jaringan atau menolaknya.

Skema komunikasi klien dengan forwarder dan server.
Anda dapat membaca lebih lanjut tentang skema interaksi server-klien dan struktur permintaan dan tanggapan, misalnya, dalam materi " Struktur, format, dan tujuan paket DHCP ".
Pada beberapa wawancara mereka bertanya kepada saya: "Transportasi dan port apa yang digunakan DHCP?" Untuk jaga-jaga, kami menjawab: "Server UDP: 67, klien UDP: 68".
Banyak implementasi dari server DHCP telah ditemui oleh banyak orang, bahkan ketika mengatur jaringan rumah. Memang, sekarang servernya adalah:
- Pada hampir semua router, terutama SOHO.
- Pada sistem Windows Server. Anda dapat membaca tentang server dan konfigurasinya di dokumentasi resmi.
- Pada sistem * nix. Mungkin perangkat lunak yang paling populer adalah ISC DHCP Server (dhcpd) dan "pemanen" Dnsmasq .
Ada banyak implementasi spesifik, tetapi, misalnya, pengaturan server terbatas pada router SOHO. Ini terutama menyangkut pengaturan tambahan, selain "alamat IP, mask, gateway, server DNS klasik." Dan justru opsi-opsi tambahan inilah yang menyebabkan minat terbesar dalam pengoperasian protokol. Daftar lengkapnya dapat ditemukan di RFC yang sesuai, tetapi saya akan menganalisis beberapa contoh menarik.
Opsi DHCP Luar Biasa
Pada bagian ini, saya akan membahas penggunaan praktis dari opsi DHCP pada peralatan MikroTik. Saya akan segera menarik perhatian pada kenyataan bahwa tidak semua opsi diatur secara jelas, format parameter dijelaskan dalam wiki . Perlu juga dicatat bahwa klien menerapkan opsi hanya ketika dia memintanya. Di beberapa server, Anda dapat memaksa pengaturan untuk dikirim: misalnya, di ISC DHCP Server, arahan dhcp-parameter-request-list bertanggung jawab untuk ini, dan di Dnsmasq - * * --dhcp-option-force . MikroTik dan Windows tidak tahu caranya.
Opsi 6 dan Opsi 15. Mari kita mulai dengan yang sederhana. Pengaturan nomor 6 adalah server DNS yang ditugaskan untuk klien, 15 adalah akhiran DNS. Menetapkan sufiks DNS dapat berguna saat bekerja dengan sumber daya domain pada jaringan non-domain, seperti yang saya jelaskan dalam artikel " Bagaimana Kami Mengurangi Personil Melalui Wi-Fi ". Konfigurasikan MikroTik di bawah spoiler.
Menyiapkan MikroTik, opsi 15 Mengetahui bahwa server DNS juga merupakan opsi baru-baru ini berguna ketika klien yang berbeda harus mengeluarkan server DNS yang berbeda. Keputusan bentuk "mengeluarkan satu server dan membuat aturan dst-nat berbeda untuk port 53" tidak cocok karena sejumlah alasan. Bagian dari konfigurasi lagi di bawah spoiler.
Menyiapkan MikroTik, opsi 6 Opsi 66 dan Opsi 67 . Pengaturan ini kembali dari BOOTP dan memungkinkan Anda menentukan server dan gambar TFTP untuk boot jaringan. Untuk cabang kecil, cukup nyaman untuk menginstal Mikrotik dan workstation tanpa disk di sana dan melempar gambar yang sudah disiapkan dari beberapa ThinStation ke router . Contoh konfigurasi DHCP:
/ip dhcp-server option add name="option66" code=66 value="s'192.168.88.1'" add name="option67" code=67 value="'pxelinux.0'" /ip dhcp-server option sets add name="set-pxe" options=option66,option67
Opsi 121 dan Opsi 249 . Mereka digunakan untuk mentransfer rute tambahan ke klien, yang dalam beberapa kasus mungkin lebih nyaman daripada mendaftarkan rute pada gateway default. Pengaturannya hampir identik, kecuali bahwa klien Windows lebih suka yang terakhir. Untuk mengkonfigurasi parameter, rute harus dikonversi ke heksadesimal, mengumpulkan mask jaringan tujuan, alamat jaringan dan gateway dalam satu baris. Selain itu, oleh RFC, Anda harus menambahkan rute default. Opsi penyetelan berada di bawah spoiler.
Pengaturan ruteMisalkan kita perlu menambahkan rute seperti dst-address = 10.0.0.0 / 24 gateway = 192.168.88.2 ke klien, dan gateway utama adalah 192.168.88.1. Mari kita bawa semuanya dalam HEX:
Mari kumpulkan semua kebahagiaan ini dalam satu baris dan dapatkan latar:
/ip dhcp-server option add code=121 name=classless value=0x0A0000c0a8580200c0a85801
Baca lebih lanjut di artikel " Mikrotik, DHCP Classless Route ".
Opsi 252. Konfigurasi server proxy otomatis. Jika karena alasan tertentu organisasi menggunakan proxy yang buram, akan lebih mudah untuk mengkonfigurasinya dengan klien melalui file wpad (pac) khusus. Contoh pengaturan file seperti itu dijelaskan dalam materi Proxy Auto Configuration (PAC) . Sayangnya, MiroTik tidak memiliki server web bawaan untuk menyimpan file ini. Anda dapat menggunakan paket hotspot atau fitur metarouter untuk ini, tetapi lebih baik menempatkan file di tempat lain.
Opsi 82 . Salah satu opsi yang paling berguna tidak hanya untuk klien, tetapi untuk relay DHCP. Memungkinkan Anda mentransfer informasi tentang port sakelar yang terhubung ke klien dan id sakelar itu sendiri. Berdasarkan informasi ini, server, pada gilirannya, sudah dapat mengeluarkan satu set pengaturan tertentu kepada klien atau cukup login - untuk menemukan port koneksi klien, tidak perlu untuk pergi ke semua switch secara berurutan (terutama jika mereka tidak di stack).
Setelah DHCP-Relay dikonfigurasikan pada router, bidang ID Circuit Agent dan Agent Remote ID akan muncul di informasi klien, di mana yang pertama adalah pengidentifikasi port sakelar dan yang kedua adalah pengidentifikasi sakelar.

Mengeluarkan alamat dengan opsi 82.
Informasi diberikan dalam format heksadesimal. Untuk kenyamanan, Anda dapat menggunakan skrip untuk menganalisis log DHCP. Misalnya, solusi untuk solusi dari Microsoft diterbitkan di galeri skrip Technet yang disebut " Dekorasi Opsi DHCP 82 ".
Opsi 82 ββjuga secara aktif digunakan dalam sistem penagihan penyedia dan dalam melindungi jaringan dari gangguan luar. Ini sedikit lebih detail.
Tambahkan jaringan keandalan dan keamanan
Karena kesederhanaan protokol dan adanya permintaan siaran, ada serangan yang efektif pada infrastruktur - terutama dari jenis MITM ("man in the middle"). Serangan dilakukan dengan meningkatkan server DHCP Anda atau menyampaikan: setelah semua, jika Anda mengontrol penerbitan pengaturan jaringan, Anda dapat dengan mudah mengarahkan lalu lintas ke gateway yang dikompromikan. Untuk memfasilitasi serangan, DHCP kelaparan digunakan (berpura-pura menjadi klien atau relay, penyerang memaksa server DHCP "asli" untuk mengeluarkan alamat IP-nya). Anda dapat membaca lebih lanjut tentang implementasi serangan dalam artikel " Menyerang DHCP ", tetapi DHCP Snooping adalah metode perlindungan.
Ini adalah fungsi sakelar yang memungkinkan Anda untuk "mengikat" server DHCP ke port tertentu. Respons DHCP pada port lain akan diblokir. Di beberapa sakelar, Anda dapat mengonfigurasi pekerjaan dengan Opsi 82 ββsaat terdeteksi dalam paket (yang menunjukkan adanya relai): buang, ganti, ganti tidak berubah.
Dalam sakelar MikroTik, DHCP Snooping diaktifkan di pengaturan jembatan:
Konfigurasi di sakelar lain serupa.
Perlu dicatat bahwa tidak semua model MikroTik memiliki dukungan perangkat keras penuh untuk DHCP Snooping - hanya CRS3xx yang memilikinya.
Selain perlindungan dari peretas jahat, fungsi ini akan meringankan sakit kepala ketika server DHCP lain muncul di jaringan - misalnya, ketika router SOHO digunakan sebagai saklar dengan titik akses mengatur ulang pengaturannya. Sayangnya, dalam jaringan di mana peralatan SOHO ditemukan, tidak selalu ada struktur jaringan kabel yang kompeten dengan router yang dikelola. Tapi itu pertanyaan lain.

Pergantian yang indah adalah kunci kesehatan.
Metode perlindungan lainnya termasuk Keamanan Port ("mengikat" alamat MAC tertentu ke port router; jika lalu lintas dari alamat lain terdeteksi, port tersebut akan diblokir), Analisis lalu lintas untuk jumlah permintaan dan respons DHCP atau membatasi jumlah mereka, dan, tentu saja, berbagai sistem IPS \ IDS .
Jika kita berbicara tidak hanya tentang perlindungan jaringan, tetapi juga tentang keandalan, itu tidak akan keluar dari tempatnya untuk menyebutkan kemampuan DHCP gagal-aman. Memang, dengan kesederhanaannya, DHCP sering menjadi salah satu layanan utama, dan jika gagal, pekerjaan organisasi dapat lumpuh. Tetapi jika Anda hanya menginstal dua server dengan pengaturan yang sama, maka tidak ada yang lain selain konflik alamat IP yang mengarah ke ini.
Tampaknya Anda dapat membagi area distribusi antara dua server, dan biarkan yang satu memberikan setengah dari alamat, dan yang lain memberikan yang lain. Berikut ini hanya setengah dari infrastruktur yang lumpuh sedikit lebih baik dari keseluruhan.
Kami akan menganalisis opsi yang lebih praktis.
Pada sistem Windows Server mulai tahun 2012, sistem redundansi DHCP berfungsi di luar kotak, dalam mode load balancing (aktif-aktif) atau dalam mode toleransi kesalahan (aktif-pasif). Penjelasan terperinci tentang teknologi dan pengaturan dapat ditemukan dalam dokumentasi resmi. Saya perhatikan bahwa toleransi kesalahan dikonfigurasi pada level zona, sehingga zona yang berbeda dapat bekerja dalam mode yang berbeda.

Mengkonfigurasi DHCP Server Failover di Windows.
DHCP Server ISC menggunakan arahan failover peer untuk mengkonfigurasi toleransi kesalahan, itu diusulkan untuk menyinkronkan data secara mandiri - misalnya, menggunakan rsync. Baca selengkapnya di artikel " Dua server DHCP di Centos7 ... "
Jika Anda membuat solusi toleran kesalahan berdasarkan MikroTik, maka Anda tidak dapat melakukannya tanpa trik. Salah satu opsi untuk menyelesaikan masalah diumumkan di MUM RU 18, dan kemudian dipublikasikan di blog penulis . Singkatnya: dua server dikonfigurasikan, tetapi dengan parameter Ambang Batas yang berbeda (penundaan respons). Kemudian server akan mengeluarkan alamat dengan penundaan lebih sedikit, dan dengan penundaan lebih lama - hanya ketika yang pertama gagal. Sinkronisasi informasi lagi harus dilakukan dengan skrip.
Secara pribadi, pada suatu waktu saya cukup menepuk saraf saya ketika router muncul di jaringan "tidak sengaja" dan terhubung ke jaringan area lokal baik antarmuka WAN dan LAN.
Katakan, apakah Anda harus berurusan dengan kusta DHCP?