Difference between revisions of "Dnsmasq"
Jump to navigation
Jump to search
(6 intermediate revisions by the same user not shown) | |||
Line 8: | Line 8: | ||
# Stub Resolver | # Stub Resolver | ||
+ | - https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/plan/reviewing-dns-concepts#:~:text=in%20the%20namespace.-,Recursive%20name%20resolution,which%20it%20is%20not%20authoritative.&text=Forwarding%20and%20root%20hints%20are,which%20they%20are%20not%20authoritative. | ||
- https://www.internetsociety.org/resources/deploy360/dns-privacy/intro/- | - https://www.internetsociety.org/resources/deploy360/dns-privacy/intro/- | ||
- https://www.omnisecu.com/tcpip/recursive-and-iterative-dns-queries.php#:~:text=Recursion%20in%20DNS%20(Domain%20Name,DNS%20Servers%20for%20name%20resolution. | - https://www.omnisecu.com/tcpip/recursive-and-iterative-dns-queries.php#:~:text=Recursion%20in%20DNS%20(Domain%20Name,DNS%20Servers%20for%20name%20resolution. | ||
## Install | ## Install | ||
``` | ``` | ||
− | + | apt-get update && sudo apt-get install -y dnsmasq | |
− | + | systemctl stop systemd-resolved | |
− | + | touch /etc/dnsmasq.hosts | |
− | + | systemctl disable systemd-resolved | |
− | + | systemctl mask systemd-resolved | |
− | # | + | ``` |
− | + | ||
− | + | ## Undo | |
+ | ``` | ||
+ | systemctl unmask systemd-resolved | ||
+ | systemctl enable systemd-resolved | ||
+ | systemctl start systemd-resolved | ||
``` | ``` | ||
Line 31: | Line 36: | ||
``` | ``` | ||
no-resolv # Don't read /etc/resolv.conf. Get upstream servers only from the command line or the dnsmasq configuration file. | no-resolv # Don't read /etc/resolv.conf. Get upstream servers only from the command line or the dnsmasq configuration file. | ||
− | |||
− | |||
server=8.8.8.8 | server=8.8.8.8 | ||
server=8.8.4.4 | server=8.8.4.4 | ||
addn-hosts=/etc/dnsmasq.hosts | addn-hosts=/etc/dnsmasq.hosts | ||
cache-size=1000 # Only cache up to 1000 names | cache-size=1000 # Only cache up to 1000 names | ||
+ | listen-address=127.0.0.1,10.x.x.x # must explicityly set this for non-local network resolves | ||
+ | # server=/example.com/ns.example.com # forward example.com to server | ||
# ... | # ... | ||
``` | ``` | ||
Line 42: | Line 47: | ||
``` | ``` | ||
systemctl restart dnsmasq | systemctl restart dnsmasq | ||
+ | dig @10.x.x.x +short prod.example.com -p 15353 | ||
+ | sudo tcpdump -npi eth0 port 53 | ||
+ | ``` | ||
+ | |||
+ | Example | ||
+ | ``` | ||
+ | ======================================================= | ||
+ | # Example DNSMASQ configuration file with 192.168.2.1 private network | ||
+ | # Common defaults | ||
+ | resolv-file=/etc/resolv.conf | ||
+ | dhcp-leasefile=/var/lib/misc/dnsmasq.leases | ||
+ | # Make sure we look at our DNS servers in order first so unqualified name names are resolved correctly | ||
+ | strict-order | ||
+ | expand-hosts | ||
+ | # Out default local domain name | ||
+ | domain=localnet | ||
+ | local=/localnet/ | ||
+ | domain-needed | ||
+ | bogus-priv | ||
+ | dhcp-authoritative | ||
+ | # The more DNS queries you have from clients the larger you want this | ||
+ | cache-size=2048 | ||
+ | bind-interfaces | ||
+ | enable-tftp | ||
+ | log-dhcp | ||
+ | log-facility=/var/log/dnsmasq | ||
+ | tftp-root=/tftpboot/pxes | ||
+ | # Default BIOS boot file | ||
+ | dhcp-boot=pxelinux.0 | ||
+ | # Rasperry PI boot | ||
+ | dhcp-mac=set:RASPBERRYPI,b8:27:eb:*:*:* | ||
+ | dhcp-match=set:RASPBERRYPI, option:client-machine-id, 00:44:44:44:44:44:44:44:44:44:44:44:44:44:44:44:44 | ||
+ | tag-if=set:RASPBERRYPI, tag:ARCH_0, tag:RASPBERRYPI | ||
+ | dhcp-option=tag:RASPBERRYPI,43,"Raspberry Pi Boot " | ||
+ | dhcp-boot=tag:RASPBERRYPI,/tftpboot/pxes/raspberrypi/boot/bootcode.bin | ||
+ | # Raspebrry PI looks like intel arch so fix it here | ||
+ | tag-if=set:x86PC, tag:ARCH_0, tag:!RASPBERRYPI | ||
+ | dhcp-boot=tag:x86PC,pxelinux.0 | ||
+ | # Match other architecture types here | ||
+ | dhcp-match=set:X86-64_EFI,option:client-arch,6 | ||
+ | dhcp-match=set:X86-64_EFI,option:client-arch,7 | ||
+ | dhcp-match=set:X86-64_EFI,option:client-arch,9 | ||
+ | dhcp-boot=tag:X86-64_EFI,syslinux64.efi | ||
+ | # Default listen addresses for servers | ||
+ | listen-address= 127.0.0.1,192.168.2.1 | ||
+ | dhcp-range=comm1,192.168.2.2,192.168.2.254,255.255.255.0,3600 | ||
+ | dhcp-option=comm1,6,192.168.2.1 | ||
+ | dhcp-option=comm1,3,192.168.2.1 | ||
+ | # Add your windows servers here | ||
+ | srv-host=_ldap._tcp,licsrv2.uwaterloo.ca,389,1 | ||
+ | srv-host=_ldap._tcp,licsrv1.uwaterloo.ca,389,2 | ||
+ | #============================== | ||
+ | dhcp-host=192.168.2.1,90:e2:ba:52:f0:2f,cs-tech1,86400 | ||
+ | ptr-record=1.2.168.192.in-addr.arpa.,"cs-tech1" | ||
+ | address=/cs-tech1/192.168.2.1 | ||
+ | dhcp-host=192.168.2.2,00:23:7d:87:7f:d1,HP-P2055dn,86400 | ||
+ | ptr-record=2.2.168.192.in-addr.arpa.,"HP-P2055dn" | ||
+ | address=/HP-P2055dn/192.168.2.2 | ||
+ | dhcp-host=192.168.2.129,00:0c:29:02:1e:4e,mysalt,86400 | ||
+ | ptr-record=129.2.168.192.in-addr.arpa.,"mysalt" | ||
+ | address=/mysalt/192.168.2.129 | ||
+ | dhcp-host=192.168.2.130,00:0c:29:37:f7:f2,myminion,86400 | ||
+ | ptr-record=130.2.168.192.in-addr.arpa.,"myminion" | ||
+ | address=/myminion/192.168.2.130 | ||
``` | ``` | ||
+ | |||
+ | # Ref | ||
+ | - https://www.tecmint.com/setup-a-dns-dhcp-server-using-dnsmasq-on-centos-rhel/ |
Latest revision as of 17:10, 10 October 2020
Related commands
- sudo systemd-resolve --flush-caches
Files of Interest
/var/lib/misc/dnsmasq.leases
Stub Resolver
- https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/plan/reviewing-dns-concepts#:~:text=in%20the%20namespace.-,Recursive%20name%20resolution,which%20it%20is%20not%20authoritative.&text=Forwarding%20and%20root%20hints%20are,which%20they%20are%20not%20authoritative.
- https://www.internetsociety.org/resources/deploy360/dns-privacy/intro/-
- https://www.omnisecu.com/tcpip/recursive-and-iterative-dns-queries.php#:~:text=Recursion%20in%20DNS%20(Domain%20Name,DNS%20Servers%20for%20name%20resolution.
Install
apt-get update && sudo apt-get install -y dnsmasq systemctl stop systemd-resolved touch /etc/dnsmasq.hosts systemctl disable systemd-resolved systemctl mask systemd-resolved
Undo
systemctl unmask systemd-resolved systemctl enable systemd-resolved systemctl start systemd-resolved
/etc/dnsmasq.hosts
10.0.0.1 prod.example.com. 10.0.0.2 dev.example.com.
/etc/dnsmasq.conf
no-resolv # Don't read /etc/resolv.conf. Get upstream servers only from the command line or the dnsmasq configuration file. server=8.8.8.8 server=8.8.4.4 addn-hosts=/etc/dnsmasq.hosts cache-size=1000 # Only cache up to 1000 names listen-address=127.0.0.1,10.x.x.x # must explicityly set this for non-local network resolves # server=/example.com/ns.example.com # forward example.com to server # ...
systemctl restart dnsmasq dig @10.x.x.x +short prod.example.com -p 15353 sudo tcpdump -npi eth0 port 53
Example
======================================================= # Example DNSMASQ configuration file with 192.168.2.1 private network # Common defaults resolv-file=/etc/resolv.conf dhcp-leasefile=/var/lib/misc/dnsmasq.leases # Make sure we look at our DNS servers in order first so unqualified name names are resolved correctly strict-order expand-hosts # Out default local domain name domain=localnet local=/localnet/ domain-needed bogus-priv dhcp-authoritative # The more DNS queries you have from clients the larger you want this cache-size=2048 bind-interfaces enable-tftp log-dhcp log-facility=/var/log/dnsmasq tftp-root=/tftpboot/pxes # Default BIOS boot file dhcp-boot=pxelinux.0 # Rasperry PI boot dhcp-mac=set:RASPBERRYPI,b8:27:eb:*:*:* dhcp-match=set:RASPBERRYPI, option:client-machine-id, 00:44:44:44:44:44:44:44:44:44:44:44:44:44:44:44:44 tag-if=set:RASPBERRYPI, tag:ARCH_0, tag:RASPBERRYPI dhcp-option=tag:RASPBERRYPI,43,"Raspberry Pi Boot " dhcp-boot=tag:RASPBERRYPI,/tftpboot/pxes/raspberrypi/boot/bootcode.bin # Raspebrry PI looks like intel arch so fix it here tag-if=set:x86PC, tag:ARCH_0, tag:!RASPBERRYPI dhcp-boot=tag:x86PC,pxelinux.0 # Match other architecture types here dhcp-match=set:X86-64_EFI,option:client-arch,6 dhcp-match=set:X86-64_EFI,option:client-arch,7 dhcp-match=set:X86-64_EFI,option:client-arch,9 dhcp-boot=tag:X86-64_EFI,syslinux64.efi # Default listen addresses for servers listen-address= 127.0.0.1,192.168.2.1 dhcp-range=comm1,192.168.2.2,192.168.2.254,255.255.255.0,3600 dhcp-option=comm1,6,192.168.2.1 dhcp-option=comm1,3,192.168.2.1 # Add your windows servers here srv-host=_ldap._tcp,licsrv2.uwaterloo.ca,389,1 srv-host=_ldap._tcp,licsrv1.uwaterloo.ca,389,2 #============================== dhcp-host=192.168.2.1,90:e2:ba:52:f0:2f,cs-tech1,86400 ptr-record=1.2.168.192.in-addr.arpa.,"cs-tech1" address=/cs-tech1/192.168.2.1 dhcp-host=192.168.2.2,00:23:7d:87:7f:d1,HP-P2055dn,86400 ptr-record=2.2.168.192.in-addr.arpa.,"HP-P2055dn" address=/HP-P2055dn/192.168.2.2 dhcp-host=192.168.2.129,00:0c:29:02:1e:4e,mysalt,86400 ptr-record=129.2.168.192.in-addr.arpa.,"mysalt" address=/mysalt/192.168.2.129 dhcp-host=192.168.2.130,00:0c:29:37:f7:f2,myminion,86400 ptr-record=130.2.168.192.in-addr.arpa.,"myminion" address=/myminion/192.168.2.130