在CentOS 5.8上搭建PPTP VPN服务

时间:2023-03-08 16:10:40

在天朝上网,vpn已经是必备之物了,我也记录一下搭建vpn服务的方法。

1. 确认内核是否支持MPPE模块
MPPE用来支持Microsoft Point to Point Encryption, 包括微软和Linux桌面都支持MPPE

modprobe ppp-compress-18 && echo ok

2. 安装ppp软件包
pptp是使用ppp协议对数据进行封装的,然后将ppp数据帧封装在ip数据报文中。

yum install ppp

3. 安装pptp软件包
下载32位rpm包:

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

4. 配置pptp

vim /etc/ppp/options.pptpd

将以下配置项打开:

name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd

配置localip和remoteip:

vim /etc/pptpd.conf
option /etc/ppp/options.pptpd
logwtmp
localip 192.168.0.1
remoteip 192.168.0.207-217

VPN可以这样理解,Linux客户端使用一个虚拟网络设备ppp0(Windows客户端也可以理解成VPN虚拟网卡),连接到服务器的虚拟网络设备ppp0上,这样客户端就加入了服务器端ppp0所在的网络。localip就是可以分配给服务器端ppp0的IP地址,remoteip则是将要分配给客户端ppp0(或者虚拟网卡)的。
这两项都可以是多个IP,一般localip设置一个IP就行了,remoteip则视客户端数目,分配一段IP。其中remoteip的IP段需要和localip的IP段一致。
localip和remoteip所处的IP段可以随意些指定,但其范围内不要包含实际网卡eth0的IP地址。
 
5. 配置帐号

vim /etc/ppp/chap-secrets

这个文件非常简单,其中用明文存储VPN客户的用户名、服务名称、密码和IP地址范围,每行一个账户:

username1    pptpd    passwd1    *
username2    pptpd    passwd2    *

6. 打开内核的IP转发功能

vim /etc/sysctl.conf

修改net.ipv4.ip_forward为1

net.ipv4.ip_forward = 1

使修改生效:

sysctl -p

6. 启动服务,并开机自动启动

/etc/init.d/pptpd start
chkconfig --level 35 pptpd on

7. 配置路由支持vpn的转发
请先按照这里建立ip路由,再执行下面的命令:

iptables -A INPUT -p gre -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 1723 -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 -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

保存下路由信息:

/etc/init.d/iptables save

好了,现在可以在客户端连接搭建好的VPNFQ喽