(一)在ubuntu20.04安装VPN服务

2 篇文章 0 订阅
2 篇文章 0 订阅

       很多时候需要从世界各地来访问公司服务器/电脑、工厂设备,实现方式有很多种,主要分为VPN内网穿透方式;但是他们俩都存在一些问题,例如内网穿透主要利用外网IP,端口映射内网IP地址/端口方式,需要在设备端/电脑端装软件,例如frp方式需要在设备端安装客户端程序frpc,但是现实中很多设备不允许安装,例如工厂设备PLC或CNC设备,他们一般不会让安装frpc。所以内网穿透方式应用场景就比较局限。VPN相当于在现有网络建立一个虚拟网络,相对于内网穿透来说设备端无需在设备终端添加客户端程序,而是把客户端安装工作转移到用户侧,然后借助公网IP、路由器和vpn服务器来实现外网方式内网,主要应用场景:外网调试升级工厂现场设备、外网访问校园网网站等等。

     VPN的原理:

  1. 通常情况下,VPN网关采取双网卡结构,外网卡使用公网IP接入Internet。 

  2. 网络一(假定为公网internet)的终端A访问网络二(假定为公司内网)的终端B,其发出的访问数据包的目标地址为终端B的内部IP地址。

  3. 网络一的VPN网关在接收到终端A发出的访问数据包时对其目标地址进行检查,如果目标地址属于网络二的地址,则将该数据包进行封装,封装的方式根据所采用的VPN技术不同而不同,同时VPN网关会构造一个新VPN数据包,并将封装后的原数据包作为VPN数据包的负载,VPN数据包的目标地址为网络二的VPN网关的外部地址。

  4. 网络一的VPN网关将VPN数据包发送到Internet,由于VPN数据包的目标地址是网络二的VPN网关的外部地址,所以该数据包将被Internet中的路由正确地发送到网络二的VPN网关。

  5. 网络二的VPN网关对接收到的数据包进行检查,如果发现该数据包是从网络一的VPN网关发出的,即可判定该数据包为VPN数据包,并对该数据包进行解包处理。解包的过程主要是先将VPN数据包的包头剥离,再将数据包反向处理还原成原始的数据包。 

  6. 网络二的VPN网关将还原后的原始数据包发送至目标终端B,由于原始数据包的目标地址是终端B的IP,所以该数据包能够被正确地发送到终端B。在终端B看来,它收到的数据包就和从终端A直接发过来的一样。 

  7. 从终端B返回终端A的数据包处理过程和上述过程一样,这样两个网络内的终端就可以相互通讯了。

      今天主要讲三部分:

一.ubuntu 侧实现路由和vpn服务功能

 1.1.ubuntu开启软转发变成路由器。

 1.2.ubuntu安装vpn 服务

 1.3 制作证书

 1.4 配置vpn的server.conf

二.客户端安装vpn客户端

 2.1下载openvpn客户端

 2.2 配置vpn客户端

三.利用frp实现公网映射到ubuntu的IP地址和端口,来实现vpn远程登录。

1.1 ubuntu开启软转发变成路由器

以ubuntu20.04版本(lan: eth0 连接设备,wan: enx00c2e56ae020 用来连接internet 一般dhcp方式)为例:

以用户登录,sudo su 到root用户

vim /etc/sysctl.conf  修改 ubuntu开启软转发变成路由器。

 非永久修改:

sysctl -w net.ipv4.ip_forward=1

或者

echo 1 > /proc/sys/net/ipv4/ip_forward

修改完毕后,配置路由

iptables -A FORWARD -i eth0-o enx00c2e56ae020 -j ACCEPT
iptables -A FORWARD -i enx00c2e56ae020 -o eth0-m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o enx00c2e56ae020 -j MASQUERADE

修改完之后验证一下,使用设备或PC插入网线插入LAN口(本机LAN自带dhcp服务),然后ping www.baidu.com看看能否上网。

1.2  ubuntu安装下vpn 服务

1.apt-get update 先更新下,然后执行

2.apt-get install openvpn  测试成功 openvpn –version

3.apt-get install libssl-dev  ssl相关库

4.apt-get install openssl openssl相关

5.apt-get -y install easy-rsa 制作证书相关 查看easy-rsa安装的文件,如下:

dpkg -L easy-rsa |more

安装完毕后开始制作三个证书CA,SERVER,CLIENT

1.3 制作证书

1.CA证书:

我们需要在/etc/openvpn/目录下创建easy-rsa文件夹,如下:

 mkdir /etc/openvpn/easy-rsa/

然后把/usr/share/easy-rsa/目录下的所有文件全部复制到/etc/openvpn/easy-rsa/下,如下:

sudo cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/

修改如下相关选项内容即可。如下:

sudo vi /etc/openvpn/easy-rsa/vars

export KEY_COUNTRY=”CN”

export KEY_PROVINCE=”NJ”

export KEY_CITY=”nanjing”

export KEY_ORG=”nangao”

export KEY_EMAIL=”yangxiaodong@jsnangao.com”

export KEY_OU=”yangxd” //客户端

export KEY_NAME=”vpnyangxd” //服务端用的

 然后使用source vars命令使其生效,如下:

source vars 生效

./clean-all 清空

开始制作CA 执行./build-ca

在keys目录下存在如下ca.crt ca.key两个文件


 

2.SERVER证书

 同理:执行./build-key-server vpnyangxd  vpnyangxd等同CA的KEY_NAME ,一路回车,直到选择Y/N都选Y

现在再为服务器生成加密交换时的Diffie-Hellman文件,如下:

./build-dh 最终生产dh2048.pem

3.CLIENT证书

同理:./build-key yangxd yangxd等同CA的KEY_OU,一路回车,直到选择Y/N都选Y

自此证书都生成完毕了。

 1.4 配置vpn的server.conf

所有证书制作完毕后,我们现在开始配置Server端。Server端的配置文件,我们可以从openvpn自带的模版中进行复制。如下:

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/

cd /etc/openvpn/  使用如下命令:gzip -d server.conf.gz

修改如下东西

port 1194  //监听端口

proto tcp  //修改成TCP

dev tun  //接口名称

ca ca.crt  //CA证书

cert vpnyangxd.crt //服务器证书

key vpnyangxd.key //服务器密钥

dh dh2048.pem  //加密交换时的Diffie-Hellman文件

server 10.8.0.0 255.255.255.0 //VPN建立时IP地段

ifconfig-pool-persist ipp.txt

keepalive 10 120

comp-lzo

persist-key

persist-tun

status openvpn-status.log

verb 3

push "route 192.168.10.0 255.255.255.0"   //很重要-------添加内网到路由中

配置完毕后查看

至此,配置完毕,开始启动vpn服务

修改 vim /lib/systemd/system/openvpn.service ExeStart指向内容可能会出现,修改如下

然后使用systemctl daemon-reload 修改生效,

然后执行systemctl start openvpn,systemctl status openvpn查看

状态为running表示成功,如果不成功,请多次执行systemctl stop openvpn或者kill -9 占用1194端口进程号。

支持vpn 服务器搭建完毕。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值