OpenVPN 搭建
OpenVPN 搭建
简介
OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现。和传统 VPN 相比,它的优点是简单易用。
在OpenVPN中,如果用户访问一个远程的虚拟地址(属于虚拟网卡配用的地址系列,区别于真实地址),则操作系统会通过路由机制将数据包(TUN模式)或数据帧(TAP模式)发送到虚拟网卡上,服务程序接收该数据并进行相应的处理后,通过SOCKET从外网上发送出去,远程服务程序通过SOCKET从外网上接收数据,并进行相应的处理后,发送给虚拟网卡,则应用软件可以接收到,完成了一个单向传输的过程,反之亦然。
起因
整个项目的起因是由于业务的不断扩张和不断提升的并发量给服务器造成了巨大压力。经过多方优化。以及问题排查。
发现服务器本身自带的防火墙iptables会极大的影响服务器性能。故所有业务服务器全都关闭防火墙。相对的这也带来
了很大的安全隐患。为了解决安全隐患而考虑用OpenVPN搭建跳板机。
实验目标
通过OpenVPN推送一个连接地址到本地电脑的虚拟网卡上。从而让本地电脑能够访问服务器的内网,起到跳板机的作用。
服务器集群关闭ssh对外网的监听。只监听内网。自己对外端口需要自行做出调整。保障安全。
跳板机不用来处理大并发业务。故自身的防火墙是可以打开的。
- OpenVPN 搭建
- 简介
- 起因
- 实验目标
- 部署
- 服务端
- 客户端
- 服务器集群
- 收尾
- 总结
- 反馈与建议
部署
首先从官网下载新版本的openvpn包。这里以2.3.10为例。
地址:https://openvpn.net/index.php/download/community-downloads.html
开启IP转发
1.sed -i ‘s/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/‘ /etc/sysctl.conf 2.sysctl -p
解压,并移动到/etc 下面。然后安装依赖包
1.tar -zxvf openvpn-2.3.10.tar.gz2.mv ~/openvpn-2.3.10 /etc/openvpn3.yum install -y openssl openssl-devel lzo lzo-devel pam pam-devel automake pkgconfig
编译安装
1../configure2.make && make install
然后下载easy-rsa包来制作证书
1.cd /etc/openvpn2.wget https://github.com/OpenVPN/easy-rsa/archive/master.zip3.mv master master.zip4.unzip master.zip5.mv easy-rsa-master/ easy-rsa/6.cd /etc/openvpn/easy-rsa/easyrsa3/
初始化目录
1../easyrsa init-pki
创建根证书,输入根证书密码并输入名称
1../easyrsa build-ca
服务端
创建服务端证书,不要和根证书同名。这里我输入topstargogo
1../easyrsa gen-req server nopass
签约服务端证书,输入根证书密码:
1../easyrsa sign server server
创建Diffie-Hellman,确保key穿越不安全网络的命令:
1../easyrsa gen-dh
客户端
创建client 把刚才下载的easy-rsa拷贝到client下用于制作客户端证书。
1.cd /root/2.mkdir client 3.cp /etc/openvpn/master.zip ~/client/4.cd /root/client5.unzip master.zip 6.mv easy-rsa-master/ easy-rsa7.cd client/easy-rsa/easyrsa3/
初始化
1../easyrsa init-pki
现在可以开始制作用户的key和证书。做完后去服务端目录下签约
过程中会需要为该用户设定密码。Common Name 就输入一样的就
行
1../easyrsa gen-req star
服务端签约
1.cd /etc/openvpn/easy-rsa/easyrsa3/2../easyrsa import-req /root/client/easy-rsa/easyrsa3/pki/reqs/star.req star3../easyrsa sign client star
到此为止客户端的部分已完成,那么下面要的就是修改配置文件,和在用户的机子下载OpenVPN的客户端。
服务器集群
然后在所有你要连接的服务器上添加一个静态路由。告诉10.8.0.0这个地址的下一跳是OpenVPN服务器
1.route add -net 10.8.0.0 netmask 255.255.255.0 gw 10.1.1.25#gw是我OpenVPN服务器的内网地址
关闭ssh对外网的监听。只监听内网。ListenAddress写的是你内网网卡的IP地址。这样写表示只监听内网网卡
1.vim /etc/ssh/sshd_config2.service sshd restart
收尾
把证书拷贝到相应位置。
1.cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /etc/openvpn2.cp /etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key /etc/openvpn3.cp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt /etc/openvpn4.cp /etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem /etc/openvpn5.cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /root/client6.cp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/star.crt /root/client7.cp /root/client/easy-rsa/easyrsa3/pki/private/star.key /root/client
拷贝配置文件模板到OpenVPN目录下
1.cp /etc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/
这里我附上我配置文件的内容。我只用了我需要用的配置。至于其它配置干嘛用
注释里都写的很详细,不细说了
1.local 1.1.1.1 #OpenVPN服务器的公网IP2.port 1194 #端口号3.proto udp #用UDP协议4.dev tun5.ca /etc/openvpn/ca.crt #服务端证书位置6.cert /etc/openvpn/server.crt7.key /etc/openvpn/server.key 8.dh /etc/openvpn/dh.pem9.server 10.8.0.0 255.255.255.0 #服务器和本地电脑用这个网段来通信。不要和自己的内网冲突。10.ifconfig-pool-persist ipp.txt11.push "route 10.1.1.0 255.255.255.0" #这是要推送服务器内网的地址,输入你服务器的内网网段。12.keepalive 10 12013.max-clients 10014.persist-key15.persist-tun16.status openvpn-status.log17.verb 3
启动OpenVPN的服务
1.openvpn --config /etc/openvpn/server.conf&
接下来将ca.crt star.crt star.key拷贝下来
1.yum install -y lrzsz2.cd ~/client3.sz ca.crt star.crt star.key
去百度下载一个windows 的OpenVPN客户端。
这里以2.36为例,打开后一路下一步。安装完成。
打开安装目录下面D:\OpenVPN\config
然后把刚才从服务器上下载的key和证书拷贝进来
编辑client.open
1.client2.dev tun3.proto udp4.remote 1.1.1.1 1194 #OpenVPN服务器的公网IP5.resolv-retry infinite6.nobind7.persist-key8.persist-tun9.ca ca.crt 10.cert star.crt11.key star.key12.verb 3
打开客户端后输入密码就能连接服务器
总结
OpenVPN不仅仅只是可以用来做跳板机,还能用来实现异地机房的通信
以及通过VPSFQ等等。这个在后续会有介绍
反馈与建议
感谢阅读这份文档。敬请期待下一篇对OpenVPN的介绍