![使用路由命令切换默认网关](https://linux22.com/image/1552096/%E4%BD%BF%E7%94%A8%E8%B7%AF%E7%94%B1%E5%91%BD%E4%BB%A4%E5%88%87%E6%8D%A2%E9%BB%98%E8%AE%A4%E7%BD%91%E5%85%B3.png)
我的笔记本电脑连接到两个网络,WiFi 和以太网。这是两个完全独立的子网。以太网连接是我正在开发的开发路由器。在一天开始时,当我连接所有东西时,我有一个脚本来设置路由,以便我可以正确连接到以太网设备,没有这个就无法工作。这是一个简单的小route add 192.168.1.1 dev enp0s20u3u1
脚本。
有时,我希望能够通过此设备路由所有流量。如果只有一个命令即可切换,那就太方便了,但尽管这应该很容易,但对我来说却行不通。
我断开了 WiFi 连接,并用于route add default gw 192.168.1.1
创建新的默认路由。但它不起作用。
✔ ~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 255.255.255.0 UG 0 0 0 enp0s20u3u1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s20u3u1
192.168.1.2 0.0.0.0 255.255.255.255 UH 102 0 0 enp0s20u3u1
192.168.124.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0
✔ ~$ ping 8.8.8.8
connect: Network is unreachable
✘-2 ~$ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.31 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.684 ms
^C
--- 192.168.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.684/1.000/1.317/0.318 ms
✔ ~$ ssh [email protected] ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=56 time=7.621 ms
64 bytes from 8.8.8.8: seq=1 ttl=56 time=4.963 ms
^CKilled by signal 2.
✘-255 ~$
我确信这是一个路由问题,因为它确实有效:
$ route add 8.8.8.8 gw 192.168.1.1
$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=56 time=8.323 ms
为什么内核网络堆栈会忽略我创建的默认路由?它是否使用了错误的标志、度量、引用?在 Google 上搜索这个问题很困难,因为有无数个与此症状有关的问题,而用户只是没有设置默认网关。