V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yzc27
V2EX  ›  问与答

请教关于 wireguard 连回家的问题

  •  
  •   yzc27 · 2023-08-08 07:52:29 +08:00 · 1204 次点击
    这是一个创建于 510 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想请教各位大佬科学冲浪与 wireguard 联用的问题,

    基本情况

    1. 家里的 aio 部署了两台虚拟机 A ( 192.168.1.2 )和 B ( 192.168.1.3 ),分别在 A 上面装了 shellclash 、B 上装了 wireguard 。
    2. 在家能通过设置将网关 dns 指向 A ( 192.168.1.2 )的方式来用 shellclash 给内网设备科学。
    3. 目前可以在外用 wireguard 连回家里内网( B 是直连,没走任何代理)。

    需求

    在不改动 B 的网关 dns 的前提下,在外面通过 wireguard 连回家,可以连回内网之余,还能通过 A 科学,如果要实现这样的话,在 B 上的 wireguard 该如何设置?

    13 条回复    2023-12-10 13:54:57 +08:00
    superchijinpeng
        1
    superchijinpeng  
       2023-08-08 09:01:29 +08:00
    Tailscale
    keyfunc
        2
    keyfunc  
       2023-08-08 09:04:00 +08:00
    A 是 fake ip+tun 模式吗?如果是的话,要确保 wg 拨进的设备分配的 IP 和 A 是一个网段,不然的话,再转层 nat 吧,clash 的 tun 模式好像不支持跨网段转发。
    yzc27
        3
    yzc27  
    OP
       2023-08-08 09:11:53 +08:00
    @keyfunc 目前 A 是 fakeip + tproxy ,wg 拨进的设备所分配的 ip ( 192.168.2.1/24 )不是跟 A ( 192.168.1.2 )同一个网段。
    yaott2020
        4
    yaott2020  
       2023-08-08 09:12:56 +08:00 via Android
    好像可以设置 ip route 实现吧
    lightionight
        5
    lightionight  
       2023-08-08 09:17:22 +08:00
    哈哈, 前些时刚好设置过, 在 b 上设置 wiregurad ip 段转发 如 192.168.2.0/24 转发到 A 的 shellclash 上,然后在 A 的 shellclash 上配置好分流规则, 这样家里内网设备可以访问, 科学上网也可以, 但是经过这几趟转发延迟会增加, 我现在是用 surge, 在手机端分流, 连家里内网走 surge 的 ponte, 其余走科学上网, 这样延迟基本解决了, 当然你也可以用 wireguard 一把梭哈, 建议在手机端分流, 这样科学上网快很多, 之前也是和你想的一样, 把代理前置, 减少手机端的运行,延迟太难受
    yzc27
        6
    yzc27  
    OP
       2023-08-08 09:21:31 +08:00
    @lightionight 大佬,请教一下“在 b 上设置 wiregurad ip 段转发 如 192.168.2.0/24 转发到 A 的 shellclash 上”这个要怎样实现呢?
    keyfunc
        7
    keyfunc  
       2023-08-08 09:26:05 +08:00
    @yzc27 TProxy 没问题的,但你 wg 客户端要配置对,dns 用你 a 的 ip ,且要允许 fakeip 网段走 wg

    [Interface]
    PrivateKey = XXX
    Address = XXX
    DNS = 192.168.86.1 (换成 A 的 IP)

    [Peer]
    PublicKey = XXX
    AllowedIPs = 1.0.0.0/8, 2.0.0.0/8, 3.0.0.0/8, 4.0.0.0/6, 8.0.0.0/7, 11.0.0.0/8, 12.0.0.0/6, 16.0.0.0/4, 32.0.0.0/3, 64.0.0.0/2, 128.0.0.0/3, 160.0.0.0/5, 168.0.0.0/6, 172.0.0.0/12, 172.32.0.0/11, 172.64.0.0/10, 172.128.0.0/9, 173.0.0.0/8, 174.0.0.0/7, 176.0.0.0/4, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 192.168.86.0/23, 192.168.1.1/32, 192.168.86.1/32
    Endpoint = XXX
    lightionight
        8
    lightionight  
       2023-08-08 09:27:31 +08:00
    我是用的 RouteOS, 大致和 4 楼说的差不多, 新建一个 route table, 然后 ip route 将 wiregurad 网段的流量全部指向 A, 相当于把 A 当网关, linux 上 具体如何 ip route 你可以自己查一下,但基本原理就是网段转发
    yzc27
        9
    yzc27  
    OP
       2023-08-08 09:27:41 +08:00
    @keyfunc "要允许 fakeip 网段走 wg"是指“AllowedIPs = ”这里填 fakeip 的 ip 段吗?
    yzc27
        10
    yzc27  
    OP
       2023-08-08 09:29:26 +08:00
    @lightionight 不知道可不可用 iptables 来转发?
    lightionight
        11
    lightionight  
       2023-08-08 09:32:10 +08:00
    应该是可以的,iptables 本来就是干这个的,但我 iptables 不太熟 ,iptables 具体如何设置你得自己查查, 思路就是 在 b 上设置 ip route
    keyfunc
        12
    keyfunc  
       2023-08-08 09:39:53 +08:00
    @yzc27 你先试试 外网 wg 客户端能 ping 通 fake ip 地址吗,如果内网设备改写 dns 能直接科学的话,一般情况下都是没问题的。

    我是直接装了 clash 然后用了他 fake ip + tun 模式,因为 wg 是 routeros 提供的,所以在 ros 上多做了一层 nat ,目前用下来没啥大问题。
    kumiko
        13
    kumiko  
       2023-12-10 13:54:57 +08:00 via Android
    @keyfunc 多做一层 nat 这布要怎么操作
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1234 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 23:37 · PVG 07:37 · LAX 15:37 · JFK 18:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.