首先,家庭环境无公网 IP,老家环境也无公网 IP,但是手中有一台具有公网 IP 的国内服务器
在国内服务器上搭建了一个 WireGuard(简称服务端),用于转发流量
目前实现服务端连接家庭客户端 WG,可可访问家中内网环境,其他设备(例如手机,电视,电脑)通过 WG 客户端连接服务器上的服务端,也可以访问家庭环境的内网 IP
现在想实现,老家的 openwrt 上搭建一个 WG 连接服务端,让 openwrt 下的子设备可以通过家庭环境的内网 IP 直接访问家庭内网,该如何做
感谢
1
Danswerme 22 小时 52 分钟前
主要是配路由,两台路由器访问对方网段的路由指向对方的 WireGuard 地址
|
2
CapNemo 22 小时 47 分钟前
Router1 <-> Server <-> Router2
在两个 Router 的“网络” -> “路由表”中,添加一个新的静态路由,将另一个 Router 的 IP 段指向 Server Server 里配置两条静态路由,把两个 Router 的 IP 段分别指向对应 Router 的 WireGuard 地址即可 |
3
masterclock 22 小时 43 分钟前
还不如 softether 搞定
|
4
JerryYuan 20 小时 26 分钟前 via Android
建议还是研究下 IPv6 公网地址,直连的带宽和延迟不是转发能比拟的(可以多配置一条转发的路由备用)
回到题主的问题,所谓的 A 网络主机访问 B 网络主机实际包含两步,A 网络主机请求 B 网络主机,B 网络主机处理请求响应 A 网络主机(这一层很容易被忽视) 所以按题主配置,ping 包传输的整个链路应该是: 去程: * A 网络主机→A 路由器 LAN(ICMP Request) * A 路由器 LAN→A 路由器 WG0(ICMP Request) * A 路由器 WAN→中转节点 WAN(wg 协议) * 中转节点 WG0→中转节点 WG0(ICMP Request ,中转节点 wg0 也许能抓到,抓不到跳过也行) * 中转节点 WAN→B 路由器 WAN(wg 协议) * B 路由器 WG0→B 路由器 br-lan(ICMP Request) * B 路由器 br-lan→B 网络主机(ICMP Request) 回程: * B 网络主机→B 路由器 br-lan(ICMP Echo) * B 路由器 br-lan→B 路由器 wg0(ICMP Echo) * B 路由器 WAN→中转节点 WAN(WG 协议) * 中转节点 wg0→中转节点 wg0(ICMP Echo) * 中转节点 WAN→A 路由器 WAN(wg 协议) * A 路由器 WG0→A 路由器 br-lan(ICMP Echo) * A 路由器 br-lan→A 主机(ICMP Echo) 捋清楚完整的预期数据通路以后,就可以分段配置每一台设备,让数据包按预期流转。 这里引入一个调试技巧,即在整体不通时,在每一段两端的网络适配器抓包看看数据包走到哪一步就迷路了,找到迷路的那一步,对照发送的一侧适配器所在主机的路由表看看实际走到哪条路由上去了,一般修正这个路由表配置,数据包就能继续往前走了。所有链路都抓包确认成功以后,网络应该也就通了。 |
5
asvow 19 小时 26 分钟前 1
luci-app-tailscale 了解一下,分别开启 [启用路由] + [公开网段] + [子网互通] 选项。一般官方节点够用,如果打洞失败无法直连还可以自建 derp
|
6
SenLief 18 小时 59 分钟前
不要那么复杂了,直接用 tailscale 或者 easytier ,尽量的不给自己找别扭。
|
7
wuruxu 18 小时 39 分钟前
这个简单的,只要把两台 openwrt 都连上您的国内服务器的 wireguard
然后在 /etc/config/network 中 添加类似的路由,就可以了 ``` config route option interface 'wg1' option target '192.168.117.0/24' config route6 option interface 'wg1' option target 'fd08:0099:1117::/80' ``` |
8
cndns 18 小时 22 分钟前 via Android
easytier
|