文档章节

搭建OpenVPN服务实现只有某些IP地址需要VPN访问

y
 yestreenstars
发布于 2017/07/06 17:42
字数 1005
阅读 3843
收藏 1

前言

写这篇文章时,我的情况是这样的:公司是通过ADSL拨号上网的,服务器都放在阿里云上,由于没有固定IP,所以22端口都是对外开放的,这样很不安全,很容易受到黑客的攻击,于是领导让我想个办法。

刚开始想到用PPTP VPN,但搭完后发现一个问题:所有流量都是通过VPN出去,VPN服务器的带宽只有1M,平时想下载点东西都慢得要死,要是能实现只有某些IP地址需要通过VPN访问,其他IP地址都通过本地网络访问就好了,于是我百度了一下,发现可以这样做:修改VPN连接属性,不勾选“在远程网络上使用默认网关”,然后手动添加路由到指定IP即可。这样虽然可以,但每次连接VPN后都要手动添加路由,还是很麻烦,即使将添加路由的操作写成批处理还是觉得麻烦,所以我想到了OpenVPN,因为我记得OpenVPN可以实现推送路由规则的功能。

服务端配置

# 安装EPEL源
yum -y install epel-release

# 安装openvpn、easy-rsa
yum -y install openvpn easy-rsa

# 切换到easy-rsa目录
cd /usr/share/easy-rsa/2.0/

# 修改vars文件
# 修改KEY_COUNTRY、KEY_PROVINCE、KEY_CITY、KEY_ORG、KEY_EMAIL、KEY_OU这几个环境变量的值

# 使vars文件中设置的环境变量生效
source vars

./clean-all

# 生成ca.crt(一路回车即可)
./build-ca

# 生成dh2048.pem
./build-dh

# 生成server.crt和server.key(一路回车,需要输入y时就输入)
./build-key-server server

# 生成client.crt和client.key(一路回车,需要输入y时就输入)
./build-key client

# 新建目录
mkdir /etc/openvpn/keys

# 将服务端所需的文件拷贝过去
cp keys/{ca.crt,dh2048.pem,server.crt,server.key} /etc/openvpn/keys/

# 生成ta.key
openvpn --genkey --secret /etc/openvpn/keys/ta.key

# 拷贝openvpn示例配置文件
cp /usr/share/doc/openvpn-2.4.3/sample/sample-config-files/server.conf /etc/openvpn/

# 修改/etc/openvpn/server.conf文件
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
tls-auth ta.key 0
# 依次找到上面的内容并改成下面的样子
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh2048.pem
tls-auth keys/ta.key 0
# 本教程最关键的修改在此!找到和下面内容类似的地方,然后添加你要通过VPN访问的IP。
push "route 1.2.3.4 255.255.255.255"
# 1.2.3.4是本教程想通过VPN访问的IP

# 修改/etc/sysctl.conf文件,将net.ipv4.ip_forward的值改为1。
# 使修改生效
sysctl -p

# 修改iptables规则
# 为减少对实验的影响,建议您关闭SELinux,并备份您当前的iptables规则,然后清空所有规则,并保证所有链都是ACCEPT。
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE

# 启动openvpn服务
service openvpn start

客户端配置

这里以Windows客户端为例。

在配置目录(C:\Program Files\OpenVPN\config)下新建keys目录,将服务端/usr/share/easy-rsa/2.0/keys目录中的ca.crt、client.crt、client.key和/etc/openvpn/keys/ta.key拷贝到新建的keys目录中。

拷贝示例配置文件(C:\Program Files\OpenVPN\sample-config\client.ovpn)到C:\Program Files\OpenVPN\config目录,修改它,找到“remote my-server-2 1194”,将my-server-2替换成你的VPN服务器的公网IP,然后跟服务端一样,修改下面几个地方:

ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
tls-auth ta.key 1

最后,启动客户端,能连上就已经成功一大半了,接下来只要验证流量走向即可。

打开浏览器,百度搜索“IP”,如果配置无误的话,此时显示的应该不是VPN服务器的公网IP,表示浏览器使用的是本地网络,接下来验证能否访问指定IP。

我已经实现关闭1.2.3.4这台服务器的22端口对外开放的权限,并允许我的VPN服务器的IP可以访问。

通过“telnet 1.2.3.4 22”,如果通了,就表示成功了。

© 著作权归作者所有

y
粉丝 0
博文 38
码字总数 13326
作品 0
深圳
私信 提问
使用OpenVPN搞定远程办公

欢迎访问陈同学博客原文 本文基于同事海伟的内部笔记整理,新增了httpbasic demo,client从付费的shimo换成了免费的tunnelblick。 背景:公司VPN仅支持IE浏览器,需在登录VPN账户后一直开着I...

genter
2018/08/26
0
0
搭建基于证书认证登录的OpenVPN服务器

一、OpenVPN简介 OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现。和传统 VPN 相比,它的优点是简单易用。 OpenVPN允许参与建立VPN的单点使用共享金钥,电子证书,或者用户名/密码来进行身...

技术小胖子
2017/11/02
0
0
Linux自学笔记——模拟搭建openvpn

VPN直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,openvpn无疑是linux开源vpn的先锋,提供了良好的性能和友好的用户GUI。 OpenVPN是一个基于OpenSSL库的应用...

claude_liu
2018/04/26
0
0
CentOS6.7安装OpenVPN服务端

本文主要讲述如何在Linux(以CentOS6.7为例)环境中搭建VPN(OpenVPN)服务器。 OpenVPN基本介绍: OpenVPN是开源的VPN守护进程(daemon),easy-RSA提供一些简易的CA证书工具。 VPN原理: ...

技术小胖子
2017/11/08
0
0
Centos7+Openvpn通过证书登陆访问

我们前面文章介绍了Centos7下安装接配置PPTP协议的VPN,今年我们主要介绍Centos7+Openvpn通过证书&&账户及密码登陆配置介绍,我们都知道,OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现。...

技术小阿哥
2017/11/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
今天
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
8
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
5
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部