一般为了主机安全等因素,我们会禁止主机被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通的放在后面