我正在尝试通过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 进行路由。