关于OpenVPN的入门使用
关于OpenVPN的入门使用
1.1源代码编译安装的初步了解
1.2 安装OpenVPN
1.3 生成证书、服务器端证书、客户端证书
1.4 关于server.ovpm & client.ovpn的配置文件
1.5 启动OpenVPN
关于OpenVPN在Linux上面的安装
我们以Ubuntu为例进行安装,我们可以直接采用apt方式进行安装,但是因为软件库的问题,可能不是最新的版本,因此采用源代码的方式进行编译安装。
采用apt方式的安装
sudo apt-get install openvpn
1.1 源代码编译安装的初步了解
OpenVPN在Linux上面安装时基于源代码的编译安装,需要对这种源代码编译安装的方式进行初步的了解。
1)下载源代码解压后,
2)使用./configure 让系统检查编译源代码的所有的依赖关系存在,如果出现错误,证明缺少一些必要的依赖库,需要我们进行安装,比如说gcc g++(如果这个都没有安装,肯定是无法编译源代码的)。
3)编译源代码 make
4)安装编译后生成的执行文件到系统 make install, 这里注意使用sudo权限,因为这里是把编译生成的执行文件,复制到操作系统对应的目录中,比如/usr/bin, 还有修改系统的启动脚本命令(添加开机启动)
1.2 安装OpenVPN
1.2.1 Ubuntu安装OpenVPN
安装OpenVPN之前,你必须先确保Ubuntu上已经安装了C编译器(例如gcc)、OpenSSL、LZO(一种无损压缩算法)、PAM(一种可插入式的身份验证模块)。使用apt-get安装命令如下:
sudo apt-get install gcc libssl-dev liblzo2-devlibpam0g-dev
下载OpenVPN源代码openvpn-2.3.10.tar.gz,并且解压
1)~/openvpn-2.3.10$./configure # 编译检查环境和代码
2)编译: ~/openvpn-2.3.10$make
3)安装:~/openvpn-2.3.10$ sudo makeinstall
安装完成后,默认开机自启,但我们并没有配置文件,因此建议取消开机自启
1.2.2 Windows下面安装OpenVPN
Windows 7下直接安装软件即可,建议在windows7 64位操作系统中安装,安装选项里
面,把所有的组件全部选上,这样软件便安装在了C:\Program Files\OpenVPN目录中,并且添加到了服务中。
1.3 生成证书、服务器端证书、客户端证书
使用easy-rsa生成OpenVPN的配置文件,在github上面,easy-rsa(https://github.com/OpenVPN/easy-rsa)已经更新到了3.0 版本,但是3.0 的改动比较大,但是在OpenVPN中依旧使用的是2.0,下载地址(http://pan.baidu.com/s/1slu20bj),然后就可以生成对应的证书文件了。然后将客户端或者服务器的对应文件放到/etc/openvpn文件夹中。在Windows下面安装的OpenVPN已经带有组件easy-rsa组件,因此可直接在Windows下面生成证书、客户端配置文件和服务器端配置文件,首先修改easy-rsa 中的var.bat.sample
按照提示运行如下脚本命令
echo"enter the openvpn easy-rsa directory"
cdC:\Program Files\OpenVPN\easy-rsa
echo"init the env & clean all car and keys "
init-config
vars
clean-all
echo"build-ca generate the car files pay attention to setting the Common Namewith 'openvpn-ca'"
####KEY_CN=openvpn_ca
build-ca
echo"finished generating the carfile"
echo"start buile the server key file"
echo"set the Common Name with 'server' name with 'server' , then input y & y"
bulid-key-serverserver
echo"build client key" #生成两个客户端证书 CommonName设置为client-a & client-b
build-keyclient-a
build-keyclient-b
cdC:\Program Files\OpenVPN\bin
#生成关于防止DDOS攻击的安全文件,生成TLS-auth密钥
openvpn--genkey --secret ../easy-rsa/keys/ta.key
#生成迪菲•赫尔曼交换密钥,这是一种安全的加密协议,用于加密数据进行传输
build-dh
查看生成文件的结果:
ca.crt # CA证书
ca.key #CA密钥这两个文件是使用build-ca生成的
server.crt
server.key#服务端证书和密钥使用build-key-server server
client-a.crt
client-a.key#客户端A的证书和密钥
client-b.crt
client-b.key#客户端A的证书和密钥
ta.key#TLS-auth密钥
dh1024.pem#迪菲•赫尔曼交换密钥
服务器端的文件(7个):ca.crt ca.key server.crtserver.key dh1024.pem ta.key server.ovpn
客户端端的文件(5个):ca.crt client-a.crtclient-a.key ta.key client.ovpn
关于server.ovpn 和 client.ovpn文件是OpenVPN启动的配置文件,后面讲解如何配置。
1.4 关于server.ovpm & client.ovpn的配置文件
上面两个配置文件是OpenVPN启动的关键配置文件,在sample-config有关于server.ovpn和client.ovpn的样例文件:
server.ovpn
# Which local IP address should OpenVPN # listen on? (optional) local 192.168.1.101 port 1194 proto tcp ;proto udp ;dev tap dev tun ca ca.crt cert server.crt key server.key # This file should be kept secret dh dh1024.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt client-to-client keepalive 10 120 tls-auth ta.key 0 # This file is secret comp-lzo persist-key persist-tun status openvpn-status.log verb 3 client.ovpn client
client.ovpn
client#指定当前VPN是客户端 dev tun #必须与服务器端的保持一致 proto udp #必须与服务器端的保持一致 remote 192.168.1.101 1194 #指定连接的远程服务器的实际IP地址和端口号 resolv-retry infinite #断线自动重新连接,在网络不稳定的情况下(例如:笔记本电脑无线网络)非常有用。 nobind #不绑定特定的本地端口号 persist-key persist-tun ca ca.crt #指定CA证书的文件路径 cert client1.crt #指定当前客户端的证书文件路径 key client1.key #指定当前客户端的私钥文件路径 ns-cert-type server #指定采用服务器校验方式 tls-auth ta.key 1 #如果服务器设置了防御DoS等攻击的ta.key,则必须每个客户端开启;如果未设置,则注释掉这一行; comp-lzo #与服务器保持一致 verb 3 #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细
1.5启动OpenVPN
1.5.1 Windows OpenVPN Server
把服务器端的配置文件放在OpenVPN安装目录中的config下面,通过OpenVPN服务启动该服务,则OpenVPN Server已经开启。
1.5.2 Windows OpenClient
把客户端的所有配置文件放在OpenVPN安装目录中的config下面,通过OpenVPN客户端双击启动即可。如果连接成功在右下角图标编程绿色。
1.5.3 Linux(Ubuntu)启动OpenVPN
启动脚本 start-vpn.sh
#!/bin/bash
openvpnPid="vpn-pid.txt"
if[ ! -f "$openvpnPid" ];then
sudo nohup openvpn /etc/openvpn/client.ovpn & echo$! > vpn-pid.txt
else
echo "please stop the openvpnfirst by the stop-vpn.sh"
fi
关闭脚本 stop-vpn.sh
#!/bin/bash
openvpnPid="vpn-pid.txt"
if[ -f "$openvpnPid" ];then
sudo kill `cat vpn-pid.txt`
rm vpn-pid.txt
else
echo "the openvpn service is notrunning"
fi
配置NAT端口映射脚本 fo.sh
其中10.8.0.6是VPN客户端的VPN-IP 192.168.1.64是IPC摄像机的IP,这里涉及到了Linux数据包转发、防火墙ufw和iptables的知识,之后在专门的进行讲解
iptables-t nat -F
iptables-P INPUT ACCEPT
iptables-P FORWARD ACCEPT
iptables-t nat -A PREROUTING -d 10.8.0.6 -p tcp --dport 8080 -j DNAT --to-destination192.168.1.64:80
iptables-t nat -A PREROUTING -d 10.8.0.6 -p tcp --dport 8000 -j DNAT --to-destination192.168.1.64:8000
iptables-t nat -A POSTROUTING -s 192.168.1.64 -p tcp -j SNAT --to-source 10.8.0.6
XXXXXXX:~$ ping 10.8.0.1
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=1.42 ms
64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=1.64 ms
64 bytes from 10.8.0.1: icmp_seq=3 ttl=64 time=1.48 ms
Success
文卿
2016-08-10
关于OpenVPN的入门使用的更多相关文章
- openvpn部署之快速入门实战+一键部署openvpn脚本
个人原创禁止转载 软件环境: Centos6.9 x64 openvpn-2.4.3-1.el6.x86_64.rpm easy-rsa-2.2.2-1.el6.noarch.rpm #推荐使用 ...
- 使用Spark分析拉勾网招聘信息(三): BMR 入门
简述 本文,意在以最小的篇幅,来帮助对大数据和Spark感兴趣的小伙伴,能尽快搭建一个可用的Spark开发环境.力求言简意赅.文章,不敢自称BMR的最佳实践,但绝对可以帮助初学者,迅速入门,能够专心于 ...
- 绕过校园网的共享限制 win10搭建VPN服务器实现--从入门到放弃
一.开篇立论= =.. 上次说到博主在电脑上搭建了代理服务器来绕过天翼客户端的共享限制,然而经过实际测试还不够完美,所以本着生命不息,折腾不止的精神,我又开始研究搭建vpn服务器= =... (上次的 ...
- Linux系统入门简介<1>
linux系统入门简介 我们为什么要学习Linux? 在介绍Linux的历史前,我想先针对大家如何对Linux的发音说一下.我发现我身边的朋友对Linux的发音大致有这么几种: "里那克斯& ...
- Ldap 从入门到放弃(一)
OpenLDAP 2.4版本 快速入门 本文内容是自己通过官网文档.网络和相关书籍学习和理解并整理成文档,其中有错误或者疑问请在文章下方留言. 一.Introduction to OpenLDAP D ...
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- Oracle分析函数入门
一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
随机推荐
- node开发
1. 国内使用npm安装某些插件的时候,偶尔会有网络问题,可以使用cnpm:(后续所有使用 npm 无法正常安装的,都改成 cnpm 试试) a. 首先使用 npm 安装 cnpm:npm insta ...
- 【Android UI】Android Layout XML属性
Layout对于迅速的搭建界面和提高界面在不同分辨率的屏幕上的适应性具有很大的作用.这里简要介绍Android的Layout和研究一下它的实现. Android有Layout:FrameLayout, ...
- javascript中array常用属性方法
属性: length 表示一个无符号 32-bit 整数,返回一个数组中的元素个数. 截短数组..截短至长度2 则: .length = 2 方法: Array.from() 方法可以将一个类数 ...
- ruby使用DBI连接MySQL数据库发生异常:in `error': Can't connect to MySQL server on 'localhost' (10061) (DBI::DatabaseError)
Ruby使用DBI连接MySQL数据库一般为: require "dbi" dbh = DBI.connect("dbi:Mysql:test:localhost&quo ...
- Connecting sql server2008 through C#
本实例只在于将通过ASP.NET上的控件(如button.textbox等)结合C#中类的应用,将自己需要的数据存入当地的SQL SERVER数据库中 首先我们在项目中需要建立一个ASP.NET We ...
- [置顶]PADS PCB功能使用技巧系列之NO.002- 如何走差分线?
差分信号在高速电路设计中应用越来越广泛,如USB.HDMI.PCI.DDR*等,承载差分信号的差分线主要优势有:抗干扰能力强,能有效抑制EMI.时序定位精确等,对于PCB工程师来说,最关注的是如何确保 ...
- SAP DataServices企业定制培训
No. Item Remark 1 Dataservices overview DS概述 2 SAP Dataservices 安装与配置 DS的配置 3 DS ETL开发<1> for ...
- JAVA学习博客---2015-8
八月份的学习博客,今天已经是九月四号了,补上吧.现在我又回到C++了,JAVA的基本的东西都懂了,但是更好的掌握JAVA,我必须原路返回去学习C++,当初为了更快的学JAVA,其实我得C++都是跳着看 ...
- ie7,8常见bug,共计257个bug汇总?如何解决ie的历史bug
ie7.8常见bug,共计257个bug汇总 针对web开发者来说,浏览器的bug,特备是ie的bug是很多人的噩梦,因为ie的更新换代没有ff,chrome,safari,opera那么快,而且ie ...
- git 撤销提交的文件
一.问题 近期在使用git时遇到一个问题,就是在git上传文件时,将一个100兆的大文件添加到了git,并执行了push操作,这时在上传完毕后,会提示这个错误 Large files detected ...