前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ubuntu部署VPN中openvpn(上)

ubuntu部署VPN中openvpn(上)

原创
作者头像
陈不成i
修改2021-06-30 18:17:11
13.9K0
修改2021-06-30 18:17:11
举报
文章被收录于专栏:ops技术分享ops技术分享

一.简介

如果在一个非信任网络下比如旅社或者咖啡店的WiFi网络下,想要通过你的智能手机或者笔记本电脑安全地访问互联网,那么VPN可以满足你的要求。VPN(VirtualPrivate Network)允许你私有地(privately)安全地(securely)穿过非信任的网络,就好像为你建立了一条专属网络。你的数据流量到达VPN服务器之后,VPN服务器继续将你的网络流量送达目的地。

如果配合HTTPS连接,这个方案可以让你的无线登录和数据传输变得安全。VPN可以让你克服地理限制和审查(比如克服大陆的GFW),保护你的本地位置信息等。

OpenVPN是一个全功能的开源安全套接字层(SSL)VPN解决方案,它包含大量的配置信息。在这篇教程里,我们将在一个公网服务器(本文的服务器为Ubuntu16.04)上面安装一个OpenVPN服务器然后进行相应的配置,使得Windows,OS X,IOS以及Android客户端能够访问它。

二.部署

初始配置

1.执行脚本 wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh

2.Ubuntu的默认仓库就有openvpn的包,但要更新一下才行。还需安装一个easy-rsa包,这个包可以建立一个内部CA证书系统,帮助VPN进行认证。 apt-get update apt-get install openvpn easy-rsa

安装CA

1.建立CA目录,OpenVPN是一个TLS/SSLVPN,这意味着它需要使用证书来在客户端和服务器之间加密数据。为了发布可信的证书,我需要建立我们自己的简单CA

复制easy-rsa临时目录到家目录 make-cadir ~/openvpn-ca

2.配置CA变量 cd ~/openvpn-ca

将最后几行更改,改成其它的,不要空着 vim vars

代码语言:javascript
复制
exportKEY_COUNTRY="US"
exportKEY_PROVINCE="CA"
exportKEY_CITY="SanFrancisco"
exportKEY_ORG="Fort-Funston"
exportKEY_EMAIL="me@myhost.mydomain"
exportKEY_OU="MyOrganizationalUnit"

例如这样

代码语言:javascript
复制
export KEY_COUNTRY="CN"
export KEY_PROVINCE="GD"
export KEY_CITY="ShanTou City"
export KEY_ORG="STU"
export KEY_EMAIL="qfuqin@163.com"
export KEY_OU="University"

更改KEY_NAME的值,这里设置为server,其它值也可以

代码语言:javascript
复制
export KEY_NAME="server"

3.用easy-rsa包来制作CA cd ~/openvpn-ca source vars

提示如下则正确 NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/sammy/openvpn-ca/keys

进入CA环境 ./clean-all

开始制作根证书颁发机构密钥(rootcertificate authority key )和证书(certificate),由于我们刚刚填了vars文件,证书制作所需要变量的值都会自动填充,制作过程中你只需要回车来确认就行 ./build-ca

制作服务端所需要的证书,这些证书就像传统的用于加密过程的文件一样。通过键入如下命令来生成服务端所需的证书,server就是KEY_NAME的值。默认回车,最后2个需要按Y ./build-key-server server

为服务器生成加密交换时的Diffie-Hellman文件,需要等几分钟 ./build-dh

生成一个HMAC签名来增强服务器的TLS完整性验证能力 openvpn --genkey --secret keys/ta.key

4.制作Client端的Certificate 客户端的相关证书可以在客户端的机器上面生成,为了简单起见,这里在服务器上面来生成客户端的相关证书,然后再把服务器上生成的客户端证书下载到本地客户端上面。我们用client1来命名我们的第一个证书/密钥对,用build-key命令来生成没有密码情况下的凭证,并且用于自动连接 cd ~/openvpn-ca source vars ./build-key client1

配置OpenVPN服务器

1.把相关文件复制到/etc/openvpn这个配置目录中去 cd ~/openvpn-ca/keys cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn

2.修改配置文件 cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn cd /etc/openvpn/ gzip -d server.conf.gz vim /etc/openvpn/server.conf

代码语言:javascript
复制
tls-auth ta.key 0 #去掉注释
key-direction 0 #添加
cipher AES-128-CBC #去掉注释
auth SHA256 #添加
server 10.8.0.0 255.255.255.0 #添加,虚拟网段
user nobody #去掉注释
group nogroup #去掉注释

3.调整网络服务,增加内核转发 vim /etc/sysctl.conf

代码语言:javascript
复制
net.ipv4.ip_forward=1

生效 sysctl -p

4.配置防火墙,查看网卡名,默认eth0 ip route | grep default

修改防火墙文件,在最开头注释后面 添加如下部分 /etc/ufw/before.rules

代码语言:javascript
复制
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0(changeto the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -jMASQUERADE #这里为配置文件设置的虚拟网段
COMMIT
# END OPENVPN RULES

配置防火墙默认允许转发包,DROP改成ACCEPT vim /etc/default/ufw

代码语言:javascript
复制
DEFAULT_FORWARD_POLICY="ACCEPT"

5.调整防火墙本身,以允许流量到OpenVPN,如果更改了配置文件中端口号,这里需要对应 ufw allow 1193/udp ufw allow OpenSSH

重启防火墙,到这里我们的服务器可以正确地处理OpenVPN流量了 ufw disable ufw enable

6.开启OpenVPN服务 在systemd单元文件的后面,我们通过指定特定的配置文件名来作为一个实例变量来开启OpenVPN服务,我们的配置文件名称为/etc/openvpn/server.conf,所以我们在systemd单元文件的后面添加@server来开启OpenVPN服务 systemctl start openvpn@server systemctl status openvpn@server

查看tun是否启动 ip addr show tun0

一切正常后,设置开机启动 systemctl enable openvpn@server

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.简介
  • 二.部署
    • 初始配置
      • 安装CA
        • 配置OpenVPN服务器
        相关产品与服务
        VPN 连接
        VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与腾讯云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,其网关可用性达到 99.95%,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
        http://www.vxiaotou.com