Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

配置 DNS 和 DHCP

SgrAlpha edited this page Oct 4, 2019 · 4 revisions

这里我们使用 dnsmasq 来担任 DNS 以及 DHCP 的角色,当然也可以用 isc-dhcp-server 来做 DHCP,可以按照个人喜好来定。

配置 dnsmasq

  1. 安装 dnsmasq:
sudo apt update && sudo apt install dnsmasq -y
  1. 打开并编辑其配置文件:
sudo vi /etc/dnsmasq.conf
  1. 将内容替换成:
# 默认情况下 dnsmasq 会并发查询所有定义了上游 DNS,这里先改成按照制定顺序
strict-order
# 添加若干上游 DNS 服务器
server=223.5.5.5#53
server=223.6.6.6#53
server=119.29.29.29#53
server=119.28.28.28#53
# 提供 DNS 服务的网卡,通常情况我们不需要为外网提供 DNS 服务,所以打开内网网卡即可
# interface=enp2s0f0 # Public ethernet interface
interface=ens9 # Internal ethernet interface
# 能用来收取 DNS 请求的 IP 地址,这里要加上内网网卡的 IP 和本地 IP
# listen-address=10.1.100.1 # IP from public ethernet interface
listen-address=192.168.3.1 # IP from internal ethernet interface
listen-address=127.0.0.1 # Local IP
# 禁止 dnsmasq 为外网网卡提供 DHCP 服务,否则会干扰外网网卡运行
no-dhcp-interface=enp2s0f0
# 绑定到网卡
bind-interfaces
# 设置 DHCP 服务能够分配的 IP 地址段,需要与 netplan 中的地址在同一个网段
dhcp-range=192.168.3.50,192.168.3.150,24h
  1. 保存并重启服务
sudo systemctl restart dnsmasq.service

关闭 systemd-resolved

本来配完 dnsmasq 就应该差不多了,但是重启过几次之后就遇到了莫名的 DNS 无法解析的问题,查了半天居然是 systemd-resolved 搞的鬼,关掉!

  1. 运行下面的命令:
sudo systemctl disable systemd-resolved.service
sudo service systemd-resolved stop
sudo rm /etc/resolv.conf
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
  1. 打开 Network Manager 的配置文件:
sudo vi /etc/NetworkManager/NetworkManager.conf

如果是空的就不用管,里面有东西的话,替换或者修改成如下形式:

[main]
dns=default

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /