V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OpenWrt 是一个专门面向嵌入式设备的 Linux 发行版。你可以将 OpenWrt 支持的型号的嵌入式设备,比如各种路由器上的系统,换成一个有更多可能性可以折腾的 Linux 系统。
OpenWrt 官方网站
yellowstrong
V2EX  ›  OpenWrt

求助万能的 V 友关于两台 OpenWRT 异地组网的问题

  •  
  •   yellowstrong · 23 小时 47 分钟前 · 361 次点击

    首先,家庭环境无公网 IP,老家环境也无公网 IP,但是手中有一台具有公网 IP 的国内服务器

    在国内服务器上搭建了一个 WireGuard(简称服务端),用于转发流量

    目前实现服务端连接家庭客户端 WG,可可访问家中内网环境,其他设备(例如手机,电视,电脑)通过 WG 客户端连接服务器上的服务端,也可以访问家庭环境的内网 IP

    现在想实现,老家的 openwrt 上搭建一个 WG 连接服务端,让 openwrt 下的子设备可以通过家庭环境的内网 IP 直接访问家庭内网,该如何做

    感谢

    8 条回复    2025-01-17 18:45:33 +08:00
    Danswerme
        1
    Danswerme  
       22 小时 52 分钟前
    主要是配路由,两台路由器访问对方网段的路由指向对方的 WireGuard 地址
    CapNemo
        2
    CapNemo  
       22 小时 47 分钟前
    Router1 <-> Server <-> Router2

    在两个 Router 的“网络” -> “路由表”中,添加一个新的静态路由,将另一个 Router 的 IP 段指向 Server

    Server 里配置两条静态路由,把两个 Router 的 IP 段分别指向对应 Router 的 WireGuard 地址即可
    masterclock
        3
    masterclock  
       22 小时 43 分钟前
    还不如 softether 搞定
    JerryYuan
        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)

    捋清楚完整的预期数据通路以后,就可以分段配置每一台设备,让数据包按预期流转。
    这里引入一个调试技巧,即在整体不通时,在每一段两端的网络适配器抓包看看数据包走到哪一步就迷路了,找到迷路的那一步,对照发送的一侧适配器所在主机的路由表看看实际走到哪条路由上去了,一般修正这个路由表配置,数据包就能继续往前走了。所有链路都抓包确认成功以后,网络应该也就通了。
    asvow
        5
    asvow  
       19 小时 26 分钟前   ❤️ 1
    luci-app-tailscale 了解一下,分别开启 [启用路由] + [公开网段] + [子网互通] 选项。一般官方节点够用,如果打洞失败无法直连还可以自建 derp
    SenLief
        6
    SenLief  
       18 小时 59 分钟前
    不要那么复杂了,直接用 tailscale 或者 easytier ,尽量的不给自己找别扭。
    wuruxu
        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'
    ```
    cndns
        8
    cndns  
       18 小时 22 分钟前 via Android
    easytier
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2680 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:08 · PVG 13:08 · LAX 21:08 · JFK 00:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.