OpenVPN 将整合多个服务器

OpenVPN 将整合多个服务器

我有两台物理机(均为 Ubuntu Linux),位于不同的托管公司。现在其中一台机器运行虚拟机,客户端可以通过 VPN(OpenVPN)访问。我现在需要的是将另一台物理服务器与其虚拟机连接起来,以便 VPN 客户端也可以看到它,并可以从内部 DNSMasq 服务器获取其本地 IP。

以下是我的当前配置:

+--------------------------------------+ 
|       Current VPN Server             |
|                                      |
|                                      |
|------+                               |
|      |      +-----------------+      |
| tun  |<====>|     DNSMasq     |      |
|      |      +-----------------+      |
|------+\        ^          ^          |
|   ||  \\      /            \         |
|   ||   \\    /              \        |
|   ||    \\  /                \       |
|  +---------------------------------+ |
|  | VH 1 | VH 2 | ...        | VN N | |
|  |      |      |            |      | |
|  |      |      |            |      | |
|  |      |      |            |      | |
|  +---------------------------------+ |
|                                      |
+--------------------------------------+ 

因此 VPN 客户端可以使用内部 DNSMasq 实例解析私有名称,从而与虚拟机进行通信。每个虚拟主机 (VH) 实例都从 DNSMasq 检索其 IP 地址。VPN 服务器使用 iptables NAT 规则路由对此 IP 的访问。

现在我想添加一个额外的物理服务器,以便所有内容对于客户端和虚拟主机来说都是透明的:

+--------------------------------------+       +--------------------------------------+     
|       Current VPN Server             |       |           New Server                 |     
|    /============================================\                                   |     
|    v                                 |       |  v                                   |     
|------+                               |       |------+                               |     
|      |      +-----------------+      |       |      |                               |
| tun  |<====>|     DNSMasq     |<---------+   | tun  |                               |
|      |      +-----------------+      |   |   |      |                               |
|------+\        ^          ^          |   |   |------+\                              |  
|   ||  \\      /            \         |   |   |   ||  \\                             | 
|   ||   \\    /              \        |   |   |   ||   \\                            |  
|   ||    \\  /                \       |   |   |   ||    \\                           |  
|  +---------------------------------+ |   |   |  +---------------------------------+ |     
|  | VH 1 | VH 2 | ...        | VN N | |   |   |  | VH 1 | VH 2 | ...        | VN N | |     
|  |      |      |            |      | |   |   |  |      |      |            |      | |     
|  |      |      |            |      | |   |   |  |      |      |            |      | |     
|  |      |      |            |      | |   |   |  |      |      |            |      | |     
|  +---------------------------------+ |   |   |  +---------------------------------+ |     
|                                      |   |   |    |        |                   |    |     
+--------------------------------------+   |   +----|--------|-------------------|----+     
                                           |        |        |                   |
                                           +--------+--------+-------------------+

换句话说:

  • 新服务器上的虚拟主机必须与当前 VPN 服务器上的虚拟主机位于同一子网
  • 新服务器的虚拟主机必须使用安全通道与当前 VPN 服务器进行通信
  • DNSMasq 应通过 DHCP 将 IP 地址分配给新服务器的虚拟主机
  • OpenVPN 服务器的客户端应该能够访问新服务器上的虚拟主机

请给我一个教程或者提供一些详细的解释。

答案1

正如 JelmerS 所写,您应该考虑 L3 VPN。

如果您确实需要分布式 L2 解决方案:

  • TUN 接口创建 L3 隧道。您需要 TAP 来实现 L2
  • 如果您正在运行多个虚拟机,并且它们可以在一个 L2 段中互相看到对方,那么您可能已经有桥接适配器,可以将所有机器和主机连接在一起。
  • 在第一台和第二台服务器之间创建 L2 VPNOpenVPN 以太网桥接
  • 由 OpenVPN TAP 适配器创建的连接到 server1 上的桥接
  • 由 OpenVPN TAP 适配器创建的连接到 server2 上的桥接

结果:所有虚拟机和两台服务器都位于一个 L2 子网中。客户端可以通过连接到 L3-VPN(TUN 接口)来访问虚拟机,第一台服务器充当带有 NAT 的路由器。

相关内容