OpenVPN是一个开源应用程序,可以通过公共Internet创建一个专用网络。在我们开始之前,我们首先需要安装Enterprise Linux(EPEL)存储库的额外包。下面就是关于如何在CentOS 7上设置Client和OpenVPN服务器的教程。
安装EPEL套件库,顺道更新
# yum -y install epel-release && yum -y update
安装 OpenVPN
首先我们需要安装OpenVPN。我们还将安装Easy RSA来生成我们的SSL密钥对,这将保护我们的VPN连接。
# yum install -y openvpn easy-rsa
生成密钥及证书的前置条件
3.1.创建密钥与证书储存目录,并且准备好要产生密钥与证书的相关文件:
# mkdir -p /etc/openvpn/easy-rsa/keys # cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa # cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf 3.2.修改凭证的默认资料,之后产生凭证时就会自动填写,不必再手动输入。 # vim /etc/openvpn/easy-rsa/vars 所有凭证资料的预设值分别是:国家、省份、城市、组织、电子邮件位址、单位。 ... export KEY_COUNTRY="CN" export KEY_PROVINCE="GD" export KEY_CITY="ZHUHAI" export KEY_ORG="YUNXI" export KEY_EMAIL="YUNXI@it.cn" export KEY_OU="IT YUNXI." ...
上述参数的值可以自定义设置,对配置无影响。
Server 端密钥与证书生成
4.1.清除并删除 keys 目录下的所有 key # cd /etc/openvpn/easy-rsa 以下步骤列出需要清理的目录: # source ./vars NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys # ./clean-all 4.2.生成CA的密钥及凭证,设定值不需修改的话,可以直接按Enter使用vars档案里的预设值。 # ./build-ca 4.3.生成 OpenVPN Server 端的密钥及凭证,同样可以使用vars档案的预设值。 注意:一直回车,直至最后有两次交互,输入 y 确认。 # ./build-key-server renwoleserver 4.4.生成 Diffie Hellman 参数,这个步骤比较久,可能要跑大约 6 分钟左右。 # ./build-dh 4.5.将Server的密钥及凭证放到主目录里: # cd /etc/openvpn/easy-rsa/keys # cp dh2048.pem ca.crt renwoleserver.crt renwoleserver.key /etc/openvpn
生成 Client 端的密钥及凭证,文件名可以自定义,有两种方式,分别是:(一直回车即可)
5.1.生成不用输入密码的凭证: # /etc/openvpn/easy-rsa/build-key renwoleusers 5.2.生成需要输入密码的凭证: # /etc/openvpn/easy-rsa/build-key-pass renwoleusers
生成TLS-auth密钥(可选)
OpenVPN提供了TLS-auth功能,可以用来抵御Dos、UDP端口淹没攻击。出于安全考虑,你可以启用该功能;启用该功能,你需要执行以下命令:
# cd /etc/openvpn # openvpn --genkey --secret ta.key 6.目前我们总共产生了这些金钥及凭证: # ll keys/ total 84 01.pem 02.pem renwoleserver.crt renwoleserver.csr renwoleserver.key renwoleusers.crt renwoleusers.csr renwoleusers.key ca.crt ca.key dh2048.pem index.txt index.txt.attr index.txt.attr.old index.txt.old serial serial.old
配置 OpenVPN server.conf
OpenVPN安装目录默认存在 server.conf 配置文件,我们拷贝一份并修改使用: # cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn 我们进入 /etc/openvpn/ 目录编辑 server.conf 文件。 配置完成后的内容如下: # egrep -v "^$|^#|^;" server.conf local 10.10.204.62 port 1194 proto udp dev tun ca ca.crt cert renwoleserver.crt key renwoleserver.key # This file should be kept secret dh dh2048.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 223.5.5.5" client-to-client keepalive 10 120 tls-auth ta.key 0 # This file is secret cipher AES-256-CBC compress lz4-v2 push "compress lz4-v2" user nobody group nobody persist-key persist-tun #新增日志路径 status /var/log/openvpn-status.log log /var/log/openvpn.log verb 3 explicit-exit-notify 1
启动IP转发功能
# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf # sysctl -p
配置firewall转发规则
确保服务器可以转发数据包到服务器内外网,开启必要的通讯服务,并启用IP伪装(Masquerade)功能。
# firewall-cmd --permanent --add-service openvpn # firewall-cmd --permanent --add-masquerade # DEV=$(ip route get 223.5.5.5 | awk 'NR==1 {print $(NF-2)}' ) # firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $DEV -j MASQUERADE # firewall-cmd --reload # firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client openvpn ssh ports: protocols: masquerade: yes forward-ports: sourceports: icmp-blocks: rich rules:
启动 OpenVPN
重启网络与OpenVPN服务,并且让OpenVPN开机后自动启动:
# systemctl restart network # systemctl restart openvpn@server # systemctl enable openvpn@server
执行以下命令我们会看到一个新增的OpenVPN 专用网络:tun0
# ip a ... tun0:mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100 link/none inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0 valid_lft forever preferred_lft forever
Windows PC 客户端的配置
12.1.下载 openvpn 客户端并安装:Windows系统下安装,按照默认安装完成即可。 12.2.将Server端生成的Client密钥与证书下载到本地并放在 C:/Program Files/OpenVPN/config 目录下。 需要下载的文件列表: /etc/openvpn/easy-rsa/keys/renwoleusers.crt /etc/openvpn/easy-rsa/keys/renwoleusers.key /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/ta.key 12.3.将 C:/Program Files/OpenVPN/sample-config 下 client.ovpn 文件拷贝到 C:/Program Files/OpenVPN/config 目录。 client.ovpn 文件配置完成后的内容如下: client dev tun ;proto tcp proto udp remote 10.10.204.62 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert renwoleusers.crt key renwoleusers.key remote-cert-tls server tls-auth ta.key 1 cipher AES-256-CBC verb 3
此时点击桌面上的 “OpenVPN GUI” 图标,如果不出意外即可连接成功,若连接报错,请查看分析 C:/Users/yunxi/OpenVPN/log/client.log 日志文件。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/linux/117446.html