状况介绍
先解释一下情况,目前多个相同类型配置的内网通过其路由器访问,每个独立的内网里面有一个相同且不可改变IP的内网地址,其中的网络架构已经设置好了指向其IP的静态路由。但是终端连接wifi后可能因为双网卡的默认网关metric跃点优先级的问题无法访问那个IP,而且因为我会频繁改变wifi,导致设置一条临时静态路由或者在rc.local里设置静态路由都不好使。于是了解了下ubuntu切换wifi读取的文件方式,做了一个配置。
解决
ifconfig查看双网卡,假设外网为eno1,内网为wlp2s0,需要访问的IP为192.168.10.1
如果要访问非网段内的内网ip,此时:
(base) adocir@adocir:~$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 172.16.0.1 0.0.0.0 UG 100 0 0 eno1
default 192.168.4.1 0.0.0.0 UG 600 0 0 wlp2s0
link-local * 255.255.0.0 U 1000 0 0 wlp2s0
172.16.0.0 * 255.255.252.0 U 100 0 0 eno1
192.168.4.0 * 255.255.255.0 U 600 0 0 wlp2s0
可以看到eno1的默认网关的metric跃点较小,所以最终默认网关会选择172.16.0.1这条,192.168.4.1相当于不存在。也就无法直接访问192.168.10.1这个IP。
解决方法:
/etc/network/if-up.d/目录下,编写文件
#!/bin/sh -e
route add -net 192.168.10.1 netmask 255.255.255.255 gw 192.168.4.1 wlp2s0
然后给文件赋予777权限
(base) adocir@adocir:~$ sudo chmod 777 你的文件
最后
sudo ifconfig wlp2s0 up
完事,切换wifi后这条静态路由就还在了。
Question
小问题:跃点数的默认设定到底是在哪里规定的,各个终端都不太相同?