Duke Yin's Technology database

Linux主机局域网DHCP错误导致失联

今天碰到一个很奇怪的问题,有一台Debian服务器已经稳定运行了大半年,但是今天突然在局域网失联了,不论是SSH,还是web,都连不上,甚至在路由器交换机上都看不到这个主机绑定的IP地址。

后来多方研究,发现是DHCP导致的,服务器发送DHCP请求,但是不知道什么原因路由器处理失败,没有给回应,所以服务器就丢IP,而且重启以后依然存在这个问题,大概率是路由器也有问题,但是目前还没有排查到。

Mar 07 22:04:14 dell dhclient[3665]: Listening on LPF/enp1s0/b0:7b:25:44:b1:16
Mar 07 22:04:14 dell ifdown[3665]: Listening on LPF/enp1s0/b0:7b:25:44:b1:16
Mar 07 22:04:14 dell ifdown[3665]: Sending on   LPF/enp1s0/b0:7b:25:44:b1:16
Mar 07 22:04:14 dell ifdown[3665]: Sending on   Socket/fallback
Mar 07 22:04:14 dell dhclient[3665]: Sending on   LPF/enp1s0/b0:7b:25:44:b1:16
Mar 07 22:04:14 dell dhclient[3665]: Sending on   Socket/fallback
Mar 07 22:04:14 dell dhclient[3665]: DHCPRELEASE of 192.168.2.6 on enp1s0 to 192.168.2.1 port 67
Mar 07 22:04:14 dell ifdown[3665]: DHCPRELEASE of 192.168.2.6 on enp1s0 to 192.168.2.1 port 67
Mar 07 22:04:14 dell ifdown[3665]: send_packet: Network is unreachable
Mar 07 22:04:14 dell ifdown[3665]: send_packet: please consult README file regarding broadcast address.
Mar 07 22:04:14 dell ifdown[3665]: dhclient.c:3124: Failed to send 300 byte long packet over fallback interface.
Mar 07 22:04:14 dell dhclient[3665]: send_packet: Network is unreachable
Mar 07 22:04:14 dell dhclient[3665]: send_packet: please consult README file regarding broadcast address.
Mar 07 22:04:14 dell dhclient[3665]: dhclient.c:3124: Failed to send 300 byte long packet over fallback interface.
Mar 07 22:04:14 dell systemd[1]: networking.service: Deactivated successfully.
Mar 07 22:04:14 dell systemd[1]: Stopped networking.service - Raise network interfaces.

解决方法是直接在服务器上绑定局域网IP地址,不再依赖DHCP服务。

于是编辑/etc/network/interfaces,默认的内容是这样:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp1s0
iface enp1s0 inet dhcp
iface enp1s0 inet6 auto

修改为(注意192.168.2.6是主机IP,192.168.2.1是主路由IP,要根据自己的情况来,不能直接抄):

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*

# Loopback
auto lo
iface lo inet loopback

# Main interface enp1s0
auto enp1s0

# IPv4 static
iface enp1s0 inet static
    address 192.168.2.6
    netmask 255.255.255.0
    gateway 192.168.2.1
    dns-nameservers 192.168.2.1

# IPv6 dynamic
iface enp1s0 inet6 auto
    # allow RA
    post-up sysctl -w net.ipv6.conf.enp1s0.accept_ra=2

保存后可以先用命令检查下网络配置是否正确:

systemctl status networking.service

如果没有错误,执行命令重启网络服务:

sudo ifdown enp1s0 && sudo ifup enp1s0

如果运气好的话,SSH没有断联,说明都OK了

如果SSH断联了的话,就要直接上服务器去改了。

# #

发布评论

评论

标注 * 的为必填项。