一、同步服务时间(不然证书报错)
ntpdate 203.107.6.88
//这个ip根据你所在地区设置响应ntp地址
hwclock –hctosys
//同步系统时间和硬件时间
clock -w
//保存时钟
二、如果Iptables无法保存,可以先修改此项
systemctl stop firewalld
yum install iptables-services
systemctl enable iptables
systemctl restart iptables
三、永久关闭selinux
cd /etc/selinux/config
vim /etc/selinux/config
改成SELINUX=disabled
四、安装epel 仓库源
yum install epel-release -y
五、安装openvpn
yum install openvpn -y
- 安装easy-rsa
a、在github 上,下载最新的easy-rsa Linux安装包
https://github.com/OpenVPN/easy-rsa
b、上传到 /etc/openvpn目录后
cd /etc/openvpn
c、解压(根据自己的格式选择一个解压命令)
unzip easy-rsa-3.0.8.zip
tar xf EasyRSA-3.0.8.tgz
d、重命名 mv EasyRSA-3.0.8 easy-rsa
e、配置编辑vars文件
cd /etc/openvpn/easy-rsa
cp vars.example vars
vim vars
根据自己环境配置,就修改以下内容,非必须改
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "Sichuan"
set_var EASYRSA_REQ_CITY "Chengdu"
set_var EASYRSA_REQ_ORG "xx Ltd."
set_var EASYRSA_REQ_EMAIL "vpn@xx.com"
set_var EASYRSA_REQ_OU "xx OpenVPN"
七、easy-rsa生成证书
a、创建服务端证书及key
初始化
./easyrsa init-pki
创建根证书
./easyrsa build-ca nopass
创建服务器端证书
./easyrsa gen-req server nopass
签约服务端证书
./easyrsa sign-req server server
提示Type the word ‘yes’ to continue, or any other input to abort.
Confirm request details: 输入yes
b、创建客户端key及生成证书
./easyrsa gen-req yuk //名字自己定义
//记住生成是自己客户端登录输入的密码,可带nopass不输用密码
签约客户端证书 ./easyrsa sign-req client yuk
//这里生成client所以必须为client,along要与之前导入名字一致
注:移除离职人员证书
./easyrsa revoke 证书名
./easyrsa gen-crl
c、创建TLS认证密钥( ta.key拒绝服务攻击证书 非必须)
openvpn –genkey –secret /etc/openvpn/ta.key
d、创建Diffie-Hellman,确保key穿越不安全网络的命令
./easyrsa gen-dh
八、把必要文件放到对应目录下
cd /etc/openvpn/easy-rsa/pki/
cp ca.crt dh.pem /etc/openvpn/
cp private/server.key issued/server.crt /etc/openvpn/server/
cp private/yuk.key issued/yuk.crt /etc/openvpn/client/
九、为服务端编写配置文件
当你安装好了openvpn时候,他会提供一个server配置的文件例子,在/usr/share/doc/openvpn-2.3.2/sample/sample-config-files 下会有一个server.conf文件,我们将这个文件复制到/etc/openvpn
rpm -ql openvpn |grep server.conf查看当前版本
cp /usr/share/doc/openvpn-2.4.11/sample/sample-config-files/server.conf /etc/openvpn/
修改配置文件
vim /etc/openvpn/server.conf
仅供参考,根据需求更改
#监听本机ip地址
local 0.0.0.0
#监控本机端口号
port 9160
#指定采用的传输协议,可以选择tcp或udp
proto tcp
#指定创建的通信隧道类型,可选tun或tap
dev tun
#指定CA证书的文件路径
ca /etc/openvpn/ca.crt
#指定服务器端的证书文件路径
cert /etc/openvpn/server/server.crt
#指定服务器端的私钥文件路径
key /etc/openvpn/server/server.key
#指定迪菲赫尔曼参数的文件路径
dh /etc/openvpn/dh.pem
#指定虚拟局域网占用的IP地址段和子网掩码,此处配置的服务器自身占用.1的ip地址
server 172.16.0.0 255.255.255.0
#服务器自动给客户端分配IP后,客户端下次连接时,仍然采用上次的IP地址(第一次分配的IP保存在ipp.txt中,下一次分配其中保存的IP)。
ifconfig-pool-persist ipp.txt
#自动推送客户端上的网关及DHCP
;push "redirect-gateway def1 bypass-dhcp" //开启后访问外网流量都要经过服务器走一圈
#指定需要访问内网相关业务地址段
push "route 192.168.1.0 255.255.255.0"
#OpenVPN的DHCP功能为客户端提供指定的 DNS、WINS 等
;push "dhcp-option DNS 114.114.114.114" //内网没有需要解析的不用
#允许客户端与客户端相连接,默认情况下客户端只能与服务器相连接
;client-to-client
#每10秒ping一次,连接超时时间设为120秒
keepalive 10 120
#开启TLS-auth,使用ta.key防御攻击。服务器端的第二个参数值为0,客户端的为1。
tls-auth /etc/openvpn/ta.key 0
#加密认证算法
cipher AES-256-GCM #2.4版本后必须用此方式加密
#使用lzo压缩的通讯,服务端和客户端都必须配置
comp-lzo
#最大连接用户
;max-clients 100
#定义运行的用户和组
;user openvpn
;group openvpn
#重启时仍保留一些状态
persist-key
persist-tun
#输出短日志,每分钟刷新一次,以显示当前的客户端
status /etc/openvpn/openvpn-status.log
#日志保存路径
log /etc/openvpn/openvpn.log
log-append /etc/openvpn/openvpn.log
#指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细
verb 3
#相同信息的数量,如果连续出现 20 条相同的信息,将不记录到日志中
mute 20
#如果采用tcp协议需要把这个注释掉
;explicit-exit-notify 1
每个项目都会由一大堆介绍,上述修改,openvpn提供的server.conf已经全部提供,我们只需要去掉前面的注释#,然后修改我们自己的有关配置
十、配置后的设置
chown root.openvpn /etc/openvpn/* -R
十一、iptables 设置nat 规则和打开路由转发
这两条根据情况配置信息
iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -j MASQUERADE
iptables -I INPUT -p tcp –dport 9160 -j ACCEPT
iptables -L -t nat 查看
echo “net.ipv4.ip_forward = 1” >> /etc/sysctl.conf //打开路由转发
sysctl -p启用
service iptables save 保存
service iptables restart 重启
十二、开启openvpn 服务
三选一
/etc/openvpn/
A、openvpn –daemon –config server.conf
B、openvpn /etc/openvpn/server.conf
C、systemctl start openvpn@server
netstat -lntup | grep 9160查看9160端口是否起来
ps -ef | grep openvpn查询进程
kill -9 pid结束进程重启服务
如果开启后没有打开9160 端口,说明开启服务失败,可能是配置文件有错,也有可能是权限不够,自己查询日志解决。
十三、开机后需要手动开启,就输入这两个自启动
systemctl enable openvpn@service
systemctl enable iptables.service
十四、客户端连接openvpn
1、下载openvpn客户端安装
windows客户端
mac客户端
2、解压安装,配置client 端配置文件
在sample-config 文件下,有client.ovpn 模板
修改,并复制到config 目录下,修改内容如下
client
dev tun
proto tcp //服务器器有的就改为一样的
remote 39.xxx.xxx.xxx 1194 //OpenVPN服务器的外网IP和端口,ip和域名都行
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt //client1的证书
key client.key //client1的密钥
ka.key
remote-cert-tls server
cipher AES-256-GCM
comp-lzo
verb 3
3、把服务器端生成的证书文件复制到安装目录的config 文件下
ca.crt client.crt client.key ka.key //这四个文件
4、启动客户端
(1)启动,注意启动需以管理员权限启动
(2)输入自己设置的密码
(3)连接成功
5、测试是否成功
(1)在client 查询ip,确实是openvpn 给定的ip
(2) 访问内网业务是否正常
参考链接 http://www.linuxboy.net/linuxjc/128348.html
https://zhuanlan.zhihu.com/p/154309923