技术解析

一台主机连接到两个 wireguard,怎么让两个 wireguard 互相通信
0
2021-06-18 21:46:40
idczone

研究了好久,没有搞定,各种 iptables,ip route/ip rule 都试过,还是没有正确转发相关数据 需求如下: 我希望的隧道原理是:A<--->B<--->C。B (内网)主动连接到两个 wireguard 隧道,B 有两个隧道网络 B1 连接到 A,B2 连接到 C。怎么才能让 A 发给 B1 的数据通过 B2 转发到 C,B 是一台 Centos7,同时连接的 A 跟 C。A 跟 B1 能通信,C 跟 B2 能通信。 A ip:192.168.100.1 B1 ip:192.168.100.254 B2 ip:192.168.200.254 C ip:192.168.200.1 如果才能把来之 192.168.100.0/24 的数据通过 192.168.200.254(B2)转发给 192.168.200.1,是 192.168.100.0/24 网段的所有数据都能转发出去,不是单个端口或者单个 IP。 另外还有一点疑问请教各位老哥。iptables 转发数据跟路由有什么关系吗,比如:我写了一条路由所有来自 B1 网卡 192.168.100.0/24 网段的包都从 B2 网卡的 192.168.200.254 出去,那中间我还需要 iptables 做 NAT 转发吗,我的意思是 3 层路由之间是直接能转发不同网段的数据包。还是说必须先通过 iptables 把所有来自 192.168.100.0/24 的包里面的原地址全部替换成转发出口的原地址呢,也就是替换成 192.168.200.254 之后再从 B2 网卡出去?


1,A 和 C 上写到对方的路由,B 开启转发,就可以实现你的目标
2,iptables 和路由没关系,不用做 nat
3,有什么问题,我懂,随便问

多谢老哥的耐心回答,我现在去试试

走 udp 的协议,你要确保所有转发的服务器都没 qos

看起来你要把三个地方组成一个大局域网。买三个路由器组成 site to site 就行了 https://docs.gl-inet.com/en/3/app/cloud/

參考 full cone nat

肯定没有 QOS,现在我不是纠结有没有 QOS 的问题,我只是想让两个 wireguard 互相通信就行了,只要能通就可以

没有路由器,也无法使用路由器,只能用 wireguard 或者 Open***之前使用 Open***在二层转发能通,但是效率太低。

跟 NAT 类型没关系把,我只是要转发数据而已,只要在网络层打通了 就是局域网了

NAT 通了,vpn 內機器能和外網互相訪問,不需要端口轉發

假设你 A->B1, C->B2 都是能 ping 通了.
B 上开 IP 转发,检查各个机器上的回程路由.
不需要 iptables 参与路由 ,但是需要 iptables 放行这些数据包, FORWORD 链上有时候要显式允许
wireguard 这种类似于 NBMA 网络的,请注意子网掩码的范围,不是 /24 一把梭就行的
在网络的出口上做 IP masquerade NAT 就行

https://anyisalin.github.io/2018/11/21/fast-flexible-nat-to-nat-vpn-wireguard/ 可以参考我之前写的一篇博客

wireguard 太弱 ji 了,从网上找的十几个免费配置,试了一次就挂了。

out of topic.

感谢诸位朋友!
不是楼主,但在用 wireguard 异地组网时,碰到和楼主一样的问题 ,调试了一天,原来是 gateway 没有开 ip 转发的原因。
另外楼主可以考虑用 wireguard 隧道组网时,使用 udp2raw 伪装下,wireguard 使用 udp 端口,在公网上跑有很大可能碰上运营商 qos 或阻断。
用过 zerotier、tinc、n2n 这类基于 udp 打洞直连的 vpn,虽然打洞成功率都不错,但实际用下来体验并不好,主要就是因为运营商对 udp 进行 qos 或者阻断。

多看官方文档,wireguard 跟 iptables 一毛钱关系都没有

你这情况,如果 ip 是真的的话,完全可以用一条 wireguard 隧道直接联通 B 和 C

有没有办法让两个 nat 后面的 peer A 、B,借助一个有公网 ip 的 peer C 实现直连,而不用通过 C 转发?

你好,我想用 A (笔记本)通过 C (公网 server )访问 B (家里的 unraid )的服务 peers 要分别怎么设置呀?
/t/747297
尝试了很多次,都只能在 C 访问 B 的服务,A 只能 ping 通 B 但访问不到资源,如: http://B:80

嫌资料少?你怕是没看过这里: https://fuckcloudnative.io/tags/wireguard/
现在还少吗?
数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服