iptables 之 REJECT 与 DROP 对比
前言
在访问国外网站时,F12 看 console,下面两种错误很常见:
(1),Failed to load resource: net::ERR_CONNECTION_REFUSED
(2),Failed to load resource: net::ERR_CONNECTION_TIMEOUT
不考虑网络状况的情况下,一般是不同的 iptables 策略导致的。
本文简单分析不同 iptables 策略下不同的现象。
一,nc 监听端口
Linux 服务器配置防火墙策略时,对一些不希望对外开放的端口,一般会用 iptables 过滤掉。
例如服务器上使用 nc 命令监听如下端口(选择一个未使用的 5568 端口作为对比):
nc -l 4444 nc -l 5555 nc -l 5566 # 未使用的 5568 端口作为参照
然后用 iptables 过滤掉这些端口:
iptables -A INPUT -p tcp -m tcp --dport 4444 -j DROP iptables -A INPUT -p tcp -m tcp --dport 5555 -j REJECT --reject-with icmp-port-unreachable iptables -A INPUT -p tcp -m tcp --dport 5566 -j REJECT --reject-with tcp-reset # 未被使用的 5568 端口作为参照
二,nmap 扫描端口
使用 nmap 分别扫描上面的 4 个端口,结果如下所示:
- 扫描 4444 端口(DROP),并使用 time 命令查看耗时,time nmap -p4444 127.0.0.1
端口扫描结果 filtered, 耗时 2.2 秒 - 扫描 5555 端口(REJECT unreachable),并使用 time 命令查看耗时,time nmap -p5555 127.0.0.1
端口扫描结果 filtered, 耗时 0.2 秒 - 扫描 5566 端口(REJECT tcp-reset),并使用 time 命令查看耗时,time nmap -p5566 127.0.0.1
端口扫描结果 closed, 耗时 0.2 秒 - 扫描 5568 端口,并使用 time 命令查看耗时,time nmap -p5568 127.0.0.1
端口扫描结果 closed, 耗时 0.2 秒
三,tcpdump 抓包分析
使用下面命令发起 TCP 连接请求(nc 或者 telnet):
nc 127.0.0.1 4444 nc 127.0.0.1 5555 nc 127.0.0.1 5566 nc 127.0.0.1 5568
tcpdump 抓包结果如下:
- tcpdump -i lo port 4444
过滤策略为 DROP,会不断重试发送 SYN 直到超时,占用了带宽资源 - tcpdump -i lo port 5555
过滤策略为 reject with icmp-port-unreachable 的,发两次就停止 - tcpdump -i lo port 5566
过滤策略为 reject with tcp_reset,发出 SYN 包,收到 reset - tcpdump -i lo port 5568
端口未使用的,发出 SYN 包,收到 reset
四,结论
REJECT –reject-with tcp-reset 比 DROP 好,干脆利落,节约时间,节约带宽。
相关推荐
wh0 2020-07-27
furongwei 2019-12-23
huangzonggui 2020-06-08
清水寺小僧 2020-05-15
LychieFan 2020-04-14
colin00 2020-04-14
风语者 2020-01-17
jszy 2019-12-29
sunln00 2019-12-20
sunln00 2019-12-18
YFCEMBEDD 2019-11-09
zhqagp 2015-07-11
kyssfanhui 2019-11-08
付春杰Blog 2019-10-30
过儿古墓 2011-01-05
TuxedoLinux 2009-04-29
kvikon 2019-08-15
生活随笔 2018-07-27