Home » Linux » CentOS 6.4 架设基于 pptpd 的 vpn 服务
  • 01
  • 10月

本文介绍如何在 CentOS 6.x 系统下架设基于 pptpd 的 VPN 服务器。

1   1、准备环境

注解

本环境是 centos 6.4 64bit 系统

PPTPD要求Linux内核支持mppe,一般来说CentOS安装时已经包含了;

还是先检查下PPP和TUN有没有启用吧:

cat /dev/ppp
cat /dev/net/tun

显示结果为:

  • cat: /dev/ppp: No such device or address
  • cat: /dev/net/tun: File descriptor in bad state

表明通过,上述两条只要有一个没通过都不行。

通过以后,下面安装 ppp :

yum install ppp

2   2、安装 PPTPD

由于 6.4 版本 ppp 版本过高,网上找的大部分 pptpd 都无法安装。现提供一个可用的新版本:

下载地址:

安装:

rpm -ivh pptpd-1.3.4-2.el6.x86_64.rpm

或者:

wget http://soft.7dot.com/soft/pptpd-1.3.4-2.el6.x86_64.rpm
yum install pptpd-1.3.4-2.el6.x86_64.rpm

3   3、配置

  1. 编辑 PPTP 配置文件 /etc/ppp/options.pptpd 如内容下:

    ms-dns 8.8.8.8
    ms-dns 8.8.4.4
    

去掉 ms-dns 前面的 # 即将 dns 设置为谷歌公用的 dns 服务器

  1. 编辑配置文件 /etc/pptpd.conf ,内容如下:

    localip 192.168.1.1
    remoteip 192.168.0.100-110
    

将这两行前的 # 删掉, localip 为 vpn 服务器公网 ip , remoteip 为地址段,用来分配给客户端的 ip 范围

  1. 对用户认证文件 /etc/ppp/chap-secrets 进行配置,内容如下:

    # client     server   secret     IP addresses
    test       pptpd     test             *
    

client 对应客户端登录用户名, secret 为密码, ip 下的 * 为随机分配刚才 remoteip 池中的地址, pptpd 则为服务名

4   4、设置 linux 内核,支持 ip 转发

配置 /etc/sysctl.conf 文件:

net.ipv4.ip_forward = 1 # 将值改为1,即为启用
net.ipv4.tcp_syncookies = 1 # 将此行[注释]掉 #

保存退出,执行 /sbin/sysctl -p 使之生效

5   5、设置防火墙,启用 nat 转发

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source *.*.*.* (*.*.*.*为vpn服务器的公网IP地址)

保存 iptables 转发规则:

/etc/init.d/iptables save

重启 iptables :

/etc/init.d/iptables restart

重启 pptp 服务:

/etc/init.d/pptpd restart

设置开机自动运行 pptp 服务:

chkconfig pptpd on

设置开机自动运行 iptables 服务:

chkconfig iptables on

至此, centos 架设 VPN 完成。

6   6、iptables 说明

若防火墙开启,需要开启 47(GRE), 53(DNS), 1723(PPTPD) 这 3 个端口:

iptables -A INPUT -p tcp --dport 47 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT

若 FORWARD chain 被 DROP ,则需要增加下面两个规则:

iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -j ACCEPT

之前因为 iptables 模板的问题,把所有 INPUT 和 FORWARD 都 DROP 了,再者加入新规则的时候,位置不对,规则没有生效,导致调试很久都没有发现问题。

注解

  1. 客户端设置为 pptp 连接模式;
  2. 由于我的服务器在亚马逊的 EC2 上,所以还得在 Security Group 里放行 tcp 1723 端口
Tags:   vpncentos .