通过 OpenVPN 从虚拟机进行端口转发

通过 OpenVPN 从虚拟机进行端口转发

如果这个问题已经在另一个帖子中解释过了,我很抱歉,但是我在任何地方都找不到解决我的问题的方法。

我对所附网络图有疑问。我可以永久共享路由器 R2 下主机 192.168.1.21 上任何服务的端口到路由器 R1 下主机 192.168.1.121 吗?路由器 R1 下的网络中有一台 192.168.1.112 服务器,该服务器通过 tun0 网络(OpenVPN)连接到路由器 R2 下的 192.168.1.20 服务器。

我能够通过 SSH 成功隧道化端口,但我想要一个永久的解决方案。我将非常感激您的帮助。

所有服务器都配有 Linux 操作系统。

图表

编辑:2024-03-08

我把R2下网络内的地址改成192.168.2.0,并给两台路由器都添加了路由,下面是在PC1上执行tracert后的结果。

tracert 1

tracert 2

路由器的网站(192.168.2.1)未在浏览器中显示。地址 192.168.2.21 应指向另一台服务器。在 192.168.2.0 网络内可以 ping 通 192.168.2.21 服务器,没有任何问题。

从 192.168.2.21 到 192.168.1.1 进行 Tracert

tracert

路由器配置192.168.1.1

R1 配置

路由器配置192.168.2.1

R2 配置

服务器配置

local 192.168.1.112
port 1194
proto tcp4
dev tun
ca ca.crt
cert server-dell.crt
key server-dell.key  # This file should be kept secret
dh dh2048.pem
server 10.8.0.0 255.255.255.0
#ifconfig 10.8.0.1 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
client-config-dir ccd
;push "route 192.168.1.0 255.255.255.0"
;push "route 10.8.0.0 255.255.255.0"
;push "route 192.168.2.0 255.255.255.0"
;route 192.168.2.0 255.255.255.0
client-to-client
push "route 192.168.1.0 255.255.255.0"
push "route 10.8.0.0 255.255.255.0"
push "route 192.168.2.0 255.255.255.0"
route 192.168.2.0 255.255.255.0
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
status /var/log/openvpn/openvpn-status.log
verb 3

ccd 配置

ifconfig-push 10.8.0.10 255.255.255.0
iroute 192.168.2.0 255.255.255.0

我尝试了不同的配置变体。

编辑:2024-03-09

从 PC1 级别 (192.168.1.120),我能够在浏览器中显示来自 10.8.0.1 的服务,但无法显示来自 10.8.0.10 或 192.168.2.20 的服务。从 vm windows 10 (192.168.2.22),我能够显示来自地址 192.168.1.112 的服务。客户端的 LAN 可以看到 openvpn 服务器的 LAN,就好像服务器的 LAN 看不到客户端的 LAN 一样。

编辑 2024-03-10

不知道这是否重要,但 tun0 网络的客户端是来自同一 LAN 的另一台主机。主机 IP 是 192.168.2.115。它不在图中

编辑:2024-03-11

在 iptables 中添加相应规则后,我的 openVPN 服务器(10.8.0.1 或 192.168.1.112)现在可以 ping 通客户端的 LAN 机器,并在浏览器中显示程序(例如 Webmin)。不幸的是,从服务器端的 LAN 级别(例如 PC1 192.168.2.120)我无法 ping 通客户端 LAN 端的机器(例如 Webadmin 不起作用)。

编辑日期 2024-03-12

成功了。我终于成功建立了 LAN 到 LAN 的连接。解决方案是在 OpenVPN 服务器上执行以下命令。

iptables -t nat -A POSTROUTING -o enp2s0  -j MASQUERADE
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o enp2s0 -J ACCEPT
iptables -A FORWARD -i tun0 -o enp2s0 -j ACCEPT
iptables -A FORWARD -i enp2s0 -o tun0 -j ACCEPT

相关内容