【一句话解决方案】
检查一下每行ip地址前面,有没有多余的空格。
(另外建议末尾加一行空行,否则 /var/log/messages 里会疯狂提示)
【废话小故事】
两年前,量化计算小组迎来了新的同学。于是又买了几台服务器。我们跟网络中心的老师商量要开放外网ip。一方面需要装好多包,用yum安装很方便;另一方面,老师想从外网访问所内服务器。
不久我们就发现有好多外网攻击。于是就想只保留部分的ip访问。从网上查了可以用hosts.allow+deny的方式。但是怎么设置都不管用。于是就先把登陆失败的ip统计起来,放在计划里,隔一段时间自己加到deny列表中。
前几天登录,发现这么长时间过去了,每个月竟然还有一两百恶意登录。而列表已经非常长了。于是又按照网上的方法添加设置了 iptables,结果就没有再没有收到恶意访问了(此时两个hosts也没动)。两天前收到反馈,外网登录的时候进不去。搞了一中午,最后发现是对方访问我们的ip地址变了(他们只能看到内网ip,看不到自己对外的ip),最后添加了一套ip就解决了。在解决这个问题的过程中,意外看到了 val/log/message, 发现有很多关于 hosts.allow 的错误提示。返回去看发现每一个有问题的行都是ip地址行。我正在纳闷儿,突然发现ip地址前面的空格,心想难道是这个问题?果然,删掉了所有多余的空格以后,再更新服务,错误就不再提示了,而且这次即便没有 iptables 的拦截,也没再出现恶意访问的提示了。
不由得感叹,菜是原罪啊!