我需要通过 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 年从事过一些分布式系统和网络方面的工作,希望能为您指明正确的方向。
- 要将所有 OpenVPN 客户端流量从服务器 A 通过 SSH 隧道路由到服务器 B,您需要在服务器 A 上设置一条路由,将发往外部网络的流量引导至 SSH 隧道。
ssh -L 1194:localhost:1194 [email protected]
将“用户”替换为您的 SSH 用户,将“wxyz”替换为服务器 B 的 IP 地址。此命令将创建一个 SSH 隧道,将流量从服务器 A 的端口 1194 转发到服务器 B 的端口 1194。
- 现在修改服务器 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 地址。
- 最后,您要做的就是在服务器 A 上重新启动 OpenVPN 服务。
sudo systemctl restart openvpn
希望这对你有帮助。