侧边栏壁纸
博主头像
WinJay博主等级

博观而约取 厚积而薄发

  • 累计撰写 307 篇文章
  • 累计创建 165 个标签
  • 累计收到 1 条评论
隐藏侧边栏

linux的vps centos6.5环境下搭建vpnServer

WinJay
2014-10-15 / 0 评论 / 0 点赞 / 57 阅读 / 5,356 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-01-20,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

上周搞了个美国的vps,就迫不及待的尝试去搭建vpn服务,可是中间也是遇到诸多困难,真是一把辛酸泪啊。昨天终于把所有的问题解决掉,vpn顺利连接,速度soso的,上youtube看视频那叫一个快,赞一下!!!今天结合自己度娘和谷歌和实践写这篇文章,分享给大家。首先我的环境是:centos6.5。总的来说,搭建vpn主要分为5个大步骤:

  • 1:检查自己的vps是不是支持vpn
    2:安装所需的软件包
    3:配置PPP和PPTP的配置文件
    4:打开内核的IP转发功能
    5:启动pptpd守护进程
    6:配置iptables防火墙放行和转发规则
    7:配置客户端连接其中大部分人会死到第一步,第二步和第六步。

第一步:检查自己的vps是不是支持vpn

 cat /dev/pppcat /dev/net/tun

如果支持的话 显示结果为:cat: /dev/ppp: No such device or address和cat: /dev/net/tun: File descriptor in bad state。

第二步:安装所需的软件包

我们要注意,在安装ppp和pptpd的时候一定要注意版本对应。一般啊来说ppp 2.4.4——————>pptpd 1.3.4 ppp 2.4.5——————>pptpd 1.4.0

如果版本不对应就会提示错误:ppp = 2.4.4 is needed by pptpd-1.3.4-2.rhel5.x86_64”或者“ppp = 2.4.4 is needed by pptpd-1.3.4-2.rhel5.x86”

先来安装ppp,我们采用yum安装。

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

现在最新版的centos的yum源一般都是ppp2.4.5了,所以接下来你安装pptpd的版本就应该是1.4.0.

我们去RPM Search下载pptpd1.4.0版本。

 wget ftp://ftp.sunet.se/pub/Linux/distributions/fedora/epel/6/i386/pptpd-1.4.0-3.el6.i686.rpm              //32位版本的
 wget ftp://ftp.sunet.se/pub/Linux/distributions/fedora/epel/6/x86_64/pptpd-1.4.0-3.el6.x86_64.rpm         //64位版本的
 rpm -ivh pptpd-1.4.0-3.el6.x86_64.rpm

如果出现 <a data-original-title="" href="http://rpm.pbone.net/index.php3/stat/4/idpl/18745124/dir/fedora_6/com/libpcap-0.9.4-8.1.i386.rpm.html" title="">libpcap-0.9.4</a>被需要之类的错误,请下载/<a data-original-title="" href="http://rpm.pbone.net/index.php3/stat/4/idpl/18745124/dir/fedora_6/com/libpcap-0.9.4-8.1.i386.rpm.html" title="">libpcap-0.9.4-8.1.i386.rpm</a>

第三步:配置PPP和PPTP的配置文件

1.配置文件/etc/ppp/options.pptpd

#cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak
#vi /etc/ppp/options.pptpd

将如下内容<最好填VPS的DNS>添加到到options.pptpd中:

ms-dns 8.8.8.8
ms-dns 8.8.4.4

然后保存这个文件。

解析:ms-dns 8.8.8.8, ms-dns 8.8.4.4是使用google的dns服务器。

2.配置文件/etc/ppp/chap-secrets

#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 *

//myusername是你的vpn帐号,mypassword是你的vpn的密码,*表示对任何ip,记得不要丢了这个星号。我这里根据这个格式,假设我的vpn的帐号是ksharpdabu,密码是 sky。那么,应该如下:

ksharpdabu pptpd sky *

3.配置文件/etc/pptpd.conf

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

添加下面两行

localip 172.16.10.1 //此ip可以随意写
remoteip 172.16.10.8-254 //此ip应为上一个ip所在的一个ip段,客户端连接vpn后服务器会通过这个值给客户端一个ip

4.配置文件/etc/sysctl.conf

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

将net.ipv4.ip_forward = 0 改成 net.ipv4.ip_forward = 1

保存修改后的文件

#/sbin/sysctl -p
5.我个人的安装脚本

可以参考一下<使用时注意修改相应参数

#!/bin/bash
function installVPN(){
echo “begin to install VPN services”;
#check wether vps suppot ppp and tun

yum remove -y pptpd ppp
iptables –flush POSTROUTING –table nat
iptables –flush FORWARD
rm -rf /etc/pptpd.conf
rm -rf /etc/ppp

arch=uname -m

wget http://www.hi-vps.com/downloads/kernel\_ppp\_mppe-1.0.2-3dkms.noarch.rpm
wget http://www.hi-vps.com/downloads/pptpd-1.3.4-2.el6.$arch.rpm
wget http://www.hi-vps.com/downloads/ppp-2.4.5-17.0.rhel6.$arch.rpm

yum -y install make libpcap iptables gcc-c++ logrotate tar cpio perl pam tcp_wrappers
rpm -ivh dkms-2.0.17.5-1.noarch.rpm
rpm -ivh kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm
rpm -qa kernel_ppp_mppe
rpm -Uvh ppp-2.4.5-17.0.rhel6.$arch.rpm
rpm -ivh pptpd-1.3.4-2.el6.$arch.rpm
mknod /dev/ppp c 108 0
echo 1 > /proc/sys/net/ipv4/ip_forward
echo “mknod /dev/ppp c 108 0” >> /etc/rc.local
echo “echo 1 > /proc/sys/net/ipv4/ip_forward” >> /etc/rc.local
echo “localip 172.16.10.1” >> /etc/pptpd.conf
echo “remoteip 172.16.10.8-254” >> /etc/pptpd.conf
echo “ms-dns 202.205.160.3” >> /etc/ppp/options.pptpd
echo “ms-dns 219.142.50.126” >> /etc/ppp/options.pptpd
pass=openssl rand 6 -base64
if [ “$1” != “” ]
then pass=$1
fi
echo “vpn pptpd $ *” >> /etc/ppp/chap-secrets
iptables -A FORWARD -p tcp –syn -s 172.16.10.0/24 -j TCPMSS –set-mss 1356
service iptables save
chkconfig iptables on
chkconfig pptpd on
service iptables start
service pptpd start
echo “VPN service is installed, your VPN username is vpn, VPN password is $

}
function repaireVPN(){
echo “begin to repaire VPN”;
mknod /dev/ppp c 108 0
service iptables restart
service pptpd start
}
function addVPNuser(){
echo “input user name:”
read username
echo “input password:”
read userpassword
echo “$ pptpd $ *” >> /etc/ppp/chap-secrets
service iptables restart
service pptpd start
}
echo “which do you want to?input the number.”
echo “1. install VPN service”
echo “2. repaire VPN service”
echo “3. add VPN user”
read num
case “$num” in
[1] ) (installVPN);;
[2] ) (repaireVPN);;
[3] ) (addVPNuser);;
*) echo “nothing,exit”;;
esac

6:配置iptables防火墙放行和转发规则

[root@WinJay]# iptables -A INPUT -p gre -j ACCEPT
[root@WinJay]# iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
[root@WinJay]# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@WinJay]# iptables -A FORWARD -s 172.16.10.0/24 -o eth0 -j ACCEPT
[root@WinJay]# iptables -A FORWARD -d 172.16.10.0/24 -i eth0 -j ACCEPT
[root@WinJay]# iptables -t nat -A POSTROUTING -s 172.16.10.0/24 -o eth0 -j MASQUERADE

还需要配置防火墙。这里配置防火墙有三个目的:
一是设置默认丢弃规则,保护服务器的安全;
二是放行我们允许的数据包,提供服务;
三是通过配置nat 表的POSTROUTING链,增加NAT使得VPN客户端可以通过服务器访问互联网。
总之我们的原则就是,只放行我们需要的服务,其他统统拒绝。

首先介绍跟PPTP VPN相关的几项:

允许GRE(Generic Route Encapsulation)协议,PPTP使用GRE协议封装PPP数据包,然后封装成IP报文
放行1723端口的PPTP服务
放行状态为RELATED,ESTABLISHED的入站数据包(正常提供服务的机器上防火墙应该都已经配置了这一项)
放行VPN虚拟网络设备所在的192.168.0.0/24网段与服务器网卡eth0之间的数据包转发
为从VPN网段10.191.0.0/24转往网卡eth0的出站数据包做NAT

第七步:重启pptpd,设置开机启动

 #service pptpd restart
 #chkconfig pptpd on //开机启动pptp vpn服务
 #chkconfig iptables on //开机启动iptables

第八步:设置客户端

在这里比较简单,但是有一个问题值得注意:很多网上的教程都说要把“在远程网络上关闭远程网关”选项去掉,但是这样就会出现一个问题:你能连上vpn,但是iP显示的还是本地ip,不能翻墙。

所以建议保持默认即可,不要关闭此选项。另一个注意的问题就是如果连上不,请查看vpn服务器时候开启了1723端口。

参考链接:http://www.dabu.info/centos6-4-structures-pptp-vpn.html

http://www.cnblogs.com/sixiweb/archive/2012/11/20/2778732.html

0

评论区