You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

双路由器环境下resolve.conf的DNS服务器顺序异常问题咨询

调整DNS优先级:优先用内部路由器B的DNS

我之前也碰到过这种ISP路由器限制多,想优先用自己部署的路由器DNS的情况,给你整理下Raspbian和Arch Linux里的具体解决步骤——毕竟直接改/etc/resolv.conf大概率会被系统的网络服务覆盖,得从根源配置入手:

针对Raspbian系统

Raspbian默认用dhcpcd管理网络配置,步骤如下:

  1. 打开dhcpcd的配置文件:
    sudo nano /etc/dhcpcd.conf
    
  2. 在文件末尾添加一段网卡的DNS配置,把路由器B的IP放在最前面(替换成你实际的网卡名和IP):
    interface eth0  # 换成你的网卡,比如wlan0
    static domain_name_servers=192.168.1.1 192.168.0.1  # 前是B的IP,后是A的IP
    
  3. 保存退出后重启dhcpcd生效:
    sudo systemctl restart dhcpcd
    
  4. 打开/etc/resolv.conf查看,应该能看到nameserver的顺序已经变成B在前A在后了。

如果你的Raspbian是桌面版,用NetworkManager的话更简单:

  • 图形界面:点开右上角网络图标,进入对应连接的IPv4设置,把“DNS服务器”改成<B的IP>,<A的IP>,然后关掉“自动”获取DNS的选项,保存即可。
  • 命令行党可以用nmcli
    nmcli con mod "你的WiFi/有线连接名" ipv4.dns "192.168.1.1 192.168.0.1"
    nmcli con mod "你的WiFi/有线连接名" ipv4.ignore-auto-dns yes
    nmcli con up "你的WiFi/有线连接名"
    

针对Arch Linux系统

Arch的网络管理方式比较灵活,分三种常见情况处理:

1. 使用systemd-resolved的情况

现在Arch默认很多用这个服务:

  1. 编辑resolved的配置文件:
    sudo nano /etc/systemd/resolved.conf
    
  2. 找到[Resolve]段,修改DNS字段,把B的IP放前面:
    [Resolve]
    DNS=192.168.1.1 192.168.0.1
    # 其他选项比如DNSSEC不需要的话可以保持默认或注释
    
  3. 重启服务生效:
    sudo systemctl restart systemd-resolved
    
  4. resolvectl status就能看到当前DNS服务器的顺序是否正确了。

2. 使用dhcpcd的情况

和Raspbian的配置逻辑一样:

  1. 编辑/etc/dhcpcd.conf,添加网卡的DNS配置:
    sudo nano /etc/dhcpcd.conf
    
    interface eth0
    static domain_name_servers=<B的IP> <A的IP>
    
  2. 重启dhcpcd:
    sudo systemctl restart dhcpcd
    

3. 使用NetworkManager的情况

和Raspbian桌面版操作一致:

  • 图形界面:进入网络连接的IPv4设置,手动指定DNS顺序,关闭自动获取。
  • 命令行用nmcli修改,步骤和Raspbian里的一样,就不重复了。

小提醒

  • 别直接硬改/etc/resolv.conf!很多时候它是软链接(比如Arch用systemd-resolved时),改了之后重启服务会被覆盖,白忙活。
  • 配置完可以用nslookup google.com或者dig google.com测一下,看返回的解析服务器是不是优先用B的,确认生效。

内容的提问来源于stack exchange,提问作者edisn

火山引擎 最新活动