Android OpenVPN断开SSH隧道

Android OpenVPN断开SSH隧道

我想通过 SSH 隧道传输 OpenVPN 流量。我有

  • 路由器后面的 OpenVPN 服务器在端口 4321 上运行
  • 同一台机器上的 SSH 服务器,端口为 22
  • 路由器将服务器 IP 的端口转发为 1234->22 和 4321->4321

服务器配置如下:

dev tun
proto tcp
port 4321
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server_eqg0yy05M8ZkQjyy.crt
key /etc/openvpn/easy-rsa/pki/private/server_eqg0yy05M8ZkQjyy.key
dh /etc/openvpn/easy-rsa/pki/dh2048.pem
topology subnet
server 10.8.0.0 255.255.255.0
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
push "block-outside-dns"
push "redirect-gateway def1"
client-to-client
keepalive 10 120
remote-cert-tls client
tls-version-min 1.2
tls-auth /etc/openvpn/easy-rsa/pki/ta.key 0
cipher AES-256-CBC
auth SHA256
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
crl-verify /etc/openvpn/crl.pem
status /var/log/openvpn-status.log 20
status-version 3
syslog
verb 3

我的客户端如下所示:

client
dev tun
proto tcp-client
remote localhost 4321
route [my public IP] 255.255.255.255 net_gateway
resolv-retry infinite
nobind
persist-key
persist-tun
key-direction 1
remote-cert-tls server
tls-version-min 1.2
verify-x509-name server_eqg0yy05M8ZkQjyy name
cipher AES-256-CBC
auth SHA256
comp-lzo
verb 3
<ca>
-----BEGIN CERTIFICATE-----

如果我在我的 Ubuntu 笔记本电脑上使用这些服务器和客户端配置文件,并执行

ssh user@[my public IP] -p 1234 -L 4321:localhost:4321

sudo openvpn --config client1.ovpn

有用!

但在 Android 上我无法让它工作。我使用 ConnectBot(很多人都建议使用它),我可以在 ConnectBot 上设置到我的 SSH 服务器的连接,并且我有一个本地端口转发 4321 -> localhost:4321。

当我运行带有主动端口转发的 SSH 时,我尝试将我的 OpenVPN 与官方应用程序连接(实际上是官方应用程序和两部 Android 手机),ConnectBot 提示“连接丢失”,我的隧道被破坏了。为什么使用与我的 PC 上相同的配置“路由 [我的公共 IP] 255.255.255.255 net_gateway”连接也会中断?

答案1

这个问题已经很老了,但是由于没有可接受的答案,我认为我的回答可能会对遇到这个问题的任何人有所帮助......

发生这种情况的原因是,一旦 VPN 客户端连接,通过 ssh 隧道的数据包就被强制通过 VPN 应用程序。这就是为什么 VPN 应用程序一眨眼就立即连接,导致数据包通过 VPN 应用程序,从而断开 SSH 连接。

解决方案是在 vpn 应用程序中排除 ssh 隧道应用程序。这在 中是不可能的OpenVpn Connect。但是,每个配置文件OpenVpn For Android都有一个Allowed Apps选项卡,允许您ConnectBot根据自己的情况排除 ssh 隧道应用程序。

Routing您可能还想在配置文件选项卡的 IPv4 和 IPv6 部分中选择“使用默认路由” 。

答案2

我没有通过 ssh 隧道使用 openvpn 的经验。但我使用了很多 openvpn 客户端应用程序,其中大多数都与我的 openvpn 设置存在问题。你可以尝试使用我目前正在使用的并且运行良好的应用程序:适用于 Android 的 OpenVPN

相关内容