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

iptables相关知识笔记

1. POSTROUTINGPREROUTING 的区别详解

特性PREROUTINGPOSTROUTING
处理阶段数据包进入系统后,路由决策数据包离开系统前,路由决策
主要用途DNAT(目的地址转换)SNAT(源地址转换)
修改对象修改数据包的目的地址/端口修改数据包的源地址/端口
可见范围影响所有进入的流量(本机+转发)影响所有离开的流量(本机+转发)
典型操作端口转发、负载均衡内网共享上网、隐藏内网IP
处理位置网卡入口之后,路由选择之前路由选择之后,网卡出口之前

工作流程示意图

[ 网卡接收 ]↓
PREROUTING 链  ←─ DNAT操作(修改目的地址)↓
[ 路由决策 ]  → 发给本机? → INPUT链 → 本地进程↓转发? → FORWARD链 → POSTROUTING链 ←─ SNAT操作(修改源地址)↓
[ 网卡发送 ]

2. -j MASQUERADE 详解

作用
动态源地址转换(SNAT的特殊形式),自动使用出口网卡的当前IP作为源地址。

特点

  • 专为动态IP设计(如PPPoE拨号、DHCP获取的IP)
  • 自动检测出口IP变化,无需手动更新规则
  • SNAT更简单但性能略低(需实时查询网卡IP)

使用场景
家庭路由器/NAT网关,出口IP不固定的环境

示例

# 允许内网(192.168.1.0/24)通过ppp0接口上网
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE

等价SNAT写法(静态IP时):

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 203.0.113.1

3. -A PREROUTING 含义解析

结构
iptables -t nat -A PREROUTING [匹配条件] -j [动作]

  • -t nat:指定nat表
  • -A追加规则(Append)到链的末尾
  • PREROUTING:指定操作的目标链
  • -j:指定动作(如DNAT、ACCEPT等)

对比其他操作

命令含义示例
-A追加规则到链尾-A PREROUTING
-I插入规则到链头-I PREROUTING 1(位置1)
-D删除指定规则-D PREROUTING 3(第3条)

典型用例

# 将公网IP 80端口的访问转发到内网服务器
iptables -t nat -A PREROUTING -d 203.0.113.1 -p tcp --dport 80 \-j DNAT --to-destination 192.168.1.100:8080

4. 连接跟踪(Conntrack)深度解析

作用
内核级连接状态跟踪系统,为NAT/防火墙提供会话上下文

核心功能

  1. 记录连接状态(NEW, ESTABLISHED, RELATED等)
  2. 自动处理NAT双向转换
  3. 支持协议识别(FTP、SIP等特殊协议)

管理工具

# 查看活动连接
conntrack -L# 实时监控连接事件
conntrack -E# 查看连接详情(带时间戳)
conntrack -L -o extended# 删除特定连接
conntrack -D -s 192.168.1.100

输出示例

tcp      6 431999 ESTABLISHED src=192.168.1.100 dst=93.184.216.34 sport=5432 dport=80 [ASSURED] mark=0 use=1

关键字段

  • tcp:协议类型
  • ESTABLISHED:连接状态
  • src/dst:原始源/目的地址
  • sport/dport:原始源/目的端口
  • [ASSURED]:双向流量已确认

状态类型

状态含义
NEW新连接请求
ESTABLISHED已建立的双向通信
RELATED关联连接(如FTP数据通道)
INVALID无效数据包
UNTRACKED被豁免跟踪的连接

工作原理

  1. 首包触发NEW状态记录
  2. 响应包转为ESTABLISHED状态
  3. NAT转换时自动创建反向映射
  4. 超时后自动清除记录(可配置)

配置路径

# 超时设置(秒)
/proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established
/proc/sys/net/netfilter/nf_conntrack_udp_timeout# 最大连接数
/proc/sys/net/netfilter/nf_conntrack_max

调试技巧

# 跟踪特定连接的生命周期
conntrack -E -p tcp --dport 80# 统计连接状态
conntrack -L -o extended | awk '{print $4}' | sort | uniq -c

提示:NAT功能高度依赖conntrack,若遇到端口转发失败问题,首先检查conntrack -L是否有对应条目生成。

http://www.lryc.cn/news/612460.html

相关文章:

  • AI+物理融合新范式:物理信息神经网络(PINN)的深度研究报告
  • Flash Attention与SDPA
  • 深度探索:非静态内部类不能定义 static 成员属性和方法 及 静态内部类的必要性
  • AI Infra与LLM的联系与差异
  • ICCV 2025 | 视频生成迈入“多段一致”新时代!TokensGen用“压缩Token”玩转长视频生成
  • 【java】DDD架构同普通微服务项目的区别
  • 低代码系统的技术深度:超越“可视化操作”的架构与实现挑战
  • MCU编程中的临界资源及临界区
  • 【51单片机2个独立按键2个独立数码管静态显示内容自定】2022-10-22
  • 从 0 到 1 创建 InfluxDB 3 表:标签、字段、命名规范一篇讲透
  • 无人机航拍数据集|第4期 无人机太阳光伏板红外目标检测YOLO数据集10945张yolov11/yolov8/yolov5可训练
  • 无人机图传的得力助手:5G 便携式多卡高清视频融合终端的协同应用
  • ⭐CVPR 文本到 3D 场景生成新突破:Prometheus 框架解析
  • 小实验--继电器定时开闭
  • Pytest项目_day04(Python做接口请求)
  • vector使用模拟实现
  • Linux 学习 之 killer 问题
  • Unity笔记(三)——父子关系、坐标转换、Input、屏幕
  • STM32学习笔记3-GPIO输入部分
  • 【模电笔记】—— 直流稳压电源——稳压电路
  • RK3568笔记九十六:多路实时目标检测
  • Python应用指南:获取风闻评论数据并解读其背后的情感倾向(二)
  • 【补题】CodeTON Round 1 (Div. 1 + Div. 2, Rated, Prizes!) D. K-good
  • 基于单片机GD32E103的HID按键问题分析
  • hive专题面试总结2
  • 一、Envoy基础概念学习
  • 8.6笔记
  • 《嵌入式数据结构笔记(四):栈结构与队结构链表》
  • Chrontel【7322BMF】CH7322B HDMI Consumer Electronics Control (CEC) devices
  • GaussDB 数据库架构师修炼(六)-3 集群工具管理-主备倒换