网络地址转换会在数据包经过转换设备时重写地址字段,而且通常也会重写传输端口。它广泛用于通过较少的外部可路由地址连接采用私有地址的 IPv4 网络。
子网划分 · 第 6 课
NAT
学习源地址、目标地址和端口转换如何修改 IPv4 流量与连接状态。
源地址转换
源 NAT 会在数据包离开网络时替换其源地址。多对一部署还会转换源端口,使多个内部流可以共享一个外部地址。这种考虑端口的形式通常称为 NAPT、PAT;当外部地址可能变化时,也常称为伪装。
转换器会跟踪映射,以便把回复数据包转换回原始内部端点。它通常转发同一个传输流,不必像应用程序代理那样建立单独的代理连接。
源 NAT 会更改出站数据包的什么内容?
目标地址转换
目标 NAT 会重写目标地址或端口,常用于通过外部端点发布内部服务。端口转发规则可以把外部 TCP 端口映射到不同的内部地址和端口。返回流量需要进行一致的反向转换。
哪种 NAT 形式通常用于实现入站端口转发?
NAT 与防火墙策略
NAT 不是防火墙。有状态转换器可能没有与未经请求的入站流量对应的映射,但显式转发、目标转换、过滤和应用程序暴露共同决定哪些内容可达。安全策略应通过防火墙规则、最小权限服务和端到端控制明确表达并接受审计,而不能从地址重写中推断。
为什么不能把 NAT 本身视为安全策略?
运维影响
NAT 可能耗尽地址和端口映射、增加点对点协议的复杂性、让应用程序看不到原始来源,并要求特殊处理在协议中嵌入地址的情况。如果需要追踪流量,日志必须保留转换时间戳和映射详情。
在 Linux 上,现代策略通常使用 nftables 和连接跟踪进行配置。更改前应检查实际规则集:
$ sudo nft list ruleset
$ sudo conntrack -L
第二条命令需要 conntrack 工具和特权。更改规则集可能中断远程访问,因此应准备控制台恢复、原子配置、验证和回滚。
将共享地址流量追溯到内部客户端需要什么证据?
课程已完成
你已完成 NAT
现在,你可以区分地址转换、路由、代理和防火墙策略。
识别出站流上的源地址转换。
识别已发布服务中的目标地址转换。
理解端口映射如何实现地址共享。
应用显式过滤,而不是把 NAT 当作安全机制。
更改期间保留映射证据和恢复通道。