Centos6搭建VPN服务器

# modprobe ppp-compress-18 && echo ok

这条执行执行后,显示“ok”则表明通过。不过接下来还需要做另一个检查,输入指令:

# cat /dev/net/tun
cat: /dev/net/tun: File descriptor in bad state

如果显示信息,说明通过,如果不支持,可以给vps商发ticket开通tun,大部分美国vps商都可以支持:

1、准备环境

1.1 首先安装ppp,命令:

#yum install -y ppp iptables

提示Complete! ,安装成功;

1.2 安装pptp,由于pptp没有存放在CentOS的源中,所以用yum命令安装返回的是找不到安装包的,需要从网上下载百度分享,安装命令如下:

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

2、配置pptp
2.1编辑/etc/pptpd.conf,命令如下

#vi /etc/pptpd.conf
将
#localip 192.168.0.1
#remoteip 192.168.0.20-238,192.168.0.245
修改成
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245 

2.2 编辑/etc/ppp/options.pptpd,命令如下

#vi /etc/ppp/options.pptpd
将
#ms-dns 10.0.0.1
#ms-dns 10.0.0.2
改成
ms-dns 223.5.5.5            
ms-dns 114.114.114.114

即将这两行第一个字符“#”去掉,而后修改DNS的IP,国内服务器我使用阿里云的DNS,国外的服务器最好使用谷歌的8.8.8.8 和 8.8.4.4

2.3设置使用pptp的用户名和密码

#vi /etc/ppp/chap-secrets
添加:
# client        server  secret                  IP addresses
testuser        pptpd   testpwd                 192.168.0.20

上面第二行代码的四项内容分别对应第一行中的四项。
“testuser”是Client端的VPN用户名;
“server”对应的是VPN服务器的名字,该名字必须和/etc/ppp/options.pptpd文件中指明的一样,或者设置成“*”号来表示自动识别服务器;
“secret”对应的是登录密码(使用"@#"特殊字符,会出现错误);
“IP addresses”对应的是可以拨入的客户端IP地址,如果不需要做特别限制,可以将其设置为“*”号(最好指定,否则会出现ip地址冲突的问题)。

3、修改内核设置,使其支持转发
将 /etc/sysctl.conf 文件中net.ipv4.ip_forward设置为 1 (如果没有,则按照格式新建一行):

#vi /etc/sysctl.conf
将net.ipv4.ip_forward=0
改成net.ipv4.ip_forward=1
将net.ipv4.tcp_syncookies= 1
改成 #net.ipv4.tcp_syncookies= 1
保存并退出
执行以下命令使修改后的内核生效
#sysctl -p

4、设置iptables转发

/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -jMASQUERADE         【注意网卡名字:eth0为公网名】
/sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 1723 -j ACCEPT     【防火墙允许1723端口】
/sbin/iptables -A INPUT -p gre -j ACCEPT
/sbin/iptables -A OUTPUT -p gre -j ACCEPT                                            【解决报错:LCP: timeout sending Config-Requests】
/etc/init.d/iptables save
/etc/init.d/iptables restart

5、重启pptp服务

#/etc/init.d/pptpd restart 

这里要注意一下,其实此时pptp还没运行起来。所以使用restart重启,会显示Shutting down pptp [FAILED]。还会有一个警告,可以忽略。如不放心可以再用以上命令重启一下pptp就非常顺利的运行了。

测试链接,查看日志是否 /var/log/message

6、设置开机启动

chkconfig pptpd on
chkconfig iptables on

链接VPN测试: tail -f /var/log/message

排错一关于VPN的问题: LCP: timeout sending Config-Requests
解决方案:多半是有一方的GRE协议未开启,检查服务器防火墙设置。

iptables -A INPUT -p gre -j ACCEPT
iptables -A OUTPUT -p gre -j ACCEPT //注意这个也要打开
/etc/init.d/iptables save //保存
/etc/init.d/iptables restart

排错二: kernel: ppp: compressor dropped pkt

1、 尝试手动配置mtu值。

# ifconfig ppp0 mtu 1400

改完确实解决了暂时性问题,但是重启后依然会恢复到1396。

cat /etc/ppp/if-up  从配置文件中得知pptp启动脚本中支持ip-up.local名字的脚本。编写自动配置mtu值的脚本。启服务时会自动运行该脚本。即可解决该问题。

vi /etc/ppp/ip-up.local

#!/bin/sh
for network in `ifconfig |grep ppp| awk '{print $1}'`
do
  ifconfig $network mtu 1400
done

#ifconfig ppp0 mtu 1400
#ifconfig ppp1 mtu 1400

# chmod +x /etc/ppp/ip-up.local

参考:

阿里云服务器配置VPN详解


centos 快速搭建vpn

经验秘籍:云免openvpn系列教程,藏藏教你搭建免流服务器

zproxy的搭建:

Linux CentOS 6.4/6.5 配置VPN【图文|详细教程】

pptpd配置参数详解

修改pptp默认端口号1723的例子:

服务器上vi /etc/services

注册表

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}]

未经允许不得转载:好玩吧 » Centos6搭建VPN服务器