我有两个站点 A 和 B,如下图所示
+-+------------------------------------------------------------------+
| | |OTHER DEVICES |
| | |:-) SITE A: 128.66.32.0/24 | |
| | +-------+ PUBLIC DNS: SITEA.EXAMPLE.ORG |
| | | | PORT FORWARDING CUSTOMIZABLE |
| | | | DYNAMIC IP / DDNS |
| +------------+ | |
| | |
| +---------------+----+-------------------+---------+-------------+ |
| | | | |
| RASPBERRY PI | PRINTER | | ROUTER/GW |
| 128.66.32.18 | 128.66.32.3 | | 128.66.32.1|
| +------------+ | +----------+ | | +----------+
| | | | | | | | | |
| | | | | | | | | |
| | +--+ | +----+ +----+ |
| | | | | | |
+-+------------+-----------+----------+-------------------+----------+
+-----------------------------+-------------+------------+----------+
| SITE B: 128.66.55.0/24 | | | |
| NO DNS | | | |
| FIREWALLED BY ISP +-----+ | +---+ |
| DYNAMIC IP | +-------------+ | | |
| PUBLIC IP 10.0.0.0/8 | LAPTOP | | |
| | DHCP | +----------+
| | | ROUTER/GW |
| | | 128.66.55.1|
| | | |
| ++-------------------+-------------------+--------+-----------+ |
| | | |
| | | |
| | NAS | RASPBERRY PI |
| | 128.66.55.23 | 128.66.55.18 |
| | +-------------+ | +-----------+ |
| | | | | | | |
| +--+ | +------+ | |
| | | | | |
+------+-------------+-----------------------------+-----------+----+
我基本上想要的是皮尔利连接两个站点。VPN 可以让我在 B 中访问 A 中的任何主机。理论上,在 A 和 B 之间建立的 VPN 链接应该允许 A 中的任何设备键入ping 128.66.55.x
和查看数据。
因为我有两台闲置的 Raspberry Pi 机器,所以我想释放它们并建立一个永久的透明的VPN 链接,因此任何人都可以获得两个站点之间的零配置链接。
正如您所看到的,其中一个站点是不可寻址的:只能作为客户端工作,因为 ISP 提供了在多个客户之间共享的私有 IP 地址。
我做的作业
我已经检查过了OpenVPN文档,并了解如何将一个配置Pi
为服务器,另一个配置为客户端。然后,当我等待前往 A 部署 Raspberry 服务器并进行端口转发时,我还有其他疑问。我将准备好在我外出时保持 SSH 通道打开以管理 Raspberry。
尚待解决的问题:
由于我很多年前就上过课,所以我对社交网络有点生疏了。
- OpenVPN 可以用于 VPN 中的两个站点对等连接吗?还是我走错了路?
- 我知道我需要在两个设备上的适配器之间设置路由规则
eth0
。OpenVPNtun
可以帮我完成这个任务吗?还是我需要使用 iptables? - 为了使 VPN 透明,我不记得是否必须在主网关上设置静态路由(例如通过 128.66.32.18 的路由 128.66.55.0/24)或者树莓派应该在其网络内广播该路由
eth0
。两者中哪一个?
基本上我需要远程打印、访问 NAS 等等
答案1
看来我的设计是正确的,而且方法很好。我现在回答我自己的问题,既是为了分享知识和发表我的想法,研究和考虑,以供将来的问题参考。
谢谢这个帖子我已经找到了大部分问题的答案。让我总结一下:
- OpenVpn 已设置对等 LAN
我们的用户有一个 openvpn 服务器,其后有一个局域网 (10.10.2.0/24),另外还有 2 个客户端,其后也有局域网:
客户端 1 的局域网为 10.10.1.0/24 客户端 2 的局域网为 10.10.3.0/24
他希望所有 3 个局域网上的机器能够使用 tun(路由)设置进行通信。
每台背后有 LAN 的机器都必须启用 IP 转发。在此示例中,这意味着服务器和客户端 1/客户端 2。用户需要在其 server.conf 中设置以下内容:
route 10.10.1.0 255.255.255.0
route 10.10.3.0 255.255.255.0
push "route 10.10.2.0 255.255.255.0"
push "route 10.10.1.0 255.255.255.0"
push "route 10.10.3.0 255.255.255.0"
client-to-client
只需适应我的情况:服务器只需连接到route
它不控制的网络即可push
。动态推送连接到它的每个 LAN 并不那么智能。这不是问题,因为我没有实施可扩展的设置,而且我只有两个 LAN
- OpenVpn 负责其运行的 Raspberry 上的路由。
我在 B 站点的局域网中做了一个示例。我将 A 的 IP 地址分配给 Raspberry A,让她在同一eth0
接口上从 B 获取 DHCP 地址,然后运行 OpenVpn 和回显服务器。然后,我将拥有 B 网络 IP 地址的 Raspberry A 连接到 B LAN 中的 Raspberry A 地址。最后,我可以回显并在日志中查看它。唯一需要注意的是,Raspberry A(回显服务器)看到的是来自 A 范围内而不是 B 范围内的 IP 的连接,因此 LAN 无法通信。
- 显然,必须在网关处设置路由。文章对此进行了很好的解释。让我引用
假设我们的服务器在其局域网上是 10.10.2.10,并使用 10.10.2.1 作为其默认路由,并且您希望 2.x 局域网可访问或能够通过 VPN 访问。2.1 需要为 2.x 将访问或被访问的每个网络提供路由。这意味着在我们的示例中:10.10.2.1 必须知道,对于 10.10.1.x 10.10.3.x 和 VPN 内部网络(例如 10.8.0.x),它将流量发送到 10.10.2.10。对于您想要连接的任何数量的局域网,无论是服务器还是客户端,这都是正确的。
如果无法添加此路由,当 VPN 客户端(例如 10.8.0.6)想要将流量发送到 10.10.2.20 时,将会发生以下情况:
The vpn client sends traffic to 10.10.2.20, with a source address of 10.8.0.6 The vpn server (10.8.0.1 and 10.10.2.10) receives the traffic, has IP forwarding enabled, and passes the traffic to 10.10.2.20 10.10.2.20 gets it and tries to respond to 10.8.0.6 but has no entry in its routing table Because 10.10.2.20 has no route for 10.8.0.6, it sends the traffic to its default gateway which is 10.10.2.1 10.10.2.1 checks its routing table, has no route for 10.8.0.6, and sends the traffic to its default gateway which is likely its ISP The ISP ignores it, because it is a RFC 1918 ip (aka lan only)
由于我恰好可以控制两个网关,因此设置静态路由是正确的方法