Linux CentOS OpenVPN 配置概述

赞赏 2016-12-07

本文概要说明 CentOS 系统下的 OpenVPN 配置,步骤如下:

1:准备工作
2:安装 OpenVPN 服务
3:配置 OpenVPN 服务(服务端)
4:启动 OpenVPN


准备工作


1. 安装依赖的软件包:

yum install -y lzo lzo-devel openssl openssl-devel pam pam-devel 
yum install -y pkcs11-helper pkcs11-helper-devel

确认已经安装完成:

rpm -qa lzolzo-devel openssl openssl-devel pam pam-devel pkcs11-helper pkcs11-helper-devel

1-rpm.jpg  


安装 OpenVPN 服务


1. 下载 openvpn 的源码包

wget http://oss.aliyuncs.com/aliyunecs/openvpn-2.2.2.tar.gz

2. 使用 rpmbuild 将源码包编译成rpm包来进行安装

rpmbuild -tb openvpn-2.2.2.tar.gz

执行这条命令以后就会正常开始编译了,编译完成以后会在 /root/rpmbuild/RPMS/x86_64 目录下生成 openvpn-2.2.2-1.x86_64.rpm 安装包。


3.  执行rpm -ivh openvpn-2.2.2-1.x86_64.rpm 以rpm包的方式安装:

2-狿瀀洀.jpg  


配置 OpenVPN 服务(服务端)


1. 初始化 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 证书环境文件,修改以下几行 export 定义的参数值  

exportKEY_COUNTRY="CN" 所在的国家
export KEY_PROVINCE="BJ"  所在的省份
exportKEY_CITY="Hangzhou"   所在的城市
exportKEY_ORG="aliyun"        所属的组织 
export KEY_EMAIL=my@test.com    邮件地址

上述参数的值可以自定义设置,对配置无影响。  


2. 生成服务端的证书:

清除并删除 keys 目录下的所有 key 

ln -s openssl-1.0.0.cnf openssl.cnf 做个软链接到openssl-1.0.0.cnf配置文件 
source ./vars
./clean-all

生成 CA 证书,刚刚已经在 vars 文件中配置了默认参数值,多次回车完成就可以  :

./build-ca

3-buledca.jpg 

 

生成服务器证书,其中 aliyuntest 是自定义的名字,一直回车,到最后会有两次交互,输入 y 确认,完成后会在 keys 目录下保存了 aliyuntest.key、aliyuntest.csr 和 aliyuntest.crt 三个文件。 

./build-key-server aliyuntest

4-秿.jpg


3. 创建用户秘钥与证书 

./build-key aliyunuser

创建用户名为 aliyunuser 的秘钥和证书,一直回车,到最后会有两次确认,只要按y确认即可。完成后,在 keys 目录下生成 1024 位 RSA 服务器密钥 aliyunuser.key、aliyunuser.crt 和 aliyunuser.csr 三个文件。


4. 生成 Diffie Hellman参 数 

./build-dh

执行了./build-dh后,会在 keys 目录下生成 dh 参数文件 dh1024.pem。该文件客户端验证的时候会用到。  


5. 将 /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/


6. 复制 openvpn 服务端配置文件 server.conf 到 /etc/openvpn/ 目录下:

cp -a /usr/share/doc/openvpn-2.2.2/sample-config-files/server.conf  /etc/openvpn/


7. server.conf 配置

配置完成后的内容如下:

egrep -v "^$|^#|^;" server.conf
local 1.1.1.1  此处请填写用户自己的云服务器的公网IP地址
port 1194
proto udp
dev tunca ca.crt
cert aliyuntest.crt   此处crt以及下一行的key,请填写生成服务器端证书时用户自定义的名称
key aliyuntest.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

0.jpg


8. 设置 iptables

设置前请确保 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


/etc/init.d/openvpn start

通过 netstat -ano | grep 1194 查看 1194 端口在监听,确保 openvpn 在运行中。


Windows PC 客户端的配置 


1.下载 openvpn 客户端

2. 安装:Windows系统下安装,按照默认设置安装完成。

3. 将云服务器中 /etc/openvpn/ 目录下的 aliyunuser.key、aliyunuser.crt 和 aliyunuser.csr 三个文件下载到需要连接 openvpn 的 Windows 客户端上(可以使用 ftp 或者 xftp 工具下载)。

保存路径为 openvpn 软件的安装路径下的 \OpenVPN\config 目录。

4. 配置 client.opvn 

将 openvpn 安装路径下的 \OpenVPN\sample-config\ 目录中下的 client.opvn 复制到 openvpn 安装路径下的 \OpenVPN\config 目录,然后修配置文件中的如下参数; 

proto udp   去掉前面的分号,采用与服务器端相同的udp协议 
remote  1.1.1.1  1194   此处将1.1.1.1修改为用户的云服务器的公网IP地址,同时将该行前面的注释分号去掉
cert aliyunuser.crt     
key aliyunuser.key


5. 到 C:\Program Files (x86)\OpenVPN\bin 目录下,找到 openvpn-gui-1.0.3.exe 文件,右键选择以管理员权限运行(避免普通用户运行导致添加路由失败):

8-.jpg


6. 连接成功后,通过访问阿里云的内网镜像源 http://mirrors.aliyuncs.com/ 确认可以通过 openvpn 访问阿里云内网:


7-.jpg


同时访问 ip.cn,可以查看到此时 Windows PC 端的出口公网 IP 已经变为了云服务器的公网 IP 地址:

登陆后阅读全文
阅读 1943 赞赏 0 有用 2 没用 0 收藏 0 分享

   



0 条留言

linux分享的头像

linux分享

每个软件都有确定的用途

相关文章

Linux 如何安装 VNC Server图形化?

CentOS 6.5系统下 Apache 如何配置 https 服务?

CentOS 6.5下 Nginx 配置 https 服务

主机宝Linux版(CentOS 64位)配置 HTTPS 站点

Centos mkswap error: swap area needs to be at least 40 KiB

云服务器 ECS Linux /tmp 目录文件是如何做到定期清理的?

Linux 安装 gcc 报错:[Errno 14] HTTP Error 404

Linux 挂载了错误的文件系统导致网络服务异常

centos linux 怎么查看进程挂掉的原因

Centos 7下如何重启 sshd 服务及如何设置自启动

有料推荐

这世界欠我一个这样的老公!

高校学生模仿“世界名画”摆拍,可以说是戏精本精了

iPhone X 跌破发行价,苏宁200亿入股恒大 | 财经日日评

果然是高手!这次在日本,特朗普竹杠敲得不是一般狠

资深黄牛现身说法:iPhone X价格秒变不停,就像炒股一样

长一样的双胞胎也能识别?蚂蚁金服发布「眼纹识别」技术

苏联是怎么被阿富汗拖垮的?

美团或入局「分时租赁」共享汽车,王兴要大笔投入「泛出行」领域了? | 36氪独家

你或许被“一盘番茄炒蛋”刷屏了,但有人辛酸,有人质疑

iPhone X发售前夜,黄牛与苹果公司的不安

他的文章

我是如何执行 "rm -rf ~" 的

正态分布为什么常见?(财富的分布却不符合正态分布)

Linux下窗口管理器 xmonad 的使用教程

用披萨做比喻来解释 IaaS,PaaS,SaaS 的区别

如何制作CSR(证书私钥和证书请求文件)文件?

php RedisException with message read error on connection

Windows环境下ping丢包或不通时链路测试工具推荐

Linux下ping丢包或不通时链路测试工具推荐

链路测试结果分析说明及常见链路异常场景和测试报告

SSH 登录时出现如下错误:login: Module is unknown

手机扫一扫
分享文章