网络eth0 DHCP,静态IP和自动协商问题

背景

我正在运行14.04上的Ubuntu服务器,该服务器目前是最新的。 我只有一个网络设备连接到它。 当我使用以太网线并将其从墙上连接到我的笔记本电脑(运行Windows 7)时,DHCP可以毫无问题地解决。

问题

当我将以太网线从墙上连接到我的服务器(运行Ubuntu)并打开服务器电源时,DHCP服务器不会为我的服务器分配IP地址。 但是,当我使用笔记本电脑的以太网连接通过我的Wifi连接连接从我的服务器到笔记本电脑的电源线时,服务器将通过笔记本电脑从DHCP获取IP地址。 最后,在我从笔记本电脑连接获得IP后,我使用以下命令,然后当从墙上连接到服务器的电源线时DHCP工作:

sudo dhclient -r sudo dhclient -v eth0 

下次我通过sudo shutdown -r now重新启动服务器时,服务器将无法再通过从墙上到服务器的电缆从DHCP获取IP。

请注意,当我在/etc/network/interfaces文件中分配静态地址时,网络将不会为其分配IP,并且接口将关闭。

有没有办法解决我在我的网络无法在服务器上电时发现DHCP服务器的问题?

如果您需要更多信息,请告诉我。

附加信息

dhclient连接到笔记本电脑之前

 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 (xid=0x********) DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 (xid=0x********) DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 6 (xid=0x********) ... No DHCPOFFERS received No working leases in persistent database - sleeping. 

dhclient与服务器连接到笔记本电脑

 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 (xid=0x*********) DHCPREQUEST of 192.168.137.233 on eth0 to 255.255.255.255 port 67 (xid=0x*********) DHCPOFFER of 192.168.137.233 from 192.168.137.1 DHCPACK of 192.168.137.233 from 192.168.137.1 bound to 192.168.137.233 -- renewal in 275 seconds. ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:22:64:23:7c:da inet addr:192.168.137.233 Bcast:192.168.137.255 Mask:255.255.255.0 inet6 addr: fe80::222:64ff:fe23:7cda/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:28265 errors:0 dropped:0 overruns:0 frame:0 TX packets:2781 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4655957 (4.6 MB) TX bytes:415144 (415.1 KB) 

笔记本电脑DHCP和电线从墙到服务器重新连接后的dhclient

 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 (xid=0x********) DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 8 (xid=0x********) DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 15 (xid=0x********) DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 11 (xid=0x********) DHCPREQUEST of 192.168.1.126 on eth0 to 255.255.255.255 port 67 (xid=0x*******) DHCPOFFER of 192.168.1.126 from 192.168.1.254 DHCPACK of 192.168.1.126 from 192.168.1.154 bound to 192.168.1.126 -- renewal in 41950 second. ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:22:64:23:7c:da inet addr:192.168.1.126 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::222:64ff:fe23:7cda/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:33438 errors:0 dropped:0 overruns:0 frame:0 TX packets:3391 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:5245215 (5.2 MB) TX bytes:550462 (550.4 KB) 

网络接口(lshw)

 sudo lshw -class network *-network description: Ethernet interface product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller vendor: Realtek Semiconductor Co., Ltd. physical id: 0 bus info: pci@0000:02:00.0 logical name: eth0 version: 02 serial: 00:22:64:23:7c:da size: 100Mbit/s capacity: 1Gbit/s width: 64 bits clock: 33MHz capabilities: pm msi pciexpress msix vpd bus_master cap_list rom ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=full ip=192.168.1.82 latency=0 link=yes multicast=yes port=MII speed=100Mbit/s resources: irq:42 ioport:e800(size=256) memory:febff000-febfffff memory:fdff0000-fdffffff memory:febc0000-febdffff 

更新:

我的/etc/network/interfaces文件就是这样的

 auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp 

我找到了一个似乎有效的临时修复,但如果我们能解决这个问题,我不希望它成为我的解决方案。 我这样更改了interfaces文件

 auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp pre-up ifconfig $IFACE up pre-up mii-tool -R 

这将(我相信)告诉接口重置,由于某种原因,它允许DHCP像它应该解决。 就像我说的那样,除了这个之外必须有一个实际的解决方案。

解:

在Fabbys的回答的帮助下,我能够提出一个更可行的解决方案,我可以忍受。

打开/ etc / network / interfaces并配置以太网接口以下方法之一:

DHCP

 auto eth0 iface eth0 inet dhcp pre-up ifconfig $IFACE up pre-up ethtool -s $IFACE speed 100 duplex full autoneg off 

静态的

 auto eth0 iface eth0 inet static post-up ethtool -s $IFACE speed 100 duplex full autoneg off address xxxx #Internal IP netmask 255.255.255.0 gateway xxxy #Gateway IP dns-nameservers 8.8.8.8 #Google DNS 

我希望将来可以帮助别人。

根据聊天中的讨论, 关闭服务器上的自动协商并将网络速度修复到网络接口卡(NIC)可以承受的最高级别。

从10Mbps,半双工开始,向上工作到10Mbps FD,100Mbps HD,……直到问题开始。 然后往下走一步,然后以那个速度离开。

首先,安装ethtool (如果已安装,您将收到警告已安装最新版本)

 sudo apt-get install ethtool 

现在:

  1. 键入以下命令(并逐个测试)

     sudo ethtool --change eth0 speed xxx duplex yyy autoneg off 

    其中xxx = 1001000 ,yyy = halffull

    所以从10 half10 full100 half ……

  2. 执行ifconfig检查是否有IP地址。

  3. 返回1直到它停止工作并使用仍然有效的先前值

  4. 要使更改成为永久更改 ,请执行以下命令:

     sudo nano /etc/network/interfaces 

    并在pre-up部分输入:

     pre-up /usr/sbin/ethtool --change eth0 speed xxx duplex yyy autoneg off 

OH MAN FACEPALM (面对自己,因为我最初想到的是第二次,而不是第一次,因为我应该拥有它几乎总是最简单的事情,可以让你进入技术圈,嗯?)

(由于这很可能是问题所以移到顶部,但下面留下了其他内容以供参考)。

如果您使用相同的电线将服务器连接到笔记本电脑,因为您是服务器到墙上这可能是问题! (再一次,我更多的是因为我首先想到了这一点,只想到了第二个。如果这听起来怎么样,我并不是故意会遇到苛刻的事情)

你在这里使用2种不同类型的电线……

参考: https : //www.computercablestore.com/straight-through-crossover-and-rollover-wiring

首先是直通以太网电缆,用于交换机和路由器到客户端计算机

第二种是交叉电缆:这些用于机器到机器的连接,并且物理连接不同!

所以,如果你的服务器和笔记本电脑之间没有交换机或路由器之间的电缆工作(WiFi连接在这里根本不算什么),那么电缆必须是交叉的。

获取标准的直通电缆并从路由器连接到服务器,看看会发生什么。

根据我的经验,计算机问题归结为最简单的过度问题。 有些路由器和交换机是“智能的”,当您使用不正确的电缆(交叉)时可能会尝试进行内部调整,因此您仍然可以使用它来连接机器,但这绝不是可依赖的东西,更可能是问题。

呃实际上这听起来像路由器问题。 我比如说我有FiOS,在路由器中我可以看一下网络设置,我看到它将WiFi和有线网段单独连接到DHCP服务器的位置,所以如果有什么事情发生在那个设置上,我可能最终得到你所拥有的在这里你不能再通过线路获得IP,因为它没有连接到运行DHCP服务器的“Home”网络,但你可以通过WiFi,因为它仍然连接到路由器内的“家庭”网络。 您可以尝试查看路由器的高级设置,或者更多情况下,如果您有回形针,并且有一个重置引脚按钮,您可以查看如何恢复出厂设置(通常在重置按钮中按住回形针30秒) )。

此外,您的笔记本电脑将通过WiFi分配IP。 如果你有一台机器,它有一个有线和无线适配器,你有WiFi连接和插入电线即使失败你的机器仍然可以上网冲浪,不会导致它通过WiFi路由所有请求而忽略了有线端口。

您的“修复”有效,因为您最终通过笔记本电脑Wifi适配器请求IP。

从这里阅读更多内容我还注意到它可能是您在路由器上启用的MAC安全function…这意味着除非您的NIC的MAC地址在允许的客户端列表中,否则您的路由器将拒绝为其提供地址。 您可以“通过首先浏览列表中的笔记本电脑来解决这个问题,当您连接回墙并再次发出请求时,可以跳过MAC检查,因为它看到它已经给了您一个地址并且至少暂时认为您的服务器是受信任的客户端。我还会检查您在路由器中启用的任何MAC安全性。

我不是说你的路由器DHCP服务器不可能有一些奇怪的问题,但这将是SOO SUPER RARE我不能告诉你多么罕见。