A 与 B 在不同的网络,通过 wireguard 互联
想把机器 A 的所有默认流量通过 B 转发,有办法实现吗?
试过在 B 上配置 socks5 ,然后让 A 配置系统代理( windows ),但是 A 上可能要装一些 VPN ,VPN 不走系统代理。
1
xqzr 21 天前
A 所在的网关,做源路由
|
![]() |
2
haojidemingzi 21 天前
A 的配置文件里,[Peer]( B )这样配置:AllowedIPs = 0.0.0.0/1, 128.0.0.0/1 ,就可以 A 的流量都走 B 了吧
|
3
jerrycmht024 OP @haojidemingzi B 需要做额外的配置吗?是否要开启 NAT 之类的?
|
![]() |
4
haojidemingzi 21 天前
@jerrycmht024 #3 印象中是不需要额外配置的,你可以试一试
|
5
jerrycmht024 OP @haojidemingzi 不太行,看起来这个 allowedips 就是添加路由,首先我配置 0.0.0.0 会直接导致网络不通。
然后我改成了 8.8.8.8 ,traceroute 以后发现下一跳只是到了 wg 的 server 上,看起来还要额外的配置 |
6
565656 20 天前 via iPhone
A 上 clash 直接引用 b 的 socks 作为节点,分流默认走 B ,不需要的就 direct 不就行了吗
|
7
jerrycmht024 OP @565656 这个思路也还行,那我需要装个 openwrt 的旁路由,然后 clash+wireguard ,因为有很多类似 A 的节点,然后这些节点就把默认网关配置到 openwrt 上?但是我有没有不用 clash 的方案。
|
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 的网络。 |
9
565656 20 天前
@jerrycmht024 #7 wireguard 甚至可以不用,直接把 clash 的 7890 端口 frp 出来(改五位端口+长密码),所有类似 A 都可以引用这个 socks5 节点,然后写分流规则用,同时也完美解决手机上 clash 和 tailscale/wireguard 不能同时打开的问题.
|
![]() |
10
DOGOOD 20 天前
你 wireguard 怎么架的?是 b 有公网 ip 么?这样的话,2 楼那个方法就可以。如果不是这样,而是通过一个有公网 ip 的 c 充当 wireguard 中转。那这个 c 的 wireguard 配置中对应 b 的 peer 也要配置 AllowedIPs = 0.0.0.0/1 ,以及 c 的 wireguard 要添加对应的 ip 路由(这一步 wireguard 一般自动添加。)
|
![]() |
11
Ljcbaby 19 天前
wg 的 wiki 里有,分表或者 netns
|
![]() |
12
snoopygao 19 天前
先在 A 机里添加一条路由,去往 B 的公网地址走默认网关接口,固化一下 ip route add B-IP.X.X.X/32 via 原网关 , 再启动 wg 后就不会断开了
|
![]() |
13
snoopygao 19 天前
在 B 里还需要把内核 foward=1 打开, 并且 iptables 做 snat ,iptables -t nat -A POSTROUTING -o eth0{自己改} -j MASQUERAD
|
![]() |
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. 上例中所有尖括号内的参数都要改为你本机的实际参数。 |