每人,每天,做好每件事
Everyone,Everyday,Everything

基于CentOS6+OpenVPN服务器搭建教程

一、更换成阿里云源

1、备份本机源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup

2、将本机源替换为阿里云源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel.repo

3、更新源

yum -y makecache

二、安装openvpn

1、OpenVPN需要tun和iptables_nat模块支持,所以先检查你的服务器是否支持:

cat /dev/net/tun

#若返回信息为:cat: /dev/net/tun: File descriptor in bad state 说明tun/tap已经可以使用;如果返回:cat: /dev/net/tun: No such device 或其他则说明tun/tap没有被正确配置。

#然后检查iptables_nat模块(如果还没有安装iptables,先安装)

yum -y install iptables    #如已安装跳过

2、先安装相关依赖包及证书工具

yum install -y gcc lzo lzo-devel openssl openssl-devel pam pam-devel
yum install -y pkcs11-helper pkcs11-helper-devel easy-rsa

3、安装openvpn
yum -y install openvpn

三、生成证书

1、创建证书工作目录

mkdir -p /usr/share/easy-rsa/2.0/keys
ln -s /usr/share/easy-rsa/ /etc/openvpn/easy-rsa
ln -s /usr/share/easy-rsa/2.0/keys/ /etc/openvpn/keys

2、编辑证书配置文件初始化证书KPI

vim /etc/openvpn/easy-rsa/2.0/vars

修改如下证书信息:

# Don’t leave any of these fields blank.
export KEY_COUNTRY=”US”  # 国家
export KEY_PROVINCE=”CA”  #省份
export KEY_CITY=”SanFrancisco”  #城市
export KEY_ORG=”Fort-Funston”  #组织机构
export KEY_EMAIL=”me@myhost.mydomain”  #联系人邮箱
export KEY_OU=”MyOrganizationalUnit”  #部门名称

修改为:

# Don’t leave any of these fields blank.
export KEY_COUNTRY=”CN”
export KEY_PROVINCE=”JS”
export KEY_CITY=”ChangZhou”
export KEY_ORG=”Sina”
export KEY_EMAIL=”12345678@qq.com”
export KEY_OU=”Software Development Department”

另外还有一个证书有效期,请按照实际需要修改:

export CA_EXPIRE=3650  # CA证书有效期,默认是3650天。

export KEY_EXPIRE=3650  # 密钥证书有效期,默认是3650天。

3、证书生成

cd /etc/openvpn/easy-rsa/2.0/

source ./vars # 应用证书环境变量

./clean-all  # 清除所有证书,注意以后千万别运行,否则所有已生成证书会被清空

./build-ca server   # 创建根证书ca.crt和根密钥ca.key,server是服务器名,可以任意定义,按照提示回车回车再回车

./build-key-server server  #生成服务器端证书,server是服务器名,可以任意定义,按照提示全部回车,最后两步按y回车

4、生成Diffie Hellman参数,加强安全

#创建Diffie-Hellman,会生成dh2048.pem文件(生成过程可能比较慢,在此期间不要去中断它)确保key穿越不安全网络的命令

./build-dh

5、生成 HMAC firewall 验证码

#这是一种经加密的散列消息验证码,可以对信息数据的完整性和真实性进行同步检查

/usr/sbin/openvpn –genkey –secret keys/ta.key

6、创建用于VPN认证的客户端证书

#创建客户端认证证书,创建证书时client可以任取,方便识别即可,为避免重复,建议使用证书名称后面再跟当前日期,按照提示全部回车,最后两步按y回车。

./build-key client-20170715

#证书创建完毕后会在./key目录生成以name-yymmdd开头的三个证书文件,这时可以创建name文件夹存放创建的证书以便于使用。注意:三个证书文件只有client-20170715.crt和client-20170715.key作为认证使用。

四、创建配置文件

1、复制默认配置文件

# 默认配置文件作为配置时参考
cp /usr/share/doc/openvpn-2.4.3/sample/sample-config-files/server.conf /etc/openvpn/server.conf.default

2、创建openvpn配置文件

vi /etc/openvpn/server.conf  #创建配置文件,按i编辑并插入以下内容:

port 1194  # 指定工作端口
proto udp  # 指定TCP协议(使用TCP协议如果连接上VPN后网络很慢或者被屏蔽,可以更改成使用UDP协议,服务端和客户端需同时更改)
dev tun  # IP层的点对点协议
ca keys/ca.crt  # 前面生成的ca证书,验证客户是证书是否合法
cert keys/server.crt
key keys/server.key
dh keys/dh2048.pem
#crl-verify keys/crl.pem
server 10.16.1.0 255.255.255.0  # 这是必须的,指定客户端获取的IP段,注意不要跟openvpn服务器及客户端所在地址段重复
ifconfig-pool-persist ipp.txt
push “dhcp-option DNS 114.114.114.114”
push “redirect-gateway”  # 指定客户端网关
client-to-client  # 允许客户端之间的通信
duplicate-cn  # 如果客户都使用相同的CA和keys连接VPN,一定要打开这个选项,否则只允许一个人连接VPN
max-clients 50  # 最多允许50个客户端
keepalive 20 60  # 存活时间,20秒ping一次,60秒如未收到响应则视为断线
comp-lzo  # 数据进行压缩,注意Server和Client一致
persist-key  # 通过keepalive检测超时后,当重新启动VPN后,不重新读取私钥,保留第一次使用的私钥
persist-tun  # 通过keepalive检测超时后,当重新启动VPN后,一直保持tun设备是连接的,否则网络连接会先断开再连接
status openvpn-status.log
log-append openvpn.log
verb 3  # 日志文件冗余
mute 20

五、创建NAT转发

1、配置iptables前先确保SELinux已经关闭

getenforce  #执行本命令如果显示Enforcing则未关闭,显示Disabled则为关闭,关闭方法如下:

vi /etc/selinux/config

把 SELINUX=enforcing 改为 SELINUX=disabled,切记看清不要改错了,否则服务器无法启动。

改完保存重启服务器即可。

2、设置 iptables

# 设置前请确保 iptables 已经开启,而且 /etc/sysconfig/iptables 文件已存在。然后开启转发:

vi /etc/sysctl.conf

# 修改以下内容:

net.ipv4.ip_forward = 1

# 然后使内核参数生效:

sysctl -p

#或者直接把/etc/sysctl.conf文件内容用以下内容替换:

net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0

3、添加iptables规则

# 添加 iptables 规则确保服务器可以转发数据包到阿里云内外网:

iptables -t nat -A POSTROUTING -s 10.16.1.0/24 -j MASQUERADE   #允许VPN地址段通过公网地址上网

service iptables save    #保存规则

注意:有些服务器,例如阿里云的ECS,其iptables防火墙默认是关闭的,因此添加完防火墙规则后记得要将iptables防火墙设为开机启动。

chkconfig iptables on    #设置iptables开机启动

service iptables restart   #重启iptables防火墙

六、启动openvpn服务器

chkconfig openvpn on  #设置openvpn开机启动

service openvpn restart   #重启openvpn服务器

netstat -lnp |grep 1194   #查看openvpn是否正常启动。

七、创建openvpn客户端,以windows为例:

1、以默认选项安装openvpn-install-2.4.2-I601.exe客户端

2、下载刚才创建的用户证书文件到openvpn安装的配置文件目录:C:\Program Files\OpenVPN\config,注意一共三个文件,都在openvpn服务器的/etc/openvpn/easy-rsa/2.0/keys目录,文件分别如下:

ca.crt
client-20170715.crt
client-20170715.key

3、拷贝配置文件:C:\Program Files\OpenVPN\sample-config\client.ovpn到C:\Program Files\OpenVPN\config,编辑client.ovpn配置文件,修改为如下内容:

client
dev tun
resolv-retry infinite
nobind
persist-key
persist-tun
ns-cert-type server
keepalive 20 60
#tls-auth ta.key 1
comp-lzo
verb 3
mute 20
route-method exe
route-delay 2
key-direction 1

#用户证书
ca ca.crt
cert client-20170715.crt
key client-20170715.key

#工作协议
proto udp

#openvpn服务器公网IP及工作端口
remote 180.97.33.108 1194

#全局代理选项,如果希望上网出口走openvpn公网出口,请去掉本选项注释
redirect-gateway

4、启动openvpn连接

最后启动OpenVPN GUI客户端,请“以管理员身份运行”,否则可能无法获取到vpn网关,双击右下角OpenVPN GUI客户端图标连接网络。

====== 友情提醒:本教程仅用于内网互通及安全访问控制用途,请勿用于其它非法用途 ======

下载地址:

openvpn-install-2.4.2-I601.exe

openvpn-connect-1-1-17.apk

赞(0) 打赏
未经允许不得转载:辣椒小鱼のBlog » 基于CentOS6+OpenVPN服务器搭建教程
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

×
订阅图标按钮