首页 » 网络 » pptp

查看系统是否支持ppp

# file /dev/ppp 
# /dev/ppp: character special (108/0)

通过pptpsetup建立pptp连接

# pptpsetup --create pptpd --server 172.17.1.26 --username USRNAME --password PASSWD --encrypt --start
Using interface ppp0
Connect: ppp0 <--> /dev/pts/1
CHAP authentication succeeded
MPPE 128-bit stateless compression enabled
local  IP address 10.10.255.132
remote IP address 2.2.2.2

查看新建立的连接

# ifconfig ppp0
ppp0      Link encap:Point-to-Point Protocol  
          inet addr:10.10.255.132  P-t-P:2.2.2.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1488  Metric:1
          RX packets:27 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:2135 (2.0 KiB)  TX bytes:80 (80.0 b)

虽然新连接已建立,但网络仍不可用:

# ping berlinix.com
PING berlinix.com (173.255.196.50) 56(84) bytes of data.

--- berlinix.com ping statistics ---
21 packets transmitted, 0 received, 100% packet loss, time 20001ms

查看路由表

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.17.1.26     192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
2.2.2.2         0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

从路由表可见,有两条网关记录,通往172.17.1.26(pptpd)走网关192.168.1.1(第一条记录),通往其他地址走网关192.168.1.1(最后一条记录),因此可理解为几乎所有往外发的数据包都匹配最后一条路由规则,直接通过192.168.1.1出去。 另外到2.2.2.2是通过默认网关(2.2.2.2本身是一个法国IP,这里等同于一个本地IP了)。

为了让所有往外发的数据包通过ppp0,需要修改路由配置

# route del default; route add default dev ppp0; route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.17.1.26     192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
2.2.2.2         0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0

再次测试

# ping berlinix.com
PING berlinix.com (173.255.196.50) 56(84) bytes of data.
64 bytes from li206-50.members.linode.com (173.255.196.50): icmp_seq=1 ttl=43 time=262 ms
64 bytes from li206-50.members.linode.com (173.255.196.50): icmp_seq=2 ttl=43 time=290 ms

--- berlinix.com ping statistics ---
3 packets transmitted, 2 received, 33% packet loss, time 2000ms
rtt min/avg/max/mdev = 262.045/276.331/290.618/14.296 ms

删除pptp连接

# pptpsetup --delete pptpd

恢复网关

# route del default dev ppp0; route add default gw 192.168.1.1 dev eth0

pptpsetup

pptpsetup用来建立PPTP(Point-to-Point Tunneling Protocol)连接。它的命令行参数简单且易于理解。

--create TUNNEL
创建一个隧道。
--delete TUNNEL
删除一个隧道。
--server SERVER
pptpd的域名或IP地址。
--username USRNAME
用户名。
--password PASSWD
密码。
--encrypt
是否加密传输。
--start
是否配置完成后立即启动连接。

一旦通过pptpsetup创建连接(如 pptpsetup --create pptpd),它将生成一个脚本(/etc/ppp/peers/pptpd),并在/etc/ppp/chap-secrets记录用户名密码信息:

# cat /etc/ppp/peers/pptpd 
# written by pptpsetup
pty "pptp 172.17.1.26 --nolaunchpppd"
lock
noauth
nobsdcomp
nodeflate
name USRNAME
remotename pptpd
ipparam pptpd
require-mppe-128
# cat /etc/ppp/chap-secrets   
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses

# added by pptpsetup for pptpd
USRNAME pptpd "PASSWD" *

分享

0