最全面的内网open虚拟专用网络通道搭建过程

news2024/11/24 18:54:17

内网open虚拟专用网络通道搭建过程

文章目录

  • 内网open虚拟专用网络通道搭建过程
  • 前言
  • 一、环境准备
  • 二、安装open虚拟专用通道
    • 2.1、安装依赖包
    • 2.2、开始安装
  • 三、证书配置
    • 3.1、easy-rsa配置修改
    • 3.2、初始化与创建CA根证书
    • 3.3、生成服务端证书
    • 3.4、生成客户端证书
    • 3.5、创建服务端配置文件
  • 四、客户端client用户配置文件
  • 五、开启转发功能并生效
    • 5.1、Open虚拟专用通道服务器端iptables的设置(关键设置)
    • 5.2、Open虚拟专用通道客户端端iptables的设置(关键设置)
    • 5.3、测试数据库端口转发

前言

Open虚拟专用通道 是一个基于 OpenSSL 库的应用层实现。和传统 虚拟专用通道 相比,它的优点是简单易用。
它大量使用了OpenSSL加密库中的SSLv3/TLSv1 协议函式库。OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Windows 2000/XP/Vista上运行,并包含了许多安全性的功能。它并不是一个基于Web的VPN软件,也不与IPsec及其他VPN软件包兼容。
Open虚拟专用通道使用通用网络协议(TCP与UDP)
在选择协议时候,需要注意2个加密隧道之间的网络状况,如有高延迟或者丢包较多的情况下,请选择TCP协议作为底层协议,UDP协议由于存在无连接和重传机制,导致要隧道上层的协议进行重传,效率非常低下。

一、环境准备

应用层
网络服务与最终用户的一个接口。
协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
表示层
数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)格式有,JPEG、ASCll、EBCDIC、加密格式等
会话层
建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
对应主机进程,指本地主机与远程主机正在进行的会话
传输层
定义传输数据的协议端口号,以及流控和差错校验。
协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层
网络层
进行逻辑地址寻址,实现不同网络之间的路径选择。
协议有:ICMP IGMP IP(IPV4 IPV6)
数据链路层
建立逻辑连接、进行硬件地址寻址、差错校验 [3] 等功能。(由底层网络定义协议)
将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
物理层
建立、维护、断开物理连接。(由底层网络定义协议)
在这里插入图片描述

如下图所示,测试的虚拟机我准备了四台机器,当然根据实际情况而定测试不通的场景。
在这里插入图片描述

二、安装open虚拟专用通道

2.1、安装依赖包

[root@openvpn ~]# yum -y install lz4-devel lzo-devel pam-devel openssl-devel systemd-devel sqlite
-devel autoconf automake libtool libtool-ltdl
[root@openvpn ~]# rpm -q lz4-devel lzo-devel pam-devel openssl-devel systemd-devel sqlite-devel a
utoconf automake libtool libtool-ltdl
lz4-devel-1.8.3-1.el7.x86_64
lzo-devel-2.06-8.el7.x86_64
pam-devel-1.1.8-23.el7.x86_64
openssl-devel-1.0.2k-25.el7_9.x86_64
systemd-devel-219-78.el7_9.7.x86_64
sqlite-devel-3.7.17-8.el7_7.1.x86_64
autoconf-2.69-11.el7.noarch
automake-1.13.4-3.el7.noarch
libtool-2.4.2-22.el7_3.x86_64
libtool-ltdl-2.4.2-22.el7_3.x86_64

如果无网,在有网的虚拟机上下载rpm包,传上去安装
http://rpmfind.net/linux/rpm2html/search.php?query=vulkan-filesystem&submit=Search+…&system=&arch=
EasyRSA-3.1.2.tgz下载地址
https://github.com/OpenVPN/easy-rsa/releases/tag/v3.1.2
https://rhel.pkgs.org/
openvpn-2.5.6.tar.gz下载地址
https://swupdate.openvpn.org/community/releases/openvpn-2.5.6.tar.gz

2.2、开始安装

[root@openvpn openvpn-2.5.6]# autoreconf -i -v -f
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `.'.
libtoolize: copying file `./ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
autoreconf: Leaving directory `.'
[root@openvpn openvpn-2.5.6]# ./configure --prefix=/usr/local/openvpn --enable-lzo --enable-lz4 --enable-plu
gins --enable-port-share --enable-iproute2 --enable-pf --enable-plugin-auth-pam --enable-pam-dlopen --enable-systemd

在这里插入图片描述
在这里插入图片描述

[root@openvpn openvpn-2.5.6]# make && make install

建立软连接

[root@openvpn openvpn-2.5.6]# ln -s /usr/local/openvpn/sbin/openvpn /usr/local/sbin/openvpn

来到文件配置端

[root@openvpn openvpn-2.5.6]# cd /usr/local/openvpn/lib/systemd/system/
[root@openvpn system]# ll
total 8
-rw-r--r--. 1 root root 716 Jan 15 03:49 openvpn-client@.service
-rw-r--r--. 1 root root 838 Jan 15 03:49 openvpn-server@.service

复制2份到系统开机注册下

[root@openvpn system]# cp -a /usr/local/openvpn/lib/systemd/system/openvpn-server@.service /usr/lib/systemd/
system/openvpn-tcp.service
[root@openvpn system]# cp -a /usr/local/openvpn/lib/systemd/system/openvpn-server@.service /usr/lib/systemd/
system/openvpn-udp.service

找到 ExecStart 这行,注释改为如下
在这里插入图片描述
然后新增
ExecStart=/usr/local/openvpn/sbin/openvpn --config server-tcp.conf
同理udp的也改
vim openvpn-udp.service
在这里插入图片描述

三、证书配置

3.1、easy-rsa配置修改

关于这个工具前面已经提到过如何下载了
在这里插入图片描述
根据 EasyRSA-3.1.2/vars.example文件生成全局配置文件vars
在这里插入图片描述
需要修改的
国家
set_var EASYRSA_REQ_COUNTRY “CN”

set_var EASYRSA_REQ_PROVINCE “SC”
城市
set_var EASYRSA_REQ_CITY “LeShan”
组织
set_var EASYRSA_REQ_ORG “yang”
邮箱
set_var EASYRSA_REQ_EMAIL “yang@123.com”
拥有者
set_var EASYRSA_REQ_OU “yxl”
长度
set_var EASYRSA_KEY_SIZE 2048
算法
set_var EASYRSA_ALGO rsa
CA证书过期时间,单位天
set_var EASYRSA_CA_EXPIRE 36500
签发证书的有效期是多少天,单位天
在这里插入图片描述
在这里插入图片描述

3.2、初始化与创建CA根证书

[root@openvpn EasyRSA-3.1.2]# ./easyrsa init-pki

在这里插入图片描述

[root@openvpn EasyRSA-3.1.2]# ./easyrsa build-ca
shigj66

这个密码必须记住,否则后续无法自签名。
在这里插入图片描述
还需要输入common name 通用名(这里不支持删除键),如: openvpen ,这个你自己随便设置个独一无二的。在这里插入图片描述

3.3、生成服务端证书

[root@openvpn EasyRSA-3.1.2]# ./easyrsa build-server-full server nopass

为服务端生成证书对并在本地签名。nopass参数生成一个无密码的证书;在此过程中会让你确认ca密码
在这里插入图片描述在这里插入图片描述
创建Diffie-Hellman,确保key穿越不安全网络的命令,时间会有点长,耐心等待

[root@openvpn EasyRSA-3.1.2]# ./easyrsa gen-dh

在这里插入图片描述

3.4、生成客户端证书

./easyrsa build-client-full client nopass # 无密码,实际应用中不推荐,客户端有密码可提高安全性 //不推荐 不做测试

[root@openvpn EasyRSA-3.1.2]# ./easyrsa build-client-full shigj

shigj888
在这里插入图片描述
在这里插入图片描述
为了提高安全性,openvpn生成ta.key
加强认证方式,防攻击。如果配置文件中启用此项(默认是启用的),就需要执行上述命令,并把ta.key放到/etc/openvpn/server目录。配置文件中服务端第二个参数为0,同时客户端也要有此文件,且client.conf中此指令的第二个参数需要为1【服务端有该配置,那么客户端也必须要有】

[root@openvpn EasyRSA-3.1.2]# openvpn --genkey secret ta.key

在这里插入图片描述
整理服务端证书

[root@openvpn EasyRSA-3.1.2]# mkdir -p /etc/openvpn/server/
[root@openvpn EasyRSA-3.1.2]# cp -a pki/ca.crt /etc/openvpn/server/
[root@openvpn EasyRSA-3.1.2]# cp -a pki/private/server.key /etc/openvpn/server/
[root@openvpn EasyRSA-3.1.2]# cp -a pki/issued/server.crt /etc/openvpn/server/
[root@openvpn EasyRSA-3.1.2]# cp -a pki/dh.pem /etc/openvpn/server/
[root@openvpn EasyRSA-3.1.2]# cp -a ta.key /etc/openvpn/server/

这些文件都是openvpn服务器需要的
在这里插入图片描述

3.5、创建服务端配置文件

文件参数说明
local 0.0.0.0
表示openvpn服务端的监听地址
port 1194
监听的端口,默认是1194
proto tcp
使用的协议,有udp和tcp。建议选择tcp
dev tun
使用三层路由IP隧道(tun)还是二层以太网隧道(tap)。一般都使用tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
ca证书、服务端证书、服务端密钥和密钥交换文件。如果它们和server.conf在同一个目录下则可以不写绝对路径,否则需要写绝对路径调用
server 10.8.0.0 255.255.255.0
vpn服务端为自己和客户端分配IP的地址池。
服务端自己获取网段的第一个地址(此处为10.8.0.1),后为客户端分配其他的可用地址。以后客户端就可以和10.8.0.1进行通信。
注意:该网段地址池不要和已有网段冲突或重复。其实一般来说是不用改的。除非当前内网使用了10.8.0.0/24的网段。

ifconfig-pool-persist ipp.txt
使用一个文件记录已分配虚拟IP的客户端和虚拟IP的对应关系,
以后openvpn重启时,将可以按照此文件继续为对应的客户端分配此前相同的IP。也就是自动续借IP的意思。

server-bridge XXXXXX
使用tap模式的时候考虑此选项。

push “route 10.0.10.0 255.255.255.0”
push “route 192.168.10.0 255.255.255.0”
vpn服务端向客户端推送vpn服务端内网网段的路由配置,以便让客户端能够找到服务端内网。多条路由就写多个Push指令

client-to-client
让vpn客户端之间可以互相看见对方,即能互相通信。默认情况客户端只能看到服务端一个人;
默认是注释的,不能客户端之间相互看见

duplicate-cn
允许多个客户端使用同一个VPN帐号连接服务端
默认是注释的,不支持多个客户登录一个账号

keepalive 10 120
每10秒ping一次,120秒后没收到ping就说明对方挂了

tls-auth ta.key 0
加强认证方式,防攻击。如果配置文件中启用此项(默认是启用的)
需要执行openvpn --genkey --secret ta.key,并把ta.key放到/etc/openvpn/server目录
服务端第二个参数为0;同时客户端也要有此文件,且client.conf中此指令的第二个参数需要为1。

cipher AES-256-CBC
#选择一个密码。如果在服务器上使用了cipher选项,那么您也必须在这里指定它。注意,v2.4客户端/服务器将在TLS模式下自动协商AES-256-GCM。

compress lz4-v2
push “compress lz4-v2”
openvpn 2.4版本的vpn才能设置此选项。表示服务端启用lz4的压缩功能,传输数据给客户端时会压缩数据包。
Push后在客户端也配置启用lz4的压缩功能,向服务端发数据时也会压缩。如果是2.4版本以下的老版本,则使用用comp-lzo指令

comp-lzo
启用lzo数据压缩格式。此指令用于低于2.4版本的老版本。且如果服务端配置了该指令,客户端也必须要配置

max-clients 100
并发客户端的连接数

persist-key
persist-tun
通过ping得知超时时,当重启vpn后将使用同一个密钥文件以及保持tun连接状态

status openvpn-status.log
在文件中输出当前的连接信息,每分钟截断并重写一次该文件

;log openvpn.log
;log-append openvpn.log
默认vpn的日志会记录到rsyslog中,使用这两个选项可以改变。
log指令表示每次启动vpn时覆盖式记录到指定日志文件中,
log-append则表示每次启动vpn时追加式的记录到指定日志中。
但两者只能选其一,或者不选时记录到rsyslog中

verb 3
日志记录的详细级别。

;mute 20
沉默的重复信息。最多20条相同消息类别的连续消息将输出到日志。

explicit-exit-notify 1
当服务器重新启动时,通知客户端,以便它可以自动重新连接。仅在UDP协议是可用

[root@openvpn server]# pwd
/etc/openvpn/server

创建配置文件
[root@openvpn server]# vim server-tcp.conf

local 0.0.0.0
port 1115
proto tcp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh.pem
server 10.123.0.0  255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.10.0 255.255.255.0"
;client-to-client
;duplicate-cn
keepalive 10 120
tls-auth /etc/openvpn/server/ta.key 0
cipher AES-256-CBC
compress lz4-v2
push "compress lz4-v2"
;comp-lzo
max-clients 1000
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log /var/log/openvpn.log
verb 3
;explicit-exit-notify 1

[root@openvpn server]# vim server-udp.conf

local 0.0.0.0
port 1229
proto udp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh.pem
server 10.124.0.0  255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.10.0 255.255.255.0"
;client-to-client
;duplicate-cn
keepalive 10 120
tls-auth /etc/openvpn/server/ta.key 0
cipher AES-256-CBC
compress lz4-v2
push "compress lz4-v2"
;comp-lzo
max-clients 1000
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log /var/log/openvpn.log
verb 3
;explicit-exit-notify 1

注册开机认证

[root@openvpn server]# systemctl enable openvpn-tcp.service
Created symlink from /etc/systemd/system/multi-user.target.wants/openvpn-tcp.service to /usr/lib/systemd/sys
tem/openvpn-tcp.service.[root@openvpn server]# systemctl enable openvpn-udp.service
Created symlink from /etc/systemd/system/multi-user.target.wants/openvpn-udp.service to /usr/lib/systemd/sys
tem/openvpn-udp.service.

启动openvpn服务并查看进程与端口

[root@openvpn server]# systemctl start openvpn-tcp.service
[root@openvpn server]# systemctl status openvpn-tcp.service

在这里插入图片描述
在这里插入图片描述
同时也会新增一个网卡tun0在这里插入图片描述
同理启动
systemctl start openvpn-udp.service
systemctl status openvpn-udp.service
在这里插入图片描述

[root@openvpn server]# ps -ef|grep openvpn

在这里插入图片描述
同时也会新增一个网卡
在这里插入图片描述

四、客户端client用户配置文件

下载并安装客户端
用户的配置文件需要放到config下在这里插入图片描述
创建用户目录存放用户配置文件
说明:
1、注意路径,在OpenVPN/config目录下建立了shigj目录
2、ca.crt、server.crt、 server.key、ta.key都是之前创建好的,只有server.ovpn需要单独下载并修改。
整理客户证书。
如果是公司给员工开通vpn,需要打包
( ca.crt、 shigj.crt、 shigj.key、ta.key, shigj-tcp.ovpn,shigj-udp.ovpn )
发给员工,员工只需要安装客户端,放入配置文件即可.

[root@openvpn server]# cd /home/EasyRSA-3.1.2
[root@openvpn EasyRSA-3.1.2]# mkdir /opt/shigj
[root@openvpn EasyRSA-3.1.2]# cp -a pki/ca.crt /opt/shigj/
[root@openvpn EasyRSA-3.1.2]# cp -a pki/issued/shigj.crt /opt/shigj/
[root@openvpn EasyRSA-3.1.2]# cp -a pki/private/shigj.key /opt/shigj/
[root@openvpn EasyRSA-3.1.2]# cp -a ta.key /opt/shigj/

在这里插入图片描述
首先这个用户是用window连接的
来到目录下
cd /opt/shigj/
创建客户端配置文件
vim shigj-tcp.ovpn

client
dev tun
proto tcp
remote 172.10.10.13 1115
resolv-retry infinite
nobind
;user nobody
;group nobody
persist-key
persist-tun
ca ca.crt
cert shigj.crt
key shigj.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
compress lz4-v2
verb 3
;mute 20

继续创建一份udp的

client
dev tun
proto udp
remote 172.10.10.13 1229
resolv-retry infinite
nobind
;user nobody
;group nobody
persist-key
persist-tun
ca ca.crt
cert shigj.crt
key shigj.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
compress lz4-v2
verb 3
;mute 20

配置文件参数说明

# 文件名 windows为client.ovpn,Linux为client.conf
 
client
# 标识这是个客户端
 
dev tun
# 使用三层路由IP隧道(tun)还是二层以太网隧道(tap)。服务端是什么客户端就是什么
 
proto tcp
# 使用的协议,有udp和tcp。服务端是什么客户端就是什么
 
remote 10.0.0.190 1194
# 服务端的地址和端口
 
resolv-retry infinite
# 一直尝试解析OpenVPN服务器的主机名。
# 在机器上非常有用,不是永久连接到互联网,如笔记本电脑。
 
nobind
# 大多数客户机不需要绑定到特定的本地端口号。
 
;user nobody
;group nobody
# 初始化后的降级特权(仅非windows)
 
persist-key
persist-tun
# 尝试在重新启动时保留某些状态。
 
ca ca.crt
cert client.crt
key client.key
# ca证书、客户端证书、客户端密钥
# 如果它们和client.conf或client.ovpn在同一个目录下则可以不写绝对路径,否则需要写绝对路径调用
 
remote-cert-tls server
# 通过检查certicate是否具有正确的密钥使用设置来验证服务器证书。
 
tls-auth ta.key 1
# 加强认证方式,防攻击。服务端有配置,则客户端必须有
 
cipher AES-256-CBC
# 选择一个密码。如果在服务器上使用了cipher选项,那么您也必须在这里指定它。注意,v2.4客户端/服务器将在TLS模式下自动协商AES-256-GCM。
 
compress lz4-v2
# 服务端用的什么,客户端就用的什么
# 表示客户端启用lz4的压缩功能,传输数据给客户端时会压缩数据包。
 
verb 3
# 日志级别
 
;mute 20
# 沉默的重复信息。最多20条相同消息类别的连续消息将输出到日志。

打包发给自己
在这里插入图片描述
启动openvpn
在这里插入图片描述
在这里插入图片描述
看见2个连接
首先确定openvpn服务器对应端口开启

[root@openvpn ~]# firewall-cmd --add-port=1115/tcp
success
[root@openvpn ~]# firewall-cmd --add-port=1115/tcp --per
success
[root@openvpn ~]# firewall-cmd --add-port=1229/udp
success
[root@openvpn ~]# firewall-cmd --add-port=1229/udp --per
success
[root@openvpn ~]# firewall-cmd --zone=public --list-ports
1115/tcp 1229/udp

输入用户的密码
在这里插入图片描述
如果右下角的tcp和udp均可以链接就意味着成功了一半
然后通过内网的IP就可以通过ssh登陆了,到目前为止只能链接到openvpn服务端内网地址,而其他地址暂时还不能ping通或者直接远程链接
在这里插入图片描述

五、开启转发功能并生效

5.1、Open虚拟专用通道服务器端iptables的设置(关键设置)

修改配置

[root@openvpn ~]# grep 'net.ipv4.ip_forward = 1' /etc/sysctl.conf || echo 'net.ipv4.ip_forward = 1' >> /etc/
sysctl.conf
[root@openvpn ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@openvpn server]# iptables -t nat -A POSTROUTING -j MASQUERADE

在这里插入图片描述
此时宿主机的远程桌面mstsc就可以通过内网地址进行访问了。

5.2、Open虚拟专用通道客户端端iptables的设置(关键设置)

首先确保网络畅通

[root@slave01 ~]# iptables -t nat -A POSTROUTING -j MASQUERADE

在这里插入图片描述
在这里插入图片描述

内网其他机器将22端口转发出去,变成4444端口

[root@slave01 ~]# iptables -t nat -A PREROUTING -p tcp --dport 4444 -j REDIRECT --to-ports 22

此时就可以正常通过ssh远程到内网地址其他服务器当中
在这里插入图片描述

5.3、测试数据库端口转发

需要在内网服务器添加转发端口即可,比如我的数据库端口为3308,则在该服务器上添加端口转发

[root@slave02 ~]# iptables -t nat -A PREROUTING -p tcp --dport 3308 -j REDIRECT --to-ports 3308

在这里插入图片描述
删除转发端口操作

[root@slave02 ~]# iptables -t nat -D PREROUTING -p tcp --dport 3306 -j REDIRECT --to-ports 3306

查看端口配置规则情况

[root@openvpn ~]# iptables -L -n -t nat

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/336613.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud微服务~面试题

1. SpringCloud常见组件有哪些? 问题说明:这个题目主要考察对SpringCloud的组件基本了解 难易程度:简单 参考话术: SpringCloud包含的组件很多,有很多功能是重复的。其中最常用组件包括: 注册中心组件&…

【冲刺金三银四】2023年网络安全工程师面试题合集

以下为信息/网络安全各个方向涉及的面试题,星数越多代表问题出现的几率越大,祝各位都能找到满意的工作~ 【一一帮助网络安全提升点我一一】 ①网络安全学习路线 ②20份渗透测试电子书 ③安全攻防357页笔记 ④50份安全攻防面试指南 ⑤安全红队渗透工具包 …

市场调研计划书如何写?

想要做好一个产品,市场调研是必不可少的一步,也是第一步,那么如何进行市场调研呢?以下是我整理的一份市场调研计划书,希望能够帮助到大家!!! 一、文档版本控制 主要记录文档的版本…

Reverse_SSH:一款基于SSH的反向Shell工具

关于Reverse_SSH Reverse_SSH上一款基于SSH的反向Shell工具,在该工具的帮助下,广大研究人员可以使用SSH来实现反向Shell,并同时拥有下列功能: 1、使用原生SSH语句管理和连接反向Shell; 2、动态、本地和远程转发&#…

[python入门㊷] - python存储数据

目录 ❤ json.dump()存储数据 ❤ json.laod()读取数据 ❤ 保存和读取用户生成的数据 ❤ 重构 JSON(JavaScript Object Notation)格式最初是为JavaScript开发的,但随后成了一种常见格式,被包括Python在内的众多语言采用 ❤ json.dump()存储数据…

基本TCP编程

1. 基本概念 TCP (即传输控制协议) 是一种面向连接的传输层协议,它能提供高可靠性通信 (即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)。 2. 通信流程解析 TCP 通信的流程与打电话的过程相似,以下以一对情侣打电话的过程来展示TCP的通信流程: 其中服务端 …

4.4 序列化与反序列化

文章目录1.概述2.特点/应用场景3.涉及到的流对象4.代码实现序列化与反序列化4.1 步骤1:创建学生类Student24.2 步骤2:创建序列化测试类5.测试案例中常见的几种编译错误类型6.为什么反序列化版本号需要与序列化版本号一致?7.自动提示 生成UID …

10 亿月活用户下,快手基于 Dragonfly 的超大规模镜像分发实践

背景 挑战 快手容器云平台旨在为快手不断增长、不断变化和多样化的业务,提供基于容器化部署的超大规模基础设施服务。为了实现这一目标,快手工程师需要解决弹性、稳定性、效率和无服务器架构等挑战,在这些挑战中,镜像分发的稳定…

职场IT老手教你3步教你玩转可视化大屏设计,让领导眼前一亮!

我是制造企业的IT中心的研发人员,平常工作就是配合业务部门出出报表,选型一些商业软件,并在内部负责实施运维。最近领导出去参观了一些数字化转型比较领先的工厂和制造企业,回来就甩给我几张图,问能不能我们也做几个这…

4. sql 语句中常用命令

1. 数据表: 本文中所有命令,测试的数据表结构如下图: 2. 查询语句: 2.1 基础查询:select //查询单个字段: select 字段名 from 表名; //查询多个字段 select 字段名1,字段名2,... from 表名; //查询所…

数据库的安装部署

目录 方法一:仓库安装 一、添加MySQL仓库 二、安装装MySQL 三、启动MySQL服务器 方法二:本地安装 一、使用以下执行清理之前实验MySQL仓库安装的数据库: 二、网上下载mysql的安装包 三、将下载好的文件传入Redhat中的某个路径中 …

CentOS7安装配置OpenVNP连接远端服务器

在项目当中需要访问一个三方接口及数据库,但是需要在CentOS7服务器上先配置OpenVPN,然后才能连接,现将整体配置过程记录如下。 安装 yum -y install epel-release yum -y install openvpn 查看版本 openvpn --version 配置客户端证书 打开…

电脑ip地址查询要怎么做?查询IP地址就看这3种方法

电脑无法运转时,我们需要别人的帮忙的话,那就需要知道自己电脑的IP地址是什么。但是很多人不知道该从电脑哪里找到IP地址。电脑ip地址查询就看下面2种方法,让你轻松就能Get到技巧! 操作环境: 演示机型:华为…

【数据库】 数据库的理论基础详解

目录 一, 什么是数据库 二, 数据库管理系统(DBMS) 三,数据库与文件系统的区别 1,对比区别: 2,优缺点总结: 四,数据库的发展史 五,常见数据库 1, 关系型…

vue directive 注册局部指令

注册局部指令 vue directive 在注册局部指令时,是通过在组件 options 选项中设置 directives 属性。如下: directives: {focus: {// 指令的定义inserted: function (el) {el.focus()}} }在模板中的任何元素上都可以使用新的 v-focus property&#xff…

前端登录状态验证Session和Token的区别

(1)Session客户端发送一个登录请求,服务器验证登录数据无误,会生成一个sessionID,此ID对应的值即登录状态为已登录。服务器有一个key-value映射表,会把这个ID和登录状态存到此表中。服务器返回的响应头的se…

好用的iPhone 数据恢复软件精选

随着 Apple 的 iTunes / iCloud 备份服务的兴起,我们总是假设这些信息在我们需要的时候可以随时访问。然而,事实是,意想不到的“不幸”发生了,比如 iOS 升级失败、忘记密码,或者更严重的情况,如进水或被盗。…

Ansible的脚本------playbook剧本

一、剧本的前置知识点1、主机清单ansible默认的主机清单是/etc/ansible/hosts文件主机清单可以手动设置,也可以通过Dynamic Inventory动态生成一般主机名使用FQDNvi /etc/ansible/hosts [webserver] #使用方括号设置组名 www1.example.org #定…

想要精通算法和SQL的成长之路 - 接雨水

想要精通算法和SQL的成长之路 - 接雨水前言一. 接雨水前言 想要精通算法和SQL的成长之路 - 系列导航 一. 接雨水 原题链接 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 输入:height [0,…

【RabbitMQ】注册成功后的通知操作

目录前提说明代码实现1. 依赖2. 配置类3. 生产方创建测试类,目的:查看是否队列交换机创建成功,且在队列里面是否有一条待消费的信息。4. 消费方最后前提说明 背景条件:主要是自己学完了RabbitMQ后,想自己多去动手实践…