可能有很多情况都可能发生这种情况,但这对我来说是个大谜团。有些工具可以正常使用网络(wget、dig、apt-get 等),但有些工具却无法使用(ping、traceroute、浏览器等)。
例如,我可以使用以下命令下载文件wget
:
gonvaled@pegasus ~ » wget archive.ubuntu.com
--2014-10-02 10:52:34-- http://archive.ubuntu.com/
Resolving archive.ubuntu.com (archive.ubuntu.com)... 2001:67c:1360:8c01::18, 2001:67c:1360:8c01::19, 91.189.91.14, ...
Connecting to archive.ubuntu.com (archive.ubuntu.com)|2001:67c:1360:8c01::18|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 671 [text/html]
Saving to: ‘index.html.2’
100%[========================================================================================================================================================>] 671 --.-K/s in 0s
2014-10-02 10:52:34 (30,8 MB/s) - ‘index.html.2’ saved [671/671]
我可以使用以下方法解析域名dig
:
gonvaled@pegasus ~ » dig archive.ubuntu.com
; <<>> DiG 9.9.5-3-Ubuntu <<>> archive.ubuntu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36593
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;archive.ubuntu.com. IN A
;; ANSWER SECTION:
archive.ubuntu.com. 572 IN A 91.189.92.200
archive.ubuntu.com. 572 IN A 91.189.91.15
archive.ubuntu.com. 572 IN A 91.189.91.14
archive.ubuntu.com. 572 IN A 91.189.91.13
archive.ubuntu.com. 572 IN A 91.189.88.153
archive.ubuntu.com. 572 IN A 91.189.88.149
archive.ubuntu.com. 572 IN A 91.189.92.201
;; Query time: 2 msec
;; SERVER: 10.11.0.1#53(10.11.0.1)
;; WHEN: Thu Oct 02 10:58:00 CEST 2014
;; MSG SIZE rcvd: 148
但我无法 ping 通该网站(并不是因为该网站没有回复 ping,而是因为Network is unreachable
):
gonvaled@pegasus ~ » ping archive.ubuntu.com
connect: Network is unreachable
Traceroute 也失败了:
gonvaled@pegasus ~ » traceroute archive.ubuntu.com
traceroute to archive.ubuntu.com (91.189.88.149), 30 hops max, 60 byte packets
connect: Network is unreachable
这是我的网络配置(没什么异常!):
gonvaled@pegasus ~ » ifconfig eth0
eth0 Link encap:Ethernet HWaddr 2c:76:8a:e0:b0:6b
inet addr:10.11.44.84 Bcast:10.11.255.255 Mask:255.255.0.0
inet6 addr: 2001:4dd0:fff4:11:2c3f:5f86:f975:579f/64 Scope:Global
inet6 addr: fe80::2e76:8aff:fee0:b06b/64 Scope:Link
inet6 addr: 2001:4dd0:fff4:11:2e76:8aff:fee0:b06b/64 Scope:Global
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:37502 errors:0 dropped:0 overruns:0 frame:0
TX packets:14119 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:13558552 (13.5 MB) TX bytes:3533448 (3.5 MB)
gonvaled@pegasus ~ » route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.11.0.0 * 255.255.0.0 U 0 0 0 eth0
link-local * 255.255.0.0 U 1000 0 0 eth0
我还可以检查什么来缩小这个问题的范围?
编辑
这里似乎有两件事在起作用:IPv6 和默认网关。每当我启用 wlan 时,我都会获得以下路由:
gonvaled@pegasus ~ » route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.11.0.1 0.0.0.0 UG 0 0 0 wlan0
10.11.0.0 * 255.255.0.0 U 0 0 0 eth0
10.11.0.0 * 255.255.0.0 U 9 0 0 wlan0
link-local * 255.255.0.0 U 1000 0 0 eth0
它有一个默认网关,并使 IPv4 正常工作。
所以现在我还有两个悬而未决的问题:
- 为什么我的 eth0 没有默认网关?(这是当前的真正问题)
- 为什么 IPv6 不需要默认网关?(这也是我一直困惑的地方)
答案1
有两件事正在发生:
1) 对于您的 IPv4 设置,您没有配置默认路由。它应该看起来像这样:
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.11.0.0 0.0.0.0 UG 100 0 0 eth0
10.11.0.0 * 255.255.0.0 U 0 0 0 eth0
由于您没有指定 IPv4 路由,因此您无法路由出您的本地网络。
2) 由于您使用的是 IPv6 和 IPv4,因此在使用 IPv6 时您可以发出一些流量。如果您执行了route -A inet6
或,ip -6 route
您很可能会看到指定的默认路由。