文档章节

openvpn部署方法

张富贵
 张富贵
发布于 2015/11/18 14:58
字数 1035
阅读 435
收藏 4

#OpenVPN部署方法

##架构设计

##安装openvpn server

###关闭selinux

setenforce 0

或编辑/etc/sysconfig/selinux文件:

#改为disabled
SELINUX=disabled

###开启服务器端路由转发功能 编辑/etc/sysctl.conf

#将net.ipv4.ip_forward改为1
net.ipv4.ip_forward = 1

应用更改:

sysctl -p

###防火墙iptables设置

#设置nat转发:保证VPN地址池可路由出外网
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
#开启openvpn server端口,默认为1194
iptables -A INPUT -p TCP --dport 1194 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

###安装依赖库

yum install -y openssl openssl-devel lzo lzo-devel pam pam-devel automake pkgconfig

###安装openvpn

yum install opepnvpn

###安装easy-rsa 该包用来制作ca证书,服务端证书,客户端证书

yum install easy-rsa

##配置openvpn server ###制作证书 ####修改证书变量 进入easy-ras安装目录/usr/share/easy-rsa/2.0 修改证书变量,在后面生成服务端ca证书时,这里的配置会作为缺省配置

export KEY_COUNTRY="CN"
export KEY_PROVINCE="XXX"
export KEY_CITY="XXX"
export KEY_ORG="XXX.XXX"
export KEY_EMAIL="XXX@XXX.XXX"
export KEY_OU="XXXXX"
# X509 Subject Field
export KEY_NAME="EasyRSA"

修改完成后执行命令:

source ./vars

####开始制作证书

  • 清空原有证书
#下面这个命令在第一次安装时可以运行,以后在添加完客户端后慎用,因为这个命令会清除所有已经生成的证书密钥
./clean-all
  • 生成服务器端ca证书
./build-ca
#由于之前做过缺省配置,这里一路回车即可
  • 生成服务器端密钥证书
#后面这个XXXX.XXXX.XXX就是服务器名
./build-key-server XXXX.XXXX.XXX
  • 生成diffie hellman参数,用于增强openvpn安全性
./build-dh
  • 生成所需客户端证书密钥文件
./build-key client1
./build-key client2

客户端证书创建完成后,将ca.crt,client1.crt,client1.key发送到客户端。

###openvpn server.conf配置

#服务器监听地址
local 0.0.0.0

#设定openvpn服务端口,默认为1194
port 1194

#设定与远程主机通信时所使用的协议,默认为udp,这里使用的是tcp协议
proto tcp

#设置创建tun的路由IP通道
dev tun

#这里是重点,必须指定SSL/TLS root certificate (ca)
ca /usr/share/easy-rsa/2.0/keys/ca.crt
cert /usr/share/easy-rsa/2.0/keys/XXXX.XXXX.XXX.crt
key /usr/share/easy-rsa/2.0/keys/XXXX.XXXX.XXX.key
dh /usr/share/easy-rsa/2.0/keys/dh2048.pem

#为客户分配的地 址和掩码,服务器会将“.1”这个地址留给自己使用,即服务器端 TUN/TAP 的 IP 地址。
server 172.16.30.0 255.255.255.0

#向远程的客户端推送网关信息,所有的流量都通过VPN传输
push "redirect-gateway def1 bypass-dhcp"
push "route-gateway 172.16.30.1"

#向远程的客户端推送路由表
push "route 10.11.0.0 255.255.0.0"
push "route 10.6.0.0 255.255.0.0"
push "route 172.16.30.0 255.255.255.0"

#向远程的客户端推送DNS
push "dhcp-option DNS 10.11.255.253"
push "dhcp-option DNS 10.11.255.254"

#VPN服务器启动时往路由表添加信息
route 172.16.30.0 255.255.255.0
route 10.11.0.0 255.255.0.0
route 10.6.0.0 255.255.0.0

#维持一个客户端和virtual IP的对应表,以方便客户端重新,连接可以获得同样的IP
ifconfig-pool-persist ipp.txt

#设置客户端之间可以互相通讯。
client-to-client

#设置服务端检测的间隔和超时时间
keepalive 10 120

#为客户端指定了压缩传输,使用lzo
comp-lzo

#该选项用于设置 OpenVPN 服务器允许连接的最大客户端数量。
max-clients 200

persist-key
persist-tun

#指定一个将输出日志信息写入的文件
status /var/log/openvpn-status.log
log openvpn.log

#设置日志的级别
verb 3

###启动openvpn server

service openvpn start

###增加路由规则 访问路由器管理页面,添加一条路由规则,信息如下:

network = 172.16.30.0 netmask = 255.255.255.0 gateway = 10.11.255.190

##客户端配置 ###安装openvpn

yum install opepnvpn

###编辑client配置文件 将ca.crt,client1.crt,client1.key移动到/etc/openvpn/keys/目录下。 编辑/etc/openvpn/client.conf文件

#客户端模式
client

#设置创建tun的路由IP通道
dev tun

#使用tcp协议
proto tcp

#设置openvpn服务器地址与端口
remote XXXX.XXXX.XXX 1194

#设定证书文件信息
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/XXXX.crt
key /etc/openvpn/keys/XXXX.key

resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server

#为客户端指定了压缩传输,使用lzo
comp-lzo
verb 3

###防火墙配置 增加防火墙配置:

iptables -A POSTROUTING -s 10.6.0.0/16 -o tun0 -j MASQUERADE
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

###启动OpenVPN客户端

service openvpn start

© 著作权归作者所有

共有 人打赏支持
张富贵
粉丝 15
博文 16
码字总数 10690
作品 0
普陀
系统管理员
私信 提问
linux教程分享之openvpn2.3.4服务器部署

一、openvpn与pptp的抉择 PPTP 点对点隧道协议(pptp)是一种实现虚拟专用网络的方法。pptp使用用于封装ppp数据包的tcp及GRE隧道控制通道。 OpenVPN OpenVPN是一免费开源软件,以路由器或桥接...

mage_linux03
2014/09/04
4.6K
0
ubuntu server 搭建openvpn(路由模式) 笔记

OpenVPN 是由ubuntu库提供的私人虚拟网络(VPN)解决方案. 具有灵活,易用,可靠,安全的特点. OpenVpn分两种模式,即桥接模式与路由模式,本次是路由模式。 实验环境:服务器:ubuntu server 11....

伪码农eric
2012/06/05
0
0
CentOS6.4下部署OpenVpn服务及使用方法

环境说明: vpn服务器:eth0:120.3.243.54(外网IP) eth1:192.168.5.253(私网IP) 客户端地址:201.1.36.111 软件版本:服务端OpenVPN 2.3.2 实现:访问公司内网及授权vpn地址访问的网段,...

Geekwolf
2013/12/26
0
0
关于OpenVPN文章的目录

一.基本理论篇 1. vpn原理及实现--一般理论 2. vpn原理及实现--隧道的一种实现 3. vpn原理及实现--虚拟网卡构建vpn 4. vpn原理及实现--tcp还是udp 5. Linux平台VPN技术概论 6. Linux平台VPN...

晨曦之光
2012/04/10
514
0
使用http代理转接OpenVPN

OpenVPN本身可以使用http代理,也就是说,OpenVPN客户端不是直接和OpenVPN服务器连接,而是使用http代理进行连接。这个特性是OpenVPN的外围特性,不是其核心的,然而却能解决很多实际问题,它...

晨曦之光
2012/04/10
6.4K
0

没有更多内容

加载失败,请刷新页面

加载更多

android 延长Toast的时长

示例:myToast(5000,"hello"); public void myToast(int showTime, String msg) { Toast hello = Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT); new CountDownTimer(......

雨焰
昨天
2
0
浅谈mybatis的日志适配模式

Java开发中经常用到的日志框架有很多,Log4j、Log4j2、slf4j等等,Mybatis定义了一套统一的日志接口供上层使用,并为上述常用的日志框架提供了相应的适配器。有关适配器模式例子可以参考 设计...

算法之名
昨天
7
0
大数据教程(13.6)sqoop使用教程

上一章节,介绍了sqoop数据迁移工具安装以及简单导入实例的相关知识;本篇博客,博主将继续为小伙伴们分享sqoop的使用。 一、sqoop数据导入 (1)、导入关系表到HIVE ./sqoop import --connect...

em_aaron
昨天
2
0
Git cherry-pick 使用总结

应用背景:假设现在有两个分支:dev_01, dev_02. 如果我想把dev_01分支上的某几个commit合并到dev_02分支, 那么怎么办呢? 这就是cherry-pick的工作了。cherry-pick会捡选某些commit, 即把某...

天王盖地虎626
昨天
9
0
css动态设置宽高

css 中可以使用 calc() 来动态设置宽高,但是,在表达式中运算符的前后必须要有空格 height:calc(100vh - 80px)

林梓阳
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部