如何通过 SSH 隧道将全部或部分 openvpn 服务器流量转发到另一台服务器?

如何通过 SSH 隧道将全部或部分 openvpn 服务器流量转发到另一台服务器?

我需要通过 SSH 隧道将所有 OpenVPN 客户端流量从服务器 A 路由到服务器 B。


 Client                       Server A                                     Server B
-------------------      -----------------------                         -----------------------
| OpenVPN Client  |      | Ubuntu Server 20    |                         | Ubuntu Server 20    |
| Windows 10      |----->| Local Datacenter    |--SSH Tunnel(PORT 22)--->| External Datacenter |
| OpenVPN Connect |      | IP: a.b.c.d (1xNIC) |                         | IP: w.x.y.z (1xNIC) |
|                 |      | OpenVPN Server      |                         |                     |
-------------------      -----------------------                         -----------------------

我不知道该怎么做。但我已经在服务器 A 上安装了 openvpn 服务器,配置如下:

port 443
proto udp
dev tun
user nobody
group nogroup
persist-key
persist-tun
keepalive 10 120
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 1.0.0.1"
push "dhcp-option DNS 1.1.1.1"
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_q8X7N8fjPSybMPNE.crt
key server_q8X7N8fjPSybMPNE.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

Iptables 配置:

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  10.8.0.0/24          0.0.0.0/0

答案1

我在 2017 年从事过一些分布式系统和网络方面的工作,希望能为您指明正确的方向。

  1. 要将所有 OpenVPN 客户端流量从服务器 A 通过 SSH 隧道路由到服务器 B,您需要在服务器 A 上设置一条路由,将发往外部网络的流量引导至 SSH 隧道。
ssh -L 1194:localhost:1194 [email protected]

将“用户”替换为您的 SSH 用户,将“wxyz”替换为服务器 B 的 IP 地址。此命令将创建一个 SSH 隧道,将流量从服务器 A 的端口 1194 转发到服务器 B 的端口 1194。

  1. 现在修改服务器 A 上的 OpenVPN 服务器配置以使用隧道:
push "route w.x.y.z 255.255.255.255 20.0.0.1"

将“wxyz”替换为您想要通过服务器 B 的 Internet 连接访问的外部网络的 IP 地址,将“20.0.0.1”替换为服务器 A 上的隧道端点的 IP 地址。

  1. 最后,您要做的就是在服务器 A 上重新启动 OpenVPN 服务。
sudo systemctl restart openvpn

希望这对你有帮助。

相关内容