无法通过 VPN IP 通过 SSH 进入 OpenVPN 云连接器计算机

无法通过 VPN IP 通过 SSH 进入 OpenVPN 云连接器计算机

我刚刚开始使用 OpenVPN 云连接器创建网状 VPN 网络。我部署了一个连接器并设置了相关的 IP 转发和 NAT 协议,使我能够访问运行 OpenVPN 云连接器的机器后面的 LAN 网络。我成功地做到了这一点。(我的信息主要来自此链接https://openvpn.net/cloud-docs/connecting-networks-to-openvpn-cloud-using-connectors/

现在的问题是,为什么我无法通过 VPN IP SSH 进入运行云连接器的机器100.96.1.18?奇怪的是,我可以 ping 它,没有问题。 在此处输入图片描述

~$ ssh [email protected]
ssh: connect to host 100.96.1.18 port 22: Network is unreachable
~$ ping 100.96.1.18 -c 4
PING 100.96.1.18 (100.96.1.18) 56(84) bytes of data.
64 bytes from 100.96.1.18: icmp_seq=1 ttl=62 time=209 ms
64 bytes from 100.96.1.18: icmp_seq=2 ttl=62 time=279 ms
64 bytes from 100.96.1.18: icmp_seq=3 ttl=62 time=208 ms
64 bytes from 100.96.1.18: icmp_seq=4 ttl=62 time=204 ms

--- 100.96.1.18 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 203.702/224.971/279.214/31.383 ms

令人惊讶的是,我可以通过 VPN 客户端计算机远程 SSH 到连接器计算机的本地 IP192.168.18.1

这是连接器机器上的 IP 路由。

~$ ip route
default via 192.168.18.1 dev eno1 proto dhcp metric 100 
64.120.110.199 via 192.168.18.1 dev eno1 
100.80.0.0/12 via 100.96.1.17 dev tun0 
100.96.0.0/11 via 100.96.1.17 dev tun0 
100.96.1.16/30 dev tun0 proto kernel scope link src 100.96.1.18 
169.254.0.0/16 dev eno1 scope link metric 1000 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 
192.168.0.0/24 via 100.96.1.17 dev tun0 
192.168.18.0/24 dev eno1 proto kernel scope link src 192.168.18.88 metric 100 

~$ ifconfig tun0
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 100.96.1.18  netmask 255.255.255.252  destination 100.96.1.18
        inet6 fd:0:0:8101::2  prefixlen 126  scopeid 0x0<global>
        inet6 fe80::5a84:3a5:f59b:d64f  prefixlen 64  scopeid 0x20<link>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 1682  bytes 451719 (451.7 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1755  bytes 637526 (637.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

此外,为了进行调试,这里是来自连接的客户端计算机的 IP 路由

~$ ip route
default via 192.168.31.1 dev wlp2s0 proto dhcp metric 600 
25.0.0.0/8 dev ham0 proto kernel scope link src 25.56.7.62 
100.80.0.0/12 via 100.96.1.1 dev tun0 
100.96.0.0/11 via 100.96.1.1 dev tun0 
100.96.1.0/28 dev tun0 proto kernel scope link src 100.96.1.2 
169.254.0.0/16 dev wlp2s0 scope link metric 1000 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
172.107.213.76 via 192.168.31.1 dev wlp2s0 
192.168.0.0/24 via 100.96.1.1 dev tun0 
192.168.18.0/24 via 100.96.1.1 dev tun0 
192.168.31.0/24 dev wlp2s0 proto kernel scope link src 192.168.31.189 metric 600 

~$ traceroute 100.96.1.18
traceroute to 100.96.1.18 (100.96.1.18), 64 hops max
  1   100.96.1.18  265.200ms !N  109.653ms !N  105.821ms !N

我的主要争论点是,由于100.96.0.0/11 via 100.96.1.1 dev tun0路由被推送到客户端,我应该能够访问100.96.1.18IP 并通过 ssh 或 traceroute 等方式访问它。

PS 由于 OpenVPN 支持无法回答,因此在此询问。

答案1

以防万一有人遇到同样的麻烦:这个问题与您这边的防火墙无关,因为连接在云端断开。根据 OpenVPN 云理念,您使用“网络连接器”作为客户端连接到某个网络,使用“主机连接器”允许客户端连接到您。因此,如果您想通过 OpenVPN 云连接到您的服务器,该服务器必须通过“主机连接器”而不是“网络连接器”连接到 VPN,因为只有“主机连接器”才会打开防火墙以接收云端的传入连接。

要检查这是否适用于您,请使用“netstat -pan | grep ssh”或至少在您的 VPN 接口上确保您的 openssh 服务器正在监听所有接口(对于 ipv6,则为 0.0.0.0:22 或 :::22)。然后使用(假设 vpn 位于 tun0 接口)“tcpdump -pni tun0 tcp port 22”查看您是否收到来自 vpn 的任何 ssh 连接请求。您可以删除“端口 22”并尝试 ping 您的“服务器”以确保流量正常。通常使用“网络连接器”,您的 ping 将通过,但对于 ssh 请求,将看不到任何内容,因为云不允许 ssh 流量。如果您使用“主机连接器”通过云建立连接,它将起作用。

https://openvpn.net/cloud-docs/owner/servers/hosts/adding-a-host.html

相关内容