请教关于 wireguard 连回家的问题

2023-08-08 07:52:29 +08:00
 yzc27

想请教各位大佬科学冲浪与 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 该如何设置?

1203 次点击
所在节点    问与答
13 条回复
superchijinpeng
2023-08-08 09:01:29 +08:00
Tailscale
keyfunc
2023-08-08 09:04:00 +08:00
A 是 fake ip+tun 模式吗?如果是的话,要确保 wg 拨进的设备分配的 IP 和 A 是一个网段,不然的话,再转层 nat 吧,clash 的 tun 模式好像不支持跨网段转发。
yzc27
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
2023-08-08 09:12:56 +08:00
好像可以设置 ip route 实现吧
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
2023-08-08 09:21:31 +08:00
@lightionight 大佬,请教一下“在 b 上设置 wiregurad ip 段转发 如 192.168.2.0/24 转发到 A 的 shellclash 上”这个要怎样实现呢?
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
2023-08-08 09:27:31 +08:00
我是用的 RouteOS, 大致和 4 楼说的差不多, 新建一个 route table, 然后 ip route 将 wiregurad 网段的流量全部指向 A, 相当于把 A 当网关, linux 上 具体如何 ip route 你可以自己查一下,但基本原理就是网段转发
yzc27
2023-08-08 09:27:41 +08:00
@keyfunc "要允许 fakeip 网段走 wg"是指“AllowedIPs = ”这里填 fakeip 的 ip 段吗?
yzc27
2023-08-08 09:29:26 +08:00
@lightionight 不知道可不可用 iptables 来转发?
lightionight
2023-08-08 09:32:10 +08:00
应该是可以的,iptables 本来就是干这个的,但我 iptables 不太熟 ,iptables 具体如何设置你得自己查查, 思路就是 在 b 上设置 ip route
keyfunc
2023-08-08 09:39:53 +08:00
@yzc27 你先试试 外网 wg 客户端能 ping 通 fake ip 地址吗,如果内网设备改写 dns 能直接科学的话,一般情况下都是没问题的。

我是直接装了 clash 然后用了他 fake ip + tun 模式,因为 wg 是 routeros 提供的,所以在 ros 上多做了一层 nat ,目前用下来没啥大问题。
kumiko
2023-12-10 13:54:57 +08:00
@keyfunc 多做一层 nat 这布要怎么操作

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/963230

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX