研究了好久,没有搞定,各种 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
xduanx 97 天前 via iPhone ♥ 2
1,A 和 C 上写到对方的路由,B 开启转发,就可以实现你的目标
2,iptables 和路由没关系,不用做 nat 3,有什么问题,我懂,随便问 |
![]() |
3
HarveyLiu 97 天前 via Android
走 udp 的协议,你要确保所有转发的服务器都没 qos
|
![]() |
4
linmq 97 天前 via iPhone
看起来你要把三个地方组成一个大局域网。买三个路由器组成 site to site 就行了 https://docs.gl-inet.com/en/3/app/cloud/
|
![]() |
5
Unknowncheats 97 天前 via Android
參考 full cone nat
|
8
GetWoke 97 天前
@Unknowncheats 跟 NAT 类型没关系把,我只是要转发数据而已,只要在网络层打通了 就是局域网了
|
![]() |
9
Unknowncheats 97 天前 via Android
@GetWoke NAT 通了,vpn 內機器能和外網互相訪問,不需要端口轉發
|
![]() |
10
gefranks 97 天前 ♥ 1
假设你 A->B1, C->B2 都是能 ping 通了.
B 上开 IP 转发,检查各个机器上的回程路由. 不需要 iptables 参与路由 ,但是需要 iptables 放行这些数据包, FORWORD 链上有时候要显式允许 wireguard 这种类似于 NBMA 网络的,请注意子网掩码的范围,不是 /24 一把梭就行的 在网络的出口上做 IP masquerade NAT 就行 |
![]() |
11
AnyISalIn 97 天前 via iPhone ♥ 1
|
![]() |
12
artoostark 97 天前
wireguard 太弱 ji 了,从网上找的十几个免费配置,试了一次就挂了。
|
13
slanternsw 96 天前
@artoostark out of topic.
|
14
lifengdp 96 天前
|
15
hawhaw 53 天前 via Android
多看官方文档,wireguard 跟 iptables 一毛钱关系都没有
|
16
hawhaw 53 天前 via Android
你这情况,如果 ip 是真的的话,完全可以用一条 wireguard 隧道直接联通 B 和 C
|