当前位置: 首页>>技术教程>>正文


linux – Ubuntu中缺少eth0以太网接口-无法连接到路由器

, , ,

问题描述

我无法通过直接连接到路由器的以太网电缆使Ubuntu 10.04计算机(Sony Vaio VGN-SR490)连接到Internet。

我可以使用Windows机器使用相同的电缆连接到Internet,因此Linux的配置方式存在问题。

我如何弄清楚问题所在并解决呢?

这是我在Linux上的网络设置:

$ ifconfig

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

vmnet1    Link encap:Ethernet  HWaddr 00:50:56:c0:00:01  
          inet addr:192.168.79.1  Bcast:192.168.79.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:fec0:1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

vmnet8    Link encap:Ethernet  HWaddr 00:50:56:c0:00:08  
          inet addr:192.168.192.1  Bcast:192.168.192.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:fec0:8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

这是我在Windows(Vista)上的网络设置:

Ethernet adapter Local Area Connection:

   Connection-specific DNS Suffix  . : [removed by me].
   Link-local IPv6 Address . . . . . : [removed by me]
   IPv4 Address. . . . . . . . . . . : 192.168.1.103
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.1.1

我从这些结果中检查了我的IP地址。如果需要这些信息,请告诉我。

这是/etc/network/interfaces的内容:

auto lo
iface lo inet loopback

添加auto eth0之后,这是最新结果:

$ sudo ifup eth0

Internet Systems Consortium DHCP Client V3.1.3
Copyright 2004-2009 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

SIOCSIFADDR: No such device
eth0: ERROR while getting interface flags: No such device
eth0: ERROR while getting interface flags: No such device
Bind socket to interface: No such device
Failed to bring up eth0.

这是运行modprobe的结果:

$ sudo modprobe msk

FATAL: Module msk not found.

$ dmesg | grep eth

应某些对此问题发表评论的人的要求,我从计算机上删除了Linux,并安装了Windows XP。我安装了一个运行程序,以查找有关网卡的详细信息。这是该信息:

Network
    You are not connected to the internet
        Computer Name
            NetBIOS Name    JOE-LAPTOP
            DNS Name    joe-laptop
            Domain Name joe-laptop
        Remote Desktop
                Console
                    State   Active
                    Domain  joe-laptop
                RDP-Tcp
                    State   Listen
        WinInet Info
            An internal error occurred.
        Wi-Fi Info
            Wi-Fi not enabled
        WinHTTPInfo
            WinHTTPSessionProxyType No proxy
            Session Proxy
            Session Proxy Bypass
            Connect Retries 5
            Connect Timeout 60000
            HTTP Version    HTTP 1.1
            Max Connects Per 1.0 Servers    INFINITE
            Max Connects Per Servers    INFINITE
            Max HTTP automatic redirects    10
            Max HTTP status continue    10
            Send Timeout    30000
            IEProxy Auto Detect No
            IEProxy Auto Config
            IEProxy
            IEProxy Bypass
            Default Proxy Config Access Type    No proxy
            Default Config Proxy
            Default Config Proxy Bypass
        Adapters List
        Network Shares
            No network shares

看起来网络适配器列表为空。我现在将同时安装Windows XP和Ubuntu Linux dual-boot。即使通过Windows,我仍然无法访问Internet。我想知道这可能是计算机的硬件问题还是路由器本身的问题。其他计算机可以连接到同一路由器,并且工作正常。 (毕竟这就是我发布此信息的方式!)

最佳回答

首先,您的以太网不受Ubuntu的管理。尝试ifconfig -a而不是ifconfig,这样您就可以查看所有网络设备(受管或不受管)。如果确实在ifconfig -a列表中看到ethX,则该解决方案应该很简单,并且您似乎已经获得了一半。以下需要进入您的/etc/network/interfaces文件:

auto ethX
iface ethX inet dhcp

接口的第一行”activates”管理,第二行将其设置为DHCP和IP。

但是,如果在执行ifconfig -a时甚至看不到任何ethX接口,那是驱动程序问题(Ubuntu甚至看不到该接口)。要解决此问题,请从Windows的设备管理器中检查以太网卡的PCI供应商ID和设备ID,您可以使用cross-reference here查看是否可以找到该驱动程序(供应商ID是制造商,设备ID是以太网卡的基本模型)。实现此目的的另一种in-linux方法是通过lspci

在Windows 7中,通过设备管理器获取供应商/设备ID-打开“网络接口”节点,双击您的网卡,单击’detail’,然后从drop-down列表中选择”Hardware IDs”。供应商ID是VEN_前缀之后的4个十六进制数字,而设备ID是紧随该供应商之后&DEV_后面的4个十六进制数字。

次佳回答

我在评论中没有看到任何暗示您研究udev及其应安装eth0的规则的内容。在我的系统上,在/etc/udev/rules.d/75-network-devices.rules中,我有以下内容;

# Local network rules to name your network cards.
#
# These rules were generated by nethelper.sh, but you can
# customize them.
#
# You may edit them as needed.
# (If, for example, your machine has more than one network
# card and you need to be sure they will always be given
# the same name, like eth0, based on the MAC address)
#
# If you delete this file, /lib/udev/nethelper.sh will try to
# generate it again the next time udev is started.

KERNEL=="eth?", ATTR{address}=="original has my MAC address here", NAME="eth0"

另外,请确保已运行udevd。这就是在基于Slackware的系统上创建ethx的原因。

第三种回答

我有一个类似的问题。通过运行ifconfig -a,我确定计算机上仅有的网络设备是p4p1lo。没有eth0

因此,我编辑了/etc/network/interfaces,将所有eth0实例替换为p4p1。该文件的内容现在是:

auto lo
iface lo inet loopback

auto p4p1
iface p4p1 inet dhcp

重新启动后,网络运行正常。

如果有关系,我正在使用Ubuntu 12.04.5 Server版本。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7830.html,未经允许,请勿转载。