ipsec ESP 包的 nat 问题

2023-03-14 17:28:34 +08:00
 huangya
网络拓扑是:
LAN PC1/PC2 ---家庭路由器----Internet----IPSec server

假设路由器有公网 IP 。
LAN PC1 和 PC2 都连接*相同*的 IPsec server.当 IPsec SA 建立成功后,因为 ESP 是三层协议,不像 tcp/udp
那样有端口。那么家庭路由器对从 IPsec server 发往 PC1 或者 PC2 的包是怎样进行 nat 转换的呢?依据是什么?
ESP 包中的 SPI ?如果 SPI 相同呢?

楼主多年前研究过一段时间 IPSec ,但好多东西忘了。最近突然想到这个问题。有点困惑了。
1254 次点击
所在节点    宽带症候群
6 条回复
hzdrro
2023-03-14 17:57:00 +08:00
NAT-T ,会有 UDP 头
huangya
2023-03-14 18:03:54 +08:00
@hzdrro
你是说 server 发给 PC1 和 PC2 的 ESP 包会加上 UDP 头吗?如果是:
1. 这个加 UDP 头,是在协商阶段定的吗?也就是怎么决定或者探测是否要加 UDP 头?
2.从 PC1/PC2 发往 server 的时候,也加了吧?
hzdrro
2023-03-14 18:09:22 +08:00
folnet
2023-03-14 19:11:07 +08:00
协商的时候通过 NAT-D 检测,主要就是通过对 ip 和端口进行 hash 判断有没有 NAT 。检测到 NAT ,后续协商报文和实际封装使用 UDP 4500
huangya
2023-03-14 23:16:10 +08:00
@hzdrro
@folnet
这样看起来本来一个三层的协议由于 NAT 硬生生变成了一个四层协议,这可能也是 openvpn 兴起的一个原因吧?
Jhma
2023-03-15 09:48:04 +08:00
@huangya ipsec(l2tp)缺点很明显,网对网只能在路由里面写策略才能实现按需求代理,网对点( ipsec l2tp)基本只能全局代理,而 openvpn 就比较灵活了,openvpn 可以做到用户名+密码+证书+APP 动态密码二次认证!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/923960

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX