当前服务器环境: Centos 6
PPTP的配置主要有下面五个步骤:
- 验证内核是否加载了MPPE模块
- 安装所需的软件包
- 配置PPP和PPTP的配置文件
- 打开内核的IP转发功能
- 启动pptpd守护进程
- 配置iptables防火墙放行和转发规则
1、验证内核是否加载了MPPE模块:
1 |
modprobe ppp-compress-18 && echo MPPE is ok |
2、安装所需的软件包:
安装前确保添加了 epel 源, 如果没有, 请参考 <<CentOS 添加常用 yum 源>>.
安装 PPP 与 pptpd
1 |
yum install pptpd ppp |
设置随系统启动
1 |
chkconfig --level 3 pptpd on |
3、配置PPP和PPTP的配置文件:
配置ppp需要编辑它的两个配置文件,一个是option(选项)文件,一个是用户账户文件。首先编辑option文件:
1 |
vi /etc/ppp/options.pptpd |
如果客户端是windows系统,必须提供 ms-dns 参数,它们指定VPN使用的DNS服务器。毕竟VPS位于国外,所以推荐使用Google Public DNS,当然也可以修改为你的VPS所在ISP提供的DNS。
1 2 |
ms-dns 8.8.8.8 ms-dns 8.8.4.4 |
接下来修改存储用户账户的文件:
1 |
vi /etc/ppp/chap-secrets |
这个文件非常简单,其中用明文存储VPN客户的用户名、服务名称、密码和IP地址范围,每行一个账户:
1 2 |
username1 pptpd passwd1 * username2 pptpd passwd2 * |
其中第一第三列分别是用户名和密码;第二列应该和上面的文件/etc/ppp/options.pptpd中name后指定的服务名称一致;最后一列限制客户端IP地址,星号表示没有限制。
下面配置 pptpd
1 |
vi /etc/pptpd.conf |
同样, 如果客户端是 windows 系统,必须设置 localip 和 remoteip 两个参数, localip 是服务端的虚拟地址, remoteip 是客户端的虚拟地址. 使用 ifconfig 查看你本机 ip, 只要不冲突即可. 我这里使用192.168.0.0段.
1 2 |
localip 192.168.0.2-20 remoteip 192.168.0.200-250 |
4、打开内核的IP转发功能:
要使VPN服务器可以作为网络请求的中转代理,能够使客户端通过VPN访问Internet,还需要开启内核的IP转发功能。可以编辑配置文件:
1 |
vi /etc/sysctl.conf |
找到 net.ipv4.ip_forward = 0, 将 0 改为 1
1 |
net.ipv4.ip_forward = 1 |
然后执行下面命令使上述修改生效:
1 |
sysctl -p |
5、启动pptpd守护进程:
1 |
service pptpd start |
6、配置iptables防火墙放行和转发规则:
最后,还需要配置防火墙。这里配置防火墙有三个目的:一是设置默认丢弃规则,保护服务器的安全;二是放行我们允许的数据包,提供服务;三是通过配置nat 表的POSTROUTING链,增加NAT使得VPN客户端可以通过服务器访问互联网。总之我们的原则就是,只放行我们需要的服务,其他统统拒绝。
首先介绍跟PPTP VPN相关的几项:
- 允许 GRE(Generic Route Encapsulation) 协议,PPTP 使用 GRE 协议封装 PPP 数据包,然后封装成 IP 报文
- 放行 PPTP 服务的1723 端口
- 放行状态为RELATED,ESTABLISHED的入站数据包(正常提供服务的机器上防火墙应该都已经配置了这一项)
- 放行服务端 192.168.0.0/24 网段经网卡 eth0 转出的数据包
- 放行客户端 192.168.0.0/24 网段经网卡 eth0 转入的数据包
- 为从服务端 192.168.0.0/24 网段经网卡 eth0 转出的数据包做 NAT
1 2 3 4 5 6 7 |
iptables -A INPUT -p gre -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -s 192.168.0.0/24 -o eth0 -j ACCEPT iptables -A FORWARD -d 192.168.0.0/24 -i eth0 -j ACCEPT iptables -I FORWARD -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1356 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE |
1 2 |
service iptables save service iptables restart |
博主,网站展示代码的插件名字能告诉下么,感觉这个插件效果不错!
Crayon Syntax Highlighter