在CentOS系统的ECS实例中如何配置OpenVPN
免责申明:本文可能由社区贡献或涉及第三方产品信息,建议您访问社区或第三方产品的官方网站获取帮助与支持。第三方产品不在阿里云售后支持范围。本文仅供参考,阿里云不做任何暗示或其他形式的承诺。
概述
本文主要介绍在CentOS系统的ECS实例中如何配置OpenVPN。
说明:本文相关配置和说明仅用于示例和操作指引,阿里云不对相关操作结果及由此产生的问题负责。
详细信息
以下是在CentOS系统的ECS实例中如何配置OpenVPN的具体操作步骤。
说明:CentOS 6与CentOS 8操作系统版本结束了生命周期(EOL),按照社区规则,CentOS 6/8的源地址内容已移除。当您在CentOS 6/8系统内继续使用默认配置的源地址时会发生报错。建议您先切换CentOS 6/8的源地址,然后再进行操作。具体操作,请参见CentOS 6 EOL如何切换源?和CentOS 8 EOL如何切换源?。
步骤一:准备工作
在安装OpenVPN服务前,请确保完成以下准备工作。
- 请参见如何通过工具自动更新Linux实例中的软件源,将YUM源更新为阿里云的YUM源。
- 依次执行以下命令,安装依赖的软件包。
yum install -y lzo lzo-devel openssl openssl-devel pam pam-devel
yum install -y pkcs11-helper pkcs11-helper-devel - 执行以下命令,确认软件包已经安装成功。
rpm -qa lzo lzo-devel openssl openssl-devel pam pam-devel pkcs11-helper pkcs11-helper-devel
系统显示类似如下。
步骤二:安装OpenVPN服务
以下是安装OpenVPN服务的具体操作步骤。
- 请先下载openvpn-2.2.2.tar.gz安装包,然后将该安装包上传至ECS服务器。
- 执行以下命令,安装rpm-build软件包。
yum install -y rpm-build
- 执行以下命令,将源码包编译成RPM包进行安装。
rpmbuild -tb openvpn-2.2.2.tar.gz
说明:执行命令后即开始编译,编译完成后,
/root/rpmbuild/RPMS/x86_64
目录下会生成名为“openvpn-2.2.2-1.x86_64.rpm” 的安装包。 - 切换至
/root/rpmbuild/RPMS/x86_64
目录,执行以下命令,以RPM包的格式进行安装。rpm -ivh openvpn-2.2.2-1.x86_64.rpm
系统显示类似如下。
步骤三:配置OpenVPN服务
以下是配置OpenVPN服务的具体操作步骤。
初始化
- 执行以下命令,进入指定目录。找到vars证书环境文件,修改以下5行export定义的参数值。
cd /usr/share/doc/openvpn-2.2.2/easy-rsa/2.0
- 编辑vars证书环境文件,修改以下5行环境变量定义的参数值,保存并退出。
export KEY_COUNTRY="CN"
export KEY_PROVINCE="BJ"
export KEY_CITY="Hangzhou"
export KEY_ORG="aliyun"
export KEY_EMAIL=username@example.com说明:
- “KEY_COUNTRY”为所在的国家。
- “KEY_PROVINCE”为所在的省份。
- “KEY_CITY”为所在的城市。
- “KEY_ORG”为所属的组织。
- “KEY_EMAIL”为邮件地址。
- 您可以对上述参数的值进行自定义设置,不会导致OpenVPN配置出现异常。
生成证书、密钥和参数文件
- 执行以下命令,创建软链接。
ln -s openssl-1.0.0.cnf openssl.cnf
- 执行以下命令,读取并加载vars文件。
source ./vars
- 执行以下命令,清除目录下的所有key。
./clean-all
- 执行以下命令,生成CA证书。您已经在vars证书环境文件中配置了默认参数值,在本步骤中连续输入回车确认,完成配置即可。
./build-ca
- 执行以下命令,生成服务器证书,其中aliyuntest是自定义的名字,连续输入回车确认,最后会有两次交互,输入
y
确认。完成后,keys目录下会生成aliyuntest.key、aliyuntest.csr和aliyuntest.crt三个文件。./build-key-server aliyuntest
系统显示类似如下。 - 执行以下命令,创建密钥与证书,其中aliyunuser是用户名,连续输入回车确认,最后会有两次交互,输入
y
确认。完成后,keys目录下会生成1024位RSA服务器密钥aliyunuser.key、aliyunuser.crt和aliyunuser.csr三个文件。./build-key aliyunuser
- 执行以下命令,生成用于客户端验证的Diffie Hellman参数,完成后,目录下会生成1024.pem参数文件。
./build-dh
复制证书和密钥以及参数文件
- 执行以下命令,将
/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/
- 执行以下命令,将OpenVPN服务端配置文件
server.conf
复制到/etc/openvpn/
目录中。cp -a /usr/share/doc/openvpn-2.2.2/sample-config-files/server.conf /etc/openvpn/
- 配置完成后,切换至
/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
文件已经存在。
- 执行以下命令,编辑配置文件。
vi /etc/sysctl.conf
- 添加以下参数,然后保存并退出。
net.ipv4.ip_forward = 1
- 执行以下命令,加载系统参数。
sysctl -p
- 添加以下iptables规则,确保服务器可以转发数据包到阿里云内网和外网。
iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -j MASQUERADE
- 执行以下命令,保存iptables配置。
service iptables save
启动OpenVPN
- 执行以下命令,启动OpenVPN。
/etc/init.d/openvpn start
- 执行以下命令,确认1194端口正在监听,说明OpenVPN正在运行。
netstat -ano | grep 1194
说明:如果该端口没有被监听,您需要编辑
/etc/init.d/openvpn
文件,将第94行修改为if [ "$NETWORKING" = "no" ]
。保存并推出,然后执行systemctl daemon-reload
命令即可。
步骤四:配置Windows PC客户端
您可以参考以下步骤,在Windows系统上通过OpenVPN客户端连接OpenVPN。
- 下载Windows PC客户端。
- 执行Windows PC客户端安装程序,按照默认设置安装完成。
- 将云服务器中
/etc/openvpn/
目录下的aliyunuser.key、aliyunuser.crt和aliyunuser.csr三个文件下载到需要连接OpenVPN的 Windows PC客户端上(可以使用FTP工具下载),保存路径为OpenVPN安装路径下的\OpenVPN\config
目录。 - 在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”字段中,需删除该行前面的注释分号。
- 打开
C:\Program Files(x86)\OpenVPN\bin
目录,右键单击openvpn-gui-1.0.3.exe
文件,选择以管理员身份运行,避免导致添加路由失败。 - 连接成功后,访问阿里云的内网镜像源,确认可以通过OpenVPN访问阿里云内网。
- 然后访问“ip.cn”,可以看到此时Windows PC端的出口公网IP地址已经变为云服务器的公网IP地址。
适用于
- 云服务器ECS