一、背景:
1、需要远程办公,连接到公司内网,打开相应的内网资源
2、需要访问服务器内网,进行连接服务器等操作
二、安装步骤:
1、服务端部署步骤:
1、安装openvpn及依赖 yum install openvpn easy-rsa lzo lzo-devel openssl openssl-devel -y ls /etc/openvpn/ //openvpn服务安装的所在目录 ls /usr/share/easy-rsa/ //easy-rsa安装的所在目录 2、创建服务器证书和CA根证书 find / -name "vars.example" -type f //知道证书参数模版 cd /usr/share/easy-rsa/3.0.3/ cp /usr/share/doc/easy-rsa-3.0.3/vars.example vars //生成证书的一些默认参数在里面设置 vim vars //修改默认参数,如下 set_var EASYRSA_REQ_COUNTRY "CN" set_var EASYRSA_REQ_PROVINCE "Beijign" set_var EASYRSA_REQ_CITY "Beijing" set_var EASYRSA_REQ_ORG "Linux" set_var EASYRSA_REQ_EMAIL "asa@163.com" set_var EASYRSA_REQ_OU "1T" ./easyrsa init-pki //生成新的pki目录结构 ./easyrsa build-ca nopass //创建CA根证书,不需要密码,回车。(得到ca.crt) ./easyrsa gen-req vpnserver nopass //生成密钥对和证书请求文件,不需要密码,回车。(得到vpnserver.req、vpnserver.key) ./easyrsa sign server vpnserver //用根证书CA与vpnserver.req文件签名,生成服务端证书。(得到vpnserver.crt) ./easyrsa gen-dh //创建Diffie Hellman参数 cp -R 3.0.3/ /root/ //将3.0.3/目录复制到桌面,等会会用到 3、创建客户端证书: cd /usr/share/easy-rsa/3.0.3/ && rm -rf pki/ //需要删除旧的pki,重新创建 ./easyrsa init-pki ./easyrsa gen-req client nopass //生成密钥对和证书请求文件,不需要密码,回车。(得到client.req、client.key) //刚才我们是用根证书CA签名生成服务器证书vpnserver.crt,现在以CA根证书和vpnserver.crt证书签名得到client.crt cp pki/reqs/client.req /root/Desktop/3.0.3/pki/reqs/ cp pki/private/client.key /root/Desktop/3.0.3/pki/private/ cd /root/3.0.3/ ./easyrsa sign client client //成功生成证书client.crt 完成以上步骤服务器端需要的文件有:ca.crt 、dh.pem 、vpnserver.crt 、vpnserver.key 客户端需要的文件有:ca.crt 、client.key 、client.crt 4、修改config配置文件(此配置以用户名密码方式认证的) //先将证书放到/etc/openvpn/server下待会儿好用 cd /root/3.0.8 cp pki/{ca.crt,dh.pem} /etc/openvpn/server/ cp pki/private/vpnserver.key /etc/openvpn/server/ cp pki/issued/vpnserver.crt /etc/openvpn/server/ find / -name "server.conf" -type f //查找配置文件所在位置 cp /usr/share/doc/openvpn-2.4.5/sample/sample-config-files/server.conf /etc/openvpn/server/ //复制配置文件到这里来 cd /etc/openvpn/server/ && vim server.conf //编辑配置文件(下边为服务端配置文件) 5、nat转换操作 iptables -t nat -A POSTROUTING -s 10.3.8.0/22 -o eth0 -j MASQUERADE 将源地址10.3.8.0的网段都走vpn网卡 6、启动openvpn服务: openvpn --config /etc/openvpn/server/server.conf --daemon
port 1194 #####端口号 proto udp #####协议 dev tun ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/vpnserver.crt key /etc/openvpn/server/vpnserver.key dh /etc/openvpn/server/dh.pem auth-user-pass-verify /etc/openvpn/server/checkpsw.sh via-env verify-client-cert none #用户密码 username-as-common-name #用户登陆的用户名就是Common Name server 10.3.8.0 255.255.255.0 #vpn生成的ip,不能与服务器ip冲突 ifconfig-pool-persist ipp.txt #记录客户端分配的ip push "route 10.0.8.0 255.255.255.0" #要访问服务器的真实ip地址 ,服务器本机地址或网段 相当于在客户端加 ip r a 10.8.0.5 via 192.168.17.1(此配置会给客户端自动下发这条路由策略,而不用手动在客户端配置) 或者加 push "redirect-gateway def1 bypass-dhcp" (所有流量都走vpn网卡,加了这个上边就不用加手动路由了) push "dhcp-option DNS 8.8.8.8" 推送客户端dns push "dhcp-option DNS 114.114.114.114" keepalive 10 120 tls-auth /etc/openvpn/server/ta.key 0 ####防DDOS攻击,服务器端0,客户端必须配置为 1 cipher AES-256-CBC comp-lzo ###对数据进行压缩 persist-key persist-tun status openvpn-status.log ###输出一个简短的状态文件,用于显示当前的连接状态,该文件每分钟都会清空并重写一次。 log openvpn.log verb 3 explicit-exit-notify 1 # 此选项开启只能使用udp协议 script-security 3 #适用密码验证为3 duplicate-cn ###一个用户可以连多个终端,如果不打开的话一个用户只能连接一个终端,建议不打开,保证安全,及避免服务器压力过高 client-to-client ###可以让客户端之间互访直接通过openvpn程序转发 #client-config-dir /etc/openvpn/server/ccd ####指定目录dir存放客户端自定义配置文件
2、openvpn客户端部署
安装openvpn
yum -y install openssl-devel libnl libnl-devel pam-devel net-tools
cd /root # tar zxvf openvpn-2.4.4.tar.gz -C /usr/src/ # cd /usr/src/openvpn-2.4.4/
./configure --prefix=/usr/local/openvpn # make && make install
客户端安装,到这里就结束了
登录到openvpn服务器,将秘钥文件下载到客户端的/usr/local/openvpn/etc目录
客户端编辑拨号文件
# vim /usr/local/openvpn/etc/client.ovpn
内容修改如下:
client
dev tap
proto udp
remote 139.9.119.142 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /usr/local/openvpn/etc/ca.crt
cert /usr/local/openvpn/etc/client.crt
key /usr/local/openvpn/etc/client.key
ns-cert-type server
comp-lzo
verb 3
etc的目录文件如下:
[root@localhost etc]# ll 总用量 20 -rw-r--r-- 1 root root 1757 2月 8 09:24 ca.crt -rw-r--r-- 1 root root 5426 2月 8 09:24 client_linux.crt -rw-r--r-- 1 root root 1704 2月 8 09:24 client_linux.key -rw-r--r-- 1 root root 189 2月 8 09:24 client.ovpn
启动客户端
# /usr/local/openvpn/sbin/openvpn --config /usr/local/openvpn/etc/client.ovpn