企业openvpn安装部署

Linux 祁, 大大 2395浏览 0评论

一、环境准备

一台公有云ECS,绑定弹性公网IP;
一台公司局域网服务器(能访问公网,物理机,虚拟机都可以,网卡数量=局域网的网段数)

注意:此方法适用于没有互联网专线,用拨号上网的办公环境

二、openvpn安装阶段

1. 添加阿里公网源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all && yum makecache

2. 安装依赖软件包

yum –y install rpm-build gcc pam-devel* lzo lzo-devel openssl openssl-devel pam pam-devel
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm
yum –y install pkcs11-helper pkcs11-helper-devel

3. 安装openvpn服务

下载openvpn源码包:

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

使用rpmbuild将源码包编译成rpm包进行安装:

rpmbuild -tb openvpn-2.2.2.tar.gz
rpm –ivh openvpn-2.2.2-1.x86_64.rpm

4. 配置openvpn服务
进入/usr/share/doc/openvpn-2.2.2/easy-rsa/2.0目录,修改vars文件

修改后的vars文件(修改内容自定义)

5. 生成服务端证书

建立软连接

ln -s openssl-1.0.0.cnf openssl.cnf

执行 source ./vars 和 ./clean-all

执行 ./build-ca
生成CA证书,使用vars文件里的参数,默认一路回车:

生成服务端证书
执行 ./build-key-server server
Server是自定义名称,前面一路回车,到最后两次交互按y确认。完成后会在keys目录下保存了server.key、server.csrl和server.crt 三个文件。

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

7. 生成dh1024.pem文件
执行 ./build-dh 生成客户端验证文件dh1024.pem

8. 编辑openvpn配置文件
先将keys目录复制到/etc/openvpn下:

编辑openvpn配置文件(配置文件每行的意思不再阐述,自行搜索):
local 127.0.0.1
port 1194
proto tcp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push “route 192.168.9.0 255.255.255.0”
push “route 192.168.3.0 255.255.255.0”
client-to-client
max-clients 100
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
verb 3

9. 启动openvpn
执行 /etc/init.d/openvpn start

添加为开机自启动

10. 配置iptables规则
配置iptables规则,使openvpn客户端可以访问内网网络。
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o ens192 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o ens160 -j MASQUERADE
iptables-save 配置完保存

添加内核参数,IP转发
net.ipv4.ip_forward = 1

三、部署ngrok内网穿透

Ngrok功能自行搜索。。

1. 安装依赖包并下载ngrok

yum -y install mercurial git gcc golang supervisor

git clone https://github.com/tutumcloud/ngrok.git

2. 公有云ECS公网IP绑定域名

3. 配置ngrokf服务端

NGROK_DOMAIN="ngrok.xxxx.com"
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

\cp rootCA.pem assets/client/tls/ngrokroot.crt -f
\cp device.crt assets/server/tls/snakeoil.crt -f
\cp device.key assets/server/tls/snakeoil.key –f

生成服务器的 ngrokd
执行 make release-server

添加ngrokd的环境变量

4. 编译客户端的 ngrok
这里我主要是生成了windows,arm 和Linux的版本。继续在原先的目录下:

GOOS=linux GOARCH=amd64 make release-client
GOOS=linux GOARCH=386 make release-client

GOOS=windows GOARCH=amd64 make release-client
GOOS=windows GOARCH=386 make release-client

GOOS=darwin GOARCH=amd64 make release-client
GOOS=darwin GOARCH=386 make release-client

GOOS=linux GOARCH=arm make release-client

不同平台使用不同的 GOOS 和 GOARCH,前面的编译选项就是指 go os , go 编译出来的操作系统 (windows,linux,darwin) ;go arch, 对应的构架 (386,amd64,arm)

Linux 平台 32 位系统:GOOS=linux GOARCH=386
Linux 平台 64 位系统:GOOS=linux GOARCH=amd64

Windows 平台 32 位系统:GOOS=windows GOARCH=386
Windows 平台 64 位系统:GOOS=windows GOARCH=amd64

MAC 平台 32 位系统:GOOS=darwin GOARCH=386
MAC 平台 64 位系统:GOOS=darwin GOARCH=amd64

ARM 平台:GOOS=linux GOARCH=arm
通过前面的步骤,就会在bin目录里面生成所有的客户端文件,客户端平台是文件夹的名字,客户端放在对应的目录下,当前Linux平台客户端在bin目录下。然后我们就可以打个包,把所有文件下载到自己的本机了。

这个里面的注意,服务端叫 ngrokd,客户端叫 ngrok,所以以后要放到对应的平台,就只需要对应平台里面的ngrok文件就可以了。

四、编译linux64位客户端ngrok

执行 GOOS=linux GOARCH=amd64 make release-client

五、启动ngrok服务端

执行ngrokd -domain=”ngrok.baidu.com” -httpAddr=”:8088″ -httpsAddr=”:8089″

注意开通ECS安全组port 8088、8089、4443 (供client端连接)

六、配置ngrok客户端

把服务端生成的linux64位客户端文件ngrok上传到openvpn服务器

配置环境变量

编辑配置文件

注意映射到ECS的58889端口,也要在ECS安全组开放。

启动ngrok客户端

执行 ./ngrok -config=./ngrok.cfg start openvpn

成功连接会如图提示。

后台启动ngrok
yum install screen
screen –S ngrok
./ngrok -config=./ngrok.cfg start openvpn
退出ssh终端,再进入,ngrok进程还会在。

七、配置客户端电脑

1.下载客户端软件https://swupdate.openvpn.org/community/releases/openvpn-install-2.4.7-I603.exe

安装步骤省略。。

2. 编辑客户端配置文件
client
dev tun
proto tcp
remote ngrok.baidu.com 58889
resolv-retry infinite
nobind
mute-replay-warnings
ca ca.crt
cert qixujie.crt
key qixujie.key
comp-lzo

再把keys文件夹下的客户端证书文件拷贝到同一文件夹下

把整个文件夹放到客户端的C:\Program Files\OpenVPN\config下

3. 客户端验证

客户端连接手机热点进行测试

连接成功如下图提示

局域网的两个网段都是可以ping通的。

至此结束!


发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • * 昵称:
  • * 邮箱: