我遇到过这种情况:我使用两个 ISP,我有一个程序会定期 ping 一个地址,如果地址关闭,则认为 ISP 有问题,并分别更改 /etc/network/interfaces 和 /etc/resolvconf/resolv.conf.d/tail 文件中的默认路由和 DNS 服务器条目。它会将这些设置更改为指向备份 ISP。然后我运行
sudo service networking restart
sudo /etc/init.d/resolvconf restart.
但是,这不会更改默认路由(如 ip route ls 所示)或 /etc/resolv.conf 中的 DNS 服务器。它需要重新启动。如何在不重新启动的情况下激活这些设置?
答案1
我要告诉你的内容在重启后不会持续存在,我想这正是你所希望的,因为显然你的情况不稳定。如果不是,请告诉我。
我认为你会不是有静态 IP(如果是,请告诉我)。当线路断线时,提供商 1 的 DHCP 服务器是否保持开启?如果不是, 然后
sudo ifdown eth0
sudo ifup eth0
将为您提供新的配置。但是,如果提供商 1 的 DHCP 服务器做继续,那么你将必须手动完成。
更改路线:
sudo ip route del default sudo ip route add default via 192.168.1.121 dev eth0
我假设您通过以太网连接,并且第二个调制解调器的 IP 地址是 192.168.1.121,如果不是,请相应更改。
更改 DNS,最简单的方法是:编辑(作为 sudo)
/etc/resolv.conf
,删除以前的 DNS 的行,然后添加以下两行:nameserver 1.2.3.4 nameserver 9.8.7.6
(用您的价值观替代)。
如果你觉得这很烦人,你可以按如下方式自动化:创建一个可执行文件(!)文件,将其命名为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
现在执行line2
将为您提供新的连接。
还有其他更优雅的方法来更改DNS(使用resolvconf
,写入/etc/resolvconf.d
),但由于您似乎经常遇到问题,所以没有什么比这更容易的。