Centos上搭建Openvpn 服务器
一、安装Openvpn
- (a)安装epel扩展库
yum install -y epel-release
- (b)安装Openvpn软件
yum install -y lzo-devel pam pam-devel automake pkgconfig openvpn easy-rsa openssl openssl-devel lzo
- (c)看OpenVPN版本
`openvpn —version |head -n1```
- (d)复制服务端配置文件到/etc/openvpn
cp /usr/share/doc/openvpn-2.4.6/sample/sample-config-files/server.conf /etc/openvpn/
二、CA证书制作
- (a)建立/etc/openvpn/easy-rsa文件夹,将/usr/share/easy-rsa/3.0.3/ 中的文件复制到此文件夹
mkdir /etc/openvpn/easy-rsa
cp -r /usr/share/easy-rsa/3.0.3/* /etc/openvpn/easy-rsa/
- (b)进入easy-rsa文件夹,复制vars模板文件,重命名未vars
cd /etc/openvpn/easy-rsa```
cp /usr/share/doc/easy-rsa-3.0.3/vars.example ./vars`- (c)修改vars 文件,找到下面的部分修改,这一步可以跳过
vim vars
set_var EASYRSA_REQ_COUNTRY “US” #国家→CN
set_var EASYRSA_REQ_PROVINCE “California” #省→Beijing
set_var EASYRSA_REQ_CITY “Shanghai” #城市→beijing
set_var EASYRSA_REQ_ORG “Copyleft Certificate Co” #组织→Killbill
set_var EASYRSA_REQ_EMAIL “[email protected]” #邮箱→[email protected]
set_var EASYRSA_REQ_OU “My Organizational Unit” #公司、组织→Killbill- (d)初始化pki,生成目录文件结构,创建ca证书
./easyrsa init-pki
./easyrsa build-ca
【注】在这里会提示输入ca密码,Enter PEM pass phrase: 这个密码是ca证书的密码,必须记住哈,使用ca证书生成服务端和客户端证书的时候需要输入这个密码,之后会提示输入Common Name,这个是ca证书的名字,回车默认名字是CA就行了,最后就会打印出ca证书存放的路径
三、服务端证书制作
- (a)nopass表示设置免证书密码,如果要设置密码可以去掉此参数,服务端运行时需要输入这个密码,Common Name名称直接回车默认server就行了
./easyrsa gen-req server nopass
或者直接运行./easyrsa gen-req server
- (b)对生成的服务端证书签名,第二个server是指a步骤的Common Name名称,也就是server
./easyrsa sign server server
【注】在这一步需要输入CA证书生成时候的密码,回车生成之后后会打印出服务端证书的路径
- (c)生成DH证书,创建Diffie-Hellman,时间有点长,默认回车就行
./easyrsa gen-dh
- (d)生成ta秘钥
cd /etc/openvpn
openvpn --genkey --secret ta.key
四、客户端证书制作
进入 /etc/openvpn/client 目录,没有就创建这个目录
- (a)复制easy-rsa的相关文件到
/etc/openvpn/client
cd /etc/openvpn/client
cp -r /usr/share/easy-rsa/3.0.3/* /etc/openvpn/client
cp /usr/share/doc/easy-rsa-3.0.3/vars.example ./vars
- (b)初始化pki,然后生成客户端证书,nopass表示设置免证书密码,如果要设置密码可以去掉此参数,客户端连接时需要输入这个密码,Common Name可以自己命名,这里我设置为client
./easyrsa init-pki
./easyrsa gen-req client nopass
- (c)对客户端签约,切换到
/etc/openvpn/easy-rsa
,导入客户端req,签名时第一个client是固定的参数表示客户端,第二个client指上面导入的客户端证书名
cd /etc/openvpn/easy-rsa
./easyrsa import-req /etc/openvpn/client/pki/reqs/client.req client
./easyrsa sign client client
五、移动服务端和客户端秘钥证书
- (a) 服务端所需证书都移动到统一的地方,方便配置管理
cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/
cp /etc/openvpn/easy-rsa/pki/private/server.key /etc/openvpn/
cp /etc/openvpn/easy-rsa/pki/issued/server.crt /etc/openvpn/
cp /etc/openvpn/easy-rsa/pki/dh.pem /etc/openvpn/
- 客户端所需证书都移动到统一的地方,方便配置管理
/etc/openvpn/easy-rsa/pki/issued/client.crt
#在服务端证书生成目录下/etc/openvpn/client/pki/private/client.key
#上面的客户端生成目录下/etc/openvpn/easy-rsa/pki/ca.crt
#ca证书/etc/openvpn/ta.key
六、配置文件修改
- 配置文件里面只要将相应文件的路径修改为对应的路径就行了,ipp.txt可以根据客户端名称指定其内网ip地址
client,10.8.0.5
hoendo,10.8.0.8
保存后需要重启openvpn服务.查看状态systemctl status [email protected]
然后重启服务systemctl restart [email protected]
服务端配置文件
local 0.0.0.0 port 1194 proto tcp dev tap ca ca.crt cert server.crt dh dh.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "route 10.10.0.0 255.255.255.0" push "route 10.8.0.0 255.255.255.0" push "route 10.10.0.0 255.255.255.0 10.8.0.8 1" push "route 10.10.0.0 255.255.255.0 10.8.0.8 1" push "route 10.10.0.0 255.255.255.0 10.8.0.8 1" push "route 10.10.0.0 255.255.255.0 10.8.0.8 1" push "route 10.10.0.0 255.255.255.0 10.8.0.8 1" client-to-client keepalive 10 120 cipher AES-128-CBC comp-lzo persist-key persist-tun status openvpn-status.log verb 3 verb 3
客户端配置文件
client dev tun proto udp remote 10.10.10.10 1194 #远程openvpn服务器地址和端口 resolv-retry infinite nobind persist-key persist-tun comp-lzo verb 3 ca ca.crt cert client.crt key client.key cipher AES-128-CBC verb 3