Sun*_*nny 4 networking dns routing ubuntu
我有一个使用两个 ISP 的情况,我有一个程序会定期 ping 一个地址,如果它关闭,则假定 ISP 有问题并更改 /etc/network/interfaces 中的默认路由和 DNS 服务器条目和 / etc/resolvconf/resolv.conf.d/tail 文件。它将这些设置更改为指向备份 ISP。然后我跑
sudo service networking restart
sudo /etc/init.d/resolvconf restart.
Run Code Online (Sandbox Code Playgroud)
但是,这不会更改默认路由(如 ip route ls 显示的那样)或 /etc/resolv.conf 中的 DNS 服务器。它需要重新启动。如何在不重新启动的情况下激活这些设置?
我将要告诉您的所有内容都不会在重新启动后持续存在,我认为这是您希望的,因为显然您的情况不稳定。如果没有,请告诉我。
我假设您没有静态 IP(同样,如果有,请告诉我)。线路中断时,提供商 1 的 DHCP 服务器是否保持开启?如果没有,那么
sudo ifdown eth0
sudo ifup eth0
Run Code Online (Sandbox Code Playgroud)
会给你新的配置。但是,如果 Provider 1 的 DHCP 服务器没有继续运行,那么您将不得不手动执行此操作。
更改路线:
sudo ip route del default
sudo ip route add default via 192.168.1.121 dev eth0
Run Code Online (Sandbox Code Playgroud)
我假设您通过以太网连接,并且第二个调制解调器的 IP 地址是 192.168.1.121,如果没有相应更改。
更改 DNS,最简单的是:编辑(如 sudo)/etc/resolv.conf
,删除之前 DNS 的行,然后添加以下两行:
nameserver 1.2.3.4
nameserver 9.8.7.6
Run Code Online (Sandbox Code Playgroud)(用你的价值观代替)。
如果你觉得这很烦人,你可以按如下方式自动化:创建一个可执行(!) 文件,调用它line2
,内容如下:
#!/bin/bash
sudo ip route del default
sudo ip route add default via 192.168.1.121 dev eth0
sed -i --follow-symlinks 's/First.Old.DNS.IP./First.New.DNS.IP/' /etc/resolv.conf
sed -i --follow-symlinks 's/Second.Old.DNS.IP./Second.New.DNS.IP/' /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)
现在执行line2
将为您提供新连接。
还有其他更优雅的方法来更改 DNS(使用resolvconf
,写入/etc/resolvconf.d
),但由于您似乎经常遇到问题,没有什么比这更容易的了。
归档时间: |
|
查看次数: |
36492 次 |
最近记录: |