SNAT和DNAT在iptables中

四表五链

image.png
  • 路由决策的规则(可通过 ip route show 查看)
路由表根据数据包的 目标 IP 进行匹配(与路由条目中的 dst 字段对比)

最长前缀匹配: 选择子网掩码最长的路由条目(如 192.168.1.0/24 优先于 192.168.0.0/16)

路由决策的输出: 确定出口网卡(oif):如 eth0、eth1。
确定下一跳网关(via):如 192.168.1.1。
影响 NAT 行为:出口网卡决定了 SNAT 的 IP(如从 eth0 发出时,SNAT 会使用 eth0 的 IP)

报文流向:

  • 流入本机:PREROUTING --> INPUT-->用户空间进程
  • 流出本机:用户空间进程-->OUTPUT--> POSTROUTING
  • 转发:PREROUTING --> FORWARD --> POSTROUTING

  • 影响路由决策
  • 影响dnat
  • 影响conntrack的一致性

完整流程与 NAT 的关系

网卡入 
→ PREROUTING (raw → mangle → nat[DNT])   # DNAT 修改目标 IP
→ 路由决策(匹配目标 IP)                # 根据 DNAT 后的 IP 选择出口
→ FORWARD (mangle → filter)              # 过滤转发包
→ POSTROUTING (mangle → nat[SNAT])       # SNAT 修改源 IP
→ 网卡出

- 抓包是在网卡处的
- 修改IP是在内核处理的
为什么 NAT 要分阶段修改
NAT 类型    阶段       依赖条件                    目的
DNAT    PREROUTING  需在路由决策前修改目标 IP  确保路由能正确转发到新目标(如将公网 IP 映射到内网服务器)。
SNAT    POSTROUTING 需在路由决策后确定出口网卡   确保源 IP 与出口网卡一致(如内网 IP 改为公网 IP 后从 eth0 发出)。
总结
  1. 路由决策规则:
    主要匹配 目标 IP,策略路由可额外匹配源 IP。
    出口网卡决定 SNAT 的 IP。

  2. DNAT 在 PREROUTING:
    先修改目标 IP,再路由。

  3. SNAT 在 POSTROUTING:
    先路由确定出口网卡,再修改源 IP。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • DNAT(Destination Network Address Translation,目的地址转换) 通常被叫...
    放纵不基阅读 5,317评论 0 5
  • 1.安全技术 (1)入侵检测与管理系统(Intrusion Detection Systems): 特点是不阻断任...
    尛尛大尹阅读 2,519评论 0 2
  • Firewall 工作于网络(网络防火墙)或主机(主机防火墙)的边缘(通信报文的进出口),对于进出本网络或主机的报...
    SRE1阅读 1,367评论 0 0
  • iptables俗称防火墙,或许我们已经不在陌生,但是作为openstack基础,这里还是对其做一些补充,了解更多...
    ximitc阅读 1,816评论 0 8
  • (本文源于转载或摘抄整理) 一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的...
    JackyTsuuuy阅读 8,999评论 1 6