Dnsmasq
A dnsmasq egy egyszerű DHCP/DNS szerver, amely akár 1000 kliensből álló helyi hálózatban is használható. Fő jellemzői a könnyű beállíthatóság és a kis rendszerigény. Támogatja az IPv6 protokollt is.
Telepítés
USE jelölőzászlók
Készítsen megfelelő USE jelölőzászló kiválasztást:
USE flags for net-dns/dnsmasq Small forwarding DNS server
+dhcp
|
Enable support for acting as a DHCP server. |
+dumpfile
|
Include code to dump packets to a libpcap-format file for debugging |
+inotify
|
Enable inotify filesystem monitoring support |
+loop
|
Include functionality to probe for and remove DNS forwarding loops |
auth-dns
|
Add support for acting as an authorative DNS server. |
conntrack
|
Add support for Linux conntrack connection marking. |
dbus
|
Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc) |
dhcp-tools
|
Install extra command line tools for manually managing DHCP leases. |
dnssec
|
Enable support DNSSEC validation and caching. |
id
|
Whether report *.bind CHAOS info to clients, otherwise forward such requests upstream instead |
idn
|
Enable support for Internationalized Domain Names |
ipv6
|
Add support for IP version 6 |
libidn2
|
Enable support for Internationalized Domain Names, via net-dns/libidn2 rather than net-dns/libidn |
lua
|
Enable Lua scripting support |
nettlehash
|
Use hashing functions from dev-libs/nettle |
nls
|
Add Native Language Support (using gettext - GNU locale utilities) |
script
|
Enable support for calling scripts when leases change. |
selinux
|
!!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur |
static
|
!!do not set this during bootstrap!! Causes binaries to be statically linked instead of dynamically |
tftp
|
Enables built in TFTP server for netbooting. |
Emerge
Ezután telepítse a net-dns/dnsmasq szoftvercsomagot:
root #
emerge --ask net-dns/dnsmasq
Beállítás
Számos erőforrás módosítható a dnsmasq viselkedésének megváltoztatásához. Ezek közé tartoznak:
- A parancssori opciók, amelyeket a /etc/conf.d/dnsmasq fájlon keresztül lehet megadni.
- A fő beállításfájl (/etc/dnsmasq.conf).
Szolgáltatás
OpenRC
Adja hozzá a dnsmasq szolgáltatást az alapértelmezett futási szinthez, ha azt automatikusan el kell indítani:
root #
rc-update add dnsmasq default
A szolgáltatás azonnali elindításához:
root #
rc-service dnsmasq start
Szolgáltatás beállítása
A /etc/conf.d/dnsmasq fájlban beállíthatóak azok a parancssori opciók, amelyeket indításkor kerülnek átadásra a dnsmasq szolgáltatásnak.
/etc/conf.d/dnsmasq
Példa a dnsmasq szolgáltatás beállításáraDNSMASQ_OPTS="--user=dnsmasq --group=dnsmasq -H /srv/virt/gentoo/hosts --max-cache-ttl=10"
Fő beállításfájl
A dnsmasq fő beállítása a /etc/dnsmasq.conf beállításfájlon keresztül történik. A fájl a kulcs[=érték]
szintaxist használja, és a szoftvercsomaghoz mellékelt verzió jól dokumentált, ezért ajánlott áttanulmányozni. A fájlon belül, vagy a parancssori opciókon keresztül további erőforrásokra is lehet hivatkozni (például egy DHCP hosts fájlra).
Az alábbiakban egy minta beállításfájl található:
/etc/dnsmasq.conf
# Kizárólag ezt az interfészt figyelje.
interface=eth1
# Neveket hozzárendelni a MAC-cím alapján.
dhcp-host=00:1e:68:c2:ff:ee,endor,192.168.0.54,24h
# Minden más DHCP kérés IP-címet kap ebből a tartományból.
dhcp-range=eth1,192.168.0.100,192.168.0.120,12h
# Engedélyezi a TFTP szervert, és beállítja a TFTP protokollon keresztül elérhető fájlok gyökérkönyvtárát.
enable-tftp
tftp-root=/var/lib/tftpboot
dhcp-boot=/pxelinux.0
A beállításfájl szerkesztése után a szolgáltatást újra kell indítani. Az újratöltés támogatott, de más erőforrásokra vonatkozik.
root #
/etc/init.d/dnsmasq restart
Hosts fájl
A dnsmasq alkalmazás a /etc/hosts fájlt használja az egyik forrásként a DNS-szolgáltatások nyújtásához, hacsak a -h
(--no-hosts
) parancssori argumentum nem lett megadva.
Ha a /etc/hosts fájl frissül, akkor a dnsmasq szolgáltatásnak SIGHUP jelet kell kapnia a beállítások újratöltéséhez. Ezt az init szkriptek reload parancsán keresztül is támogatja:
root #
/etc/init.d/dnsmasq reload
Ezt a viselkedést a beállításfájlban a no-hosts
paraméterrel is le lehet tiltani.
További hosts fájl
Lehetőség van egy (további) hosts fájlra hivatkozni, amelyet DNS-lekérdezések forrásaként használhat. Ehhez adja hozzá a -H /path/to/hostsfile
(--addn-hosts=/path/to/hostsfile
) parancssori opciót. Lehetőség van egy könyvtár megadására is, ebben az esetben a könyvtárban található összes fájl további hosts fájlként lesz kezelve.
Hasonlóan a standard hosts fájlhoz, egy SIGHUP jel újratölti a fájlt.
Ezt a viselkedést a beállításfájlban az addn-hosts
paraméterrel is be lehet állítani.
Upstream névszerverek
Alapértelmezés szerint a dnsmasq a /etc/resolv.conf fájlban megadott névszervereket használja upstream névszerverként.
Egy másik fájl használható a -r
(--resolv-file
) parancssori opcióval.
Ezt a viselkedést a beállításfájlban a resolv-file
paraméterrel is be lehet állítani.
Jellemzők
A dnsmasq támogatja a DNS, TFTP, PXE, útválasztó-hirdetések és DHCP szolgáltatásokat. Ezáltal egy sokoldalú hálózatkezelési eszköz kis- és közepes méretű hálózatok számára.
DNS szolgáltatások
Ahhoz, hogy kizárólag csak DNS-szolgáltatást nyújtson, először azonosítsa a használni kívánt upstream névszervert. Ha ez megegyezik az /etc/resolv.conf fájlban megadott névszerverrel, akkor nincs szükség további lépésekre. Egyéb esetben irányítsa a dnsmasq szoftvert a megfelelő resolv.conf fájlra a -r
(--resolv-file
) parancssori opció segítségével. Ennek szintaxisa megegyezik az /etc/resolv.conf fájlban használttal, bár a dnsmasq csak a nameserver definíciókat veszi figyelembe.
Például:
root #
echo "nameserver 8.8.8.8" >> /etc/dnsmasq.conf.resolv
Ezután irányítsa a dnsmasq alkalmazást erre a fájlra a beállításfájl segítségével:
/etc/dnsmasq.conf
Egyéni resolv fájl beállítása.resolv-file=/etc/dnsmasq.conf.resolv
A szolgáltatás működésének ellenőrzéséhez (miután újra lett indítva, mivel a beállításfájl megváltozott), használja a dig parancsot (melyet a net-dns/bind-tools szoftvercsomag biztosít), és kérje meg a DNS-szervert (az alábbi példában a localhost-on fut), hogy oldjon fel egy helyi vagy távoli címet.
user $
dig @localhost +short www.gentoo.org
www-bytemark-v4v6.gentoo.org. 89.16.167.134
DNSSEC
A dnsmasq képes érvényesíteni a DNSSEC adatokat, miközben továbbítja azokat. Ezt az alábbi sorok beállításfájlhoz való hozzáadásával lehet megvalósítani (ne feledje el engedélyezni a dnssec USE jelölőzászlót):
/etc/dnsmasq.conf
DNSSEC engedélyezése# Vegye ki a megjegyzést ezekből a sorokból a DNSSEC érvényesítés és gyorsítótárazás engedélyezéséhez.
# (Ehhez szükséges, hogy a dnsmasq DNSSEC opcióval legyen lefordítva.)
conf-file=/usr/share/dnsmasq/trust-anchors.conf
dnssec
# Replies which are not DNSSEC signed may be legitimate, because the domain
# is unsigned, or may be forgeries. Setting this option tells dnsmasq to
# check that an unsigned reply is OK, by finding a secure proof that a DS
# record somewhere between the root and the domain does not exist.
# The cost of setting this is that even queries in unsigned domains will need
# one or more extra DNS queries to verify.
dnssec-check-unsigned
E változtatás után, ha az érvényesítés nem sikerül, akkor a dnsmasq SERVFAIL-t és semmilyen DNS-adatot nem ad vissza. Ha az érvényesítés sikeres, akkor beállítja az ad ("authenticated data", hitelesített adat) jelzőt. Abban az esetben, ha a domain nem támogatja a DNSSEC-et, akkor a dnsmasq az eddigi módon viselkedik.
DHCP szolgáltatások
A dnsmasq DHCP szolgáltatásainak engedélyezéséhez használja a dhcp-range
beállítást.
Például, ha IPv6 címek beállítását szeretné engedélyezni útválasztó-hirdetésekkel (RA) végtelen bérleti idővel, és IPv4 címek beállítását szintén végtelen bérleti idővel, akkor az alábbi beállításokat kell megadni a beállításfájlban:
/etc/dnsmasq.conf
IPv6 és IPv4 bérlés engedélyezésedhcp-range=2001:db8:81:e2::,ra-only,infinite
dhcp-range=192.168.100.100,192.168.100.149,infinite
Lehetőség van ismert host számítógépekhez statikus definíciókat használni, akár a fő beállításfájlon keresztül (dhcp-host=
beállítások), akár egy különálló fájlon keresztül. Ha külön fájlt használunk, akkor a dnsmasq szoftvert a --dhcp-hostsfile
parancssori opcióval kell erre ráirányítani. Az utóbbi megközelítés előnye, hogy elegendő egy SIGHUP jelet küldeni (vagy újratölteni a szolgáltatást) a bejegyzések újraolvasásához, míg a beállításfájlban szereplő definíciók teljes szolgáltatás újraindítást igényelnek.
A dhcp-host
paraméter szintaxisával kapcsolatban további információkért kérjük, tekintse meg a kézikönyv oldalát vagy a beállításfájlt, mivel annak szintaxisa nagyon kiterjedt.
Használat
Ez a szakasz a dnsmasq szolgáltatás különböző felhasználási forgatókönyveit (karbantartási és működési feladatokat) ismerteti.
Bérlések alaphelyzetbe állítása
Azok a kliensek, akiknek a hálózati interfésze frissült, és ez egy másik MAC-címet eredményezett, lehet, hogy nem kapják meg az eredetileg szánt IP-címet azonnal. Ennek oka, hogy a dnsmasq szolgáltatás az adott IP-címet a régi MAC-címhez rendelte, és megvárja, amíg az adott cím bérleti ideje lejár, mielőtt újra hozzárendelné azt.
A dnsmasq szolgáltatás a bérleteit a /var/lib/misc/dnsmasq.leases fájlban tárolja. Ha a bérletet gyorsabban kell eltávolítani, akkor állítsa le a dnsmasq szolgáltatást, távolítsa el a bérletet a dnsmasq.leases fájlból, majd indítsa újra a szolgáltatást.
root #
/etc/init.d/dnsmasq stop
root #
nano -w /var/lib/misc/dnsmasq.leases
root #
/etc/init.d/dnsmasq start
Nem főbeállítások újratöltése
A dnsmasq.conf fájl mellett a dnsmasq szolgáltatás az alábbi szolgáltatásokhoz külső definíciókat is használhat:
- DHCP host-beállítás bejegyzések (a
--dhcp-hostsfile
parancssori opció segítségével). - DHCP opciók (a
--dhcp-optsfile
parancssori opció segítségével).
Amikor ezek a fájlok módosulnak, egy SIGHUP jel hatására a dnsmasq újratölti ezeket a beállításfájlokat.
A resolv.conf fájlokat a dnsmasq alapértelmezés szerint lekérdezi. Ezeknek a fájloknak a változásait automatikusan észleli, hacsak nincs beállítva a
-n
(--no-poll
) parancssori opció, vagy nincs használva a no-poll
beállításparaméter.