https://www.debian.org/releases/stable/amd64/ch04s05.zh-cn.html https://www.colben.cn/post/pxe-dnsmasq/ https://mirrors.tuna.tsinghua.edu.cn/debian/dists/bookworm/main/installer-amd64/current/images/netboot/ https://taoshu.in/unix/qemu-bridge-on-macos.html#google_vignette inetd 启动 tftpd
参考:https://wiki.archlinux.org/title/Dnsmasq_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
可以用 dnsmasq 做一个自己的 dns 服务器, 有个好处就是通过编辑本机的 /etc/hosts 可以支持自定义的负载均衡, 自定义 ttl 和反向解析功能.
开启 dnsmasq
/etc/dnsmasq.conf
no-resolv no-poll no-hosts server=114.114.114.114 server=8.8.8.8 interface=lo bind-interfaces dns-forward-max=1000 cache-size=10000
or
local-ttl=30 no-poll no-resolv server=8.8.4.4 server=8.8.8.8 server=114.114.114.114 dns-forward-max=1000 cache-size=10000 address=/s/192.168.88.3
如果是打算利用 hosts 文件, ttl 建议设置.
DNS 指向本地:
vi /etc/resolv.conf nameserver 127.0.0.1
重新载入 /etc/hosts
kill -SIGHUP $(cat /var/run/dnsmasq.pid)
查看当前状态:
kill -SIGUSR1 $(cat /var/run/dnsmasq.pid) && sleep 0.1 && tail /var/log/messages
所有的服务器都指向一台自定义的 dns 服务器:
vi /etc/resolv.conf nameserver 119.23.106.10 # 选配, 不让 NetworkManager 自动设置 /etc/resolv.conf vi /etc/NetworkManager/NetworkManager.conf [main] dns=none
然后删掉或清空 /etc/hostname, 这样主机名就会直接参考 dns 给的结果, 方便统一管理.
另, /etc/sysconfig/network 的 HOSTNAME 字段会干扰主机名, 建议删掉.
配置ip地址文件 /etc/sysconfig/network-scripts/ifcfg-ethXXX 添加
DNS1=8.8.8.8
/etc/resolv.conf 会自动添加地址。
手动编辑 /etc/resolv.conf
nameserver 8.8.8.8
配置ip地址文件 /etc/sysconfig/network-scripts/ifcfg-ethXXX 添加
PEERDNS=no # 添加后不会去打扰 /etc/resolv.conf 文件
实践中, 方案 2 比较好, 方案 1 会添加 search 字段, 有点问题.
后面发现 PEERDNS=no 的方案并不能阻止 search 的自动添加, 猜测是系统获取到 domain name 时, 自己取后缀添加的, 如 1.this.is.suffix 对应 search this.is.suffix.
network-scripts/ifcfg-ethXXX 的配置见 https://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-networkscripts-interfaces.html
nameserver 不用多说, 说说 search 这个字段.
如果这个字段指定了, 就会自动补全你的解析域名, 比如我们设置:
search tyio.net
你解析 x, 系统发现不是个有意义的域名(尽管 DNS 服务器的 hosts 有配置), 就会补全为 x.tyio.net 并解析.
这个 search 用好了, 会很方便.
dnsmasq 也可以下发这个配置:
domain=svc.c
如果需要多个 search 字段:
dhcp-option=option:domain-search,q.svc.c,dev.svc.c,test.svc.c,svc.c
Linux 本身是没有 dns 缓存的, 想使用 dns 缓存的话需要自己安装 NSCD, 自己去网上找资料吧. 其实我觉得没缓存也好, 除非你请求 dns 非常频繁.
可通过自定义 hosts,达到屏蔽某些域名的效果,屏蔽列表参考: https://github.com/StevenBlack/hosts
local-ttl=30 no-poll no-resolv server=114.114.114.114 cache-size=10000 # from https://github.com/StevenBlack/hosts addn-hosts=/etc/hosts-black
启用特定域名的自定义 DNS。例如: server=/example1.com/exemple2.com/1.1.1.1 。
也见 https://github.com/imp/dnsmasq/blob/master/dnsmasq.conf.example#L66