通过 PPTP 将 Linux 服务器连接到 VPN 服务器

通过 PPTP 将 Linux 服务器连接到 VPN 服务器

我正在尝试通过PPTP 客户端连接到 VPN 服务器。我按照文档。连接已正确添加为接口,但不知何故连接不起作用。ping -I ppp0 google.com不返回任何内容,traceroute -i ppp0仅显示第一跳,然后什么也不显示。有什么想法出错了吗?路由配置不正确?

ifconfig配置接口的输出:

ppp0      Link encap:Point-to-Point Protocol  
          inet addr:xx.x.xxx.xxx  P-t-P:10.0.0.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1496  Metric:1
          RX packets:415 errors:0 dropped:0 overruns:0 frame:0
          TX packets:468 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:31428 (31.4 KB)  TX bytes:32394 (32.3 KB)

route输出

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
xx.x.x.1        *               255.255.255.255 UH    0      0        0 ppp0
xx.xxx.xxx.xx   sp.ip           255.255.255.255 UGH   0      0        0 eth1
192.168.3.0     *               255.255.255.0   U     0      0        0 eth2
192.168.2.0     *               255.255.255.0   U     0      0        0 eth1
default         sp.ip           0.0.0.0         UG    100    0        0 eth1

答案1

您需要在远程服务器上配置 NAT IP-Masquerading iptables。否则您的客户端服务器无法使用远程服务器的单个 IP 地址通过 VPN 访问互联网。

简而言之:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

这两行显示了如何设置 IP 伪装。

如果您不熟悉iptables,互联网上有很多相关教程。

仅供参考,tldp 提供了有关设置 ip 伪装的相当详细的说明。http://tldp.org/HOWTO/html_single/Masquerading-Simple-HOWTO/

答案2

如果您没有路由,怎样才能通过 ppp0 ping 某个东西?

第一:添加VPN服务器的路由

route add $VPN_SERVER_IP gw $GATEWAY_TO_VPN_SERVER

(正如我所见 $GATEWAY_TO_VPN_SERVER=sp.ip)

第二:删除eth1的默认路由

route del default dev eth1

第三:添加ppp0的默认路由

route add default dev ppp0

从此刻起,所有软件包都将通过 dev ppp0 进行路由。

相关内容