穿透防火墙并非全部。 您还必须将数据包从防火墙的客户端路由到服务器端。 本节介绍关于跨隧道路由的基本设置。 有关路由的更详细说明,请参阅有关网络、路由和伪装的相关 HOWTO 和手册页。
需要注意的是,尽管您的网络管理员可能会告诉您在客户端设置某个路由器作为默认路由(如果您希望有到防火墙客户端上网络的特定路由,这可能是相关的),您应该将 PPP 链接设置为到服务器端网络的路由。
换句话说,您的默认路由应该指向隧道两侧的任何一个,可以为您提供 Internet 访问的路由器。
最重要的是,作为运行隧道的一部分发送到服务器主机的数据包应该通过您的常用网络(例如,您的默认以太网路由器)进行路由; 否则,您的内核会出现问题,因为它会尝试通过隧道内部路由应该构成隧道外部的数据包。
因此,您需要在网络启动配置中设置正确的路由。 您的路由配置数据的确切位置取决于您的发行版,但通常位于/etc/init.d/network或/etc/network/; 类似地,您的 PPP 配置通常位于/etc/ppp/,而配置其路由的正确位置通常是ip-up或ip-up.d/。(提示:要确定您的发行版特定的文件位置,您必须阅读发行版的文档,或者 RTFM; 或者使用 grep 递归地在您的/etc中查找; 最坏的情况下,跟踪启动时发生的事情,如您的/etc/inittab.)
中所配置的。
一旦你可以将数据包路由到隧道的服务器端,你可能想把你的机器设置为防火墙客户端上所有朋友的路由器,实现一个完整的共享 VPN。 这不是防火墙穿透特有的,所以你只需要阅读相关的关于网络、路由和伪装的 HOWTO。 此外,出于安全原因,请务必在您的机器上设置适当的防火墙,特别是如果您要成为其他人的路由器。
最后,请记住,如果您在隧道的服务器端使用 pppd(而不是用户模式 slirp),您也必须在隧道的服务器端配置正确的路由和防火墙规则。
在此示例中,您的客户端机器通过以太网设备连接到防火墙 LANeth0。 它的 IP 地址是12.34.56.78; 它的网络是12.34.56.0/24; 它的路由器是12.34.56.1.
您的网络管理员可能已经告诉您使用12.34.56.1作为默认路由器,但您不应该这样做。 您应该只将其用作到防火墙客户端的路由。
假设您的防火墙客户端由网络组成12.34.0.0/16和12.13.0.0/16,以及主机11.22.33.44。 要使它们可以通过您的客户端路由器访问,请将以下路由添加到您的全局网络启动脚本
route add -net 12.34.0.0 netmask 255.255.0.0 gw 12.34.56.1 route add -net 12.13.0.0 netmask 255.255.0.0 gw 12.34.56.1 route add -host 11.22.33.44 gw 12.34.56.1 |
route add -net 12.34.56.0 netmask 255.255.255.0 dev eth0 |
route add default gw 12.34.56.1 |
route del default gw 12.34.56.1 |
route add default gw 10.0.2.2 |
route add -host 98.76.54.32 gw 12.34.56.1 route add -net 98.76.48.0 netmask 255.255.240.0 gw 10.0.2.2 |
$(getroute.pl 98.76.54.32) |