是否可以通过 Linux(openSUSE)上的隧道本身访问运行 OpenVPN 服务器的主机?
例如,如果我的 OpenVPN 主机*的 VPN IP 是10.125.0.1
,而其公共 IP 是1.2.3.4
,我希望发送到 的流量1.2.3.4
通过隧道(我试图绕过 SSH 限制防火墙)。但是,即使启用了 VPN,通过 SSH 连接到 和10.125.0.1
也会1.2.3.4
失败。
我认为 SSH 连接只是被OpenVPN 主机上的tun
/tap
接口 ( ) 阻止了,这是没问题的,但是连接仍然应该可以通过。10.125.0.1
1.2.3.4
我检查了 SSH 客户端机器上的路由表*,默认路由实际上是 VPN 接口,但连接1.2.3.4
仍然要通过 LAN 网关路由:
// Route to VPN Server
user@host:~> sudo ip route get <OpenVPN Host IP>
<OpenVPN Host IP> via <LAN Gateway IP> dev wlan0 src <LAN Host IP> uid 0
cache
// Route to Google's DNS
user@host:~> sudo ip route get 8.8.8.8
8.8.8.8 via <VPN Gateway IP> dev vpn src <VPN Host IP> uid 0
cache
(为了清楚起见,我的客户端机器上的 VPN 接口称为vpn
)
我知道可以在手机(Android)上执行此操作,因为它可以与 OpenVPN 应用程序一起使用(SSH),但这可能吗?如果可以,如何在桌面上执行此操作?
我想从某种意义上来说我的问题是,OpenVPN 移动应用程序和桌面(Linux)版本有什么区别?
*附加信息
OpenVPN服务器:
- Ubuntu 18.04 机器
- 技术运行
SoftEther
VPN 服务器,但具有 OpenVPN 仿真。这不可能是问题的根源,因为在移动设备上使用 OpenVPN 应用即可实现所需的结果 - 公共 IP
1.2.3.4
和私有 (VPN) IP10.125.0.1
- 是 VPN 网关
OpenVPN 客户端:
- openSUSE Leap 15.1 机器
- 成功连接到 OpenVPN 服务器
- 除此
OpenVPN Server
IP 之外的所有流量都通过 VPN - 通过 NetworkManager 创建和管理连接
- 可以 ping 通 OpenVPN 服务器主机(两个 IP),但这是通过 LAN 路由而不是 VPN 进行的
我觉得我对这个问题的措辞过于复杂,所以如果需要的话,请在评论中寻求澄清。
先感谢您
答案1
从技术上来说确实如此,但是它行不通。
您的建议是将 OpenVPN 生成的流量放入隧道本身,形成一条吃掉自己尾巴的蛇。
OpenVPN 主机*的 VPN IP 为 10.125.0.1,其公网 IP 为 1.2.3.4,我希望将流量发送到 1.2.3.4
如果您要将数据包发送到 10.125.0.1,最终会将其包装在另一个地址为 1.2.3.4 的数据包中。如果您按自己的想法将数据包发送到 1.2.3.4,则需要将该数据包路由到 10.125.0.1,而 10.125.0.1 又需要将数据包发送到 1.2.3.4,这样循环就结束了,并永远重复下去。
在 Android 上,应用程序产生的流量在被手机操作系统实际路由之前就被捕获 - 但在这里,应用程序和操作系统之间没有层。