DHCP klient va server asoslari
Oldingi mavzuda ip address add bilan IP manzilni qo'lda qo'shish ko'rildi — ammo aksariyat
tarmoqlarda serverlar va qurilmalar manzilni qo'lda emas, avtomatik ravishda oladi. Bu jarayonni DHCP (Dynamic
Host Configuration Protocol) boshqaradi; uning protokol darajasidagi ishlash tartibi (discover-offer-request-acknowledge)
tarmoq xizmatlari darsida allaqachon ko'rilgan. Bu maqola
protokolni emas, aynan Linux tomonida DHCP klientining qanday ishlashini, lease ma'lumotini qanday tekshirishni va
zarur bo'lganda oddiy DHCP serverni qanday o'rnatishni ko'rib chiqadi.
O'quv maqsadlari
Maqolani tugatgach:
- Linux serveri DHCP orqali qanday IP manzil olishini va bu jarayonda qaysi klient jarayoni ishtirok etishini bilasiz;
- joriy DHCP lease haqidagi ma'lumotni (IP, gateway, DNS, muddat) qayerdan va qanday o'qishni bilasiz;
- lease'ni qo'lda yangilash yoki bekor qilishni bajara olasiz;
- oddiy ichki tarmoq uchun
isc-dhcp-serverxizmatini o'rnatib, minimal konfiguratsiya yozasiz; - DHCP bilan bog'liq tipik nosozliklarni (ikki server bir tarmoqda, tugagan pool, noto'g'ri lease fayli) qanday aniqlashni bilasiz.
Linux tomonida DHCP klienti qanday ishlaydi
Zamonaviy distributivlarda DHCP so'rovini odatda alohida dhclient dasturi emas, balki tarmoq boshqaruvchisining
o'zi (NetworkManager yoki systemd-networkd) yuboradi — ular ichki DHCP klient implementatsiyasiga ega. Eski yoki
minimal tizimlarda ISC'ning mustaqil dhclient dasturi ham hali uchraydi. Interfeys qaysi manba orqali IP olganini
ip route show chiqishidagi proto maydonidan bilsa bo'ladi:
proto dhcp — bu marshrut DHCP orqali olinganini, ya'ni interfeys statik emas, dinamik konfiguratsiyalanganini
bildiradi.
Joriy lease holatini tekshirish
Qaysi vosita ishlatilayotganiga qarab lease ma'lumoti turli joyda saqlanadi:
systemd-networkd ishlatilayotgan bo'lsa:
● 2: enp0s3
Link File: /usr/lib/systemd/network/99-default.link
Network File: /run/systemd/network/10-netplan-enp0s3.network
Type: ether
State: routable (configured)
Address: 192.168.1.122 (DHCP4)
fe80::a00:27ff:fe4a:1c9e
Gateway: 192.168.1.1
DNS: 192.168.1.1
NetworkManager ishlatilayotgan bo'lsa:
ISC dhclient ishlatilayotgan eski tizimlarda, lease fayli odatda quyidagi joyda saqlanadi:
lease {
interface "enp0s3";
fixed-address 192.168.1.122;
option subnet-mask 255.255.255.0;
option routers 192.168.1.1;
option domain-name-servers 192.168.1.1,1.1.1.1;
renew 3 2026/07/29 06:00:00;
expire 3 2026/07/29 18:00:00;
}
Muhim maydonlar:
fixed-address— hozircha ushbu interfeysga tayinlangan IP;routers— DHCP server tomonidan berilgan default gateway;domain-name-servers— DHCP orqali tarqatilgan DNS serverlar ro'yxati (keyingi DNS vositalari darsida bu qiymatlar qanday qo'llanilishini ko'ramiz);renew/expire— lease'ni yangilash kerak bo'lgan vaqt va lease butunlay tugaydigan vaqt. Klient odatda muddat yarmida (renewvaqtida) avtomatik yangilash so'rovini yuboradi; agar server javob bermasa, muddat tugaguncha qayta urinadi, aks holda IP pool'ga qaytadi.
Note
Lease faylining aniq yo'li va formati distributiv hamda ishlatilayotgan klientga bog'liq: Ubuntu/Debian'da
/var/lib/dhcp/, ba'zi implementatsiyalarda /var/lib/dhclient/. Aniq yo'lni topish uchun:
find /var/lib -iname '*.leases' 2>/dev/null.
Lease'ni qo'lda yangilash yoki bekor qilish
systemd-networkd bilan:
NetworkManager bilan interfeysni qayta ulash lease'ni ham yangilaydi:
Mustaqil dhclient bilan:
-r joriy lease'ni server oldida bo'shatadi (release) va uni tashlab yuboradi; ikkinchi buyruq yangi so'rov
yuboradi. Bu buyruqni interfeys hozirgi yagona ulanish yo'li bo'lgan masofaviy serverda ishlatish IP o'zgarishi
yoki vaqtincha ulanish uzilishiga olib kelishi mumkin.
Oddiy DHCP serverini o'rnatish (isc-dhcp-server)
Ko'pchilik ishlab chiqarish muhitida DHCP serveri tarmoq uskunasi (router, firewall) yoki bulut provayder tomonidan
boshqariladi, lekin laboratoriya yoki izolyatsiya qilingan ichki tarmoqda Linux serverini DHCP server sifatida
sozlash kerak bo'lishi mumkin. Bu misolda Ubuntu/Debian oilasidagi isc-dhcp-server ishlatiladi.
Danger
Bitta jismoniy tarmoqda ikkita DHCP serveri bir vaqtda ishlashi rogue DHCP server holatiga olib keladi: mijozlar tasodifiy ravishda noto'g'ri serverdan IP, gateway yoki DNS olishi mumkin, bu esa butun tarmoqda ulanish muammolarini keltirib chiqaradi. Yangi DHCP serverni faqat izolyatsiya qilingan laboratoriya tarmog'ida yoki tarmoq administratori bilan kelishilgan holatda ishga tushiring.
O'rnatish:
Xizmat qaysi interfeysda tinglashi kerakligini ko'rsatish (Debian/Ubuntu'da):
Asosiy konfiguratsiya /etc/dhcp/dhcpd.conf faylida:
default-lease-time 600;
max-lease-time 7200;
subnet 10.20.0.0 netmask 255.255.255.0 {
range 10.20.0.100 10.20.0.200;
option routers 10.20.0.1;
option domain-name-servers 10.20.0.1, 1.1.1.1;
option broadcast-address 10.20.0.255;
}
Qismlarning ma'nosi:
default-lease-time/max-lease-time— mijoz aniq muddat so'ramasa qo'llaniladigan va ruxsat etilgan eng uzun lease muddati, sekundlarda;range— mijozlarga taqsimlanadigan IP manzillar diapazoni (pool); bu diapazon serverning statik manzillari bilan kesishmasligi kerak;option routers— mijozlarga tarqatiladigan default gateway;option domain-name-servers— mijozlarga tarqatiladigan DNS serverlar.
Konfiguratsiyani sintaktik tekshirish va xizmatni ishga tushirish:
sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf
sudo systemctl enable --now isc-dhcp-server
sudo systemctl status isc-dhcp-server
dhcpd -t — xizmatni qayta ishga tushirmasdan konfiguratsiya faylini tekshirish rejimi; xatolik bo'lsa xizmatni
qayta yuklamang.
Berilgan lease'larni serverda kuzatish
Bu fayl serverning nuqtai nazaridan — qaysi MAC manzilga qaysi IP, qachongacha berilganini ko'rsatadi va tarmoqdagi IP nizolarini tekshirishda birinchi manba hisoblanadi.
Muayyan qurilmaga doimiy IP tayinlash (static lease)
Ba'zi qurilmalar (masalan, printer yoki ichki xizmat) har doim bir xil IP olishi kerak bo'lsa, buni tarmoq konfiguratsiyasida statik qilib qo'yish o'rniga DHCP serverida host reservation orqali ham bajarish mumkin:
Bu yozuv dhcpd.conf ichidagi subnet blokidan tashqarida yoki ichida bo'lishi mumkin (implementatsiyaga bog'liq);
qurilma o'z MAC manzili bilan so'rov yuborganda, server har doim aynan shu IP'ni beradi — lekin bu hali ham DHCP
orqali, ya'ni server ishlamay qolsa qurilma IP ololmaydi. Har doim mavjud bo'lishi shart bo'lgan xizmatlar
(masalan, baza serveri) uchun bunga o'rniga interfeysning o'zida statik konfiguratsiya
ishlatilishi tavsiya etiladi.
Amaliy ssenariy: server kutilgan IP o'rniga boshqa manzil olyapti
Muammo: yangi o'rnatilgan server har safar qayta yuklanganda tasodifiy diapazondan IP olayapti, holbuki u
10.20.0.50 bilan reservation qilingan edi.
1-qadam — tekshiruv:
2-qadam — gipoteza: server MAC manzili DHCP serverdagi host blokidagi qiymat bilan mos kelmayapti, yoki
reservation boshqa subnet blokida yozilgan.
3-qadam — DHCP server tomonidan tekshirish (o'zgartirmasdan):
ip link show enp0s8 | grep link/ether
sudo grep -A2 'host printer-1st-floor' /etc/dhcp/dhcpd.conf
sudo grep 10.20.0.50 /var/lib/dhcp/dhcpd.leases
4-qadam — bitta o'zgarish: agar MAC manzil dhcpd.confda noto'g'ri yozilgan bo'lsa, uni to'g'rilab,
konfiguratsiyani qayta tekshiring va xizmatni qayta yuklang:
5-qadam — tasdiqlash: serverni qayta ishga tushirmasdan, klient tomonida lease'ni yangilab tekshirish:
6-qadam — hujjatlashtirish: MAC manzil yozuvidagi xato va uni qanday tuzatilgani keyingi administrator uchun yozib qo'yiladi.
Ko'p uchraydigan xatolar
Bir tarmoqda ikkita DHCP serverini tasodifan ishga tushirish
Test uchun o'rnatilgan isc-dhcp-server production tarmoqqa ulangan interfeysda qolib ketishi mumkin. Har doim
INTERFACESv4 (yoki tegishli konfiguratsiya) faqat mo'ljallangan, izolyatsiya qilingan interfeysga ishora
qilishini tekshiring.
Lease muddati tugashini "tarmoq uzildi" deb talqin qilish
IP manzil o'zgarib qolishi ba'zan shunchaki lease muddati tugab, yangi IP berilganidan bo'ladi, ayniqsa renew
muvaffaqiyatsiz bo'lgan hollarda. Avval lease faylidagi renew/expire vaqtlarini tekshiring.
Pool diapazoni tugaganini payqamaslik
range diapazoni kichik, tarmoqdagi qurilmalar soni ko'p bo'lsa, yangi qurilma IP ololmay qoladi. dhcpd.leases
faylidagi faol lease'lar sonini rangedagi umumiy IP soni bilan solishtiring.
Static lease bilan interfeys darajasidagi statik IP'ni aralashtirib yuborish
DHCP host reservation hamon DHCP serveriga bog'liq — server ishlamay qolsa, qurilma IP ololmaydi. Har doim mavjud bo'lishi shart bo'lgan serverlar uchun bu yetarli emas; ular uchun interfeysning o'zida statik konfiguratsiya kerak.
Amaliy mashqlar
- Serveringiz DHCP orqali IP olayotganini
ip route showchiqishidagiproto dhcpbilan tasdiqlang, so'ng joriy lease faylini yokinetworkctl status/nmcli device shownatijasini toping va undagi barcha maydonlarni izohlang. - Test VM'da lease'ni qo'lda bekor qilib (
dhclient -ryokinetworkctl renew), yangi IP olganini tasdiqlang. - Izolyatsiya qilingan laboratoriya tarmog'ida (masalan, virtual host-only tarmoq)
isc-dhcp-serverni o'rnating, kichikrangebilan konfiguratsiya yozing, boshqa test VM'ni shu tarmoqqa ulab IP olganini kuzating. - Yuqoridagi amaliy ssenariyni takrorlang: ataylab noto'g'ri MAC bilan
hostbloki yozing, muammoni tekshiruv orqali toping, so'ng tuzating.
Xulosa
Linux tomonida DHCP klienti — odatda NetworkManager yoki systemd-networkd ichida yashiringan — lease
ma'lumotini avtomatik oladi va yangilaydi; bu ma'lumotni tekshirish uchun networkctl status, nmcli device show
yoki lease fayli ishlatiladi. Server tomonida esa isc-dhcp-server kabi xizmat orqali oddiy pool va host
reservation'lar sozlanadi, lekin bitta tarmoqda faqat bitta DHCP serveri bo'lishi shart. Endi IP qanday olinishini
bilgach, keyingi DNS vositalari darsida o'sha IP orqali qanday qilib nomlarni manzilga
aylantirish (yoki aksincha) ko'riladi — bu ko'pincha xuddi shu DHCP javobi ichida kelgan DNS server manzillariga
tayanadi.