V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jerrycmht024
V2EX  ›  宽带症候群

wireguard 如何把对端节点作为默认网关(旁路由)

  •  
  •   jerrycmht024 · 21 天前 · 1508 次点击

    A 与 B 在不同的网络,通过 wireguard 互联

    想把机器 A 的所有默认流量通过 B 转发,有办法实现吗?

    试过在 B 上配置 socks5 ,然后让 A 配置系统代理( windows ),但是 A 上可能要装一些 VPN ,VPN 不走系统代理。

    14 条回复    2025-08-15 09:17:59 +08:00
    xqzr
        1
    xqzr  
       21 天前
    A 所在的网关,做源路由
    haojidemingzi
        2
    haojidemingzi  
       21 天前
    A 的配置文件里,[Peer]( B )这样配置:AllowedIPs = 0.0.0.0/1, 128.0.0.0/1 ,就可以 A 的流量都走 B 了吧
    jerrycmht024
        3
    jerrycmht024  
    OP
       21 天前
    @haojidemingzi B 需要做额外的配置吗?是否要开启 NAT 之类的?
    haojidemingzi
        4
    haojidemingzi  
       21 天前
    @jerrycmht024 #3 印象中是不需要额外配置的,你可以试一试
    jerrycmht024
        5
    jerrycmht024  
    OP
       21 天前
    @haojidemingzi 不太行,看起来这个 allowedips 就是添加路由,首先我配置 0.0.0.0 会直接导致网络不通。
    然后我改成了 8.8.8.8 ,traceroute 以后发现下一跳只是到了 wg 的 server 上,看起来还要额外的配置
    565656
        6
    565656  
       20 天前 via iPhone
    A 上 clash 直接引用 b 的 socks 作为节点,分流默认走 B ,不需要的就 direct 不就行了吗
    jerrycmht024
        7
    jerrycmht024  
    OP
       20 天前
    @565656 这个思路也还行,那我需要装个 openwrt 的旁路由,然后 clash+wireguard ,因为有很多类似 A 的节点,然后这些节点就把默认网关配置到 openwrt 上?但是我有没有不用 clash 的方案。
    CheckMySoul
        8
    CheckMySoul  
       20 天前
    A 是 linux 的话,启用 ip 转发:net.ipv4.ip_forward = 1 ,A 的 wg 允许 IP:0.0.0.0/0 ,然后配置下 MASQUERADE:iptables -t nat -A POSTROUTING -s {{ipv4Cidr}} -o {{device}} -j MASQUERADE; iptables -A INPUT -p udp -m udp --dport {{port}} -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT;
    这样 B 默认连上就通过 A 的网络。
    565656
        9
    565656  
       20 天前
    @jerrycmht024 #7 wireguard 甚至可以不用,直接把 clash 的 7890 端口 frp 出来(改五位端口+长密码),所有类似 A 都可以引用这个 socks5 节点,然后写分流规则用,同时也完美解决手机上 clash 和 tailscale/wireguard 不能同时打开的问题.
    DOGOOD
        10
    DOGOOD  
       20 天前
    你 wireguard 怎么架的?是 b 有公网 ip 么?这样的话,2 楼那个方法就可以。如果不是这样,而是通过一个有公网 ip 的 c 充当 wireguard 中转。那这个 c 的 wireguard 配置中对应 b 的 peer 也要配置 AllowedIPs = 0.0.0.0/1 ,以及 c 的 wireguard 要添加对应的 ip 路由(这一步 wireguard 一般自动添加。)
    Ljcbaby
        11
    Ljcbaby  
       19 天前
    wg 的 wiki 里有,分表或者 netns
    snoopygao
        12
    snoopygao  
       19 天前
    先在 A 机里添加一条路由,去往 B 的公网地址走默认网关接口,固化一下 ip route add B-IP.X.X.X/32 via 原网关 , 再启动 wg 后就不会断开了
    snoopygao
        13
    snoopygao  
       19 天前
    在 B 里还需要把内核 foward=1 打开, 并且 iptables 做 snat ,iptables -t nat -A POSTROUTING -o eth0{自己改} -j MASQUERAD
    aphorism
        14
    aphorism  
       18 天前
    把楼上的全部的合起来就差不多了,
    1. A 的 WireGuard 配置文件中的 AllowIP 行写为
    AllowedIPs = 0.0.0.0/1, 128.0.0.0/1

    2. B 作为 VPN 服务器,需要打开包转发并配置 SNAT ,即运行以下命令
    sudo sysctl -w net.ipv4.ip_forward=1
    iptables -t nat -I POSTROUTING -o <your ethernet interface> -j MASQUERAD

    3. 对于在 A 上运行的其他不需要走 B 的网络地址,要加指定路由如下
    ip route add <114.114.114.114> via <192.168.1.1> dev <eth0>

    4. 上例中所有尖括号内的参数都要改为你本机的实际参数。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2913 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:35 · PVG 22:35 · LAX 07:35 · JFK 10:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.