请教一个 OpenVPN 组网的问题

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

大概的网络拓扑如下
https://imgur.com/gHAJq7G
2903 次点击
所在节点    宽带症候群
12 条回复
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
2023-03-23 20:20:03 +08:00
给你推荐 tailscale ,完美解决。
jhytxy
2023-03-23 20:32:44 +08:00
如果能接受控制器在外网的话

zerotier 和 tailscale 是最好的
fastcache
2023-03-23 20:53:15 +08:00
用 zerotier , 把有公网地址的云服务器设置为 moon 做中转即可
wuruxu
2023-03-23 21:58:25 +08:00
wireguard 可以考虑下
有 IPV6 的,可以优先考虑,直接连接更快
sylviaweissenba
2023-03-24 01:53:23 +08:00
zerotier
maybeonly
2023-03-24 09:13:29 +08:00
可以当然是可以的,相当于 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
2023-03-24 18:46:22 +08:00
@podel 的确之前没有在网关设备上配路由,不过看了一下我这款电信送的路由器配不了路由,得换個路由器了哈哈😆
lyangjyehaur
2023-03-24 18:47:26 +08:00
@chengliangben 谢啦👏我去研究下
lyangjyehaur
2023-03-24 18:50:50 +08:00
@jhytxy @fastcache @sylviaweissenba ZeroTier 有尝试过,好像是只能每台设备都要跑一个客户端的?🤔感觉不是太方便(当然有可能是我没研究透
lyangjyehaur
2023-03-24 18:52:04 +08:00
@wuruxu 谢啦😉刚好有 IPv6 的,我也研究下
lyangjyehaur
2023-03-24 18:58:44 +08:00
@maybeonly 哇!感谢大佬🙏对照下来应该是少一步在网关设备上写路由,但是电信送的路由器又配置不了路由,还以为在爱快和终端上写好路由就可以了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/926613

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX