如何在不修改全局路由表的情况下将 openvpn/wireguard 转发到另一个 wirdguard 接口?

如何在不修改全局路由表的情况下将 openvpn/wireguard 转发到另一个 wirdguard 接口?

我有一个 wireguard 接口 wg_vpn,但是我不希望它是全局的,所以我在 wg_vpn.conf 中添加了行“Table = off”以防止 wg-quick 修改路由表。

我还有一个 openvpn/wireguard 接口 tun0/wg0,客户端可以通过它访问我的服务器。我创建了以下 iptables 规则:

    iptables -t nat -A POSTROUTING -o wg_vpn  -j MASQUERADE
    iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    iptables -A FORWARD -i wg0 -o wg_vpn -j ACCEPT
    
    ip6tables -t nat -A POSTROUTING -o wg_vpn  -j MASQUERADE
    ip6tables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    ip6tables -A FORWARD -i wg0 -o wg_vpn -j ACCEPT

但它们不起作用,除非我通过以下方式将 wg_vpn 设为全局:

    ip route add default dev wg_vpn
    ip -6 route add default dev wg_vpn

然后他们就开始工作了。

但是我只想将 tun0/wg0 转发到 wg_vpn 而不修改全局路由表,所以我知道如何实现这一点吗?

提前致谢!

答案1

使用策略路由ip rule

  1. 不要指定,而是Table=off指定Table=123让 wg-quick 将路由放在单独的表中(除 253-255 之外的任何 16 位数字,它们是全局表)。

    ...或者手动将您的路线添加到新表中:

    ip -4 route add default dev wg_vpn table 123
    ip -6 route add default dev wg_vpn table 123
    
  2. 创建策略路由规则,为从 tun0 接收的数据包选择此表:

    ip -4 rule add pref 1000 iif tun0 lookup 123
    ip -6 rule add pref 1000 iif tun0 lookup 123
    

相关内容