我在远程位置有一台服务器,它位于两个子网上(即它有两个网络接口卡 NIC1 和 NIC2,例如 A 位于 130.0.0.0,B 位于 192.168.1.10)。我可以通过面向外部的 A 进行 ssh 连接。
如何从我的家庭计算机访问子网 B 中的资源。例如,我想通过浏览器界面(192.168.1.0)访问子网B的交换集线器。
所有机器都运行 Ubuntu 18.04。
我不想在远程计算机上设置 VPN 服务器(出于安全原因)。我更愿意通过现有的 SSH 隧道来完成所有操作。
我知道我之前已经能够使用 sshuttle 通过 ssh 在本地(家庭)计算机上创建 tun 接口:
sshuttle -r user@remoteserver 0.0.0.0/0 -vv --dns
然而,这将通过远程服务器的“正常”网关引导我的 HTTP 和 HTTPS 请求(即我将正常访问互联网,我的 IP 显示为服务器的 IP)。
我想通过子网B(通过浏览器访问交换集线器的网络接口)。
有没有直接的方法来做到这一点,或者我需要以不同的方式来解决这个问题?
答案1
我实际上能够使用我最初的想法来实现这一点,只需一个技巧:我必须在本地计算机上启用 ufw。否则 sshuttle 就会出错。
所以,在本地机器上,我做了:
sudo ufw enable
然后,
sshuttle -r username@ipForSubnetA 0.0.0.0/0 -vv --dns
这实际上(可怕?)允许我在本地计算机上访问子网 B 的元素。
远程计算机在防火墙方面完全被锁定,只允许通过一个端口通过私钥进行 SSH 访问。
如果有人知道 sshuttle 有任何不安全之处,请随时告诉我:)