1. 获得VPN账号

当你有了基于PPTP协议的VPN账号后,怎么在ubuntu中配置!
VPN账号包括3个部分:IP,用户名,密码

比如:(只为演示说明,此账号不可用)
ip: 123.123.123.123
用户名:xx1
密码: xx2

2. ubuntu客户端界面配置

vpn-ubuntu

1. 点击右上角网络 》VPN Connections 》Configure VPN
2. 新建一个VPN连接》Add
3. 输入VPN账号:》Advanced
Connection name: 连接号
Gateway: VPN服务器IP
Username: 用户名
Password: 密码
4. 高级选项 》 Use Point-to-Point encryption(MPPE)
5. 选择VPN连接 》 连接成功提示。

3. ubuntu命令行配置

安装pptp客户端软件

~ sudo apt-get install pptp-linux

查看网络配置

~ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:90:e8:19
          inet addr:192.168.1.200  Bcast:192.168.1.255  Mask:255.255.255.

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0

~ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

~ ip route 
default via 192.168.1.1 dev eth0  metric 100
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.200

初始化一个VPN的连接通道:myvpn

~ sudo pptpsetup --create myvpn --server xxx.xxx.xxx.xxx --username xx1--password xx2--encrypt --start

Using interface ppp0
Connect: ppp0  /dev/pts/1
CHAP authentication succeeded
MPPE 128-bit stateless compression enabled
local  IP address 10.10.10.3
remote IP address 10.10.10.1

成功连接到远程VPN服务器。

通过刚才的创建脚步:
在/etc/ppp/peers目录下面,会生成一个叫myvpn的文件。
在/etc/ppp目录下面,用户名和密码会写在chap-secrets文件中。

通过网站路由功能,测试VPN


#安装traceroute 
~ sudo apt-get install traceroute 

~ traceroute www.google.com
traceroute to www.google.com (101.23.128.17), 30 hops max, 60 byte packets
1 localhost (192.168.1.1) 2.222 ms 3.144 ms 3.132 ms 2 111.192.144.1 (111.192.144.1) 80.279 ms 80.632 ms 80.624 ms 3 101.23.128.17 (101.23.128.17) 25.890 ms 28.065 ms 28.420 ms

我们发现虽然VPN已经连接成功,但是路由没有通过VPN上网,第1跳还是localhost (192.168.1.1)

再次查看网络连接配置


~ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:90:e8:19
          inet addr:192.168.1.200  Bcast:192.168.1.255  Mask:255.255.255.0


lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0


ppp0      Link encap:Point-to-Point Protocol
          inet addr:10.10.10.3  P-t-P:10.10.10.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1496  Metric:1
          RX packets:7 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:70 (70.0 B)  TX bytes:76 (76.0 B)

~ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
10.10.10.1      0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
50.116.27.194   192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

我们发现默认路由是指向eth0。

下面修改路由配置:

#修改路由命令
~ sudo ip route del default 
~ sudo ip route add default dev ppp0

~ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0
10.10.10.1      0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
50.116.27.194   192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0


~ traceroute www.google.com
traceroute to www.google.com (101.23.128.17), 30 hops max, 60 byte packets
1 localhost (10.10.10.1) 281.093 ms 281.414 ms 280.941 ms 2 router2-dal.linode.com (67.18.7.162) 281.225 ms 281.109 ms 281.841 ms 3 101.23.128.17 (101.23.128.17) 522.068 ms 517.535 ms 517.240 ms

查看第一跳,localhost (10.10.10.1),已经通过VPN实现路由。

停止VPN


~ sudo poff myvpn

~ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:90:e8:19
          inet addr:192.168.1.200  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe90:e819/64 Scope:Link


lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0


重启VPN连接


~ sudo pon myvpn  这个时候ppp0还不是默认的路由指向
~ sudo ip route add default dev ppp0   将ppp0配置成路由默认的指向

#路由跟踪正确
~ traceroute www.google.com
traceroute to www.google.com (123.125.34.30), 30 hops max, 60 byte packets
1 localhost (10.10.10.1) 293.397 ms 293.782 ms 293.668 ms 2 router2-dal.linode.com (67.18.7.162) 293.530 ms 293.721 ms 294.223 ms 3 xe-2-0-0.car04.dllstx2.networklayer.com (67.18.7.93) 293.454 ms 293.358 ms 293.239 ms
删除VPN
sudo pptpsetup --delete vpnname


vpn之间的切换

切换到正常网络(不用vpn)
~ sudo route del default 
~ sudo route add default gw xxx.xxx.xxx.xxx(网关)
切换到vpn
~ sudo route del default 
~ sudo route add default dev ppp0
遇到某些网站打不开,实在找不到问题,就可能是mtu的问题了
1. 确认vim /etc/ppp/options.pptpd有如下两行
  1. mtu 1440
  2. mru 1440
复制代码
2. 需要添加一条iptables规则:
  1. iptables -I FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
复制代码
这样就可以打开了。

或者
另外,给出一个临时的解决方案,当mtu报错的时候可以直接了本地修改mtu值:
  1. ifconfig ppp0 mtu 1440
原理:http://bbs.konotes.org/thread-4225-1-1.html