Centos的OpenVPN安装

什么是openvpn?

OpenVPN是一个基于OpenSSL库的应用层VPN实现

openvpn可工作于两种模式:

tun 一种是IP遂道路由模式,主要应用于点对点

eth 一种是基于以太网的遂道桥模式, 应用于点对多点,有多个分支机构

openvpn提供两种安全模式:

Static Key

X509 PKI (Public Key Infrastructure)

1.基础环境安装:

 os:CentOS release 6.4
 2.6.32-358.el6.x86_64
yum install -y openssl openssl-devel lzo gcc gcc-c++

安装LZO 用于压缩通讯数据加快传输速度

wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.09.tar.gz
tar zxvf lzo-2.09.tar.gz 
cd lzo-2.09.tar.gz
./configure 
make && make install

TUN/TAP

OpenVpn要使用到TUN/TAP作为接口建立隧道,但需要内核支持。TUN 接口创建的是三层路由隧道,建立方便;

TAP 是二层网卡桥接隧道,即创建一个以太网桥接,相对复杂。

TUN 接口下所有的客户端处于一个完全独立的子网内,与 VPN 服务器所在的子网没有关系;

TAP 接口的好处相较之下则相当明显,客户端可以获得 VPN 服务器所处子网的 IP

(即,忽略物理上的区别,可以完全将客户端看做是于 VPN 服务器处于同一子网的另一台机器)

检查内核是否支持TUN/TAP设备驱动

# modinfo tun  如果有正常的输出,则支持

确定内核支持TUN/TAP模块之后,加载模块

# modinfo tun    # 加载

# lsmod tun      # 检查

# ls /dev/net/tun  # 检查文件是否存在判断tun模块是否加载

2.安装openVPN

a) RPM安装epel源

rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
sed -i ‘s/^mirrorlist=https/mirrorlist=http/‘ /etc/yum.repos.d/epel.repo

b) 源码安装OpenVPN

下载 http://openvpn.net/

tar zxvf openvpn-2.1.3.tar.gz
cd openvpn-2.1.3
./configure
make && make install

3.配置OpenVPN

a)初始化PKI
 设置环境变量
  # mkdir -pv /etc/openvpn
  # cp -r ../../openvpn-2.1.3/easy-rsa /etc/openvpn
  修改证书变量 
  # cd /etc/openvpn/easy-rsa/2.0
  # cat /etc/openvpn/easy-rsa/2.0  # 自定义修改如下内容
    export KEY_COUNTRY="CN"        # 国家
    export KEY_PROVINCE="SH"       # 省
    export KEY_CITY="SH"           # 市
    export KEY_ORG="ZZT"           # 公司
    export KEY_OU="IT"             # 部门
    export KEY_EMAIL="[email protected]"  # 邮箱
 初始化环境变量
  # source vars
  # ./clean-all
  # ./build-ca   # 生成根证书ca.crt和根密钥ca.key(一路按回车即可),因为vars文件已经在上面自定义默认的变量值
  # ./build-key-server server # 为服务端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
  每一个登陆的VPN客户端需要有一个证书,每个证书在同一时刻只能供一个客户端连接,下面建立
  # ./build-key client  # 为客户端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
  # ./build-dh   # 创建迪菲·赫尔曼密钥,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它)
  # openvpn --genkey --secret keys/ta.key  # 生成ta.key文件(防DDos攻击、UDP淹没等恶意攻击)

4.创建服务器端配置文件

将需要用到的openvpn证书和密钥复制一份到刚创建好的keys目录中

mkdir -pv /etc/openvpn/keys
cp /etc/openvpn/easy-rsa/2.0/keys/{ca.crt,server.{crt,key},dh1024.pem,ta.key} /etc/openvpn/keys/

复制一份服务器端配置文件模板server.conf到/etc/openvpn/

# cp ./../openvpn-2.1.3/sample-config-files/server.conf  /etc/openvpn/  
# cat /etc/openvpn/server.conf
  ;local a.b.c.d     # 申明本机使用的IP地址,也可以不说明
  port 1194   # 端口
  proto tcp   # 协议,默认使用udp,如果使用HTTP Proxy,必须使用tcp协议            
  dev tun     # 申明使用的设备可选tap和tun,tap是二层设备,支持链路层协议;tun是ip层的点对点协议,限制稍微多一些
  ca keys/ca.crt       # 全路径为/etc/openvpn/keys/ca.crt,用于验证客户是证书是否合法
  cert keys/server.crt # 全路径为/etc/openvpn/keys/server.crt,Server使用的证书文件
  key keys/server.key  # 全路径为/etc/openvpn/keys/server.key,Server使用的证书对应的key,注意文件的权限,防止被盗
  dh keys/dh1024.pem   # 全路径为/etc/openvpn/keys/dh1024.pem
  server 10.8.0.0 255.255.255.0  # 地址池,配置VPN使用的网段,OpenVPN会自动提供基于该网段的DHCP服务,保证唯一,不要和实际的局域网冲突即可
  ifconfig-pool-persist ipp.txt  # 用于记录某个Client获得的IP地址,类似于dhcpd.lease文件,防止openvpn重新启动后“忘记”Client曾经使用过的IP地址
  ;client-config-dir /etc/openvpn/ccd # 定义每个客户端的个性化配置文件
  # 推送路由信息到客户端,以允许客户端能够连接到服务器背后的其他私有子网
  # (简而言之,就是设置允许客户端访问VPN服务器自身所在的其他局域网)
  push "route 10.2.8.0 255.255.255.0"     # 可以设置多个服务端所在的其他局域网地址范围
  push "route 192.168.0.0 255.255.255.0"
  ;push "dhcp-option DNS 10.8.0.1"     # 用OpenVPN的DHCP功能为客户端提供指定的DNS、WINS等
  ;route 10.9.0.0 255.255.255.252  # VPN启动后,在VPN Server上增加的路由,VPN停止后自动删除
  client-to-client  # 可以让客户端之间相互访问直接通过openvpn程序转发,不用发送到tun或者tap设备后重新转发,优化Client to Client的访问效率
  duplicate-cn      # 如果客户端都使用相同的证书和密钥连接VPN,一定要打开这个选项,否则每个证书只允许一个人连接VPN
  keepalive 10 120  # 每10秒通过VPN的Control通道ping对方,如果连续120秒无法ping通,认为连接丢失,并重新启动VPN,重新连接
  tls-auth keys/ta.key 0 # 全路径为/etc/openvpn/keys/ta.key,注意server端后面的数字肯定使用0,client使用1 
  comp-lzo    # 对数据进行压缩,注意Server和Client一致
  user nobody #定义运行openvpn的用户
  group nobody
  persist-key  # 通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys
  persist-tun  # 通过keepalive检测超时后,重新启动VPN,一直保持tun或者tap设备是linkup的,否则网络连接会先linkdown然后linkup
  status /var/log/openvpn-status.log   # 定期把openvpn的一些状态信息写到文件中,以便自己写程序计费或者进行其他操作
  log /var/log/vpn/openvpn.log         # 记录日志,每次重新启动openvpn后删除原有的log信息
  log-append /var/log/vpn/openvpn.log  # 和log一致,每次重新启动openvpn后保留原有的log信息,新信息追加到文件最后 
  verb 3    # 相当于debug level,改成verb 5可以多查看一些调试信息
  ;mute 20  # 重复信息的沉默度。相同类别的信息只有前20条会输出到日志文件中

5.配置内核和防火墙,启动服务

开启路由转发功能
  # echo 1 > /proc/sys/net/ipv4/ip_forward
  或者
  # sed -i ‘/net.ipv4.ip_forward/s/0/1/‘ /etc/sysctl.conf
  # sysctl -p
配置防火墙,别忘记保存
  # iptables -A INPUT -s 10.2.8.0/32 -m state --state NEW -m tcp -p tcp -j ACCEPT
  # iptables -A INPUT -m state --state NEW -m udp -p udp --dport 1194 -j ACCEPT
  # iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
  # service iptables save
 或者直接关闭防火墙
  # service iptables stop

# 启动openvpn并设置为开机启动

创建openvpn启动脚本

cp ../../openvpn-2.1.3/sample-scripts/openvpn.init /etc/init.d/openvpn
/etc/init.d/openvpn start
或者
/usr/local/sbin/openvpn --daemon --config /etc/openvpn/server.conf
echo "/usr/local/sbin/openvpn --daemon --config /etc/openvpn/server.conf"  >> /etc/rc.local

为客户端分配静态IP:(可选)

在/etc/openvpn/server.conf中增加
 client-config-dir /etc/openvpn/ccd
然后在 /etc/openvpn/ccd目录中放针对每个客户端的个性化配置文件。
文件名就用客户端名 生成key的时候输入的 "Common Name" 名字
比如要设置客户端 client 为 10.8.0.8 
只要在 /etc/openvpn/ccd/client 文件中包含一行:
 ifconfig-push 10.8.0.8 255.255.255.0

Windows客户端安装

下载安装OpenVPN客户端工具

6.创建客户端配置文件,默认../OpenVPN/sample-config/client.ovpn

复制一份 client.ovpn 到 ../OpenVPN/config/client.ovpn

编辑client.ovpn

cat client.ovpn
client
dev tun
proto tcp
remote 203.195.xxx.xxx 1194  # OpenVPN服务器的外网IP和端口
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt  # client1的证书
key client1.key   # client1的密钥
ns-cert-type server 
tls-auth ta.key 1  # 客户端是1,服务器是0
comp-lzo
verb 3

拷贝client.ovpn文件到地openvpn客户端 ../OpenVPN/config/目录下

从服务器上拷贝证书/秘钥 “ca.crt、client.crt、client.key、ta.key” 到本地openvpn客户端的config/目录下

然后打开OpenVPN客户端,点击连接。

ok,如果一切顺利,就会看到 "Mon Apr 11 16:26:12 2016 MANAGEMENT: >STATE:1460363172,CONNECTED,SUCCESS,10.8.0.6,10.2.8.45",客户端分配到的ip,10.8.0.6

打开CMD,ipconfig /all 可以看到分配的虚拟ip

问题:

1)客户端启动提示:TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)

解决方法: 修改客户端的client.ovpn文件

proto tcp  # 修改为tcp协议

时间: 2024-08-28 08:57:55

Centos的OpenVPN安装的相关文章

CentOS下OpenVPN安装、配置

安装OpenVPN的前提条件 在安装OpenVPN之前你必须确保你已经安装了C编译器(例如gcc).OpenSSL.LZO(一种无损压缩算法).PAM(一种可插入式的身份验证模块),安装方法就不用再说了. 安装Linux版OpenVPN 接着,我们使用tar命令,将该压缩文件解压到当前目录,完整命令为:tar zxf openvpn-2.3.3.tar.gz #调用configure ./configure #编译 make #安装 make install 配置防火墙规则以及IP转发 echo

centos 6.5 openvpn 安装

安装环境: 系统:centos 6.5 openvpn:openvpn-2.2.1 lzo:lzo-2.09    下载地址:http://www.oberhumer.com/opensource/lzo/download/ openver-server公网:111.111.111.100 openver-server内网:192.168.1.100/24 tun_IP:192.168.111.1/24 关闭防火墙: #chkconfig iptables off;service iptable

CentOS下OpenVPN客户端配置

CentOS下OpenVPN客户端配置 http://liumissyou.blog.51cto.com/4828343/1762683 1,安装 yum install openvpn -y mkdir /etc/openvpn/etc/ <---证书拷贝到这个目录下. 2.启动 openvpn --daemon --askpass --config a_user.ovpn --log-append /var/log/openvpn.log

openvpn安装总结

Centos 6.5 OpenVPN 2.3.4搭建 参考http://mjjwu.blog.51cto.com/600072/1311008配置 配置环境: server:Centos6.5 OpenVPN 2.3.4 client:Windows7-64 OpenVPNGUI 2.3.4 服务器端配置: 1.安装基础库 [[email protected] openvpn]# for i in  $(rpm -q gcc gcc-c++ openssl openssl-devel  lzo

centos 6.5安装NodeJS

centos 6.5安装NodeJS 下载 可以在本地下载node.js最新版,然后通过ftp工具上传到服务器,或者直接在服务器终端使用wget命令下载(我当时下载的是node-v7.5.0-linux-x86版本,其他版本请查看上面链接然后替换即可): $ wget http://nodejs.org/dist/latest/node-v7.5.0-linux-x86.tar.gz 解压 进入服务器终端,找到上传或者下载的安装包,解压 $ tar -zvxf node-v7.5.0-linux

MongoDB 3.2 在CentOS 上的安装和配置

MongoDB 3.2 在CentOS 上的安装和配置 2016-01-06 14:41:41 发布 您的评价:       0.0   收藏     0收藏 一.安装 编辑/etc/yum.repos.d/mongodb-org-3.2.repo [mongodb-org-3.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/ gpg

Centos 7 一键安装openstack

系统:Centos7x64 单节点 CentOS yum 快速安装: # 安装RDO repo $ sudo yum install -y https://www.rdoproject.org/repos/rdo-release.rpm # 更新repo源 $ sudo yum update -y # 安装openstack-packstack $ sudo yum install -y openstack-packstack # 执行部署过程 $ packstack --allinone 访问

CentOS 7 yum安装Zabbix

CentOS 7 yum安装Zabbix 一.Zabbix简介 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题. 下面是Centos7上yum安装zabbix的步骤. 二.Zabbix安装 本文档在同一台机器上安装了zabbix-server 和zabbix-agent 自己监控自己. 1.配置LAMP 参照下面的链接 Centos

OPENVPN安装

1.OpenVPN是基于OpenSSL的,所有要先安装OpenSSL: [[email protected] ~]# yum install openssl openssl-devel gcc 2.安装lzo软件,用于压缩隧道通信数据加快传输数度(版本lzo-2.06),关于OpenVPN安装所用到的软件包我放在百度网盘http://pan.baidu.com/s/1i3suZOD [[email protected] lzo-2.06]# ./configure --prefix=/usr/l