8. 最终说明

8.1. 其他设置

我不知道如何使用较差的操作系统穿透防火墙,但是你可以拿一台旧的废弃电脑(任何配备 8MB 内存和以太网卡的电脑都可以),在上面安装 Linux 或 BSD,然后用它来穿透防火墙,同时作为运行较差操作系统的其他机器的路由器。请参阅关于路由、IP 转发、NAT 等的相应 HOWTO。

我不清楚细节,但一个很有希望的防火墙穿透工具是 Chris Mason 的 Bouncer,它充当 SOCKS-proxy-over-SSL。

防火墙的种类有很多,不仅仅是那些允许直接 ssh 或 telnet 连接的防火墙。只要数据包的连续流动可以在两个方向上通过防火墙传输信息,就有可能穿透它;只是编写穿透器的代价可能会更高或更低。

在一个非常简单的情况下,我们看到你可以通过 pty master 启动 ssh,并在 slave tty 中执行一些 pppd。你甚至可能想要在没有不利防火墙的情况下这样做,只是为了构建一个安全的“VPN”(虚拟专用网络)。VPN mini-HOWTO 提供了你需要的所有细节。我们邀请你作为一个练习,修改 fwprc 以使用此技术,或者甚至在先前的非安全 fwprc 会话中使用它。

现在,如果通过防火墙的唯一方式是 WWW 代理(通常是连接到互联网的网络的最低要求),你可能想要使用 Chris Chiappa 的脚本 ssh-https-tunnel

另一个很有希望的 HTTP 穿透程序是 Lars Brinkoffhttptunnel,这是一个 http 服务器和客户端组合,它通过代理友好的 HTTP 协议实现 TCP/IP 隧道连接。然后你应该能够通过该连接运行 fwprc(最好是通过 ssh),尽管我还没有尝试过。有人可以测试并报告吗?请注意,httptunnel 仍在开发中,因此你可以帮助实现它目前缺少的功能,例如,拥有多个连接,和/或提供虚假页面以误导可疑的不利防火墙管理员。

无论什么东西通过你的防火墙,无论是 telnet、HTTP 或其他 TCP/IP 连接,还是像 DNS 查询、ICMP 数据包、电子邮件(参见 mailtunnel, icmptunnel)或其他奇怪的东西,你总是可以编写隧道客户端/服务器组合,并通过它运行 ssh 和/或 PPP 连接。性能可能不会很高,这取决于在支付绕过过滤器和代理的编码开销后,有效的信息通信速率;但是,只要隧道足以使用 fetchmailsuck 和其他非交互式程序,这样的隧道仍然很有意义。

如果你需要跨越 7 位线路,你将需要使用 SLIP 而不是 PPP。我从来没有尝试过,因为现在线路或多或少都是 8 位干净的,但这应该不难。如果必要,请退回到使用 Term-Firewall mini-HOWTO

如果你有一个 8 位干净的连接,并且你是防火墙两侧 Linux 系统的 root 用户,你可能想要使用 ethertap 以获得更好的性能,将原始以太网通信封装在你的连接之上。David Madore 编写了 ethertap-over-TCP 和 ethertap-over-UDP 隧道 ftp://quatramaran.ens.fr/pub/madore/misc/。仍然需要编写一些 ethertap-over-tty 来与类似 fwprc 的工具结合使用。

如果你真的需要比通过用户空间顺序通信隧道运行 PPP 所能获得的性能更高的性能,那么你将处于非常困难的情况下,你可能不得不重新破解一个奇怪的 IP 堆栈,例如使用 Fox 项目的数据包协议函子。然后你将实现一些直接的 IP-over-HTTP、IP-over-DNS、IP-over-ICMP 等,这不仅需要一个复杂的协议,还需要一个操作系统内核的接口,这两者都实现成本很高。

最后,如果你不是在与不利的防火墙作斗争,而只是在构建你自己的 VPN,那么有大量的 VPN 工具可供选择,虽然我介绍的技巧很简单、效果很好,并且可能足以满足你的需求,但最好还是看看不断发展的这些选择(我对此了解不多),以找到适合你的性能和可维护性要求的解决方案。

8.2. HOWTO 维护

我觉得有必要写这个,但我没有那么多时间,所以这个 mini-HOWTO 非常粗糙。它会保持这样,直到我收到足够的反馈,以便知道要加强哪些部分,或者更好的是,直到有人来接管 mini-HOWTO 的维护。欢迎反馈。欢迎帮助。欢迎接管 mini-HOWTO 的维护。

无论如何,以上章节已经展示了许多问题,这些问题的解决方案只是某人(你?)花一些时间(或金钱,通过雇用其他人)坐下来编写它:没有什么概念上复杂的东西,尽管细节可能很繁琐或棘手。

请随时为这个 mini-HOWTO 贡献更多问题,并希望有更多解决方案。

8.3. 相关文档

LDP 发布了许多与此 mini-HOWTO 相关的文档。最值得注意的是 Linux 安全知识库VPN HOWTOVPN mini-HOWTO。有关网络、路由和防火墙的更一般性问题,请从 网络概述 HOWTO 开始。另请参阅 Linux 防火墙和安全站点

再说一遍,当遇到某个程序的问题时,任何 Linux 用户的本能反应都应该是 RTFM:阅读所考虑程序的手册页。

8.4. 结语

我已经得出结论,就像对设计模式的需求直接来自于人们使用像 C++Java 这样的劣质语言,这些语言不允许直接表达更高级别的编程结构(而像 LISP 这样的优秀语言允许表达它们),对 HOWTO 的需求直接来自于 LinuxUNIX 系统是劣质操作系统,它们不允许直接表达人们试图用它们做的那些简单任务。

如果你认为所有这些摆弄愚蠢的脚本和傻气的 HOWTO 都过于复杂,并且一个像样的计算机系统应该为你自动完成这一切,那么欢迎你和我一起加入 UNIX 憎恨者 和其他讨厌当前低级操作系统的人们,并渴望声明式计算系统来处理那些愚蠢的细节,让我们专注于重要的事情。(也许可以看看我自己的 TUNES 项目)。

8.5. 额外副本的重要免责声明 --- 请相信它!!!

我特此声明对使用此黑客行为不承担任何责任。如果它以任何方式对你产生不利影响,那就算你倒霉。不是我的错。如果你不了解这样做固有的风险,请不要这样做。如果你使用此黑客行为,并且它允许恶性破坏者侵入你公司的计算机,并导致你失去工作,公司损失数百万美元,那也只能怪你倒霉。别来找我哭诉。