如何将流量从 VPN 网关路由到远程网络?

如何将流量从 VPN 网关路由到远程网络?

我的环境情况如下:

有一个网络(213.213.213.128/26)和一个 VPN 网关(213.213.213.155)。

AWS 上有一个远程网络(10.42.0.16/28),它通过 AWS VPC VPN 与 213.213.213.128/26 连接,该 VPN 在 10.42.0.30 上有一个 RADIUS 服务器。

我希望外部客户端使用 VPN 网关 213.213.213.155 通过 10.42.0.30 进行身份验证来连接到 213.213.213.128/26。

我的问题是,213.213.213.155 无法到达 10.42.0.30,因为它通过错误的接口发送。当我添加

iptables -t nat -A POSTROUTING -s <address of the tunnel interface> -d 10.42.0.16/28 -j SNAT --to-source 213.213.213.155

我可以 ping 10.42.0.30,但是 RADIUS 数据包无法通过隧道传输。

我该如何更改网络配置才能允许网关 (213.213.213.155) 连接到 10.42.0.16/28 中的主机?

我使用 strongswan 作为 VPN 服务器。-I 213.213.213.155无需 iptables 规则,即可成功 ping。

编辑

路由表如下:

10.0.0.0/8 dev Tunnel1 scope link metric 100
10.0.0.0/8 dev Tunnel2 scope link metric 200
213.213.213.128/26 dev eno1 proto kernel scope link src 213.213.213.155
169.254.21.173 dev Tunnel1 proto kernel scope link src 169.254.21.174
169.254.21.233 dev Tunnel2 proto kernel scope link src 169.254.21.234

修改路由表以:

10.0.0.0/8 dev Tunnel1 scope link metric 100 src 213.213.213.155
10.0.0.0/8 dev Tunnel2 scope link metric 200 src 213.213.213.155
213.213.213.128/26 dev eno1 proto kernel scope link src 213.213.213.155
169.254.21.173 dev Tunnel1 proto kernel scope link src 169.254.21.174
169.254.21.233 dev Tunnel2 proto kernel scope link src 169.254.21.234

允许 ping 操作在没有 -I 的情况下通过,但traceroute找不到到主机的路由。tracepath没有得到回复。

答案1

解决此类问题的首选方法是设置正确的路由条目。如果您无法访问某个系统上的路由表条目,则可以使用 iptables。

因此理想情况下,您应该在 213.213.213.155 上通过 213.213.213.155 获得到 10.42.0.16/28 的路由,并在 10.42.0.30 上通过本地 VPN 网关获得到 213.213.213.128/26 的路由。

如果您无法更改 RADIUS 服务器上的路由表,因此需要 iptables,请确保规则适用于发送的 RADIUS 数据包。使用tcpdump监视接口上的 RADIUS 数据包any并记下源地址和目标地址。

iptables将规则限制为的目的是什么-s <address of the tunnel interface>?只需删除该选项就足以使其起作用。

由于您可以使用iptables,因此您应该能够设置路由条目。尝试

ip route add 10.42.0.16/28 src 213.213.213.155

这应该足以分配正确的源地址,而无需使用 选项-Iping并且它应该将源地址用于其他所有连接,包括 RADIUS。通常,VPN 软件应该足够智能,无需额外配置即可设置某些功能。如果这不起作用,您可能需要

ip route add 10.42.0.16/28 dev tun0 src 213.213.213.155

tun0你的 VPN 接口在哪里?

相关内容