本文简要说明如何在 CentOS 系统下配置 OpenVPN 和如何配置 Windows PC 客户端。
说明:本文相关配置和说明仅用于示例和操作指引,阿里云不对相关操作结果及由此产生的问题负责。
配置 OpenVPN
-
准备工作
-
安装 OpenVPN 服务
-
配置 OpenVPN 服务(服务端)
-
启动 OpenVPN
准备工作
在安装 OpenVPN 服务前,请确保完成以下准备工作:
-
使用 工具:update_source.sh 更新 yum 源为阿里云的内网 yum 源。
-
安装依赖的软件包:
bash
yum install -y lzo lzo-devel openssl openssl-devel pam pam-devel
yum install -y pkcs11-helper pkcs11-helper-devel
-
确认软件包已经安装完成:
bash
rpm -qa lzolzo-devel openssl openssl-devel pam pam-devel pkcs11-helper pkcs11-helper-devel
扫描二维码关注公众号,回复: 6362563 查看本文章
安装 OpenVPN 服务
请按照以下步骤安装 OpenVPN 服务:
-
下载 OpenVPN 的源码包:
# wget http://oss.aliyuncs.com/aliyunecs/openvpn-2.2.2.tar.gz
。 -
使用 rpmbuild 命令将源码包编译成 rpm 包进行安装:
# rpmbuild -tb openvpn-2.2.2.tar.gz
。执行 rpmbuild 命令后即开始编译,编译完成后,/root/rpmbuild/RPMS/x86_64
目录下会生成名为 openvpn-2.2.2-1.x86_64.rpm 的安装包。
配置 OpenVPN 服务(服务端)
配置 OpenVPN 服务分为 4 个阶段:
- 初始化
- 生成证书、密钥和参数文件
- 复制证书、密钥和参数文件
- 设置 iptables
初始化
执行命令初始化 PKI:cd /usr/share/doc/openvpn-2.2.2/easy-rsa/2.0
,然后进入/usr/share/doc/openvpn-2.2.2/easy-rsa/2.0
目录,找到 vars 证书环境文件,修改以下 5 行 export 定义的参数值:
bash
export KEY_COUNTRY="CN" 所在的国家
export KEY_PROVINCE="BJ" 所在的省份
export KEY_CITY="Hangzhou" 所在的城市
export KEY_ORG="aliyun" 所属的组织
export KEY_EMAIL=my@test.com 邮件地址
说明:您可以对上述参数的值进行自定义设置,不会导致 OpenVPN 配置出现异常。
生成证书、密钥和参数文件
请按照以下步骤生成所需的证书、密钥和参数文件:
- 执行以下命令,生成服务端的证书并清除
keys
目录下的所有 key:bash
ln -s openssl-1.0.0.cnf openssl.cnf 软链接到openssl-1.0.0.cnf配置文件
source ./vars
./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 参数,完成后,
keys
目录下会生成 dh 参数文件dh1024.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/
-
配置完成后,
server.conf
文件的内容如下:bash
$ egrep -v "^$|^#|^;" server.conf
local 1.1.1.1 请在此处填写您的云服务器的公网IP地址
port 1194
proto udp
dev tun
ca ca.crt
cert aliyuntest.crt 请在此处填写生成服务器端证书时您自定义的crt名称
key aliyuntest.key 请在此处填写生成服务器端证书时您自定义的key名称
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
设置 iptables
设置 iptables 前,请确保 iptables 已经开启且/etc/sysconfig/iptables
文件已经存在,然后按照以下步骤完成设置:
-
开启内部路由转发:
vi /etc/sysctl.conf
-
修改以下参数,启用 IPv4 转发:
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
,然后执行命令:netstat -ano | grep 1194
,查看 1194 端口正在监听,确保 OpenVPN 正在运行。
配置 Windows PC 客户端
请按照以下步骤配置 Windows PC 客户端:
-
下载Windows PC 客户端。
-
执行 Windows PC 客户端安装程序,按照默认设置安装完成。
-
将云服务器中
/etc/openvpn/
目录下的aliyunuser.key
、aliyunuser.crt
和aliyunuser.csr
三个文件下载到需要连接 OpenVPN 的 Windows PC 客户端上(可以使用 ftp 工具下载),保存路径为 OpenVPN 安装路径下的\OpenVPN\config
目录。 -
配置
client.opvn
。在 OpenVPN 安装路径下,将\OpenVPN\sample-config\
目录下的client.opvn
复制到\OpenVPN\config
目录下,然后修改配置文件中的以下参数:bash
proto udp 去掉前面的分号,采用udp协议,与服务器端保持一致
remote 1.1.1.1 1194 请在此处将1.1.1.1修改为您的云服务器的公网IP地址,同时去掉该行前面的注释分号
cert aliyunuser.crt
key aliyunuser.key
-
打开
C:\Program Files (x86)\OpenVPN\bin
目录,右击openvpn-gui-1.0.3.exe
文件,选择 以管理员身份运行(A)(避免导致添加路由失败)。 -
连接成功后,访问阿里云的内网镜像源,确认可以通过 OpenVPN 访问阿里云内网:然后访问 ip.cn,可以看到此时 Windows PC 端的出口公网 IP 已经变为云服务器的公网 IP 地址: