有没有办法只通过接口名称来切换接口?

有没有办法只通过接口名称来切换接口?

我目前正在研究如何在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 脚本来完成此操作。

相关内容