VPN PPP-SSH Mini-HOWTO | ||
---|---|---|
上一页 |
如果您尝试连接网络,而不仅仅是主机,则只需阅读本节。我假设您的主机到主机隧道工作正常,现在您的客户端和服务器计算机可以完美地交换 ping 包。现在,是时候允许连接到客户端和服务器机器的网络也使用该隧道了。
首先,您需要确保允许数据包在您的接口之间转发。您可以通过 proc 配置接口启用此功能。最好在启动时执行一次,但您也可以将其放入 vpn-pppssh 脚本中,甚至在 /etc/init.d/ip-up.d 目录中创建一个脚本(请参阅第 7.2 节),如果您愿意的话。
echo 1 > /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/conf/ppp1 |
在子网中的所有计算机上,您需要将本地 VPN 主机设置为通往隧道另一侧所有网络的网关。这只是告诉计算机“如果您有任何发往 VPN 对侧网络的数据包,请将它们发送到本地 VPN 主机”。请注意,如果 VPN 主机已经是所有计算机的默认网关,那么您无需担心此步骤——数据包将自动转发。
在下面的示例中,我的 VPN 主机在本地网络上的 IP 地址为 192.168.1.1。在 VPN 网络上的 IP 地址为 192.168.3.2。 VPN 网络包含客户端和服务器 VPN 接口以及链路对侧的所有计算机,为 192.168.3.0/24。因此,在我想能够通过 VPN 发送数据包的每台本地计算机上,我都需要运行以下命令
# route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.1.1 |
现在,任何发往本地机器上 192.168.3.0/24 网络的数据包都将被中继到本地网络上的主机 192.168.1.1,以便通过 VPN 转发。
应该不需要设置自定义路由——pppd 尝试为您完成所有操作。但是,如果您发现 pppd 不能满足您的需求,那么放置路由命令的位置就在 vpn-pppssh 脚本本身中。要更改客户端上的路由,只需运行 route。要更改服务器上的路由,请使用 ssh 将这些命令发送到服务器。这是一个例子
route add -net $NET1 gw $SERVER_IFIPADDR ssh -o Batchmode=yes $SERVER_HOSTNAME -l$SERVER_USERNAME route add -net $NET2 gw $CLIENT_IFIPADDR |
您甚至可以将一台或两台主机设置为伪装通过 VPN 隧道的所有连接。有关更多信息,请参阅IP Masquerade HOWTO。
# ipchains -A forward -i ppp1 -s 192.168.0.0/24 -j MASQ |
这应该是您需要做的所有事情,以将数据包从连接到客户端或服务器的子网转发到对侧机器。愿您的 PPP-SSH VPN 在未来多年为您安静可靠地服务。