现在应该都设置好了。现在是时候深吸一口气,尝试启动连接了。
在客户端机器上成为 root 用户并执行 vpn-pppssh 脚本。
client# /usr/local/bin/vpn-pppssh start |
连接需要一段时间,但之后应该会返回类似以下的内容
Using interface ppp1 Connect: ppp1 <--> /dev/pts/1 local IP address 192.168.3.1 remote IP address 192.168.3.2 |
它工作了吗?首先尝试 ping 客户端的 VPN 接口
client$ ping 192.168.3.2 |
如果这工作了,那么你可以访问客户端上的接口了。先别激动 -- 那只是简单的部分。现在,尝试 ping 服务器的 VPN 接口
client$ ping 192.168.3.1 |
如果你收到回复,那么恭喜你!你的 PPP-SSH VPN 看起来运行正常。数据包正在双向成功地传输。你可能想登录到你的服务器并尝试从服务器向客户端发起 ping,但在目前这个阶段,这几乎肯定会成功。
你可以使用 "vpn-pppssh stop" 命令关闭 VPN。
现在隧道已经工作了,你可能想将其集成到你的系统中,以便它可以自动启动,如第 7 节所述。此外,如果你想通过连接转发来自整个子网的数据包(而不仅仅是像我们现在设置的那样,只转发来自客户端和服务器的数据包),请参阅第 8 节。
脚本本身相当简单。然而,整个系统涉及很多小部分。如果其中任何一部分配置错误,都可能阻止你的 VPN 工作,甚至不会提示任何原因。这里列出了一些在你遇到困难时需要检查的事项
仔细检查你的网络值。尝试运行 "vpn-pppssh config" 以确保配置正确,并且 shell 没有破坏你的任何值。
回顾每个步骤,并确保一切都正常。
尝试暂时关闭客户端、服务器以及它们之间任何机器上的防火墙,看看是否有任何防火墙阻碍了连接(如果你可以在两台机器之间进行 SSH 连接,则不太可能)。
确保你的路由是正确的。你可以使用 "route -n" 命令列出你的路由。更多信息请参阅 Linux 网络管理员指南 和 http://www.linuxdoc.org/HOWTO/Adv-Routing-HOWTO.html。
当你尝试 ping VPN 接口时,如果你收到 "sendto: Operation not permitted" 错误,你可能是遇到了本地机器上的防火墙,该防火墙在数据包到达 VPN 网络接口之前就拒绝了它们。你的防火墙必须允许通过常规网络的 SSH 流量并且它必须允许所有通过你的 VPN 接口的流量。
用于在你的防火墙上为你的 PPP 接口开一个洞的 ipchains 命令将如下所示
ipchains -I input 1 -i ppp1 -s 192.168.3.0/24 -j ACCEPT ipchains -I output 1 -i ppp1 -d 192.168.3.0/24 -j ACCEPT |
当然,ppp1 必须是你的 PPP-SSH VPN 的网络接口,并且 IP 地址必须与本地接口的地址匹配。确保在客户端和服务器上都允许数据包。
请参阅 Linux 防火墙 HOWTO、内核 2.2 的 IPChains HOWTO 或内核 2.4 的 iptables 文档。