如何通过 openvpn 访问虚拟机

如何通过 openvpn 访问虚拟机

Ahoj,任何建议都将不胜感激,这是我所拥有的以及我需要完成的:

  1. 强大的服务器(Debian)正在运行 10.5.234.23,我在那里安装了 Virtualbox,因此我可以在单独的 192.168.56.x 网络上设置 5 台虚拟机。每台机器都将分配有静态机器。(192.168.56.10、192.168.56.11、192.168.56.12、192.168.56.13、192.168.56.14)这台强大的服务器已在接口 tun0 上安装了 openvpn(通过 openvpn-install.sh)

  2. 我想要通过 openvpn(监听 10.5.234.23、1194、udp)从外部访问 192.168.56.10、11、12、13、14 台机器。

我的问题来了,如何设置 virtualbox 和 openvpn 以便我可以访问机器。

a) 我应该使用哪种网络选项?仅托管 NAT 网络还是桥接?b) 如何通过 openvpn 从我的电脑“路由/访问”虚拟机?

到目前为止,我能够从 mypc 连接到强大的服务器,并且我的 IP 在 iface tun0 上是 192.168.56.2,但我无法 ping/扫描机器 192.168.56.10、192.168.56.11、192.168.56.12、192.168.56.13、192.168.56.14

我在 openvpn 服务器配置中缺少一些行,或者我应该在“virtualbox 和 openvpn”之间添加一些路由,或者两者兼而有之?

谢谢你的建议。

OpenVPN 服务器.conf

port 1194
proto udp
dev tun
user nobody
group nogroup
persist-key
persist-tun
keepalive 10 120
topology subnet
server 192.168.56.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 8.8.8.8"
push "redirect-gateway def1 bypass-dhcp"
dh none
ecdh-curve prime256v1
tls-crypt tls-crypt.key
crl-verify crl.pem
ca ca.crt
cert server_4ND1IGilsOsqFOrd.crt
key server_4ND1IGilsOsqFOrd.key
auth SHA256
cipher AES-128-GCM
ncp-ciphers AES-128-GCM
tls-server
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
client-config-dir /etc/openvpn/ccd
status /var/log/openvpn/status.log
verb 3

从 openvpn 测试客户端登录

openvpn test1.ovpn 
2023-03-27 09:37:07 Unrecognized option or missing or extra parameter(s) in test1.ovpn:19: block-outside-dns (2.5.7)
2023-03-27 09:37:07 OpenVPN 2.5.7 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Jul  5 2022
2023-03-27 09:37:07 library versions: OpenSSL 3.0.7 1 Nov 2022, LZO 2.10
2023-03-27 09:37:07 Outgoing Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
2023-03-27 09:37:07 Outgoing Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
2023-03-27 09:37:07 Incoming Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
2023-03-27 09:37:07 Incoming Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
2023-03-27 09:37:07 TCP/UDP: Preserving recently used remote address: [AF_INET]10.5.234.23:1194
2023-03-27 09:37:07 Socket Buffers: R=[212992->212992] S=[212992->212992]
2023-03-27 09:37:07 UDP link local: (not bound)
2023-03-27 09:37:07 UDP link remote: [AF_INET]10.5.234.23:1194
2023-03-27 09:37:07 TLS: Initial packet from [AF_INET]10.5.234.23:1194, sid=15fae1aa 4e9d9f26
2023-03-27 09:37:07 VERIFY OK: depth=1, CN=cn_WHLqtsupL3nvjt9t
2023-03-27 09:37:07 VERIFY KU OK
2023-03-27 09:37:07 Validating certificate extended key usage
2023-03-27 09:37:07 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
2023-03-27 09:37:07 VERIFY EKU OK
2023-03-27 09:37:07 VERIFY X509NAME OK: CN=server_4ND1IGilsOsqFOrd
2023-03-27 09:37:07 VERIFY OK: depth=0, CN=server_4ND1IGilsOsqFOrd
2023-03-27 09:37:07 Control Channel: TLSv1.2, cipher TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, peer certificate: 256 bit EC, curve prime256v1, signature: ecdsa-with-SHA256
2023-03-27 09:37:07 [server_4ND1IGilsOsqFOrd] Peer Connection Initiated with [AF_INET]10.5.234.23:1194
2023-03-27 09:37:09 SENT CONTROL [server_4ND1IGilsOsqFOrd]: 'PUSH_REQUEST' (status=1)
2023-03-27 09:37:09 PUSH: Received control message: 'PUSH_REPLY,dhcp-option DNS 8.8.8.8,redirect-gateway def1 bypass-dhcp,route-gateway 192.168.56.1,topology subnet,ping 10,ping-restart 120,ifconfig 192.168.56.2 255.255.255.0,peer-id 0,cipher AES-128-GCM'
2023-03-27 09:37:09 OPTIONS IMPORT: timers and/or timeouts modified
2023-03-27 09:37:09 OPTIONS IMPORT: --ifconfig/up options modified
2023-03-27 09:37:09 OPTIONS IMPORT: route options modified
2023-03-27 09:37:09 OPTIONS IMPORT: route-related options modified
2023-03-27 09:37:09 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
2023-03-27 09:37:09 OPTIONS IMPORT: peer-id set
2023-03-27 09:37:09 OPTIONS IMPORT: adjusting link_mtu to 1624
2023-03-27 09:37:09 OPTIONS IMPORT: data channel crypto options modified
2023-03-27 09:37:09 Outgoing Data Channel: Cipher 'AES-128-GCM' initialized with 128 bit key
2023-03-27 09:37:09 Incoming Data Channel: Cipher 'AES-128-GCM' initialized with 128 bit key
2023-03-27 09:37:09 net_route_v4_best_gw query: dst 0.0.0.0
2023-03-27 09:37:09 net_route_v4_best_gw result: via 192.168.216.2 dev eth0
2023-03-27 09:37:09 ROUTE_GATEWAY 192.168.216.2/255.255.255.0 IFACE=eth0 HWADDR=00:0c:29:8e:38:4d
2023-03-27 09:37:09 TUN/TAP device tun0 opened
2023-03-27 09:37:09 net_iface_mtu_set: mtu 1500 for tun0
2023-03-27 09:37:09 net_iface_up: set tun0 up
2023-03-27 09:37:09 net_addr_v4_add: 192.168.56.2/24 dev tun0
2023-03-27 09:37:09 net_route_v4_add: 10.5.234.23/32 via 192.168.216.2 dev [NULL] table 0 metric -1
2023-03-27 09:37:09 net_route_v4_add: 0.0.0.0/1 via 192.168.56.1 dev [NULL] table 0 metric -1
2023-03-27 09:37:09 net_route_v4_add: 128.0.0.0/1 via 192.168.56.1 dev [NULL] table 0 metric -1
2023-03-27 09:37:09 Initialization Sequence Completed
^C2023-03-27 09:40:06 event_wait : Interrupted system call (code=4)
2023-03-27 09:40:06 SIGTERM received, sending exit notification to peer
2023-03-27 09:40:07 net_route_v4_del: 10.5.234.23/32 via 192.168.216.2 dev [NULL] table 0 metric -1
2023-03-27 09:40:07 net_route_v4_del: 0.0.0.0/1 via 192.168.56.1 dev [NULL] table 0 metric -1
2023-03-27 09:40:07 net_route_v4_del: 128.0.0.0/1 via 192.168.56.1 dev [NULL] table 0 metric -1
2023-03-27 09:40:07 Closing TUN/TAP interface
2023-03-27 09:40:07 net_addr_v4_del: 192.168.56.2 dev tun0

在此处输入图片描述

#推送路线并调整 openvpn 设置后进行编辑: 在此处输入图片描述

答案1

让我们逐一看看您的选择。
a)您的虚拟机使用哪种类型的网络适配器:
这取决于您的要求/您要用虚拟机完成什么任务。

  • 桥接网络会让您所有的虚拟机直接访问您公司的网络(这意味着它将获得一个与您的“强服务器”一样的 IP!),这可能不是您想要的。
  • NAT 网络会创建一个单独的网络,该网络不能从您的服务器直接访问 - 有点类似于您家用路由器后面的专用网络。不过,您可以选择创建端口转发来访问虚拟机。这是为您的虚拟机提供互联网访问权限的“默认”适配器。
  • 仅主机网络是一种虚拟网络设置,它使虚拟机可访问 - 但正如名称所示,只能从虚拟机运行的主机访问。默认情况下,此类适配器不启用任何路由/互联网访问,但通过一些自定义,两者都可以实现。

b)如何路由/访问您的虚拟机:
同样,您有多种选择。我将“绘制”网络轮廓以及实现此目标所需的步骤。

  1. 在每个虚拟机内安装一个 openvpn 客户端:通过这种方法,每个 VM 都会连接到在您的“强服务器”上运行的 openvpn 服务器,将路由部分完全留给 openvpn。

  2. 实际路由方法:

    • 将 openvpn 的网络配置为与主机专用适配器不同的子网 - 在上面的配置中,您对 openvpn 和主机专用网络使用了相同的子网。
    • 将仅主机网络的路由发布到你的 openvpn 客户端(在你的 openvpn 服务器配置中):(push "route 192.168.56.0 255.255.255.0"你可能应该撤消 VPN 配置中的重定向网关指令)
    • 启用路由echo 1 > /proc/sys/net/ipv4/ip_forward
    • 安装防火墙规则,这样你的VPN 只能用于访问你想要的内容,而不能访问其他内容。
  3. 桥接分路 VPN 方法:使用这种方法,您将在强大的服务器上为您的 openvpn 服务器和服务器的主机专用适配器之间创建一个网络桥接。您的 VPN 客户端将从在主机专用网络上运行的 dhcp 服务器分配一个 IP - 而且由于每个人都在同一个网络上,因此不需要路由。检查这里如果您不知道桥接和路由之间的区别。

答案2

好的,谢谢,我终于解决了这个难题。问题是我对 openvpn 接口和 vboxnet0 接口的 IP 设置相同。我的错。仅主机配置有效,但不要忘记添加默认网关,以便您可以桥接 tun0 和 vboxnet0

相关内容