路由器学习
路由器原理
可以理解成把不同的网络打通,实现通信的设备。比如家里的路由器,他就是把家里的内网和互联网(外网)打通。
分类
1.(按应用场景分类)
路由器分为家用的,企业级的,运营商的
1.家用:

2.企业用:
接口多,扩展性强,比如一个省的社保系统,都是由他集中的数据转发。

3.运营商:
三大运营商,用户量非常多,又要宽带拨号,又要流量控制,还要复杂的路线选择

2.按可扩展性分类
1.集成一体化路由器,硬件固定好的,没有多余扩展接口,插不了扩展板卡
2.多业务路由器
路由器工作原理
1.路由转发原理
1.路由表
路由表是网络设备(如路由器、交换机)中存储的一张表格,用于决定数据包从源地址到目的地址的传输路径。最开始是没有的,需要人配置 。
插一句:正常情况同样到达2.2的路由器可能有多个,但是具体选哪个,就看路由的优先级。
通信举例来理解路由 (这个模拟网络通信的软件是eNSP)
1.现在要三台PC机通过三个路由器实现通信:
PC1想和PC2通信,他发的数据包目标IP地址是2.2,所以他发出的数据包经过路由器AR1,这时有两个选择,一个是AR2,一个是AR3,但是要选择哪条路,就需要路由表(相当于一个导航系统)。
注意:PC1和AR1的接口是同网段的(直连的两个必须同网段)。
配置好地址后如下图:
PC1发数据给PC2,首先经过AR1,AR1查看路由表(dis ip routing-table),此时他表里没有2.2

(查看路由表时,没有对应的IP地址的话,数据包就会丢弃),但我们可以配置让他有这个路由表(静态路由方式):
这个指令的意思是:
ip route_static 增加一条路由信息
192.168.2.0 255.255.255.0 目标网段
10.1.1.2 下一跳(下一步要走的地方)
配置之后再来查看路由表:

就有IP信息了
但是PC1还是ping不通PC2的,因为两个问题:
问题1:配IP地址时,有个网关,他是告诉电脑如果要给不同网段发包,因为要给AR1发包,所以要网关设置成1.254 ,这样数据包就能送给路由器1了
给到AR1后,他会知道一个数据包最终地址是2.2的应该走那条路了,走AR2,此时AR2查看路由表,
发现有2段的路由表,单着不是我们静态路由添加的,他是怎么有的?因为直连路由(我们在给AR2 GE0\0\1口配置地址为192.168.2.254时,就自动产生一条直连路由,因为接口IP地址是2段,所以目的地是2段的,都从GE0\0\1口发出去),所以就实现了PC1到PC2的通信。
pc2回给pc1也是同理,只是需要在AR2配置回程路由:
这时PC1就能ping通PC2了,开始的时候丢少量包正常,因为要做ARP解析 。
2.路由优先级
3.NAT地址转换原理
还是上面的例子,如果在AR2没有管理权限(不能在添加静态路由)时。就要用到NAT。
比如刚才的回程部分,删掉在AR2添加的PC1地址和下一跳10.1.1.1这个指令,这时ar2就无法把信息传给PC1了,但是AR1和AR2之间是直连路由。
理解就是把原本的192.168.1.1 --192.168.2.2的通信转换为AR1 GE0/0/1口的10.1.1.1 – 192.168.2.2的通信。
NAT更多的应用在私网ip到公网ip的转换。
私网IP:电脑手机上网,这时手机电脑的IP都属于私网IP,他本身只能在局域网内活动,不能去互联网,因为互联网上没有这些私网IP的路由,但是要访问公网,就需要把私网IP通过NAT转换为能上网的公网IP
防火墙
filter表
nat两大块
分类
硬件:
三层路由
防火墙 :深信服
软件
iptables(写到了linux内核中 的)
firewalld
nftables
ufw(Ubuntu的)
云防火墙
阿里云的安全组
NAT网关
waf应用防火墙
上面这些主要 都是防端口的,不妨协议,处理七层的攻击用waf防火墙
要熟悉表,链,规则,容器
表:存放链的容器
链:存放规则的容器
规则:准许或拒绝的规则
表是最大的概念,表里有链,链里有规则。最小的单位是规则
过程就是当client请求数据满足了表中的每个规则,就可以获取主机信息或者访问主机端口,不满足就被拒绝

用户的请求进来之后,在匹配规则时,是从上到下一条一条匹配的(层层过滤),rule1 -> rule2 -> N。
匹配时有两种:1.DROP拒绝 2.Accept接收。无论匹配到的是拒绝还是接收,都代表这个规则匹配成功,如果都不满足就往下走。如果所有规则都匹配失败,还有一个保底的默认数据包规则。
拒绝的规则都放在最上面优先执行
四表五链
链是可以自己定义添加的,一般默认是四表五链
四表:fillter nat raw mangle
fillter :(翻译屏蔽器)他表示的是防火墙过滤,屏蔽端口,ip这种。也是阿里云的安全组
nat: 共享上网,映射
剩下两个了解即可,用的少
五链: INPUT OUTPUT FORWARD PREROUTING POSTROUTING (PRE之前 POST之后)
(链的名字要大写!和表有区别)
INPUT : 一般对于INPUT用的多。相对于出去的,对于进来的管理更严格。
FORWARD : 路过
表和链是有对应关系的,不是每个表都有那五个链。
filter表
实现防火墙功能,一般用来屏蔽端口,ip。
filter表中的链:
INPUT :负责过滤所有目标地址是本机地址的数据包,简单说就是过滤进入主机的数据包(让不让数据包进入服务器就控制这个链)
OUTPUT
FORWARD
nat表
共享上网功能
端口映射和IP映射
nat表中的链:OUTPUT PREROUTING(常用) POSTROUTING (常用)
用户的请求进入防火墙的过程:
首先进入NAT表的PREROUTING
然后有两种选择。
一个是进入服务器(走filter的INPUT 链)
请求访问服务结束出去之后要经过filter的OUTPUT,最后经过NAT表的POSTROUTING
一个是在门前路过,路过的处理的少

环境配置
因为iptables在linux上都有,只需要安装iptables_services (包含启动,关闭,重启的指令,就是一些配置)
yum install -y iptables-services

这个是放置防火墙规则的文件,一般默认是这里,也可更改放到别的目录下。
查看当前防火墙规则:
iptables -nL

因为防火墙的表默认是filter表。这个就是filter表的规则。
其中的chain(l链) INPUT , chain OUTPUT chain FORWARD 是三个链
(policy ACCEPT)表示默认规则
如果要看nat表的规则:
iptables -t nat -nL

iptables添加规则



清空默认规则:(慎用!)
iptables -F
清空自定义的链的规则:
iptables -X
清空统计和计数:(统计经过了多少数据包,把这个状态清空)
iptables -Z
例如:写一个拒绝所有人访问22端口(执行后自己也挡住了!!!)
iptables -t filter -I INPUT - p tcp --dpot 22 -j DROP
iptables指令:
首先指定表,-t filter(不指定的就是默认filter表)
其次指定链,-I INPUT(插入,把规则放到最上面,-A是追加,放到最下面)
然后写规则,- p (只要涉及到端口就要指定协议!) -p tcp udp icmp
再指定端口,–dpot 22(端口有两种一个是源端口。一个是目标端口)(当前的22号端口肯定是目标端口 一般都是管目标端口,很少管源端口)
指定拒绝 -j DROP
(-j可以指定 DROP ACCEPT REJECT,drop是丢弃数据包,reject是拒绝请求并返回一些信息)
删除这个规则:(-D)
原理和之前基本类似,有一个要注意的是删除几号规则
查看规则编号:
iptables -nL --line-number

iptables -t filter -D INPUT 1
1.屏蔽一个网段:
iptables -I INPUT - s 10.0.0.0/24 -j DROP
2.屏蔽一个网段访问8888端口
nc -kl 8888 (制造一个端口)
iptables -I INPUT - s 10.0.0.0/24 -p tcp --dport 8888 -j DROP
3.只允许指定网段访问(白名单)
方法1:用!来排除
iptables -I INPUT -s 172.16.1.0 -j DROP (拒绝172.16.1.0 访问)
iptables -I INPUT -!s 172.16.1.0 -j DROP (只允许172.16.1.0 访问)
方法2:调整默认规则,添加准许规则
把那些所有ACCEPT的改成拒绝,添加允许访问的规则
4.指定多个端口
iptables -I INPUT -m multiport -p tcp --dport 80,8888 -j DROP (多个端口用,隔开)
屏蔽1-1024的所有端口:
iptables -I INPUT -p tcp --dport 1:1024 -j DROP (用:隔开)
5.限制ICMP类型 (禁止Ping)
方法一:防火墙规则:
iptables -I INPUT -p icmp --icmp-type 8 -j DROP (icmp-type有200多个,禁止ping的类型号是8)
iptables -I INPUT -p icmp -j DROP (也可以禁止ping)
方法二:控制内核参数 (永久生效,除非改动,否则重启linux也生效)
进入:
vim /etc/sysctl.conf
把下面的这行写进去,保存退出
net.ipv4.icmp_echo_ignore_all =1 (1禁止ping 0可以ping)
让其生效:
sysctl -p
6.匹配网络状态(TCP/IP连接状态) 通过防火墙控制连接状态
NEW:已经或将启动新的连接 (准备建立连接)
ESTABLISHED:已建立的连接 (能不能连) 常用
RELATED:正在启动的新连接 (处于三次握手状态)常用
INVALID:非法或无法识别的
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
7.限制请求速率
格式:
-m limit --limit n/sec/minute/hour
举例:
ping默认每秒ping一次,6s钟控一个,效果就是最开始的5次Ping正常,后面的每处理一个都要6s
iptables -I INPUT -p icmp -m limit --limit 10/minute --limit-burst 5 -j ACCEPT (5是并发数)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -P INPUT DROP

SYN_FLOOD攻击
/etc/config/firewall下的 option syn_flood 1 防御的是TCP的洪水攻击,对于UDP无效。因为TCP三次握手机制:
攻击原理:
攻击者发送大量 TCP SYN 包(第一次握手请求),但不完成三次握手(不回复 SYN-ACK)。导致服务器维护大量半连接,耗尽资源(如连接队列、内存),使正常用户无法访问。
nat共享上网 和 端口映射暂时不写,有需要在看
相关文章:
路由器学习
路由器原理 可以理解成把不同的网络打通,实现通信的设备。比如家里的路由器,他就是把家里的内网和互联网(外网)打通。 分类 1.(按应用场景分类) 路由器分为家用的,企业级的,运营…...
Redis 连接:深入解析与优化实践
Redis 连接:深入解析与优化实践 引言 Redis 作为一款高性能的键值型数据库,广泛应用于缓存、会话存储、消息队列等领域。Redis 的连接管理是确保其性能和稳定性的关键。本文将深入探讨 Redis 连接的原理、配置、优化方法以及常见问题,帮助您更好地掌握 Redis 连接技术。 …...
UE5学习记录part14
第17节 enemy behavior 173 making enemies move: AI Pawn Navigation 按P查看体积 So its very important that our nav mesh bounds volume encompasses all of the area that wed like our 因此,我们的导航网格边界体积必须包含我们希望 AI to navigate in and …...
【中间件】使用ElasticSearch提供的RestClientAPI操作ES
一、简介 ElasticSearch提供了RestClient来操作ES,包括对数据的增删改查,可参照官方文档:Java High Level REST Client 二、使用步骤: 可参照官方文档操作 导包 <dependency><groupId>org.elasticsearch.client<…...
Docker的备份与恢复
一、两种基本方式 docker export / import 在服务器上导出容器docker export container_name > container_backup.tar这里使用 > 重定向时默认保存路径为当前运行命令的路径,可以自行指定绝对路径来保存,后续加载时也使用对应的路径即可。 恢复为…...
C++ string 对象的操作(三十五)
1. string 对象的常见操作 下面的表格列出了 string 类型最常用的一些操作以及它们的功能: 操作说明示例os << s将字符串对象 s 写入输出流 os,返回 os。std::cout << s;is >> s从输入流 is 中读取字符串赋给 s(以空白分…...
DAPP实战篇:规划下我们的开发线路
前言 在DApp实战篇:先用前端起个项目一文中我们起了一个前端项目,在后续开发中笔者将带领大家一步步完成这个DAPP,为了方便后续讲解,本篇将完整说明后续我们要进行的开发和思路。 主打前端 实际上一个完整的DAPP是由前端和智能…...
[leetcode] 面试经典 150 题——篇9:二叉树(番外:二叉树的遍历方式)
二叉树的遍历是指按照某种顺序访问二叉树中的每个节点。常见的遍历方式有四种:前序遍历(Pre-order Traversal)、中序遍历(In-order Traversal)、后序遍历(Post-order Traversal)以及层序遍历&am…...
【Elasticsearch】开启大数据分析的探索与预处理之旅
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
状态机思想编程练习
状态机实现LED流水灯 本次实验,我们将利用状态机的思想来进行Verilog编程实现一个LED流水灯,并通过Modelsim来进行模拟仿真,再到DE2-115开发板上进行验证。 首先进行主要代码的编写。 module led (input sys_clk,input sys_…...
C#:接口(interface)
目录 接口的核心是什么? 1. 什么是接口(Interface),为什么要用它? 2. 如何定义和使用接口? 3.什么是引用接口? 如何“引用接口”? “引用接口”的关键点 4. 接口与抽象类的区…...
前端新增数据,但数据库里没有新增的数据
先看情况: 1.前端,可以进行删查改,但是新增数据之后,显示保存成功,也增加了空白的一行,但是数据没有显示出来。 2.后端接收到了数据,但返回结果的列表里面是空的;同时数据库里面没…...
Go语言的测试框架
Go语言测试框架详解 Go语言(Golang)自发布以来,因其简洁、高效和并发支持而受到广泛欢迎。在软件开发过程中,测试是确保代码质量与稳定性的重要环节。Go语言内置的测试框架为开发者提供了灵活而强大的测试工具,使得编…...
堆结构——面试算法题高频汇总
目录 引言 堆创建&增删改 堆构造过程 举个例子 堆插入元素 删除元素 在数组中找第k大的元素 举例 堆排序原理 合并k个排序链表 数据流中位数问题 引言 堆是将一组数据按照完全二叉树的存储顺序,将数据存储在一个一维数组中的结构。堆有两种结构&…...
httpx模块的使用
在使用requests模块发起请求时,报以下错误,表示服务器有可能使用的是http2.0协议版本,导致requests无法爬取。 此时就可以使用httpx模块爬取。 先下载httpx模块: pip install httpx[http2]然后用httpx发起请求: impo…...
Linux的: /proc/sys/net/ipv6/conf/ 笔记250405
Linux的: /proc/sys/net/ipv6/conf/ /proc/sys/net/ipv6/conf/ 是 Linux 系统中用于 动态配置 IPv6 网络接口参数 的核心目录。它允许针对不同网络接口(如 eth0、wlan0)或全局设置(all)调整 IPv6 协议栈的行为。 它通过虚拟文件系…...
论文阅读10——解开碳排放与碳足迹之间的关系:文献回顾和可持续交通框架
原文地址: Unraveling the relation between carbon emission and carbon footprint: A literature review and framework for sustainable transportation | npj Sustainable Mobility and TransportTransportation decarbonization has drawn enormous attention globally,…...
新一代AI架构实践:数字大脑AI+智能调度MCP+领域执行APP的黄金金字塔体系
新一代AI架构实践:数字大脑智能调度领域执行的黄金金字塔体系 一、架构本质的三层穿透性认知 1.1 核心范式转变(CPS理论升级) 传统算法架构:数据驱动 → 特征工程 → 模型训练 → 业务应用 新一代AI架构:物理规律建…...
Winform MQTT客户端连接方式
项目中使用到Winform的数据转发服务,所以记录下使用到的方法。 一.创建单例模板 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace ConsoleApp.Scripts {public class SingleTon&…...
Linux Bash 脚本实战:自动监控域名证书过期并发送邮件告警
在日常运维工作中,SSL 证书的管理是一个非常重要的环节,尤其对于线上业务来说,证书到期会直接导致服务不可用。为了避免证书到期带来的风险,我们可以编写一个 Bash 脚本来自动检测域名的 SSL 证书过期时间,并在证书即将到期时发送告警邮件。 目录 脚本功能概述 代码实现…...
什么是异步?
什么是异步? 异步是一个术语,用于描述不需要同时行动或协调就能独立运行的流程。这一概念在技术和计算领域尤为重要,它允许系统的不同部分按自己的节奏运行,而无需等待同步信号或事件。在区块链技术中,异步是指网络中…...
【模型量化】GPTQ 与 AutoGPTQ
GPTQ是一种用于类GPT线性最小二乘法的量化方法,它使用基于近似二阶信息的一次加权量化。 本文中也展示了如何使用量化模型以及如何量化自己的模型AutoGPTQ。 AutoGPTQ:一个易于使用的LLM量化包,带有用户友好的API,基于GPTQ算法(仅…...
学透Spring Boot — 018. 优雅支持多种响应格式
这是我的专栏《学透Spring Boot》的第18篇文章,想要更系统的学习Spring Boot,请访问我的专栏:学透 Spring Boot_postnull咖啡的博客-CSDN博客。 目录 返回不同格式的响应 Spring Boot的内容协商 控制器不用任何修改 启动内容协商配置 访…...
Java小白-管理项目工具Maven(3)Ma
一、pom.xml文件 pom.xml 文件是 Maven(Apache Maven)项目的核心配置文件,它定义了项目的构建、依赖管理和项目元数据等信息。Maven 是一个流行的 Java 项目管理和构建自动化工具,而 pom.xml 是 Maven 项目中不可或缺的一部分。 …...
C++中的多态和模板
#include <iostream> #include <cstdlib> #include <ctime> #include <string>using namespace std;// 武器基类 class Weapon { public:virtual ~Weapon() {}virtual string getName() const 0; // 获取武器名称virtual int getAtk() const 0; …...
Java 类型转换和泛型原理(JVM 层面)
一、类型转换 概念解释: 编译类型:在编译时确定,保存在虚拟机栈的栈帧中的局部变量表中; 运行类型:在运行时确定,由保存在局部变量表中变量指向的堆中对象实例的类型决定(存储在对象头中&…...
Wireshark 安装保姆教程(图文详解)
一、Wireshark 简介 Wireshark是使用最广泛的一款开源抓包软件,常用来检测网络问题、攻击溯源、或者分析底层通信机制。它使用WinPCAP作为接口,直接与网卡进行数据报文交换,它支持在 Windows、Mac OS、Linux 等多种主流操作系统上运行 &…...
下载安装Node.js及其他环境
提示:从Node版本降级到Vue项目运行 文章目录 下载Node.js环境配置配置环境变量 安装 cnpm(我需要安装)安装脚手架安装依赖安装淘宝镜像(注意会更新)cnpm vs npm 与新旧版本核心差异包管理器不同功能差异如何选择&#…...
机器视觉3D中激光偏镜的优点
机器视觉的3D应用中,激光偏镜(如偏振片、波片、偏振分束器等)通过其独特的偏振控制能力,显著提升了系统的测量精度、抗干扰能力和适应性。以下是其核心优点: 1. 提升3D成像精度 抑制环境光干扰:偏振片可滤除非偏振的环境杂光(如日光、室内照明),仅保留激光偏振信号,大…...
MyBatis Plus 在 ZKmall开源商城持久层的优化实践
ZKmall开源商城作为基于 Spring Cloud 的高性能电商平台,其持久层通过 MyBatis Plus 实现了多项深度优化,涵盖分库分表、缓存策略、分页性能、多租户隔离等核心场景。以下是具体实践总结: 一、分库分表与插件集成优化 1. 分库分表策略 Sh…...
