今天碰到一个很奇怪的问题,有一台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断联了的话,就要直接上服务器去改了。
#debian #DHCP