允许本地连接到运行 OpenVPN 的客户端

允许本地连接到运行 OpenVPN 的客户端

为简单起见,假设网络在网关和防火墙后面有两台计算机,计算机 A 和计算机 B。

计算机 A 正在作为客户端运行 openvpn。其流量被转发到远程位置的 openvpn 服务器。因此,计算机 A 有两个 IP 地址:192.168.1.1 (eth0) 和 10.20.10.20 (tap)。计算机 A 的 openvpn 配置文件显示在底部。计算机 A 运行 Windows 7。

计算机 B 没有运行开放式 vpn。它只有 IP 192.168.1.2 (eth0)。计算机 B 运行 Linux。它可以被外界访问。

如何将单个端口从计算机 A 转发到计算机 B?(使用 putty 或其他方式)。计算机 A 上运行着一项服务,端口 XYZ 需要可供外界访问。无法在 openvpn-server 的端点上访问它。那么,是否可以通过 putty 将单个端口从 A 转发到 B?然后,用户可以从外界访问计算机 B,然后计算机 B 与端口 XYZ 的连接将被路由到计算机 A。因此,尽管计算机 A 仍连接到 openvpn 隧道,但可以从本地网络上的计算机 B 访问它。

如果您有解决方案,请告诉我,谢谢。

client
dev tun
proto tcp
remote XX.XX.XXX.XXX 443
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
tls-client
remote-cert-tls server
auth-user-pass
comp-lzo
verb 1
reneg-sec 0

答案1

假设计算机 B 运行的是 Linux(发行版不计量)。假设计算机 B 有 2 个接口。eth0 接口的 IP 地址为 192.168.1.2,另一个接口是 Internet 接口(正如您所提到的,它可以从 Internet 访问)。假设我们需要将端口 XY 从 Internet 重定向到计算机 A 的 XY 端口。

在计算机 B 上,我们需要激活 IPv4 转发(来自之前的评论)

 sysctl net.ipv4.ip_forward=1

现在我们需要将所有进入 Internet 接口 (eth1) 的流量重定向到端口 XY 到计算机 A 接口 eth0 端口 XY

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport XY  -j DNAT --to COMPA_ETH0_IP:XY

如果计算机 A 的默认网关是计算机 B,那么这个配置就已经起作用了。如果不是,那么我们需要向计算机 A 隐藏我们的源 IP。

iptables -t nat -A POSTROUTING -j MASQUERADE

执行此命令后,计算机 A 上 XY 端口上的所有可见流量都将作为计算机 B 的 IP 地址可见。

答案2

这是解决方案

sysctl net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport port -j DNAT --to-destination ip:port
iptables -t nat -A POSTROUTING -j MASQUERADE

相关内容