openvpn服务的搭建
搭建openvpn时应首先同步网络时间否则会造成证书时间不同步,导致证书不生效。
是由openvpn将相应的子网推给客户端,客户端首先要连接到openvpnserver,在通过它到达其它的网段,所以openvpnserver首先要能够连通其他网段。
openvpn是在公共网络中打隧道,要想得到vpn服务首先得能够访问到,vpn服务器,如果vpn服务器是搭建在公网中,在client中直接指向这个地址就可以了,如果是搭建在私网中则需要指向它所映射的公网地址。
首先应该开启路由转发功能:
sysctl -p 执行
也可以编辑/etc/sysctl.conf文件
yum install openvpn -y 安装openvpn
安装openvpn最新的easy-rsa,该包用来制作ca证书,服务端证书,客户端证书。最新的为easy-rsa3
wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
unzip master.zip
将解压得到的文件夹easy-rsa-master重命名为easy-rsa
mv easy-rsa-master/ easy-rsa/
然后将的到的easy-ras文件夹复制到/etc/openvpn/目录下
cp -R easy-rsa/ /etc/openvpn/
编辑vars文件,根据自己环境配置
先进入cd /etc/openvpn/easy-rsa/easyrsa3目录
复制vars.example 为vars
cp vars.example vars
修改vars文件:vim vars vars文件保存的是证书的信息,如ca的地域等
set_var EASYRSA_REQ_COUNTRY 国家
set_var EASYRSA_REQ_PROVINCE 省
set_var EASYRSA_REQ_CITY 城市
set_var EASYRSA_REQ_ORG ca的单位
set_var EASYRSA_REQ_EMAIL 邮箱
set_var EASYRSA_REQ_OU 证书名
chmod +x vars
第三步、创建服务端证书及key
A:进入/etc/openvpn/easy-rsa/easyrsa3/目录初始化:
cd /etc/openvpn/easy-rsa/easyrsa3
./easyrsa init-pki
B:创建根证书
./easyrsa build-ca
PEM pass phrase:test123
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:test.com
注意:在这部分需要输入PEM密码 PEM pass phrase,输入两次,此密码必须记住,不然以后不能为证书签名。还需要输入common name 通用名,这个你自己随便设置个独一无二的。
C:创建服务器端证书
./easyrsa gen-req server nopass
该过程中需要输入common name,随意但是不要跟之前的根证书的一样
Common Name (eg: your user, host, or server name) [server]:test2.com
签约服务端证书:
./easyrsa sign server server
该命令中.需要你确认生成,要输入yes,还需要你提供我们当时创建CA时候的密码。如果你忘记了密码,那你就重头开始再来一次吧。
D:创建Diffie-Hellman,确保key穿越不安全网络的命令:
./easyrsa gen-dh
第四步、创建客户端证书
A:进入root目录新建client文件夹,文件夹可随意命名,然后拷贝前面解压得到的easy-ras文件夹到client文件夹,进入下列目录
cd /root/
mkdir client
cp -r easy-rsa client/
cd client/easy-rsa/easyrsa3/
B:初始化
./easyrsa init-pki
C:创建客户端key及生成证书(记住生成是自己输入的密码)
./easyrsa gen-req test nopass(nopass可实现免密认证) (这是自己定义的key的名称)
PEM pass phrase:test123 这个密码会成为以后客户端连接vpn所输入的密码
Common Name (eg: your user, host, or server name) [test]:test3.com
D:将的到的test.req导入然后签约证书
a.进入到/etc/openvpn/easy-rsa/easyrsa3/
cd /etc/openvpn/easy-rsa/easyrsa3/
b.导入req
./easyrsa import-req /root/client/easy-rsa/easyrsa3/pki/reqs/test.req test
c.签约证书
//这里生成client所以必须为client,test要与之前导入名字一致
./easyrsa sign client test
这里需要输入上面创建根证书时设置的密码,红色字体需一致。其实总的看来,创建客户端证书和服务端证书的步骤是差不多的。基本上就是:1.导入easy-rsa/文件夹,2.初始化,3.定义一个key并生成密码和common name,4.签约证书
E:这步很重要,现在说一下我们上面都生成了什么东西
这一步在我看来就是将所有的证书和密钥分发到服务端和客户端,客户端的目录是/etc/openvpn,服务端是/root/client
服务端:(etc/openvpn/easy-rsa/文件夹)
/etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt
/etc/openvpn/easy-rsa/easyrsa3/pki/reqs/server.req
/etc/openvpn/easy-rsa/easyrsa3/pki/reqs/test.req
/etc/openvpn/easy-rsa/easyrsa3/pki/private/ca.key
/etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key
/etc/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt
/etc/openvpn/easy-rsa/easyrsa3/pki/issued/test.crt
/etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem
客户端:(root/client/easy-rsa文件夹)
/root/client/easy-rsa/easyrsa3/pki/private/test.key
/root/client/easy-rsa/easyrsa3/pki/reqs/test.req //这个文件被我们导入到了服务端文件所以那里也有
a.这一步就是拷贝这些文件放入到相应位置。将下列文件放到/etc/openvpn/ 目录执行命令:
cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /etc/openvpn
cp /etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key /etc/openvpn
cp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt /etc/openvpn
cp /etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem /etc/openvpn
这样就将上述四个文件放入到了/etc/openvpn目录下
b.这一步将下列文件放到/root/client 目录下执行命令:
cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /root/client
cp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/test.crt /root/client/
cp /root/client/easy-rsa/easyrsa3/pki/private/test.key /root/client
这样就将上述三个文件复制到了/root/client目录,包括:ca.crt、test.crt、test.key
第五步、为服务端编写配置文件
编写配置文件就相当于如何来配置这个openvpn服务器,到时候服务器就会根据这个配置来开放相应的vpn服务
当你安装好了openvpn时候,他会提供一个server配置的文件例子,在
/usr/share/doc/openvpn-版本号/sample/sample-config-files
下会有一个server.conf文件,我们将这个文件复制到/etc/openvpn
cp /usr/share/doc/openvpn-2.4.4/sample/sample-config-files/server.conf /etc/openvpn
然后修改配置vi server.conf如下:
目前只修改了监听地址,具体需要用到什么功能再具体修改参数,详见openvpn配置文件详解
第六步、下载openvpn客户端,并进行配置
A:用sftp将我们在vps生成的客户端证书和key下载到客户端电脑
ca.crt qingliu.crt qingliu.key //这三个文件
B:去官网下载openvpn客户端进行安装,然后安装目录找到simple-config
安装目录\OpenVPN\sample-config\client.ovpn
将client.ovpn 复制到安装目录的OpenVPN\config下
最后,在服务端启动服务,如果报错请查看日志service openvpn start
开启日志,在/etc/openvpn/server.conf中指定log参数,后跟日志路径,查看日志得到:
WARNING: cannot stat file 'ta.key': No such file or directory (errno=2)
在配置文件注释掉具有ta.key这一行就可以正常启动了。
iptables -I INPUT 4 -m state --state NEW -p udp --dport 1194 -j ACCEPT 添加防火墙规则,开放1194端口
如果要使用ta.key的话:
先用openvpn --genkey --secret ta.key 这条命令生成
在配置文件中指明相应的位置:tls-auth /etc/openvpn/ta.key 0
要记住:server中是0,而client中是1
当openvpn不能穿透防火墙时添加规则:
iptables -I INPUT 2 -p udp --dport 1194 -j ACCEPT
要使openvpn转发:iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 这个网段与server.conf中的server 后的网段一致。
删除forward中的拒绝规则。