CentOS 6 配置VPN服务(pptpd)

转载请注明出处 ( sulabs.net )
因工作需求,搭建了VPN来方便在家或出差时连接公司网络,并访问内网服务器资源,在参考部分文章后,重新做了整理并修正。
CentOS 6 发行版中的内核已经包含了 MPPE模块,不需要再去安装配置动态内核加载(dkms ) 和 kernel_ppp_mppe 模块,网络环境如下:
公司服务器网卡配置如下( em 为接口名,也可以是 eth )
em1  IP: 183.62.222.2 连接公网
em2  IP: 192.168.1.254  连接内网,IP段 192.168.1.1 – 254
VPN 配置的客户端 IP段 192.168.10.2 – 254

1.下载pptpd
http://poptop.sourceforge.net/yum/stable/rhel6Server/x86_64/
根据需要选择 32位或64位的rpm安装包,或下载源码编译安装,当前版本为 1.3.4-2

wget http://poptop.sourceforge.net/yum/stable/rhel6Server/x86_64/pptpd-1.3.4-2.el6.x86_64.rpm

2.安装ppp 点对点协议,可直接yum安装,再安装pptpd

yum install -y ppp
rpm -Uvh pptpd-1.3.4-2.el6.x86_64.rpm

3.配置PPTPD
vi /etc/pptpd.conf 在尾行添加如下内容来指定IP地址

localip 192.168.10.1        #指定pptpd 服务端本地IP地址
remoteip 192.168.10.2-254   #指定远程vpn客户端拨号IP地址分配范围

vi /etc/ppp/options.pptpd  在尾行添加以下参数来指定DNS

ms-dns 8.8.8.8   # 指定为google的DNS,也可以指定为您服务器所在地接入商提供的DNS
ms-dns 8.8.4.4

vi /etc/ppp/chap-secrets    添加VPN用户名密码

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
 vpnuser        pptpd   vpnpass                 *

如上所示,client 指定用户名,这里为 vpnuser 。 server 则是定义服务名,这里用pptpd 。 secret 是指定用户密码,为 vpnpass。后面的 IP Address 是为此用户分配固定IP ,IP 必须为 pptpd.conf 中 remoteip 所指定的范围,有多个VPN用户,分行填写并配置。

4. 配置端口转发和防火墙
vi /etc/sysctl.conf  更改 net.ipv4.ip_forward 参数0 为1 启用转发

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

执行 sysctl -p 使配置生效

开启防火墙NAT转发配置,如下所示

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o em1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o em2 -j MASQUERADE

iptables -I FORWARD -s 192.168.10.0/24 -j ACCEPT
iptables -I FORWARD -d 192.168.10.0/24 -j ACCEPT

第一条规则指定将VPN客户端请求转发到 em1 (公网)网卡 即可实现VPN代理,用来访问互联网。
第二条将VPN客户端请求转发到 em2  (内网 ) 网卡,即可实现访问内网资源
第三,四条规则是允许 VPN客户端IP段的源地址,目标地址的转发请求

对于部分网站无法访问的问题,这个是因为PPTP默认MTU值不正确导致的,可以执行以下命令来变更ppp0设备的mtu

ifconfig ppp0 mtu 1496

或者在/etc/ppp/下创建ip-up脚本,每次有客户端连接后,会自动执行脚本来修改ppp设备的MTU值

#!/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin
export PATH
ifconfig $1 mtu 1496

1,2条规则可根据需要来灵活进行配置

service iptables save        保存防火墙规则配置
service iptables restart     重启防火墙
service pptpd start           开启pptpd 服务

注:VPN默认使用1723端口,需注意防火墙开启此端口

接下来用windows 客户端直接建立VPN拨号连接即可访问