我有一个 Linux VPS,运行良好,已经 5 个月了,直到几天前才恢复正常。我每周都会收到有关我服务器的报告,在 2016 年 3 月 1 日,我使用了 4GB 空间,还有 16GB 可用空间(总共 20GB)。昨天我收到一份报告说我使用了 20GB,还有 0GB 可用空间。
自 2015 年 12 月 24 日以来,我没有对我的 VPS 进行任何更改,因为我工作太忙了。
我的系统日志文件被大量垃圾邮件淹没:
Jan 13 08:41:08 web01 ifup[354]: /sbin/dhclient-script: 28: .: Can't open /usr/share/sendmail/dynamic
Jan 13 08:41:08 web01 dhclient: DHCPDECLINE on eth0 to 255.255.255.255 port 67
Jan 13 08:41:08 web01 dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
Jan 13 08:41:08 web01 ifup[354]: DHCPDECLINE on eth0 to 255.255.255.255 port 67
Jan 13 08:41:08 web01 ifup[354]: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
Jan 13 08:41:08 web01 dhclient: DHCPREQUEST on eth0 to 255.255.255.255 port 67
Jan 13 08:41:08 web01 dhclient: DHCPOFFER from 169.254.169.254
Jan 13 08:41:08 web01 ifup[354]: DHCPREQUEST on eth0 to 255.255.255.255 port 67
Jan 13 08:41:08 web01 ifup[354]: DHCPOFFER from 169.254.169.254
Jan 13 08:41:08 web01 dhclient: DHCPACK from 169.254.169.254
Jan 13 08:41:08 web01 ifup[354]: DHCPACK from 169.254.169.254
Jan 13 08:41:08 web01 ifup[354]: RTNETLINK answers: File exists
昨晚我清理了它,今天早上检查了一下,它有:1,084,162,664 行重复,大约每秒 4 次。
我的 daemon.log 文件被完全相同的代码、相同的次数所淹没,因此两个文件的长度均为 10 亿行,到目前为止已使用了 9gb,并且还在慢慢增加。
我通过 SSH 连接到服务器时没有遇到任何问题,我的网站仍然运行良好,webmin 运行正常,因此不会断网。
我已经与我的 VPS 客户支持人员谈过了他们声称:
“感谢您的询问。看起来是您的 VPS 发送了 DHCPDECLINE,而不是我们的 DHCP 服务器。”
我已经 3 周没有做过任何更改了,最近 2 周内唯一做的更改就是由于我的节点出现错误,VPS 主机重新启动了我的 VPS。
我会运行一些命令来为你们获取一些统计数据或配置,但我不知道要运行什么:(我是个完全的菜鸟。
知道是什么原因造成的吗?谷歌搜索毫无帮助 :(
答案1
对于任何通过谷歌搜索来到此的未来读者:
我遇到了同样的问题。这似乎是由脚本引起的/etc/dhcp/dhclient-exit-hooks.d/sendmail
,该脚本尝试访问/usr/share/sendmail/dynamic
可能不存在的文件,从而导致错误,并且显然会导致 dhclient 无限重启循环。
就我而言,删除 sendmail 包后,apt 似乎忽略了清理/etc/dhcp/dhclient-exit-hooks.d/sendmail
脚本。
因此,rm /etc/dhcp/dhclient-exit-hooks.d/sendmail
或者mkdir -p /usr/share/sendmail && touch /usr/share/sendmail/dynamic
都可以为您解决问题(取决于您是否要保留 sendmail)。
编辑:致谢卢乔纳乔为了找到原因,只是想补充一些说明
答案2
在 RaspberryPi 上遇到了同样的问题。花了好几个小时才弄明白。在我的日志中发现了一些花絮,表明 sendmail 在某种程度上与问题有关,然后终于找到了这篇文章。
我最终执行了“sudo apt-get purge sendmail*”并最终解决了这个问题。
答案3
如果解决方案是彻底清除 sendmail,则可能需要删除其他 sendmail 包,如下所示:
$ sudo apt-get purge sendmail sendmail-base sendmail-bin
或者
$ sudo apt-get purge sendmail*
然后您可以尝试再次打开您的界面:
$ sudo ifup interface-name
sendmail 相关的错误消息应该已经消失。
如果仍然需要,sendmail
您可以通过以下方式重新安装:
$ sudo apt-get install sendmail sendmail-base sendmail-bin
$ sudo sendmailconfig
$ # you can say yes to all the questions and restart your http server
$ sudo service apache2 restart