我的 VPS 上有一个 openvpn/wireguard 服务器,我的 VPS 有 2 个接口 eth0/eth1,它们都可以访问互联网。但我希望所有 vpn 出站流量都通过 eth1。那么我该怎么做呢?
答案1
如果是 Linux 服务器,请使用策略路由通过ip rule
:
添加一条规则,对从 VPN 前缀发送的数据包使用不同的路由表:
ip -4 rule add pref 500 from <vpn_network_ipv4> lookup 2 ip -6 rule add pref 500 from <vpn_network_ipv6> lookup 2
将通过 eth1 网关的默认路由添加到新的路由表:
ip -4 route add default via <ipv4_gateway> table 2 ip -6 route add default via <ipv6_gateway> table 2
如果您对 eth1 使用 DHCP 或 SLAAC,请告诉您的 DHCP 客户端将路由放入该表中。(Systemd-networkd 有这个选项,但我不确定其他的选项。)
如果 VPN 客户端需要 LAN 访问,则还必须手动将本地子网路由添加到新表中。可以使用指示“检查下一条规则”的特殊路由:
ip -4 route add throw 192.168.0.0/16 table 2 ip -6 route add throw fd00::/8 table 2
答案2
设置与 eth1 连接关联的网关的远程 VPN 端点 IP 地址的路由。