在CentOS系统的ECS实例中如何配置OpenVPN

免责申明:本文可能由社区贡献或涉及第三方产品信息,建议您访问社区或第三方产品的官方网站获取帮助与支持。第三方产品不在阿里云售后支持范围。本文仅供参考,阿里云不做任何暗示或其他形式的承诺。

概述

本文主要介绍在CentOS系统的ECS实例中如何配置OpenVPN。

说明:本文相关配置和说明仅用于示例和操作指引,阿里云不对相关操作结果及由此产生的问题负责。

详细信息

以下是在CentOS系统的ECS实例中如何配置OpenVPN的具体操作步骤。

步骤一:准备工作

在安装OpenVPN服务前,请确保完成以下准备工作。

  1. 请参见如何通过工具自动更新Linux实例中的软件源,将YUM源更新为阿里云的YUM源。
  2. 依次执行以下命令,安装依赖的软件包。     
    yum install -y lzo lzo-devel openssl openssl-devel pam pam-devel
    yum install -y pkcs11-helper pkcs11-helper-devel
  3. 执行以下命令,确认软件包已经安装成功。
    rpm -qa lzo lzo-devel openssl openssl-devel pam pam-devel pkcs11-helper pkcs11-helper-devel
    系统显示类似如下。

步骤二:安装OpenVPN服务

以下是安装OpenVPN服务的具体操作步骤。

  1. 执行以下命令,下载OpenVPN的源码包。
    wget http://oss.aliyuncs.com/aliyunecs/openvpn-2.2.2.tar.gz
  2. 执行以下命令,安装rpm-build软件包。
    yum install -y rpm-build
  3. 执行以下命令,将源码包编译成RPM包进行安装。
    rpmbuild -tb openvpn-2.2.2.tar.gz
    说明:执行命令后即开始编译,编译完成后,/root/rpmbuild/RPMS/x86_64目录下会生成名为“openvpn-2.2.2-1.x86_64.rpm” 的安装包。
  4. 切换至/root/rpmbuild/RPMS/x86_64目录,执行以下命令,以RPM包的格式进行安装。
    rpm -ivh openvpn-2.2.2-1.x86_64.rpm
    系统显示类似如下。

步骤三:配置OpenVPN服务

以下是配置OpenVPN服务的具体操作步骤。

初始化

  1. 执行以下命令,进入指定目录。找到vars证书环境文件,修改以下5行export定义的参数值。
    cd /usr/share/doc/openvpn-2.2.2/easy-rsa/2.0
  2. 编辑vars证书环境文件,修改以下5行环境变量定义的参数值,保存并退出。
    export KEY_COUNTRY="CN" 
    export KEY_PROVINCE="BJ"
    export KEY_CITY="Hangzhou"
    export KEY_ORG="aliyun"
    export KEY_EMAIL=my@test.com
    说明
    • “KEY_COUNTRY”为所在的国家。
    • “KEY_PROVINCE”为所在的省份。
    • “KEY_CITY”为所在的城市。
    • “KEY_ORG”为所属的组织。
    • “KEY_EMAIL”为邮件地址。
    • 您可以对上述参数的值进行自定义设置,不会导致OpenVPN配置出现异常。

生成证书、密钥和参数文件

  1. 执行以下命令,创建软链接。
    ln -s openssl-1.0.0.cnf openssl.cnf
  2. 执行以下命令,读取并加载vars文件。
    source ./vars
  3. 执行以下命令,清除目录下的所有key。
    ./clean-all
  4. 执行以下命令,生成CA证书。您已经在vars证书环境文件中配置了默认参数值,在本步骤中连续输入回车确认,完成配置即可。
    ./build-ca
  5. 执行以下命令,生成服务器证书,其中aliyuntest是自定义的名字,连续输入回车确认,最后会有两次交互,输入y确认。完成后,keys目录下会生成aliyuntest.key、aliyuntest.csr和aliyuntest.crt三个文件。
    ./build-key-server aliyuntest 
    系统显示类似如下。
  6. 执行以下命令,创建密钥与证书,其中aliyunuser是用户名,连续输入回车确认,最后会有两次交互,输入y确认。完成后,keys目录下会生成1024位RSA服务器密钥aliyunuser.key、aliyunuser.crt和aliyunuser.csr三个文件。
    ./build-key aliyunuser 
  7. 执行以下命令,生成用于客户端验证的Diffie Hellman参数,完成后,目录下会生成1024.pem参数文件。
    ./build-dh 

复制证书和密钥以及参数文件

  1. 执行以下命令,将/usr/share/doc/openvpn-2.2.2/easy-rsa/2.0/keys目录中的所有文件复制到/etc/openvpn目录中。
    cp -a /usr/share/doc/openvpn-2.2.2/easy-rsa/2.0/keys/* /etc/openvpn/
  2. 执行以下命令,将OpenVPN服务端配置文件server.conf复制到/etc/openvpn/目录中。
    cp -a /usr/share/doc/openvpn-2.2.2/sample-config-files/server.conf  /etc/openvpn/
  3. 配置完成后,切换至/etc/openvpn目录,编辑server.conf配置文件,配置文件内容类似如下。
    local [$IP]
    port 1194
    proto udp
    dev tun
    ca ca.crt
    cert [$CRT_Name]
    key [$Key_Name]
    dh dh1024.pem
    server 172.16.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
    comp-lzo
    user nobody
    group nobody
    persist-key
    persist-tun
    status openvpn-status.log
    log openvpn.log
    verb 3
    说明
    • [$IP]为云服务器的公网IP地址。
    • [$CRT_Name]为生成服务器端证书时自定义的额CRT名称。
    • [$Key_Name]为生成服务器证书时自定义的KEY的名称。

设置防火墙

说明:设置防火墙前,请确保iptables服务已经开启,且/etc/sysconfig/iptables文件已经存在。

  1. 执行以下命令,编辑配置文件。
    vi /etc/sysctl.conf
  2. 添加以下参数,然后保存并退出。
    net.ipv4.ip_forward = 1
  3. 执行以下命令,加载系统参数。
    sysctl -p
  4. 添加以下iptables规则,确保服务器可以转发数据包到阿里云内网和外网。
    iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -j MASQUERADE
  5. 执行以下命令,保存iptables配置。
     service iptables save

启动OpenVPN

  1. 执行以下命令,启动OpenVPN。
    /etc/init.d/openvpn start
  2. 执行以下命令,确认1194端口正在监听,说明OpenVPN正在运行。
    netstat -ano | grep 1194
    说明:如果该端口没有被监听,您需要编辑/etc/init.d/openvpn文件,将第94行修改为if [ "$NETWORKING" = "no" ]。保存并推出,然后执行systemctl daemon-reload命令即可。

步骤四:配置Windows PC客户端

您可以参考以下步骤,在Windows系统上通过OpenVPN客户端连接OpenVPN。

  1. 下载Windows PC客户端
  2. 执行Windows PC客户端安装程序,按照默认设置安装完成。
  3. 将云服务器中/etc/openvpn/目录下的aliyunuser.key、aliyunuser.crt和aliyunuser.csr三个文件下载到需要连接OpenVPN的 Windows PC客户端上(可以使用FTP工具下载),保存路径为OpenVPN安装路径下的\OpenVPN\config目录。
  4. 在OpenVPN安装路径下,将\OpenVPN\sample-config\目录下的client.opvn复制到\OpenVPN\config目录下,然后修改配置文件中的以下参数。
    proto udp   
    remote [$IP] 1194
    cert aliyunuser.crt
    key aliyunuser.key
    说明
    • “proto udp”字段中,需删除前面的注释分号,采用UDP协议,与服务器端保持一致。
    • “remote [$IP] 1194”字段中,需删除该行前面的注释分号。
  5. 打开C:\Program Files(x86)\OpenVPN\bin目录,右键单击openvpn-gui-1.0.3.exe文件,选择以管理员身份运行,避免导致添加路由失败。
  6. 连接成功后,访问阿里云的内网镜像源,确认可以通过OpenVPN访问阿里云内网。
  7. 然后访问“ip.cn”,可以看到此时Windows PC端的出口公网IP地址已经变为云服务器的公网IP地址。

适用于

  • 云服务器ECS