Name or service not known

问题描述
目前使用一台ubuntu服务器作为跳转节点,IP设置为静态,netplan设置如下:

yaml
/etc/netplan/00-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
ethernets:
eno1:
dhcp4: false
addresses:
- 1??.2??.2??.??5/24
nameservers:
addresses: [202.38.64.56,202.38.64.17]
eno2:
dhcp4: false
addresses:
- 192.168.1.200/24
version: 2
renderer: NetworkManager

在尝试访问外站时发现无法解析域名,报错情形如下:

bash
> ping www.baidu.com
ping: www.baidu.com: Name or service not known

解决方案
这里我设置了namesevers作为域名服务器,但是好像没有起作用。
网上查阅一下发现以下的解决方案有效:
编辑/etc/resov.conf, 添加几条DNS服务器:

bash
> sudo vim /etc/resov.cof
## 添加以下三条DNS
nameserver 8.8.8.8
nameserver 202.38.64.56
nameserver 202.38.64.17

nameserver 127.0.0.53
options edns0

wq保存退出就可以了,测试连接有效:

bash
> ping www.baidu.com
PING www.wshifen.com (103.235.46.40) 56(84) bytes of data.
64 bytes from 103.235.46.40 (103.235.46.40): icmp_seq=1 ttl=42 time=323 ms
64 bytes from 103.235.46.40 (103.235.46.40): icmp_seq=2 ttl=42 time=324 ms
^C
--- www.wshifen.com ping statistics ---
3 packets transmitted, 2 received, 33% packet loss, time 2001ms
rtt min/avg/max/mdev = 323.633/324.260/324.888/0.847 ms

再次出现Name or service not known

快乐上网若干个小时以后,发现下载数据的脚本停了,检查发下再次无法解析域名。
打开/etc/resov.conf 发现先前的修改被覆盖
解决方案:

  1. 再次添加DNS
  2. 为了放置NetworkManager覆盖设置,打开 /etc/NetworkManager/NetworkManager.conf 文件,在 [main] 部分中添加一行dns=none
    bash
    /etc/NetworkManager/NetworkManager.conf
    [main]
    plugins=ifupdown,keyfile
    dns=none
    [ifupdown]
    managed=false
    ......
    保存退出,重启NetworkManager服务:
    bash
    > sudo systemctl restart NetworkManager