一般为了主机安全等因素,我们会禁止主机被ping通测试,这种禁止的方法比较多,以下几种方法是自己实践的过程中总结的经验,在此记录以作学习笔记。
1、在服务器安全方面考虑我们会禁止一些默认的端口,在filter表的input链中将默认规则设置为drop即可,然后将自己需要相关的端口以及服务开启即可。
iptables -t filter -P INPUT DROP #默认规则的设置 设置此规则时需要注意远程端口规则 [root@localhost ~]# iptables -L Chain INPUT (policy DROP) target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:mysql ACCEPT tcp -- anywhere anywhere tcp dpt:ssh 这时检查ping的命令 ping 192.168.31.84 PING 192.168.31.84 (192.168.31.84) 56(84) bytes of data. #结果是不通的 将默认规则改为开启或者开启icmp协议时,将能ping通。 1、开启icmp协议后即可ping通 iptables -t filter -I INPUT -p icmp -j ACCEPT ping 192.168.31.84 PING 192.168.31.84 (192.168.31.84) 56(84) bytes of data. 64 bytes from 192.168.31.84: icmp_seq=100 ttl=128 time=0.605 ms 64 bytes from 192.168.31.84: icmp_seq=101 ttl=128 time=0.736 ms 64 bytes from 192.168.31.84: icmp_seq=102 ttl=128 time=0.754 ms 64 bytes from 192.168.31.84: icmp_seq=103 ttl=128 time=0.696 ms
以上设置默认规则为拒绝的方式,不仅不能让别人ping通,同时自己也不能ping通其他的主机,这种方式我们用的比较少,我们可以采取以下的方式,
echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf [root@localhost ~]# tail -1 /etc/sysctl.conf net.ipv4.icmp_echo_ignore_all=1 [root@localhost ~]# sysctl -p 这时我们测试时,会发现我们能ping通其他主机,但是其他主机不能ping通,
下面的方式是我们根据防火墙规则,以及根据防火墙规则优先级别将允许ping通的放在前面,不允许ping通的放在后面