好吧,这个问题已经让我抓狂好几天了。我通常是一个 Linux 用户,所以虽然我对命令行很熟悉。但我不知道在 OSX 上该去哪里找。而且典型的谷歌搜索也无济于事。
这是我的问题。当我设置盒子时,它在一个网络上,即10.x.x.x
。这很好。现在,当我把它带回家时,我打开网络接口,连接到我的家庭无线网络并尝试 ping 东西:
$ ping google.com
PING google.com (74.125.113.104): 56 data bytes
Request timeout for icmp_seq 0
^C
--- google.com ping statistics ---
2 packets transmitted, 0 packets received, 100.0% packet loss
colossus:~ eteran$ ping google.com
PING google.com (74.125.113.104): 56 data bytes
ping: sendto: No route to host
Request timeout for icmp_seq 0
ping: sendto: No route to host
Request timeout for icmp_seq 1
“没有到主机的路由”,好的,所以我检查路由表......
$ netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 10.255.255.1 UGSc 11 5 en1
10.255.255.1/32 link#5 UCS 1 0 en1
10.255.255.1 link#5 UHRLWI 12 0 en1
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 19 2051 lo0
169.254 link#5 UCS 0 0 en1
192.168.10 link#5 UCS 4 0 en1
192.168.10.1 0:1f:90:23:7a:69 UHLWI 12 62 en1 1193
192.168.10.7 c0:cb:38:6c:3:33 UHLWI 2 164 en1 996
192.168.10.9 127.0.0.1 UHS 1 369 lo0
192.168.10.10 0:1a:a0:e6:ee:90 UHLWI 0 30 en1 903
192.168.10.255 link#5 UHLWbI 2 25 en1
Internet6:
Destination Gateway Flags Netif Expire
::1 ::1 UH lo0
fe80::%lo0/64 fe80::1%lo0 Uc lo0
fe80::1%lo0 link#1 UHL lo0
fe80::%en1/64 link#5 UC en1
fe80::5ab0:35ff:fe7b:dcf3%en1 58:b0:35:7b:dc:f3 UHL lo0
ff01::/32 ::1 Um lo0
ff02::/32 ::1 UmC lo0
ff02::/32 link#5 UmC en1
是的,问题就出在这里,默认路由设置为10.255.255.1
。我猜是来自其他网络。我可以用命令手动调整route
。但下次重启时...它又回来了!
我的家庭网络路由器是192.168.10.1
,所以我当然希望它是默认路由。我查看了一下,DHCP 请求肯定是说要使用它作为默认路由。但 OSX 就是拒绝使用它。它坚持在上一个连接中使用这个默认路由!
它存储在哪里?我该如何更改它?
答案1
路线条目中的标志S
表示它是手动添加的,因此您可能必须使用命令将其删除。
尝试sudo route delete default
。
答案2
在里面系统偏好设置在下面网络. 将所有内容设置为自动的一切就都恢复正常了。
更新:一种更加有力的方式。
点击位置下拉框并选择编辑位置。单击+添加新位置。命名Auto 2
(或任意)。选择此位置并应用它。
答案3
上面提到的通过使用路由命令删除并添加新的默认网关的手动方法为我解决了这个问题,但这只是一个临时解决方案,因为重新启动后再次设置了错误的网关。
一劳永逸地解决这个问题,我首先删除了“系统偏好设置/网络”下的所有接口,然后重新添加了那些我觉得必要的接口。对我来说,只是“以太网”。
这是在 OS X Lion (10.7.5) 上
答案4
如果您在家中同时使用以太网和 wifi 连接,由于必须在网络列表中选择以太网,因此优先使用其默认值而不是 wifi dhcp。要从路由表中删除默认值,您必须转到网络首选项并转到 ip 地址设置。此处将“路由器”字段设置为空白,因为这是默认网关。