如何解决 Debian 上的网络问题

如何解决 Debian 上的网络问题

今天我重新启动了我的linux盒子,重新启动后,我的linux盒子没有网络连接。

到目前为止,这是我尝试过的:

  1. 使用可在我的另一台计算机上使用的不同以太网电缆。不用找了。

  2. 在 NetworkManager (KDE) 中删除并重新创建有线网络连接。没用。我仍然在屏幕右下角收到系统通知:

    Network Interface
    Connection New Wired Connection failed
    
  3. > sudo /etc/init.d/networking restart貌似重启成功了,但是还是没有网络。
  4. 检查过/etc/network/interfaces。其中唯一的代码就是互联网上所说的:

    auto lo
    
    iface lo inet loopback
    
  5. 通过尝试 ping 谷歌的公共 DNS 服务器之一来确保这不仅仅是 DNS 问题

    $ ping 8.8.8.8
    connect: Network is unreachable
    

    看来不是DNS问题。

  6. 新的修复路由。我使用该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
    
  7. 新的看看我是否有 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 信息来看,您的网卡似乎正在接收以太网数据包,但没有发送任何数据包。奇怪的是,它还显示许多丢弃的数据包。

对于初学者,我建议您执行以下操作:

  1. 获取您的网络 IP 寻址方案的信息。询问您的网络管理员,或检查 ISP 提供的信息。或者,(如果您大胆的话)您可以通过运行来监听网络上的网络流量 tcpdump -ni eth0,并尝试根据系统收到的数据包猜测您的内部网络地址。

    从现在开始,我们假设您的网络位于私有 IP 地址范围内,因为这种情况很常见。现在许多网络都预先配置在 192.168.1.0/24 空间范围内,这意味着 IP 地址从 192.168.1.1 开始到 192.168.1.254 结束

  2. /etc/network/interfaces使用网络管理器(即通过桌面)或正确配置为您的网络接口配置静态 IP 地址和网关。这在此处有完整描述Debian 维基

    注意:您也可以手动配置它运行ip addr add 192.168.1.15 dev eth0; ip route add default via 192.168.1.1。但这会不是在系统重新启动后仍能存活。

  3. 尝试通过向网关发送数据包来查看是否到达网关。这可以简单地完成,假设您的网关是 192.168.1.1,通过运行ping -c 10 192.168.1.1.如果该命令返回所有 10 项测试均正常,那么您可以看到您的网关。

  4. 然后尝试访问一个众所周知的公共IP地址。例如 Google DNS 服务器,执行ping -c 10 8.8.8.8.如果这不起作用,请尝试运行跟踪测试来traceroute -n 8.8.8.8查看数据包被丢弃的位置。

  5. 最后,确保您可以通过运行host www.google.comping -c 10 www.google.com

如果第 5 步一切顺利,我建议您安装ifupdown-额外包裹。这将安装网络测试该工具可以执行上面列出的许多网络测试(以及更多),以诊断是否存在网络问题或配置错误。

一旦您可以使用静态 IP 地址进行连接。尝试返回您之前的配置,这可能是使用 DHCP 的动态 IP 配置。

去做这个:

  1. 重新配置接口以使用动态 IP 地址。

  2. 等待网络管理器完成其工作。您将在桌面环境中看到它是否失败(或未失败),但您也可以在系统日志中获取详细信息。更具体地说 /var/log/syslog 。过滤网络管理器日志会告诉您相当多的信息,只需运行grep NetworkManager /var/log/syslog并查看输出即可。

  3. 运行network-test看看是否正确连接

  4. 如果您未连接到网络,请尝试手动请求正在运行的 IP 地址dhclient eth0,并查看是否为您提供了 IP 地址。

根据上述测试,您应该更好地了解网络中出现故障的部分和正常运行的部分,并相应地配置您的系统。

相关内容