我目前正在研究如何在Linux环境下切换网络接口。我正在尝试通过切换默认网关来切换网络接口,例如当 eth0 是主要连接时切换到 wlan0。我通常做的是:
route delete default gw 192.168.1.1 eth0
route add default gw 192.168.2.1 wlan0
我想将这个过程自动化到脚本中,但我一直无法找到可靠的方法来获取 wlan0 的路由器地址。由于它不是主导连接,因此 netstat -rn 和 ip Route 不会给出网关地址,并且 arp -n 无法可靠地帮助我区分哪个 IP 是路由器的。
有没有办法只切换接口名称,就像拔掉以太网时会发生的情况一样?或者是否有其他方法可以进行切换或查找路由器的地址?
答案1
除非其他人提供了未知的工具,否则这无法以我们都想要的优雅方式完成。
第一个答案是,无法仅通过名称引用来切换默认网关。唯一正确的方法是使用路线命令,就像你正在做的那样。
其次,您只需 ping 任何 TTL 数据包为 1 的主机即可找到路由器。使用跟踪路由并过滤第一跳。
使用-t的参数平设置生存时间:
$ ping -t 1 192.168.0.254
上面的IP应该是你的路由器的IP。和跟踪路由很简单:
$ traceroute 8.8.8.8
您所做的称为接口故障转移,每个系统管理员都使用自己的 Bash 脚本来完成此操作。