6. 启动连接

现在应该都设置好了。现在是时候深吸一口气,尝试启动连接了。

  1. 在客户端机器上成为 root 用户并执行 vpn-pppssh 脚本。

    client# /usr/local/bin/vpn-pppssh start
  2. 连接需要一段时间,但之后应该会返回类似以下的内容

    Using interface ppp1
    Connect: ppp1 <--> /dev/pts/1
    local  IP address 192.168.3.1
    remote IP address 192.168.3.2
  3. 它工作了吗?首先尝试 ping 客户端的 VPN 接口

    client$ ping 192.168.3.2
  4. 如果这工作了,那么你可以访问客户端上的接口了。先别激动 -- 那只是简单的部分。现在,尝试 ping 服务器的 VPN 接口

    client$ ping 192.168.3.1

    如果你收到回复,那么恭喜你!你的 PPP-SSH VPN 看起来运行正常。数据包正在双向成功地传输。你可能想登录到你的服务器并尝试从服务器向客户端发起 ping,但在目前这个阶段,这几乎肯定会成功。

你可以使用 "vpn-pppssh stop" 命令关闭 VPN。

现在隧道已经工作了,你可能想将其集成到你的系统中,以便它可以自动启动,如第 7 节所述。此外,如果你想通过连接转发来自整个子网的数据包(而不仅仅是像我们现在设置的那样,只转发来自客户端和服务器的数据包),请参阅第 8 节

6.1. 故障排除

脚本本身相当简单。然而,整个系统涉及很多小部分。如果其中任何一部分配置错误,都可能阻止你的 VPN 工作,甚至不会提示任何原因。这里列出了一些在你遇到困难时需要检查的事项

6.1.1. sendto: 操作不允许

当你尝试 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 文档。