gpt4 book ai didi

vpn - 如何使用 xfrm 设置 Site-to-Site VPN 隧道

转载 作者:行者123 更新时间:2023-12-04 15:40:23 29 4
gpt4 key购买 nike

我尝试了几天在 2 个站点之间创建 VPN 隧道,但没有成功。

场景

我有以下场景:

  • 站点 A 的 IP 地址为 192.168.1.0/24,网关 GWA 的地址为 192.168.1.254 和 a.b.c.d(面向互联网)。
  • 站点 B 的 IP 地址为 192.168.2.0/24,网关 GWB 的地址为 192.168.2.254 和 e.f.g.h(面向互联网)。

XFRM 政策和状态

我设法为每个网关正确添加了状态和策略(我认为)。

对于 GWA,我使用了以下命令:

# policies in, out, fwd
ip xfrm policy add src 192.168.1.0/24 dst 192.168.2.0/24 dir out tmpl src a.b.c.d dst e.f.g.h proto esp reqid 0x99 mode tunnel
ip xfrm policy add src 192.168.2.0/24 dst 192.168.1.0/24 dir in tmpl src e.f.g.h dst a.b.c.d proto esp reqid 0x99 mode tunnel
ip xfrm policy add src 192.168.2.0/24 dst 192.168.1.0/24 dir fwd tmpl src e.f.g.h dst a.b.c.d proto esp reqid 0x99 mode tunnel<br>
# states
ip xfrm state add src a.b.c.d dst e.f.g.h proto esp spi 0x81 reqid 0x99 mode tunnel auth "hmac(sha256)" 0x01 enc "rfc3686(ctr(aes))" 0x02
ip xfrm state add src e.f.g.h dst a.b.c.d proto esp spi 0x82 reqid 0x99 mode tunnel auth "hmac(sha256)" 0x03 enc "rfc3686(ctr(aes))" 0x04

对于 GWB,我使用了以下命令:

# policies in, out, fwd
ip xfrm policy add src 192.168.2.0/24 dst 192.168.1.0/24 dir out tmpl src e.f.g.h dst a.b.c.d proto esp reqid 0x99 mode tunnel
ip xfrm policy add src 192.168.1.0/24 dst 192.168.2.0/24 dir in tmpl src a.b.c.d dst e.f.g.h proto esp reqid 0x99 mode tunnel
ip xfrm policy add src 192.168.1.0/24 dst 192.168.2.0/24 dir fwd tmpl src a.b.c.d dst e.f.g.h proto esp reqid 0x99 mode tunnel<br>
# states
ip xfrm state add src a.b.c.d dst e.f.g.h proto esp spi 0x81 reqid 0x99 mode tunnel auth "hmac(sha256)" 0x01 enc "rfc3686(ctr(aes))" 0x02
ip xfrm state add src e.f.g.h dst a.b.c.d proto esp spi 0x82 reqid 0x99 mode tunnel auth "hmac(sha256)" 0x03 enc "rfc3686(ctr(aes))" 0x04

路线

站点 A 的每个主机都知道通过 GWA 路由发往站点 B 的数据包。

站点 B 的每个主机都知道通过 GWB 路由发往站点 A 的数据包。

结果

从站点 A 中的主机发送到站点 B 中的主机的数据包到达 GWA 并被加密(作为 ESP 数据包)。 ESP 数据包到达 GWB 并成功解密,但被丢弃。

我错过了什么?

我需要虚拟/隧道接口(interface)吗? (vti, tun, tap)
我需要在 iptables 中添加条目吗?我的 xfrm 命令正确吗?

最佳答案

我发现了问题。我的方法是正确的,但由于内核错误(在许多 5.2.x 版本和一些 4.x 版本中),ip xfrm 工具无法正常工作。

解决方法是使用 strongswan/swanctl 和他们自己的 IPSec 实现。有关更多信息,请参见:kernel-libsec plugin .您将需要自己构建和编译它。

关于vpn - 如何使用 xfrm 设置 Site-to-Site VPN 隧道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57962076/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com