如今,商业网络通常使用 VPN(虚拟专用网络)进行 与工人的安全通信. 但是,使用的协议有时会降低性能。 如果您可以使用 SSH 访问远程网络上的主机,则可以设置端口转发。 但这可能很痛苦,尤其是当您需要与该网络上的许多主机一起工作时。 Enter 穿梭 — 让您只需 SSH 访问即可设置快速而肮脏的 VPN。 请继续阅读以获取有关如何使用它的更多信息。
sshuttle 应用程序正是为上述场景而设计的。 远程端的唯一要求是主机必须有 Python 可用。 这是因为 sshuttle 构建并运行一些 Python 源代码来帮助传输数据。
安装 sshuttle
sshuttle 应用程序打包在官方存储库中,因此很容易安装。 打开终端并使用以下命令 sudo:
$ sudo dnf install sshuttle
安装后,您可能会发现手册页很有趣:
$ man sshuttle
设置 VPN
最简单的情况就是将所有流量转发到远程网络。 这不一定是一个疯狂的想法,尤其是如果您不在像您自己家这样的受信任的本地网络上。 使用带有 SSH 用户名和远程主机名的 -r 开关:
$ sshuttle -r username@remotehost 0.0.0.0/0
但是,您可能希望将 VPN 限制为特定子网而不是所有网络流量。 (关于子网的完整讨论超出了本文的范围,但您可以阅读更多 在维基百科上.) 假设您的办公室在内部使用保留的 A 类子网 10.0.0.0 和保留的 B 类子网 172.16.0.0。 上面的命令变成:
$ sshuttle -r username@remotehost 10.0.0.0/8 172.16.0.0/16
这非常适合通过 IP 地址处理远程网络上的主机。 但是,如果您的办公室是一个拥有大量主机的大型网络怎么办? 名称可能更方便——甚至可能是必需的。 不用担心,sshuttle 还可以使用 –dns 开关将 DNS 查询转发到办公室:
$ sshuttle --dns -r username@remotehost 10.0.0.0/8 172.16.0.0/16
要像守护进程一样运行 sshuttle,请添加 -D 开关。 这也将通过其 syslog 兼容性将日志信息发送到 systemd 日志。
根据您的系统和远程系统的功能,您可以将 sshuttle 用于基于 IPv6 的 VPN。 如果需要,您还可以设置配置文件并将其与系统启动集成。 如果您想了解更多关于 sshuttle 及其工作原理的信息, 查看官方文档. 看一下代码, 前往 GitHub 页面.