Linux下搭建PPTP VPN 翻墙


1、检查服务器是否有必要的支持。
如果检查结果没有这些支持的话,是不能安装pptp的。执行指令:
         #strings '/usr/sbin/pppd' |grep -i mppe|wc -l
如果以上命令输出为“0”则表示不支持MPPE;输出为“30”或更大的数字就表示支持MPPE。
#modprobe ppp-compress-18 && echo ok
这条执行执行后,显示“ok”则表明通过。不过接下来还需要做另一个检查,输入指令:
#cat /dev/net/tun
如果这条指令显示结果为下面的文本,则表明通过:
cat: /dev/net/tun: File descriptor in bad state
上述两条均通过,才能安装pptp。否则就只能考虑openvpn,或者请你的服务商来解决这个问题。
2、安装ppp和iptables。
默认情况下,完整的CentOS是带有这两个组件的,但是精简版的系统可能没有。我们输入下面的命令来确认,如果没有则进行安装,有的话系统不会做任何动作:
#yum install -y ppp iptables
3、安装pptp。
       wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.rhel5.i386.rpm
       rpm -ivh pptpd-1.3.4-2.rhel5.i386.rpm
       #apt-get install pptpd   #for ubuntu
4、配置pptp。
4.1.首先我们要编辑/etc/pptpd.conf文件:    
 #vim /etc/pptpd.conf
找到“localip”和“remoteip”这两个配置项,将前面的“;”注释符去掉,更改为你期望的IP段值。localip表示服务器的IP,remoteip表示分配给客户端的IP地址,可以设置为区间。这里我们使用pptp默认的配置:
localip 192.168.0.1  (对外的IP)
remoteip 192.168.0.100-200
注意,这里的IP段设置,将直接影响后面的iptables规则添加命令。
其它配置解释:
option /etc/ppp/pptpd-option #指定PPP选项文件的位置
debug #启用调试模式
localip 192.168.0.1 #VPN服务器的虚拟ip
remoteip 192.168.0.200-238,192.168.0.245 #分配给VPN客户端的虚拟ip
4.2.接下来我们再编辑/etc/ppp/options.pptpd (pptpd-option #for ubuntu)文件,为VPN添加Google DNS:
#vim /etc/ppp/options.pptpd
在末尾添加下面两行:
ms-dns 8.8.8.8
ms-dns 8.8.4.4
logfile /var/log/pptpd.log
如果出现错误734 在/etc/ppp/pptpd-options里,找到require-mppe-128一行,加井号注释掉
其它配置解释:
name pptpd                      #pptpd服务的名称
refuse-pap                      #拒绝pap身份认证模式
refuse-chap                     #拒绝chap身份认证模式
refuse-mschap                   #拒绝mschap身份认证模式
require-mschap-v2               #允许mschap-v2身份认证模式
require-mppe-128                #允许mppe 128位加密身份认证模式
ms-dns 8.8.8.8                  #使用Google DNS
ms-dns 8.8.4.4                  #使用Google DNS
proxyarp                        #arp代理
debug                           #调试模式
dump                            #服务启动时打印出所有配置信息
lock                            #锁定TTY设备
nobsdcomp                       #禁用BSD压缩模式
logfile /var/log/pptpd.log      #输出日志文件位置
配置实例:
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
nodefaultroute
lock
nobsdcomp
ms-dns 8.8.8.8
ms-dns 8.8.4.4
logfile /var/log/pptpd.log

5、设置pptp VPN账号密码。
我们需要编辑/etc/ppp/chap-secrets这个文件:
#vim /etc/ppp/chap-secrets
在这个文件里面,按照“用户名 pptpd 密码*”的形式编写(#第一个*代表服务可以是PPTPD也可以是L2TPD,第二个*代表随机分配ip),一行一个账号和密码。比如添加用户名为test,密码为1234的用户,则编辑如下内容:
test * 1234 *
6、修改内核设置,使其支持转发。
编辑/etc/sysctl.conf文件:
#vim /etc/sysctl.conf
将“net.ipv4.ip_forward”改为1,变成下面的形式:
net.ipv4.ip_forward=1
保存退出,并执行下面的命令来生效它:
#sysctl -p
7、添加iptables转发规则。
经过前面的6个步骤,我们的VPN已经可以拨号了,但是还不能访问任何网页。最后一步就是添加iptables转发规则了,输入下面的指令:
#iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
需要注意的是,这个指令中的“192.168.0.0/24”是根据之前的配置文件中的“remoteip”网段来改变的。此外还有一点需要注意的是eth0,如果你的外网网卡不是eth0,而是eth1,那么请记得将eth0也更改为对应的网卡编号,不然是上不了网的!
然后我们输入下面的指令让iptables保存我们刚才的转发规则,以便重启系统后不需要再次添加:
#/etc/init.d/iptables save  #ubuntu可以把上面那条规则写道/etc/rc.local里面,使开机生效
vi /etc/sysconfig/iptables
在*filter链下面增加(如果防火墙没有其它禁止的规则可以不用.)
#每拨入一个VPN客户端就会生成一个ppp虚拟网络接口,要允许访问网络 ppp+表示所有ppp接口
-A RH-Firewall-1-INPUT -i ppp+ -j ACCEPT       
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1723 -j ACCEPT    //pptpd使用的端口
保存,然后我们重启iptables:
#/etc/init.d/iptables restart
8、重启pptp服务。
输入下面的指令重启pptp:
#/etc/init.d/pptpd restart
现在你已经可以连接自己的VPN并浏览网页了。不过我们还需要做最后的一步。
9、设置开机自动运行服务。
我们最后一步是将pptp和iptables设置为开机自动运行,这样就不需要每次重启服务器后手动启动服务了。当然你不需要自动启动服务的话可以忽略这一步。输入指令:
#chkconfig pptpd on
#chkconfig iptables on
这样就大功告成了,赶快到Windows下建立一个VPN连接,IP填写自己的服务器IP,用户名和密码填写自己设置好的用户名和密码,点击“连接”,成功后就可以使用服务器去浏览网页啦!