在天朝上网,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喽