今天我重新启动了我的linux盒子,重新启动后,我的linux盒子没有网络连接。
到目前为止,这是我尝试过的:
使用可在我的另一台计算机上使用的不同以太网电缆。不用找了。
在 NetworkManager (KDE) 中删除并重新创建有线网络连接。没用。我仍然在屏幕右下角收到系统通知:
Network Interface Connection New Wired Connection failed
> sudo /etc/init.d/networking restart
貌似重启成功了,但是还是没有网络。检查过
/etc/network/interfaces
。其中唯一的代码就是互联网上所说的:auto lo iface lo inet loopback
通过尝试 ping 谷歌的公共 DNS 服务器之一来确保这不仅仅是 DNS 问题
$ ping 8.8.8.8 connect: Network is unreachable
看来不是DNS问题。
新的修复路由。我使用该
route
命令添加了一个指向我的路由器 IP 地址的默认网关(感谢 @chaos)。$ /sbin/route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
新的看看我是否有 IP 地址
$ /sbin/ifconfig -a eth0 Link encap:Ethernet HWaddr 74:d4:35:5f:0b:09 inet6 addr: fe80::76d4:35ff:fe5f:b09/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2999 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:1711 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:365026 (356.4 KiB) TX bytes:0 (0.0 B) Interrupt:73 Base address:0xc000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:4913 errors:0 dropped:0 overruns:0 frame:0 TX packets:4913 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1559718 (1.4 MiB) TX bytes:1559718 (1.4 MiB)
我好像有 IPv6 地址,但没有 IPv4 地址?我希望eth0
有一行以 开头inet addr:
,但事实并非如此。
那么如何获取IP地址呢?
以下是一些可能有帮助(也可能没有帮助)的更多信息:
系统信息
$ uname -a
Linux mocha 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1 x86_64 GNU_Linux
以太网控制器
$ lspci | grep -i eth
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)
接下来我应该做什么?
答案1
connect: Network is unreachable
指向该网络的缺失路由(本例中为默认路由)。
使用:
route -n
显示当前的路由表。一定有一条如下所示的路线:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 <gateway-ip> 0.0.0.0 UG 0 0 0 eth0
请注意,<gateway-ip>
是您的路由器/网关的 IP 地址。Iface
当您的系统中有多个网络接口时,也可能会有所不同。
但是,请使用以下命令手动添加默认路由:
route add default gw <gateway-ip>
答案2
我会(以root身份执行所有这些命令)ifconfig -a
检查接口是否有IP地址,如果没有,你就发现了你的问题,如果有,那么我会netstat -rn
检查路由是否正确。如果是,我会iptables -L
检查是否有防火墙规则不允许我出去。如果都正常,那么您的 IP 地址可能不属于路由器网络。
答案3
这里的问题是你的有线接口(eth0)不是有一个 IPv4 地址。您已手动添加 IPv4 路由,但如果没有 IPv4 地址,则无法路由流量,因为它无法为(您系统的)源 IP 分配 IP 地址。
在不了解您的环境的更多信息的情况下(您是否使用 DSL 连接?您是否在公司网络中?谁应该为您提供 IP 地址?)我猜测在重新启动之前您要么有一个静态配置的 IP 地址,要么有一个工作的 IP 地址。 DHCP 服务器。如果您有静态配置的地址(您的配置未显示),则该地址在重新启动后会丢失。
您会看到 IPv6 地址,因为该地址是“自动配置的”。由于您尚未对其进行配置,因此有线接口仅创建一个可用于与本地网络通信的接口。
从您提供的 ifconfig 信息来看,您的网卡似乎正在接收以太网数据包,但没有发送任何数据包。奇怪的是,它还显示许多丢弃的数据包。
对于初学者,我建议您执行以下操作:
获取您的网络 IP 寻址方案的信息。询问您的网络管理员,或检查 ISP 提供的信息。或者,(如果您大胆的话)您可以通过运行来监听网络上的网络流量
tcpdump -ni eth0
,并尝试根据系统收到的数据包猜测您的内部网络地址。从现在开始,我们假设您的网络位于私有 IP 地址范围内,因为这种情况很常见。现在许多网络都预先配置在 192.168.1.0/24 空间范围内,这意味着 IP 地址从 192.168.1.1 开始到 192.168.1.254 结束
/etc/network/interfaces
使用网络管理器(即通过桌面)或正确配置为您的网络接口配置静态 IP 地址和网关。这在此处有完整描述Debian 维基。注意:您也可以手动配置它运行
ip addr add 192.168.1.15 dev eth0; ip route add default via 192.168.1.1
。但这会不是在系统重新启动后仍能存活。尝试通过向网关发送数据包来查看是否到达网关。这可以简单地完成,假设您的网关是 192.168.1.1,通过运行
ping -c 10 192.168.1.1
.如果该命令返回所有 10 项测试均正常,那么您可以看到您的网关。然后尝试访问一个众所周知的公共IP地址。例如 Google DNS 服务器,执行
ping -c 10 8.8.8.8
.如果这不起作用,请尝试运行跟踪测试来traceroute -n 8.8.8.8
查看数据包被丢弃的位置。最后,确保您可以通过运行
host www.google.com
或ping -c 10 www.google.com
如果第 5 步一切顺利,我建议您安装ifupdown-额外包裹。这将安装网络测试该工具可以执行上面列出的许多网络测试(以及更多),以诊断是否存在网络问题或配置错误。
一旦您可以使用静态 IP 地址进行连接。尝试返回您之前的配置,这可能是使用 DHCP 的动态 IP 配置。
去做这个:
重新配置接口以使用动态 IP 地址。
等待网络管理器完成其工作。您将在桌面环境中看到它是否失败(或未失败),但您也可以在系统日志中获取详细信息。更具体地说 /var/log/syslog 。过滤网络管理器日志会告诉您相当多的信息,只需运行
grep NetworkManager /var/log/syslog
并查看输出即可。运行
network-test
看看是否正确连接如果您未连接到网络,请尝试手动请求正在运行的 IP 地址
dhclient eth0
,并查看是否为您提供了 IP 地址。
根据上述测试,您应该更好地了解网络中出现故障的部分和正常运行的部分,并相应地配置您的系统。