41.案例篇|如何优化 NAT 性能?
Contents
NAT 原理
NAT技术可以重写IP数据包的源IP或者目的IP,被普遍地用来解决公网IP地址短缺的问题。
主要原理: 网络中的多台主机,通过共享同一个公网 IP 地址,来访问外网 资源。同时,由于NAT屏蔽了内网网络,自然也就为局域网中的机器提供了安全隔离。
NAT的主要目的,是实现地址转换。 根据实现方式的不同,NAT 可以分为三类:
- 静态NAT,即内网 IP 与公网 IP 是一对一的永久映射关系;
- 动态NAT,即内网 IP 从公网 IP 池中,动态选择一个进行映射;
- 网络地址端口转换 NAPT(Network Address and Port Translation),即把内网IP映射到公网 IP 的不同端口上,让多个内网IP可以共享同一个公网IP地址。可以把NAPT分为三类:
- 第一类是源地址转换 SNAT,即目的地址不变,只替换源IP或源端口。
- 第二类是目的地址转换 DNAT,即源IP保持不变,只替换目的IP或者目的端口
- 第三类是双向地址转换,即同时使用 SNAT 和 DNAT。
nat表内置了三个链:
- PREROUTING,用于路由判断前所执行的规则
- POSTROUTING,用于路由判断后所执行的规则
- OUTPUT,类似于 PREROUTING,但只处理从本机发送出去的包。
SNAT
SNAT 需要在 nat 表的 POSTROUTING 链中配置。
第一种方法,是为一个子网统一配置SNAT,并由Linux选择默认的出口IP。
|
|
第二种方法,是为具体的 IP 地址配置 SNAT,并指定转换后的源地址
|
|
DNAT
DNAT 需要在 nat 表的 PREROUTING 或者 OUTPUT 链中配置, 其中, PREROUTING 链更常用一些(因为它还可以用于转发的包)
双向地址转换
双向地址转换,就是同时添加 SNAT 和 DNAT 规则,为公网 IP 和内网 IP 实现一对一的 映射关系,
|
|
Author zhuyhan
LastMod 2020-07-06