当前位置: 首页 > news >正文

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 策略下不同的现象。

Netcat 监听端口

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 个端口,结果如下所示:

  1. 扫描 4444 端口(DROP),并使用 time 命令查看耗时,time nmap -p4444 127.0.0.1
    端口扫描结果 filtered, 耗时 2.2 秒
    nmap 扫描 4444 端口
  2. 扫描 5555 端口(REJECT unreachable),并使用 time 命令查看耗时,time nmap -p5555 127.0.0.1
    端口扫描结果 filtered, 耗时 0.2 秒
    nmap 扫描 5555 端口
  3. 扫描 5566 端口(REJECT tcp-reset),并使用 time 命令查看耗时,time nmap -p5566 127.0.0.1
    端口扫描结果 closed, 耗时 0.2 秒
    nmap 扫描 5566 端口
  4. 扫描 5568 端口,并使用 time 命令查看耗时,time nmap -p5568 127.0.0.1
    端口扫描结果 closed, 耗时 0.2 秒
    nmap 扫描 5568 端口

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 抓包结果如下:

  1. tcpdump -i lo port 4444
    过滤策略为 DROP,会不断重试发送 SYN 直到超时,占用了带宽资源

  2. tcpdump -i lo port 5555
    过滤策略为 reject with icmp-port-unreachable 的,发两次就停止

  3. tcpdump -i lo port 5566
    过滤策略为 reject with tcp_reset,发出 SYN 包,收到 reset

  4. tcpdump -i lo port 5568
    端口未使用的,发出 SYN 包,收到 reset

结论

-j REJECT –reject-with tcp-reset-j DROP好,干脆利落,节约时间,节约带宽。

版权

本文转自 iptables 之 REJECT 与 DROP 对比 - SegmentFault 思否 稍加排版编辑

相关文章:

  • Nginx捕获并自定义proxy_pass返回的错误
  • 后台传JSON,前台动态生成一个下拉框
  • PostgreSQL psql工具使用方法
  • 在后台把DataTable组织成JSON,送到前台动态填充UltraWebGrid
  • Win10以后的版本不支持文件拖动打开的解决办法
  • 阴阳历转换
  • EmEditor正则匹配中文
  • VC阴阳历转化与二十四节气
  • EmEditor 正则表达式语法
  • 星期、干支、二十八宿计算公式
  • Tmux使用教程
  • 悄悄地我走了 著名的非自然死亡
  • 【ROS-Navigation】Movebase主体源码解读
  • 【ROS-Navigation】NavFn全局规划源码解读-1
  • 【ROS-Navigation】NavFn全局规划源码解读-2
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • docker-consul
  • flutter的key在widget list的作用以及必要性
  • java中具有继承关系的类及其对象初始化顺序
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • SQLServer之索引简介
  • TCP拥塞控制
  • Vue ES6 Jade Scss Webpack Gulp
  • Vue 动态创建 component
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 听说你叫Java(二)–Servlet请求
  • 用element的upload组件实现多图片上传和压缩
  • Java性能优化之JVM GC(垃圾回收机制)
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (+4)2.2UML建模图
  • (007)XHTML文档之标题——h1~h6
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (70min)字节暑假实习二面(已挂)
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (笔试题)分解质因式
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转)winform之ListView
  • *p++,*(p++),*++p,(*p)++区别?
  • .Mobi域名介绍
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .Net中的集合
  • /var/spool/postfix/maildrop 下有大量文件
  • @angular/cli项目构建--Dynamic.Form
  • [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现
  • [⑧ADRV902x]: Digital Pre-Distortion (DPD)学习笔记
  • [AIGC] CompletableFuture的重要方法有哪些?
  • [C++]:for循环for(int num : nums)
  • [excel与dict] python 读取excel内容并放入字典、将字典内容写入 excel文件