Centos 6.x 搭建 VPN 实战

检测是否符合pptp的搭建环境的要求

使用下面的指令:

1
2
3
cat /dev/net/tun
如果这条指令显示结果为下面的文本,则表明通过:
cat: /dev/net/tun: File descriptor in bad state

上述命令测试通过,就能安装pptp。否则就只能考虑openvpn

安装ppp和iptables

1
yum install -y perl ppp iptables //centos默认安装了iptables和ppp

安装pptpd

1
2
rpm -Uvh http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm
yum install pptpd

修改配置文件

1
2
3
4
5
6
cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak
vi /etc/ppp/options.pptpd

将如下内容添加到到options.pptpd中:
ms-dns 8.8.8.8
ms-dns 8.8.4.4
1
2
3
4
5
6
7
cp /etc/ppp/chap-secrets   /etc/ppp/chap-secrets.bak
vi /etc/ppp/chap-secrets

chap-secrets内容如下:
# Secrets for authentication using CHAP
# client server secret IP addresses
myusername pptpd mypassword *
1
2
3
4
5
6
7
8
9

cp /etc/pptpd.conf /etc/pptpd.conf.bak
vi /etc/pptpd.conf

添加下面两行:
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

pptpd.conf这个配置文件必须保证最后是以空行结尾才行,否则会导致启动pptpd服务时,出现“Starting pptpd:”,一直卡着不动的问题,无法启动服务,切记呀!
1
2
3
4
5

vi /etc/sysctl.conf //修改内核设置,使其支持转发

将“net.ipv4.ip_forward”改为1
同时在“net.ipv4.tcp_syncookies = 1”前面加#
1
2
3
4
5
6
7
8
9
10

执行下面的命令
sysctl -p

如果有is an unkonw key 的错误,先运行下面两个命令,再重新执行sysctl -p
modprobe bridge
lsmod|grep bridge
sysctl -p

到此配置完毕

启动pptp vpn服务和iptables

1
2
3
4
5
6
7
8
9
10
11
12
#添加ip转发
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 公网IP
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

#保存设置
/etc/init.d/iptables save
/sbin/service iptables restart
service pptpd restart

#添加服务自启
chkconfig pptpd on
chkconfig iptables on

基本完毕

相关参考资料