centos7 搭建属于你自己的openvpn

现在企业大一点都会分布很多办公点,为了更好的访问内部资源,vpn是一个很好的选择,今天分享一下在centos7 下安装openvpn的过程和一些踩的坑,有时间写个脚本,让安装从此简单。
centos7 openvpn 安装
安装基础使用的工具
yum install ntpdate wget -y
同步时间:
ntpdate time.windows.com
配置iptables路由转发:
echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.d/test.conf && sysctl -p
一定要先同步时间 在生产证书:
出现这个错误就是没有同步时间就开始生产证书导致的,删除证书,重新同步时间,生产证书,重启服务即可解决。
VERIFY ERROR: depth=1, error=self signed certificate in certificate chain:
配置epel源:
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install openvpn openssl openssl-devel -y
下载easy-rsa包:
wget https://github.com/OpenVPN/easy-rsa/releases/download/2.2.2/EasyRSA-2.2.2.tgz
tar -zxf EasyRSA-2.2.2.tgz
mv EasyRSA-2.2.2 easy-rsa
cp -r easy-rsa /etc/openvpn
cd /etc/openvpn/easy-rsa
修改vars:
[root@openvpn easy-rsa]# cat vars |grep -v ^#|grep -v ^$
export EASY_RSA="pwd"
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"
export KEY_CONFIG=$EASY_RSA/whichopensslcnf $EASY_RSA
export KEY_DIR="$EASY_RSA/keys"
echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR
export PKCS11_MODULE_PATH="dummy"
export PKCS11_PIN="dummy"
export KEY_SIZE=2048
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="CN"
export KEY_PROVINCE="SC"
export KEY_CITY="CHENGDU"
export KEY_ORG="CEIEC"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyOrganizationalUnit"
export KEY_NAME="EasyRSA"

source ./vars
./clean-all

生成证书

Name [EasyRSA] 那一项写ca

./build-ca

生成服务器密钥和证书

在challenge password和optional company name处留空

Name [EasyRSA] 那一项写server

两个y选项选择y

./build-key-server server
./build-dh

生成客户端密钥和证书

在challenge password和optional company name处留空

Name [EasyRSA] 那一项写client

两个y选项选择y

./build-key client

修改配置文件
cp /usr/share/doc/openvpn-2.4.5/sample/sample-config-files/server.conf /etc/openvpn

[root@openvpn openvpn]# cat /etc/openvpn/server.conf |grep -v ^#|grep -v ^$|grep -v ^";"
port 1194
proto tcp
dev tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key # This file should be kept secret
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.8.0.0 255.255.255.0"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
client-to-client
duplicate-cn
keepalive 10 120
cipher AES-256-CBC
comp-lzo
persist-key
persist-tun
status openvpn-status.log
log /var/log/openvpn/openvpn.log
log-append /var/log/openvpn/openvpn.log
verb 3

创建日志目录:
mkdir /var/log/openvpn/
启动
systemctl start [email protected]

开启路由转发:
由于centos7 没有iptables 命令,所以需要 yum install iptables-services -y 安装。
iptables -A INPUT -p TCP --dport 1194 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

客户端安装:
下载地址:http://build.openvpn.net/downloads/releases/ 所有安装文件都在这里可以找到

http://build.openvpn.net/downloads/releases/openvpn-2.2.2-install.exe ##我们下载windows版本
将 C:\Program Files\OpenVPN\sample-config 下 client.ovpn 文件拷贝到 C:\Program Files\OpenVPN\config 目录

将server端生成的 ca.crt client.crt client.key 文件拷贝到 C:\Program Files\OpenVPN\config

配置文件见附件

参考:
http://blog.51cto.com/noodle/1775744
https://chchc.me/2016/06/23/CentOS7-%E6%90%AD%E5%BB%BAOpenVPN/
https://renwole.com/archives/471
https://my.oschina.net/liucao/blog/862930

常见问题:
现象 客户端隔几分钟就开始重新连接,日志如下
Fixing OpenVPN "Authenticate/Decrypt packet error: cipher final failed"
将服务端的cipher
cipher AES-256-CBC 配置到client端配置文件即可。
参看文件:
http://matthewcasperson.blogspot.com/2015/03/fixing-openvpn-authenticatedecrypt.html

一定要先同步时间 在生成证书:
出现这个错误就是没有同步时间就开始生成证书导致的,删除证书,重新同步时间,生成证书,重启服务即可解决。
VERIFY ERROR: depth=1, error=self signed certificate in certificate chain:

最后提醒一下,出了问题不要着急,一定是先看日志,一步一步拍错,都是很简单的。

附上成功的截图:
centos7 搭建属于你自己的openvpn
这个变成绿色,表示你的vpn客户端已经连接server端。
centos7 搭建属于你自己的openvpn
vpn内网段已经通了。
到此为止属于你的openvpn已经搭建好了。

猜你喜欢

转载自blog.51cto.com/mrdeng/2111967