最近公司的无线网络升级了,将内网从无线网络中剥离,故通过无线网络仅能访问外网了。无奈只能通过双网卡的方式同时连接内外网了,具体是:通过无线访问外网,有线访问ip地址以10开头的内网,且无线的优先级高。
具体配置如下图:
希望通过255.0.0.0子网掩码将10.x.x.x的所有ip地址识别为内网环境,并分流给路由10.8.15.1,从而实现内外网同时访问
但奇怪的事情发生了,访问同一个网段的10.8.15.49没问题,但访问10.11.206.141则出现超时(ping ssh均不通)。
通过route get命令发现上图中设置的255.0.0.0子网掩码虽然成功将10.11.206.141识别为内网地址,但并没有指定路由地址
>>> route get 10.8.15.49
route to: 10.8.15.49
destination: 10.0.0.0
mask: 255.0.0.0
interface: en8
flags: <UP,DONE,CLONING,STATIC>
recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire
0 0 0 0 0 0 1500 -13
>>> route get 10.11.206.141
route to: 10.11.206.141
destination: 10.0.0.0
mask: 255.0.0.0
interface: en8
flags: <UP,DONE,CLONING,STATIC>
recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire
0 0 0 0 0 0 1500 -39
此时的路由表:
>>> netstat -rn
Routing tables
Internet:
Destination Gateway Flags Netif Expire
default 192.168.1.1 UGScg en0
default 10.8.15.1 UGScIg en8
1 198.18.0.1 UGSc utun3
2/7 198.18.0.1 UGSc utun3
4/6 198.18.0.1 UGSc utun3
8/5 198.18.0.1 UGSc utun3
10 link#24 UCS en8 !
10.8.15.1/32 link#24 UCS en8 !
10.8.15.1 2c:xx:0:xx:xx:xx UHLWIir en8 1138
10.8.15.49 0:d8:61:2c:de:34 UHLWI en8 463
10.8.15.50/32 link#24 UCS en8 !
16/4 198.18.0.1 UGSc utun3
32/3 198.18.0.1 UGSc utun3
64/2 198.18.0.1 UGSc utun3
127 127.0.0.1 UCS lo0
127.0.0.1 127.0.0.1 UH lo0
128.0/1 198.18.0.1 UGSc utun3
169.254 link#6 UCS en0 !
169.254 link#24 UCSI en8 !
192.168.1 link#6 UCS en0 !
192.168.1.1/32 link#6 UCS en0 !
192.168.1.1 78:44:fd:1a:82:7f UHLWIir en0 1199
192.168.1.129 ee:41:18:3:2f:dd UHLWI en0 1147
192.168.1.133 58:b6:23:f1:bb:9 UHLWI en0 1151
192.168.1.147 a2:db:9d:ea:a:97 UHLWIi en0 481
192.168.1.161/32 link#6 UCS en0 !
198.18.0/15 198.18.0.1 UGSc utun3
198.18.0.1 198.18.0.1 UH utun3
224.0.0/4 link#6 UmCS en0 !
224.0.0/4 link#24 UmCSI en8 !
224.0.0.251 1:0:5e:0:0:fb UHmLWI en0
239.255.255.250 1:0:5e:7f:ff:fa UHmLWI en0
255.255.255.255/32 link#6 UCS en0 !
255.255.255.255/32 link#24 UCSI en8 !
>>> sudo route add -net 10.0.0.0 -netmask 255.0.0.0 10.8.15.1
add net 10.0.0.0: gateway 10.8.15.1
解决办法:
上图的设置不变
通过命令行添加删除路由配置
>>> sudo route add -net 10.0.0.0 -netmask 255.0.0.0 10.8.15.1
>>> sudo route delete -net 10.0.0.0 -netmask 255.0.0.0 10.8.15.1
(由于个人才疏学浅,还没有搞懂其中的规律,所以只能不断尝试添加删除)
在进行上面操作的同时,不断监控路由表及路由路径,直到出现如下两种情况
- 路由表变为如下(出现10 10.8.15.1 UGSc en8)
Routing tables
Internet:
Destination Gateway Flags Netif Expire
default 192.168.1.1 UGScg en0
default 10.8.15.1 UGScIg en8
1 198.18.0.1 UGSc utun3
2/7 198.18.0.1 UGSc utun3
4/6 198.18.0.1 UGSc utun3
8/5 198.18.0.1 UGSc utun3
10 10.8.15.1 UGSc en8
10.8.15.1/32 link#24 UCS en8 !
10.8.15.1 2c:ab:0:a6:75:71 UHLWIir en8 1181
10.8.15.50/32 link#24 UCS en8 !
16/4 198.18.0.1 UGSc utun3
32/3 198.18.0.1 UGSc utun3
64/2 198.18.0.1 UGSc utun3
127 127.0.0.1 UCS lo0
127.0.0.1 127.0.0.1 UH lo0
128.0/1 198.18.0.1 UGSc utun3
169.254 link#6 UCS en0 !
169.254 link#24 UCSI en8 !
192.168.1 link#6 UCS en0 !
192.168.1.1/32 link#6 UCS en0 !
192.168.1.1 78:44:fd:1a:82:7f UHLWIir en0 1197
192.168.1.129 ee:41:18:3:2f:dd UHLWI en0 1175
192.168.1.133 58:b6:23:f1:bb:9 UHLWI en0 1155
192.168.1.147 a2:db:9d:ea:a:97 UHLWIi en0 893
192.168.1.161/32 link#6 UCS en0 !
198.18.0/15 198.18.0.1 UGSc utun3
198.18.0.1 198.18.0.1 UH utun3
224.0.0/4 link#6 UmCS en0 !
224.0.0/4 link#24 UmCSI en8 !
224.0.0.251 1:0:5e:0:0:fb UHmLWI en0
239.255.255.250 1:0:5e:7f:ff:fa UHmLWI en0
255.255.255.255/32 link#6 UCS en0 !
255.255.255.255/32 link#24 UCSI en8 !
- 路由路径变为如下(出现gateway: 10.8.15.1)
route to: 10.11.206.141
destination: 10.0.0.0
mask: 255.0.0.0
gateway: 10.8.15.1
interface: en8
flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire
0 0 0 0 0 0 1500 0
此时你会发现10.11.206.141已经能正常连接了
总结:虽然不知道原因,但根据我的个人经验,需要在网络设置和命令行中同时设置才能实现内外网同时访问,缺一不可。如果您知道其中的原因或者有更好的办法,请不吝赐教🙏