网站首页 > 博客文章 正文
OpenVPN是一个用于创建虚拟专用网络加密通道的免费开源软件。使用OpenVPN可以方便地在家庭、办公场所、住宿酒店等不同网络访问场所之间搭建类似于局域网的专用网络通道。
我这里搭建主要为了在家也能连到公司进行办公。
一、服务器端安装及配置
网关和VPN服务器不是同一个设备
服务器环境:干净的CentOS6.5 64位系统
内网IP:192.168.1.250
外网IP:111.111.111.111(公司的固定外网IP)
OpenVPN版本:OpenVPN 2.3.11-1.el6
1、安装前准备
# 关闭selinux
setenforce 0 sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config
# 安装openssl和lzo,lzo用于压缩通讯数据加快传输速度
yum -y install openssl openssl-devel yum -y install lzo
# 安装epel源
rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
2、安装及配置OpenVPN和easy-rsa
# 安装openvpn和easy-rsa
yum -y install openvpn easy-rsa
# 修改vars文件
cd /usr/share/easy-rsa/2.0/ vim vars
# 修改注册信息,比如公司地址、公司名称、部门名称等。
export KEY_COUNTRY="CN" export KEY_PROVINCE="GD" export KEY_CITY="SZ" export KEY_ORG="XLCWNET" export KEY_EMAIL="chengzhi@xlcwnet.com" export KEY_OU="guest" export KEY_NAME="XLCWNET"
# 初始化环境变量
source vars
# 清除keys目录下所有与证书相关的文件
# 下面步骤生成的证书和密钥都在/usr/share/easy-rsa/2.0/keys目录里 ##这个是在第一次执行,后面不需要再执行了
./clean-all
# 生成根证书ca.crt和根密钥ca.key(一路按回车即可)
./build-ca
# 为服务端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
./build-key-server server
# 每一个登陆的VPN客户端需要有一个证书,每个证书在同一时刻只能供一个客户端连接,下面建立2份
# 为客户端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
./build-key client1 ./build-key client2
# 创建密钥,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它)
./build-dh
# 生成ta.key文件(防DDos攻击、UDP淹没等恶意攻击)
openvpn --genkey --secret keys/ta.key
文件生成后都在查看/usr/share/easy-rsa/2.0/keys目录下
3、创建服务器端配置文件
# 在openvpn的配置目录下新建一个keys目录
mkdir /etc/openvpn/keys
# 将需要用到的openvpn证书和密钥复制一份到刚创建好的keys目录中
cp /usr/share/easy-rsa/2.0/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /etc/openvpn/keys/
# 复制一份服务器端配置文件模板server.conf到/etc/openvpn/
cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/server.conf /etc/openvpn/
# 编辑server.conf
vim /etc/openvpn/server.conf port 1194 # 改成tcp,默认使用udp,如果使用HTTP Proxy,必须使用tcp协议 proto tcp dev tun # 路径前面加keys,全路径为/etc/openvpn/keys/ca.crt ca keys/ca.crt cert keys/server.crt key keys/server.key # This file should be kept secret dh keys/dh2048.pem # 默认虚拟局域网网段,不要和实际的局域网冲突即可 server 172.16.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt # 172.16.0.0/24是我这台VPN服务器所在的内网的网段,读者应该根据自身实际情况进行修改 push "redirect-gateway def1 bypass-dhcp" # 设置客户端调用服务器端的路由(比较重要,因为我的VPN服务器不是网关,没有这句可能会出现连上VPN后无法访问内网的情况) push "dhcp-option DNS 114.114.114.114" # 设置客户端调用的DNS(比较重要,如果连上VPN的客户端需要连接外网的话,就需要这个域名解析) push "route 192.168.0.0 255.255.0.0" # 可以让客户端之间相互访问直接通过openvpn程序转发,根据需要设置 # 实践证明这个不需要也是可以的 #偶尔看到这句话,原来是提高效率的,暂时看出来效果 #如果可以让VPN Client之间相互访问直接通过openvpn程序转发, #不用发送到tun或者tap设备后重新转发,优化Client to Client的访问效率 client-to-client # 如果客户端都使用相同的证书和密钥连接VPN,一定要打开这个选项,否则每个证书只允许一个人连接VPN duplicate-cn keepalive 10 120 tls-auth keys/ta.key 0 # This file is secret comp-lzo persist-key persist-tun # OpenVPN的状态日志,默认为/etc/openvpn/openvpn-status.log status openvpn-status.log # OpenVPN的运行日志,默认为/etc/openvpn/openvpn.log log-append openvpn.log # 改成verb 5可以多查看一些调试信息 verb 3
4、配置内核和防火墙,启动服务
# 开启路由转发功能
sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf sysctl -p
# 配置防火墙,别忘记保存
iptables -I INPUT -p tcp --dport 1194 -m comment --comment "openvpn" -j ACCEPT iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -d 192.168.0.0/16 -o eth1 -j SNAT --to-source 192.168.1.250
##设置172.17.0.0/24网段访问192.168.0.0/16网段走eth1的192.168.1.250
iptables -t nat -A POSTROUTING -s 172.16.0.0/24 ! -d 192.168.0.0/16 -o eth0 -j SNAT --to-source 111.111.111.111
##设置172.17.0.0/24网段访问除了192.168.0.0/16网段以外网段走eth0的111.111.111.111
iptables -A FORWARD -d 172.16.0.0/24 -j ACCEPT iptables -A FORWARD -s 172.16.0.0/24 -j ACCEPT
##(一定需要,如果想客户端访问公司内网其他机器的话)
service iptables save
# 启动openvpn并设置为开机启动
service openvpn start chkconfig openvpn on
5、创建客户端配置文件
# 复制一份client.conf模板命名为client.ovpn
cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/client.conf client.ovpn
# 编辑client.ovpn
vim client.ovpn client dev tun # 改为tcp proto tcp # OpenVPN服务器的外网IP和端口 remote 111.111.111.111 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt # client1的证书 cert client1.crt # client1的密钥 key client1.key remote-cert-tls server ###ns-cert-type server (看到网上很多这个选项,不知道干嘛的,默认没有,尝试没有加发现也没问题) # 去掉前面的注释 tls-auth ta.key 1 comp-lzo verb 3
二、Windows客户端安装及配置
客户端系统:Windows7 64位
内网IP:172.16.4.4
OpenVPN版本:OpenVPN 2.3.3 Windows 64位
1、下载安装OpenVPN
OpenVPN 2.3.3 Windows 32位 安装文件:
http://swupdate.openvpn.org/community/releases/openvpn-install-2.3.11-I001-i686.exe
OpenVPN 2.3.3 Windows 64位 安装文件:
http://swupdate.openvpn.org/community/releases/openvpn-install-2.3.11-I001-x86_64.exe
2、配置client
将OpenVPN服务器上的client.ovpn、ca.crt、client1.crt、client1.key、ta.key上传到Windows客户端安装目录下的config文件夹(C:\Program Files\OpenVPN\config)
3、启动OpenVPN GUI
在电脑右下角的openvpn图标上右击,选择“Connect”。正常情况下应该能够连接成功,分配正常的IP。
这个图是别人的,所以IP段是10.8.0.0/16 按照我发的实际IP段是172.16.0.0/16网段,按照上面的操作没有问题,我已经操作过,并不是百度别人复制过来的,只是为了写这个文章临时找的图片。
4、测试
ping通服务器的内网IP,说明已经接入到服务器的内部网络。
到OpenVPN服务器上查看客户端的连接情况,查看状态文件/etc/openvpn/openvpn-status.log:
后续
因同事离职,所以需注销其vpn证书。即要注销两张证书
执行命令进入openvpn的安装目录cd /usr/share/easy-rsa/2.0/
在easy-rsa目录下。使用revoke-full命令来注销其证书。先把一位同事证书文件放到easy-rsa/keys下,然后执行
# 初始化环境变量
source vars ./revoke-full client1
client1为证书名称,这条命令执行完成之后, 会在 keys 目录下面, 生成一个 crl.pem 文件,这个文件中包含了吊销证书的名单。接着再次执行
./revoke-full client2
这条命令执行完成之后, 会在 keys 目录下面, 生成一个新的crl.pem 文件覆盖旧的。
把此crl.pem文件放到相应的配置目录config下,然后在配置文件加入如下参数,重新启动openvpn服务器即可。
cp keys/crl.pem /etc/openvpn/keys/ vim /etc/openvpn/server.conf crl-verify keys/crl.pem
注:如以后需要再注销其他证书,可继续执行revoke-full client3,生成新的crl.pem文件替换配置目录下的文件,重新启动openvpn服务即可。
猜你喜欢
- 2024-09-11 教你搭建IPSec 服务端Linux(如何搭建ipsec服务器)
- 2024-09-11 一文读懂:RHEL如何通过control-center建立安全的IPsec VPN连接
- 2024-09-11 出差在外异地办公不愁,蒲公英X6打造最强VPN异地组网
- 2024-09-11 linux下开发一个应用,首先要做什么?
- 2024-09-11 Fedora33下搭建WireGuard虚拟专用网
- 2024-09-11 使用虚拟专用网络的Python Web抓取
- 2024-09-11 搭建家庭服务器:Linux全攻略(家庭服务器搭建局域网)
- 2024-09-11 CentOS 搭建 OpenVPN 服务(在linux centos 7搭建openvpn服务与管理)
- 2024-09-11 ORB305连接Linux搭建的OpenVPN服务器操作手册
你 发表评论:
欢迎- 06-23MySQL合集-mysql5.7及mysql8的一些特性
- 06-23MySQL CREATE TABLE 简单设计模板交流
- 06-23MYSQL表设计规范(mysql设计表注意事项)
- 06-23MySQL数据库入门(四)数据类型简介
- 06-23数据丢失?别慌!MySQL备份恢复攻略
- 06-23MySQL设计规范(mysql 设计)
- 06-23MySQL数据实时增量同步到Elasticsearch
- 06-23MySQL 避坑指南之隐式数据类型转换
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)