iptables 规则通过 vpn 接口路由域,其余流量通过默认接口路由

iptables 规则通过 vpn 接口路由域,其余流量通过默认接口路由

我有一个 wireguard vpn 连接,用于访问托管在私有 ec2 实例上的某些私有服务。但我希望能够使用我的默认互联网连接来传输剩余流量,并且仅通过 wireguard 接口路由那些特定的域名。据我所知,这只能通过 iptables 规则来完成。有人可以帮我提供一个示例 iptables 规则吗?该规则定义某个域的传出流量必须转发到某个 wireguard vpn 接口,而所有其他流量必须通过默认网络接口路由。

编辑#1请提及任何更适合我的目的的其他工具。

编辑#2由于提到的服务在私有实例上运行,并且只能通过访问 AWS 应用程序负载均衡器的域名访问,因此我无法在此使用 IP。

答案1

您需要按照您想要的方式在客户端上设置路由。

在您的情况下,您需要通过正常的互联网连接设置默认路由,然后通过 VPN 路由您想要的 IP 地址。

例如,假设以下地址:

您的家庭网关位于192.168.1.1 您的 VPN 隧道端点位于10.0.8.1 您的 EC2 实例位于172.25.0.0/24子网中

ip route add default via 192.168.1.1 # default route via your gateway
ip route add 172.25.0.0/24 via 10.0.8.1 # route EC2 subnet via VPN endpoint

Wireguard 很可能有一些方法可以在客户端连接后自动更新路由。您需要查看其文档以了解如何设置路由。

请注意,您不能在此处使用域名,因为所有内容都是通过 IP 地址内部运作的。如果 IP 地址更新,则需要更新配置。

相关内容