CentOS7 install and configuration OpenVPN

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="[email protected]"   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 FilesOpenVPNconfig 目录下。    需要下载的文件列表:    /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 FilesOpenVPNsample-config 下 client.ovpn 文件拷贝到 C:Program FilesOpenVPNconfig 目录。    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:UsersyunxiOpenVPNlogclient.log 日志文件。

本文原创地址:https://www.linuxprobe.com/centos7-openvpn-server.html编辑:向云艳,审核员:暂无

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。
超哥软件库 » CentOS7 install and configuration OpenVPN