请教一个 OpenVPN 组网的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lyangjyehaur
V2EX    宽带症候群

请教一个 OpenVPN 组网的问题

  •  
  •   lyangjyehaur 2023-03-23 17:59:36 +08:00 3638 次点击
    这是一个创建于 982 天前的主题,其中的信息可能已经有所发展或是发生改变。
    由于目前用的宽带无公网 IPv4 地址,但是又有在外访问内网设备的需求,就在一台云服务器上搭建了一个 OpenVPN 服务端。然后在 NAS 上安装了 OpenWrt 以及爱快的虚拟机作为客户端来连接 VPN 服务端。目的是想在其他内网设备不连接 VPN 的前提下,使用 OpenWrt 或者爱快的虚拟机作为跳板来访问内网的其他设备。我尝试了一些像是静态路由之类的配置项未果。我想请教一下各位 V 友在目前的软硬件下能否实现这个需求,如果可以,应该如何配置?如果无法实现,需要购买什么样的网络设备来实现此需求呢?

    大概的网络扑如下
    https://imgur.com/gHAJq7G
    12 条回复    2023-03-24 18:58:44 +08:00
    podel
        1
    podel  
       2023-03-23 18:26:44 +08:00
    两边都配置好 静态路由。
    数据是双向的。别光是配一边。
    比如说 你家是 192.168.2.0/24 服务器是 10.1.1.0/24
    你需要在你家的网关设备上 配置 10.1.1.0/24 的静态路由到 Openvpn 的机器。
    然后你的 Openvpn 服务器上面需要静态路由 192.168.2.0/24 到 Openvpn 的机器跟上同样的那个地址。
    JoshuaBen
        2
    JoshuaBen  
       2023-03-23 20:20:03 +08:00   1
    给你推荐 tailscale ,完美解决。
    jhytxy
        3
    jhytxy  
       2023-03-23 20:32:44 +08:00
    如果能接受控制器在外网的话

    zerotier 和 tailscale 是最好的
    fastcache
        4
    fastcache  
       2023-03-23 20:53:15 +08:00   1
    用 zerotier , 把有公网地址的云服务器设置为 moon 做中转即可
    wuruxu
        5
    wuruxu  
       2023-03-23 21:58:25 +08:00   1
    wireguard 可以考虑下
    有 IPV6 的,可以优先考虑,直接连接更快
    sylviaweissenba
        6
    sylviaweissenba  
       2023-03-24 01:53:23 +08:00   1
    zerotier
    maybeonly
        7
    maybeonly  
       2023-03-24 09:13:29 +08:00   1
    可以当然是可以的,相当于 site2site vpn 了。
    ref: https://openvpn.net/vpn-server-resources/site-to-site-routing-explained-in-detail/

    但是根据 ov 模式的不同,有不同的具体步骤。看起来是 tap 模式了。tap 模式做这种事情简单地多(相对 tun 而言)
    1.
    a.如果你的 ov 是 tun 模式
    在 ov 服务器上编辑 ccd 配置(假设你用了 net30 )
    ifconfig-push 10.8.0.10 255.255.255.252
    iroute 192.168.2.0 255.255.255.0
    这个 ccd 文件的文件名是你的 openvpn 用户名,位置由 server.conf 里的 client-config-dir 决定。
    b. 如果你的 ov 是 tap 模式,跳过这一步。

    2. 在 ov 服务器到公网上添加 nat 规则:
    iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE
    以及任何你喜欢的 dnat 规则。但是 dnat 的时候有个问题,就是你内网的回包没法回到 openvpn 服务端上去……
    解决这个问题的思路有两个:
    i. 完成 dnat 之后立刻做一次 snat
    iptables -t nat -A PREROUTING -d ${公网 ip} -p tcp --dport 12345 -j DNAT --to 192.168.2.x:12345
    iptables -t nat -A POSTROUTING -o tun0 ! -s 10.8.0.0/24 -j SNAT --to 10.8.0.1
    缺点是看不到真实的公网 ip 。
    ii. 在 192.168.2.1 和 192.168.2.2 上做连接追踪,比这些还复杂,暂不推荐。

    3. 在云端网关上(看起来是你那个云服务器,但真的是吗?)上添加路由,将 192.168.2/24 网段丢给 openvpn 的服务端
    如果做不到,可以考虑通过 nat+端口映射的方式访问,类似从公网访问。
    又或者在网络允许的情况下,在你云端所有的服务器上添加路由。
    ip r a 192.168.2.0/24 via 10.8.0.1

    a. 如果是 tun 模式
    要丢给接口(通常是 tun0 )
    ip r a 192.168.2.0/24 dev tun0
    b. 如果是 tap 模式
    ip r a 192.168.2.0/24 via 10.8.0.1

    4. 在家里的网关上(看起来是 192.168.2.1 )添加到云端的路由
    ip r a 10.8.0.0/24 via 192.168.2.2

    5. 在家里 ov 客户端上添加到云端的路由
    讲真这里由服务端下发路由是比较合适的……
    a.如果是 tun 模式
    ip r a 10.8.0.0/24 dev tun0
    b. 如果是 tap 模式
    通常可以跳过这一步,如果配置正确,你的 tap0 或类似接口上已经有相关路由。

    6. 各处防火墙放行
    无非是类似下面的东西
    iptables -I FORWARD -s 192.168.2.0/24 -d 10.8.0.0/24 -j ACCEPT
    iptables -I FORWARD -d 192.168.2.0/24 -s 10.8.0.0/24 -j ACCEPT
    之类的,各处执行……
    lyangjyehaur
        8
    lyangjyehaur  
    OP
       2023-03-24 18:46:22 +08:00 via iPhone
    @podel 的确之前没有在网关设备上配路由,不过看了一下我这款电信送的路由器配不了路由,得换路由器了哈哈
    lyangjyehaur
        9
    lyangjyehaur  
    OP
       2023-03-24 18:47:26 +08:00 via iPhone
    @chengliangben 谢啦我去研究下
    lyangjyehaur
        10
    lyangjyehaur  
    OP
       2023-03-24 18:50:50 +08:00 via iPhone
    @jhytxy @fastcache @sylviaweissenba ZeroTier 有尝试过,好像是只能每台设备都要跑一个客户端的?感觉不是太方便(当然有可能是我没研究透
    lyangjyehaur
        11
    lyangjyehaur  
    OP
       2023-03-24 18:52:04 +08:00 via iPhone
    @wuruxu 谢啦刚好有 IPv6 的,我也研究下
    lyangjyehaur
        12
    lyangjyehaur  
    OP
       2023-03-24 18:58:44 +08:00 via iPhone
    @maybeonly 哇!感谢大佬对照下来应该是少一步在网关设备上写路由,但是电信送的路由器又配置不了路由,还以为在爱快和终端上写好路由就可以了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     848 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 22:31 PVG 06:31 LAX 14:31 JFK 17:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86