Linux防火墙iptalbes

ops/2024/9/20 7:07:52/ 标签: linux, 服务器, php

1 iptalbes

1.1 概念

防火墙(Firewall)是一种隔离技术,用于安全管理与筛选的软件和硬件设备,使计算机内网和外网分开,可以防止外部网络用户以非法手段通过外部网络进入内部网络,保护内网免受外部非法用户的侵入。

image-20240421221757080

1.2 SELinux

SELinux是Linux系统特有的安全机制。因为这种机制的限制太多,配置也特别烦琐,所以没有人真正应用它。安装完系统,我们一般都要把SELinux关闭,以免引起不必要的麻烦。

临时关闭:

# 临时关闭SELinux的方法为
setenforce 0# 检查
getenforce   # Permissive

持久化关闭:更改配置文件/etc/selinux/config,需要把SELINUX= enforcing改成SELINUX=disabled

SELINUX=disabled
# 必须重启,才能生效

1.3 netfilter

linux2.4.x系列之后引入的安全子系统。使得诸如数据包过滤、网络地址转换(NAT)和基于协议类型的连接跟踪成为了可能,位于Linux内核中的包过滤功能体系,称为Linux防火墙的“内核态”。

1.4 iptables

安全框架:netfilter,因为netfilter处于Linux的内核中,要和它进行交互,需要一个工具,这个工具就是iptables。 所以iptables的作用:帮助用户建立一个免费的防火墙策略,位于/sbin/iptables,用来管理防火墙规则的工具,称为Linux防火墙的用户态。

image-20231018172444975

1.5 五元组

定义:五元组是通信术语,网路访问的五要素。通常是

  • 源IP地址
  • 源端口
  • 目的IP地址
  • 目的端口
  • 传输协议

包过滤原理:

image-20211223061305634

1.6 iptable安装

注意

  1. firewalld一定关闭(关闭服务,关闭开机自启)
  2. systemctl stop firewalld
  3. systemctl disable firewalld
  4. systemctl status firewalld

1)下载

yum search iptables

2)安装

yum install -y iptables-services #自动安装相关依赖
yum install -y  iptables  iptables-services  

3)启动iptables服务

systemctl start iptables   #启动iptables服务
systemctl status iptables  #查看iptables状态
systemctl enable iptables  #设置iptables开机启动

4)测试

# 查看默认filter表以列表和数字形式显示规则信息
iptables -nL# 查看默认nat表
iptables  -t nat  -nL  

2 四表五链

表:table,表是防火墙中最基本的容器,用于存放链的
链:chain,链是存放规则的容器
规则:policy,规则是防火墙具体行为的实行(允许 拒绝 追踪…)

表 > 链 > 规则

image-20230803104324323

2.1 四表

正常来讲五表五链,通常说的是四表,因为有一张表基本不用。

  • filter:默认表,负责过滤数据包,使用频率最高
  • nat:进行网络地址转换、流量转发,使用频率较低
  • mangle:用于对数据包进行修改、打标识、流量整形
  • raw:很少用到,配置连接跟踪相关的内容
  • security:iptables最近新增的表,用于配置Linux的安全策略,使用频率很低

2.2 五链

定义:控制数据走向

  • INPUT:入站,流入本机的数据,存放入站规则
  • OUTPUT:出站,从本机流向其他设备的数据,存放出站规则
  • FORWARD:转发,数据流向本机,本机需要修改其出站方向,存放转发规则
  • PREROUTING:路由前操作,可以用于修改目的地地址,做DNAT
  • POSTROUTEING:路由后操作,可以用于做源地址转换,做SNAT

2.3 数据流转图

数据流转:

image-20211223062127947

报文:

image-20240314155403326

1)四表访问的顺序

raw–>mangle–>nat–>filter

  • raw:状态跟踪
  • mangle:标记数据包
  • nat:转发
  • filter:过滤

2)入站

prerouting --> input

  1. 出站

output --> postrouting

4)转发执行顺序

  • 外网内网发送:外网 --> 防火墙 --> 内网 下图1-2-3

  • 内网向外网发送: 内网 --> 防火墙 --> 外网 下图4-5-6

  • 外网向外网发送:外网 --> 外网

image-20231102112521307

2.4 匹配方式

  • 链的顺序从上到下执行规则
  • 如果匹配到规则,则按照规则执行,则停止匹配
  • 如果所有的规则都没有匹配上则按照默认规则进行匹配

image-20240510121216466

2.5 策略类型

  • ACCEPT : 接收数据包 放行 同意
  • REJECT : 拒绝数据包 有响应 滚 无法访问
  • DROP : 丢弃数据包 无响应 请求超时
  • REDIRECT : 重定向/映射/透明代理
  • SNAT : 源地址转换 --to-source
  • DNAT : 目标地址转换 --to-destination
  • MASQUERADE : IP地址伪装(NAT) 用于ADSL, MAS QUE RADE
  • SEMARK : 添加SEMARK标记以供內域强制访问控制(MAC) 四阶段会讲
  • LOG : 日志记录,日志记录一般存放在 /var/log/message文件中,流量会继续向下流转

3 使用

3.1 语法

语法:

iptables [-t 表名] <-选项操作 大写> [链名] [条件参数] [-j 策略类型]# [ ] 表示可选
# <> 表示必选 
# {a | b | c} 从中选一个

参数列表:

image-20230803114258934

选项:

类别选项用途示例
添加新的规则-A在链的末尾追加一条规则iptables -t filter -A INPUT -p tcp -j ACCEPT
添加新的规则-I在链的开头(或指定序号)插入一条规则iptables -I INPUT -p udp -j ACCEPT
查看规则列表-L列出所有的规则条目iptables [-t filter] -L
删除规则-D删除链内指定序号(或内容)的一条规则iptables -D INPUT 2
清空规则-F清空所有的规则iptables [-t filter] -F OUTPUT
设置默认策略-P为指定的链设置默认规则iptables -P OUTPUT DROP
修改默认策略-R可以修改目标规则链iptables -t filter -R INPUT 2 -p icmp -j REJECT

条件:

类别条件类型用法示例
通用匹配协议匹配-p 协议名 可以是tcp、udp或者icmp。iptables -I INPUT -p icmp -j DROP
地址匹配-s 源地址、-d 目的地址iptables -A FORWARD -s 192.168.1.11 -j REJECT
接口匹配-i 入站网卡、-o 出站网卡-i ens33 | -o ens37
隐含匹配端口匹配–sport 源端口、–dport 目的端口iptables -R INPUT 1 -p tcp --dport 80 -j ACCEPT
TCP标记匹配–tcp-flags 检查范围 被设置的标记
ICMP类型匹配–icmp-type ICMP类型iptables -A INPUT -p icmp --icmp-type {8|0|3|5} -j ACCEPT
显式匹配多端口匹配-m multiport {–sports | --dports} 端口列表iptables -I INPUT -p tcp -m multiport --dports 80,8080 -j ACCEPT 表示放行80和8080
IP范围匹配-m iprange --src-range IP范围iptables -I INPUT -p tcp -m iprange --src-range 192.168.80.1-192.168.80.254 -j ACCEPT
MAC地址匹配-m mac --mac-source MAC地址iptables -I INPUT -p tcp -m mac --mac-source 00-50-56-C0-00-08 --dport 80 -j ACCEPT
状态匹配-m state --state 连接状态 (NEW新连接、ESTABLISHED双向传输、RELATED新连接但前提是有链接、INVAILD未知链接,一般DROP)iptables -I INPUT -m state --state RELATED,ESTABLISHED

3.2 实验:icmp协议

1)实验环境

靶机:安装了iptables的机器

攻击机:物理机

网络:互相ping通

2)步骤

# 1) 查看规则
iptables -t filter -nL# 2) 删除第二条规则
iptables -t filter -D INPUT 2# 3) 添加规则drop
iptables -t filter -I INPUT -p icmp -j DROP# 4) 验证:win系统 ping 靶机
ping 192.168.190.136  # 期望结果:请求超时# 5) 添加规则REJECT
iptables -t filter -I INPUT -p icmp -j REJECT# 6) 验证:win系统 ping 靶机
ping 192.168.190.136  # 期望结果:拒绝# 7) 还原最初的iptables的设置,重启iptables即可
systemctl restart iptables

3.3 默认规则

存在文件存放iptables的默认规则,每次重启iptables服务或者服务器重启时,都会读取该文件加载iptables的规则

[root@target ~]# cat /etc/sysconfig/iptables
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

案例:

# 1) 清空所有规则
iptables -F# 2) 重启服务后,规则还原

3.4 持久化

先备份,再修改/etc/sysconfig/iptables即可。

1)备份

cp /etc/sysconfig/iptables  /etc/sysconfig/iptables.back
  1. 修改备份
# 方法一:直接修改配置文件# 方法二:命令去修改
iptables -I INPUT -p icmp -j DROP
iptables-save > /etc/sysconfig/iptables
# 或者
systemctl iptables save

3.5 常用命令

# 1)删除filter表INPUT链中的第一个规则
iptables -t filter -D  INPUT 1# 2)清除filter表INPUT链中的所有规则
iptables -t filter -F INPUT# 3)在filter表INPUT链插入 icmp 丢弃 规则
iptables -t filter -I INPUT -p icmp -j DROP# 4)在filter表INPUT链插入 tcp 21端口 允许访问
iptables -t filter -I INPUT -p tcp --dport 21 -j ACCEPT# 5)在filter表INPUT链插入 tcp 80,21,23,25,22端口 允许访问
iptables -t filter -I INPUT -p tcp -m multiport --dport 80,21,23,25,22 -j ACCEPT # 6)只允许80端口访问,其他端口不可访问
iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -I INPUT -p tcp -j DROP# 7)只允许源地址是  192.168.1.42访问
iptables -t filter -I INPUT -s 192.168.7.41 -j ACCEPT
iptables -t filter -A INPUT -j DROP# 8)拒绝源端口68的udp通过
iptables -t filter -I OUTPUT -p udp --sport 68 -j REJECT# 9)mac地址为01:02:03:04:05:06 tcp请求 丢弃
iptables -t filter -I INPUT -p tcp -m mac --mac-source 01:02:03:04:05:06 -j DROP# 10)192.168.88.128-192.168.88.188区间段的icmp请求 允许
iptables -t filter -I INPUT -p icmp -m iprange --src-range 192.168.88.128-192.168.88.188 -j ACCEPT# 11)192.168.88.1/24 网段的icmp请求 拒绝
iptables -t filter -I INPUT -p icmp  -s 192.168.88.1/24 -j REJECT# 12)192.168.190.129的icmp请求 拒绝
iptables -t filter -I INPUT -p icmp  -s 192.168.190.129 -j REJECT# 13)取反 非icmp请求 丢弃
iptables -t filter -I INPUT ! -p icmp -j DROP# 14)不是这些端口的 tcp请求 允许
iptables -t filter -I INPUT -p tcp -m multiport  ! --dports 3306,27017,6379 -j ACCEPT

3.6 实验:at定时器定时一个规则

3.6.1 at定时器

1)安装

yum intall -y at
  1. 启动
systemctl start atd
  1. 语法
at [-V] [-q 队列] [-f 文件] [-mldbv] 时间 at -c 作业 [作业...]minutes(分钟)
hours(小时)
days(天)
weeks(星期)
  1. 案例:
# 1) 设置一个1分钟的任务
at now + 1 minutes[root@target opt]# at now + 1 minutes
at> cd /opt
at> mkdir /opt/888   
at> <EOT>
job 3 at Fri May 10 09:27:00 2024
您在 /var/spool/mail/root 中有新邮件# 2)atq查看未执行任务
# 3)ctrl+d退出
3.6.2 实验
# 1) 删除第二个规则
iptables -D INPUT 2# 2) 添加一个icmp的拒绝访问的规则
iptables -I INPUT -p icmp -j REJECT# 3) 2min之内不能ping通
at now + 2 minutes
at> iptables -D INPUT 1# 4) 验证
可以ping通

4 实验-DNAT

d:目标地址

nat:网路转换

4.1 实验环境准备

1)准备两台linux,A作为我的防火墙,用来做转发,B是httpd,作为内网服务器,一台作为我的防火墙,用来做转发

  1. B机器:作为内网服务器,防火墙要关闭,网卡配置仅主机模式

3)A机器:安装iptables并启动

  • 两张网卡
  • 网卡ens33:可以上外网
  • 网卡ens37:仅主机模式,用来连接A机器

4.2 DNAT作用

目标:保护我们的服务器

定义:目的地址转换,企业在内网部署了一个项目,外网访问内网的时候,不想暴漏内网的地址,则需要目的地址转发。

  • 数据包路由:当外部网络的主机需要访问内部网络的资源时,数据包的目标IP地址ens33,会被修改为内部网络的某个主机的IP地址192.168.71.130,从而实现数据包的路由。内部网络将数据包的回复发送到DNAT设备,DNAT设备再将数据包的目标IP地址修改为外部网络的真实IP地址,最终将数据包发送到外部网络的主机。
  • DNAT只能实现单向的路由:即外部网络主机访问内部网络资源。如果内部网络的主机需要访问外部网络的资源,就需要使用SNAT技术将数据包的源IP地址修改为一个公共IP地址,从而实现数据包的路由。你设置了DNAT,外网-防火墙-内网-防火墙-外网,请问是不是内网-防火墙-外网-防火墙-内网能通?不能,必须得设置SNAT。

image-20211223062127947

4.3 步骤

A机器:iptables

B机器:httpd

1)罗列网络信息

  • A机:iptables
    • ens33: 192.168.190.134
    • ens37: 192.168.71.131
  • B机:httpd
    • ens33: 192.168.71.130
    • 修改网卡配置文件,设置静态IP,添加网关:192.168.7.131
# 1) 进入B机,打开网卡文件
[root@target ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"   # 从dhcp修改为static
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="fb721d1a-72a2-4daa-833b-5430029b8edb"
DEVICE="ens33"
ONBOOT="yes"
PREFIX=24
IPADDR="192.168.71.130"   # 增加
GATEWAY="192.168.71.131"  # 增加,网关地址为A机的ens37主机模式的IP地址
NETMASK="255.255.255.0"   # 增加

2)A机防火墙

# 1) firewalld关闭
systemctl stop firewalld# 2)iptables打开的
systemctl start iptables# 3) 清空iptables
iptables -F# 4) iptables开启转发功能
sysctl net.ipv4.ip_forward  # 查看转发,如果为1,则代表开启
# 如果不为1,则需要手动开启
vi /etc/sysctl.conf
# 增加一行代码:net.ipv4.ip_forward=1
# 激活配置
sysctl -p /etc/sysctl.conf

3)A机配置DNAT

# 在forward链中增加转发通过规则
iptables -t filter -I FORWARD -j ACCEPT# DNAT
iptables -t nat -I PREROUTING -i ens33 -d 192.168.190.134 -p tcp --dport 80 -j DNAT --to-destination 192.168.71.130:80
  1. 检查B机的http服务有没有开启
# 开启B机的httpd服务
systemctl start httpd# 编辑首页内容
vi /var/www/html/index.html# 内容为:我是B机的httpd服务

5)验证:使用win系统访问B机服务(A机的ip:80)

  1. 数据走向

image-20240510172830863

5 实验-SNAT

5.1 实验准备

1)准备两台Linux,A和B,firewalld都关闭

2)A安装iptables,作为防火墙,增加一个网卡ens37,用于实现内网转发B,网络模式设置为主机模式

3)ens37动态ip

4)B安装httpd作为服务,网路模式设置为主机模式,设置静态ip,网关为A机ens37动态ip

5)重启网络

yum install -y httpd
systemctl start httpd
netstat -anpt | grep 80

5.2 SNAT作用

s:source 源地址

nat:转发

定义:让内网主机能够访问外网,使用内网主机访问外网时,隐藏内网主机。

  • 隐藏内部网络真实的IP地址,防止外部攻击者获取内部网络的真实IP地址
  • 数据包路由:当内部网络的主机需要访问外部网络的资源时,数据包的源IP地址会被修改为一个公共IP地址,这样外部网络就可以将数据包路由回内部网络的主机。外部网络将数据包路由回代理服务器,代理服务器再将数据包的源IP地址修改为内部网络的真实IP地址,最终将数据包发送到内部网络的主机。
  • 单向路由:SNAT只能实现单向的路由,即内部网络主机访问外部资源。如果外部网络的主机需要访问内部网络的资源,就需要使用DNAT技术将外部网络的请求路由到内部网络的某个主机上。内网-防火墙-外网-防火墙-内网

image-20240422181812641

5.3 步骤

1)进入A,开启linux的转发功能

# 期望结果为1
sysctl net.ipv4.ip_forward# 如果不为1,则需要手动开启
vi /etc/sysctl.conf
# 增加一行代码:net.ipv4.ip_forward=1
# 激活配置
sysctl -p /etc/sysctl.conf

2)A机配置SNAT

# 路由后需要修改源地址
# -t  nat   修改的策略表是nat
# -I POSTROUTING   源地址转换是路由后完成
# -s <IP>  内网服务器的IP地址(192.168.80.128)
# -o ens33  这里的ens33是iptables防火墙的对外使用的网卡名
# -j SNAT    动作需要明确为源地址转换SNAT , -j MASQUERADE 如此设置,iptables就会进行地址伪装
# --to  <IP>  防火墙ip(192.172.10.36# 开启转发通过
iptables -t filter -I FORWARD -j ACCEPT
# 配置SNAT
iptables -t nat -I POSTROUTING -s 192.168.80.128  -o ens33 -p tcp -j SNAT --to 192.172.10.36

3)B访问外网

# ping www.woniuxy.com,拿到IP地址
curl -k https://101.37.65.91

4)wireshark抓包

5)B机如果DNS出现问题

配置 /etc/resole.conf
nameserver 114.114.114.114
nameserver 8.8.8.8

6)地址伪装

这样外部网络就无法直接访问内部网络的真实IP地址。SNAT的主要作用是隐藏内部网络的真实IP地址,从而增强网络的安全性。同时,SNAT还可以实现负载均衡功能,将网络流量分配到多个服务器上,提高网络的性能和可靠性。

DNAT的主要作用是将外部网络的请求路由到内部网络的某个主机上,从而实现网络服务的访问。同时,DNAT还可以实现端口映射功能,将外部网络的请求映射到内部网络的某个端口上,提高网络的灵活性和可扩展性

地址伪装是不能确定那个地址帮助我们进行转发,有可能使用的是DHCP,无法判断

地址伪装解决问题
1. 防火墙的ens33的ip是dhcp的,偶尔ip地址会发生改变
2. ADSL拨号上网时代使用的比较多

案例:使用地址伪装发送

#SNAT转发 问题可能 --to的地址会变,一旦改变就不能转发
iptables -t nat -I POSTROUTING -s 10.20.30.40 -o ens33 -j SNAT --to 192.168.88.66
#使用地址伪装
iptables -t nat -I POSTROUTING -s 192.168.130.129 -o ens33 -j MASQUERADE

结果:不显示防火墙地址

image-20231227224620825


http://www.ppmy.cn/ops/40822.html

相关文章

景源畅信电商:经营抖店需要用电脑吗?

在数字时代的浪潮中&#xff0c;抖音小店(简称抖店)成为了众多创业者和品牌的新宠。它不仅提供了便捷的线上销售渠道&#xff0c;还通过短视频的形式拉近了卖家与买家的距离。对于这样一个新兴的电商平台&#xff0c;许多跃跃欲试的商家都关心同一个问题&#xff1a;经营抖店究…

虚拟机有线已连接但无法上网—·可能性之一

背景 VMware虚拟机&#xff0c;搭建了三台Linux服务器&#xff0c;组成Hadoop集群&#xff0c;由于在Hadoop102上有一些经常与Mysql数据库交互的任务&#xff0c;需要经常打开运行&#xff0c;而Hadoop103和104则经常处于关闭状态&#xff0c;一段时间后再次启动集群时候&…

如何进行并行执行的诊断与调优 —— 《OceanBase 并行执行》系列 6

在诊断并行执行问题时&#xff0c;我们可以从两个主要方面展开分析。首先&#xff0c;从整体系统层面进行考量&#xff0c;比如检查网络是否畅通、磁盘IO是否过载、CPU资源是否已用满&#xff1b;其次&#xff0c;针对具体的SQL语句进行深入剖析&#xff0c;定位问题SQL&#x…

【软考网络工程师】每日练题学知识

1.在EIGRP协议中&#xff0c;某个路由器收到了两条路径到达目标网络&#xff0c;路径1的带宽为100Mbps&#xff0c;延迟2ms&#xff0c;路径2的带宽为50Mbps&#xff0c;迟为4ms&#xff0c;如果EIGRP使用带宽和延迟的综合度量标准&#xff0c;那么该路由器选择的最佳路径是&am…

超级好用的C++实用库之日志类

&#x1f4a1; 需要该C实用库源码的大佬们&#xff0c;可搜索微信公众号“希望睿智”。添加关注后&#xff0c;输入消息“超级好用的C实用库”&#xff0c;即可获得源码的下载链接。 概述 日志类主要用于在程序运行过程中记录信息、错误、警告以及其他需要跟踪的数据&#xff0…

【专利】一种日志快速分析方法、设备、存储介质

公开号CN116560938A申请号CN202310311478.5申请日2023.03.28 是我在超音速人工智能科技股份有限公司(833753) 职务作品&#xff0c;第一发明人是董事长夫妇&#xff0c;第二发明人是我。 ** 注意** &#xff1a; 内容比较多&#xff0c;还有流程图、界面等。请到 专利指定页面…

清华团队开发首个AI医院小镇模拟系统;阿里云发布通义千问 2.5:超越GPT-4能力;Mistral AI估值飙升至60亿美元

&#x1f989; AI新闻 &#x1f680; 清华团队开发首个AI医院小镇模拟系统 摘要&#xff1a;来自清华的研究团队最近开发出了一种创新的模拟系统&#xff0c;名为"Agent Hospital"&#xff0c;该系统能够完全模拟医患看病的全流程&#xff0c;其中包括分诊、挂号、…

VC 编程开发中的 封装类 :log日志类 和SQL server 操作类 源代码

VC 编程开发中的 封装类 &#xff1a;日志类 和SQL server 操作类 源代码 在VC&#xff08;Visual C&#xff09;开发中&#xff0c;日志文件输出是一个至关重要的环节&#xff0c;它对于程序调试、问题排查以及系统监控等方面都具有不可替代的作用。以下是对日志文件输出在VC开…

【PB案例学习笔记】-01创建应用、窗口与控件

写在前面 这是PB案例学习笔记系列文章的第一篇&#xff0c;也是最基础的一篇。后续文章中【创建程序基本框架】部分操作都跟这篇文章一样&#xff0c; 将不再重复。该系列文章是针对具有一定PB基础的读者&#xff0c;通过一个个由浅入深的编程实战案例学习&#xff0c;提高编…

Vue的学习 —— <vue指令>

目录 前言 正文 内容渲染指令 内容渲染指令的使用方法 v-text v-html 属性绑定指令 双向数据绑定指令 事件绑定指令 条件渲染指令 循环列表渲染指令 侦听器 前言 在完成Vue开发环境的搭建后&#xff0c;若想将Vue应用于实际项目&#xff0c;首要任务是学习Vue的基…

Java入门基础学习笔记14——数据类型转换

类型转换&#xff1a; 1、存在某种类型的变量赋值给另一种类型的变量&#xff1b; 2、存在不同类型的数据一起运算。 自动类型转换&#xff1a; 类型范围小的变量&#xff0c;可以直接赋值给类型范围大的变量。 byte类型赋值给int类型&#xff0c;就是自动类型转换。 pack…

Hugging Muti Agent:第一章

Hugging Muti Agent系列文章目录 学习资料链接&#xff1a;Hugging Muti Agent&#xff08;二月学习&#xff09; 文章目录 Hugging Muti Agent系列文章目录第一章&#xff1a;前期准备1.1 获取MetaGPT1.2 配置MetaGPT1.2.1 调用 ChatGPT API 服务 1.3 首次尝试 第一章&#…

爬虫工作量由小到大的思维转变---<第七十四章 > Scrapy爬虫关闭方法(close)的机制及其在爬虫优化中的重要性

前言 Scrapy爬虫也有一个至关重要的功能——close方法&#xff0c;它控制着爬虫的“生命周期”。本论文旨在探讨Scrapy框架中close方法的核心作用和定义&#xff0c;以及它在爬虫管理与优化过程中的重要性。我们将深入探索如何通过这个强大的功能去优雅地结束一个爬取任务&…

【Unity】Unity项目转抖音小游戏(二)云数据库和云函数

业务需求&#xff0c;开始接触一下抖音小游戏相关的内容&#xff0c;开发过程中记录一下流程。 抖音云官方文档&#xff1a;https://developer.open-douyin.com/docs/resource/zh-CN/developer/tools/cloud/develop-guide/cloud-function-debug 1.开通抖音云环境 抖音云地址&a…

【springboot】整合oauth2.0和security,使用图形验证码和邮箱验证码登录

思路 当使用OAuth和Security框架(如Spring Security)进行登录,并且不使用密码而使用验证码时,生成Token的过程通常涉及以下几个步骤: 1.验证码生成与验证: 首先,系统会生成一个图形验证码并将其展示给用户。 用户输入他们看到的验证码。 系统验证用户输入的验证码是否…

docker的使用

docker的使用 1.首先&#xff0c;拉取一个镜像&#xff0c;如 docker pull 镜像名称 # 官方镜像 docker image pull 镜像名称 # 或简写为 docker pull 镜像名称 # 比如 docker pull ubuntu docker pull ubuntu:16.04# 个人镜像 docker pull 仓库名称/镜像名称 docker pull …

Linux sndconfig命令教程:如何在Linux下设置声卡(附实例详解和注意事项)

Linux sndconfig命令介绍 sndconfig&#xff08;Sound Configuration&#xff09;是一个用于设置声卡的命令。它支持即插即用&#xff08;Plug and Play&#xff0c;PnP&#xff09;设置&#xff0c;可以自动检测并设置PnP声卡。sndconfig命令可以帮助用户在Linux系统中配置声…

如何提高自己的全局视野?

以下是一些可以帮助提高全局视野的方法&#xff1a; 1. 广泛学习不同领域知识&#xff1a;包括但不限于技术相关的各个领域、业务知识、行业动态等&#xff0c;拓宽知识面。 2. 参与大型项目&#xff1a;积极投身到复杂的、规模较大的项目中&#xff0c;在实践中感受和理解系…

计算机毕业设计hadoop+spark+hive知识图谱bilibili视频数据分析可视化大屏 视频推荐系统 预测系统 实时计算 离线计算 数据仓库

研究意义 随着互联网的快速发展&#xff0c;人们面临着海量的视频内容&#xff0c;如何从这些繁杂的视频中找到自己感兴趣的内容成为一个重要的问题[1]。推荐系统作为一种解决信息过载问题的重要工具&#xff0c;能够根据用户的历史行为和偏好&#xff0c;预测用户可能感兴趣的…

nginx 负载均衡配置详解

基于 ${nginx_home}/conf/nginx.conf 文件配置实现&#xff0c;如下&#xff1a; http {# 定义server地址upstream server_group {server 192.168.xxx.1:8080;server 192.168.xxx.2:8080;server 192.168.xxx.3:8080;}server {listen 80;location / {root html;index …