add kownledge ahout mechine learning2

This commit is contained in:
simple321vip
2026-08-25 22:44:19 +08:00
parent 909c458b07
commit 3aa2f9e4e3
12 changed files with 0 additions and 2283 deletions
-12
View File
@@ -1,12 +0,0 @@
##
Q. failed to make file target manager: too many open files.
A. Promtail 的 file target manager 会为每个匹配的日志路径(或每个 scrape job)创建一个独立的 inotify 实例来监听文件变化。当你的 Promtail 配置了多个 scrape_configs、或者通配符匹配了大量目录时,很容易瞬间创建超过 128 个 inotify 实例,直接触发 too many open files 报错并停止采集。
同时也应用于 drone runner,之前找不到原因大概率也是这个原因现在已经不出现了。
解决方案为
# 临时生效(立即验证)
sysctl -w fs.inotify.max_user_instances=1024
# 持久化(重启不丢失)
echo 'fs.inotify.max_user_instances=1024' >> /etc/sysctl.conf
sysctl -p
+120
View File
@@ -0,0 +1,120 @@
# 常用 Command
> 来源:原 mongodb 集合 `t_blog` · 整理日期:2026-08-25
> 分类 ID:`20230409` · 排序:13 · 文章数:3
## 目录
1. [Docker](#docker)
2. [Git](#git)
3. [Linux](#linux)
---
## 1. Docker
<sub>bid: `2023040920175500000000000033`</sub>
## docker 常用 命令
### 1. 删除 None 镜像
```
docker images | grep none | awk '{print $3}' | xargs docker rmi
```
---
## 2. Git
<sub>bid: `2023040920200300000000000034`</sub>
该写点什么么...
https://biprogy.box.com/s/f0du3rvo97p4rvazzfrq4235djxqjsvj
---
## 3. Linux
<sub>bid: `2023040920200900000000000035`</sub>
### 1. linux系统版本
```bash
uname -a
cat /proc/version
```
### 2. CPU
```bash
echo "wuli cpu geshu:"
cat /proc/cpuinfo | grep "physical id" | wc -l
echo "wuli cpu geshu:"
cat /proc/cpuinfo | grep "processor" | wc -l
echo "per cpu has cores:"
cat /proc/cpuinfo | grep "cpu cores" | uniq
```
```bash
cat /proc/cpuinfo | grep "name" | cut -f2 -d: | uniq -c
```
```bash
lscpu
```
```bash
top -c
```
## 3. memory
```bash
cat /proc/meminfo
free
```
### 4. 更改hostname
```bash
vi /etc/hostname
```
```bash
vi /etc/hosts
```
```bash
reboot
```
## 5. netstat
```bash
netstat -ano | findstr 5000
taskkill /f /pid 104152
```
## 6. ps查看进程
- 查看正处于Running的进程
```bash
ps -ef
```
- 查看所有的进程
```bash
ps aux
```
## 7. mount
mount是Linux下的一个命令,它可以将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来,因此我们只要访问这个文件夹,就相当于访问该分区了。
- show all the mount
```bash
mount -l
```
其中 tmpfs 是临时文件系统,而tmpfs是一个文件系统,并不是块设备,只是安装它,就可以使用了。tmpfs是最好的基于RAM的文件系统
## 8. alias
- alias [别名]='真实命令'
```bash
alias ku="kubectl"
```
---
+214
View File
@@ -0,0 +1,214 @@
# 服务器和系统
> 来源:原 mongodb 集合 `t_blog` · 整理日期:2026-08-25
> 分类 ID:`00000000000004` · 排序:2 · 文章数:7
## 目录
1. [Windows](#windows)
2. [关于Oauth的第三方授权登录](#关于oauth的第三方授权登录)
3. [网关(gateway)](#网关gateway)
4. [自己紹介](#自己紹介)
5. [ssh 免密登录](#ssh-免密登录)
6. [订单库存](#订单库存)
7. [2024-05-02](#2024-05-02)
---
## 1. Windows
<sub>bid: `2022051820523400000000000007`</sub>
我们通过powershell安装时,经常提示
更改 Windows PowerShell 执行策略的用户首选项。
Set-ExecutionPolicy
[Doc](https://docs.microsoft.com/zh-CN/previous-versions//dd347628(v=technet.10)?redirectedfrom=MSDN)
Enable-WindowsOptionalFeature
[Doc](https://docs.microsoft.com/en-us/powershell/module/dism/enable-windowsoptionalfeature?view=windowsserver2022-ps)
PS C:\WINDOWS\system32> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Tools-All
Enable-WindowsOptionalFeature : 功能名称 Microsoft-Hyper-V-Tools-All 未知。
所在位置 行:1 字符: 1
+ Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V- ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Enable-WindowsOptionalFeature
], COMException
+ FullyQualifiedErrorId : Microsoft.Dism.Commands.EnableWindowsOptionalFea
tureCommand
---
## 2. 关于Oauth的第三方授权登录
<sub>bid: `2022102117264100000000000010`</sub>
## 关于vilin-home的 安全认证
---
采用third part(第三方)认证 + token,暂时只支持百度云认证。
采用token 是防止 设备丢失等情况发生时,可以将用户暂时剔除租户体系,保证数据安全。是作为jwt认证的一种补充手段。
基本的认证flow如下:
> 用户 -> 登录 violin-home 网站
> token check -> 没有token的话,进入wolcome 页面,进入登录诱导页面,有token则进入home页面
> 点击 百度云登录 跳转到 百度扫码 页面
> 扫码成功,返回 回调code的连接,同时使用code 访问 violin-book 进入token获取
> violin-book 获取到code后 向 百度云 进行认证,获取 token,同时进行租户check,没有租户情报的认证用户,返回sorrypage,有租户情报的认证用户,跟新认证token到redis,并且重定向到 violin-home-manage 连接
> 解析 violin-home-manage 连接,获取token,通过token ,向violin-book获取租户基本信息,然后 跳转到home页面
> 至此 认证 完了
---
## 3. 网关(gateway)
<sub>bid: `2022121609222900000000000008`</sub>
https://biprogy.box.com/s/e2k26k78uhd2x4yo4skjfghp0y7ipc2w
https://app.boxcn.net/folder
---
## 4. 自己紹介
<sub>bid: `2023021420423600000000000018`</sub>
本日は貴重な時間をいただきありがとうございます。
カンショウイと申します。今年35歳です。
卒業した大学は中国の東北大学ですが、大学院生の出身大学はつくば大学、専門はシステム情報工学です。
卒業後、1年ぶりの土木系の仕事と一年ぶりの金融知識学習をしました。2017年からITに転職、それから創科技術会社、日本ハイロン株式会社、IBM株式会社の三社で働きました。
経験したプロジェクトは10個以上で、設計、開発、テスト、POC検証などのいくつかのフェーズも参加しました。
得意な開発言語はJava、Js、Go、kubernetesです。
IBMに入社後、フルスタックエンジニア、コンサルタントとアーキテクチャとして活躍しております。
去年はクラウドネイティブ CKA と Azure Iotの資格を取りました。
この経験をぜひ御社でも生かしていきたいと考えております。
どうぞよろしくお願いいたします。
https://teams.microsoft.com/l/meetup-join/19%3ameeting_NjRlMmEwN2QtNTU1My00M2Q3LWEyNDEtODAyODE5OWFkODAy%40thread.v2/0?context=%7b%22Tid%22%3a%22b2c6da00-de63-4f6a-90ed-17e48a1f64a2%22%2c%22Oid%22%3a%2252e6675f-d902-4939-b53f-6b69aabfdf35%22%7d
---
## 5. ssh 免密登录
<sub>bid: `2023033021097900000000000028`</sub>
## ssh
### 1. ssh install
```bash
apt-get install openssh-server openssh-client
```
```bash
service ssh start
```
### 2. ssh免密登录的设置十分简单
1、cd ~回到主目录,进入.ssh文件
```bash
cd ~/.ssh
```
2、ssh-keygen -t rsa 后,连续敲三次回车,生成两个文件 id_rsa是私钥,id_rsa.pub是公钥
```bash
ssh-keygen -t rsa
```
3、将公钥拷贝到目标机器上
```bash
ssh-copy-id node1
```
简单来说,就是在master机器生成密钥对。将公钥分发给其他的机器。
node1,node2,node3,这只是单向的情况。
如果互相免密登录的话,就需要做N*N的设置
---
## 6. 订单库存
<sub>bid: `2023102715164400000000000039`</sub>
一.订单
- 商品Master表
商品ID
分类ID
商品名称
- 订单表
订单ID
收货人
收货地址
总金额
实收金额
联系电话
订单状态
日期
备注
- 订单详细表
订单ID
商品ID
日期
批次
状态: 退货还是购买
单价
数量
总金额
备注
---
二.在库管理
- 库存表
商品ID
商品数量
商品价格
进货批次
进货日期
- 入库
入库ID
入库原因:进货 还是客户退货
入库时间
- 出库
出库ID
出库原因: 销售 还是 返品厂家
出库时间
---
三.客户管理
客户名称
手机
https://teams.microsoft.com/l/meetup-join/19%3ameeting_Yzg3NWRlOTMtMjJlOS00YWYxLTk0NWYtMTFmNzcxMzIxNWIy%40thread.v2/0?context=%7b%22Tid%22%3a%223d05ac27-c0a2-42f7-bd86-26ef7db5b382%22%2c%22Oid%22%3a%22df104270-a861-48af-b9dc-7a0600128f10%22%7d
---
## 7. 2024-05-02
<sub>bid: `2024050210383100000000000041`</sub>
作業定義
---
+475
View File
@@ -0,0 +1,475 @@
# 计算机网路
> 来源:原 mongodb 集合 `t_blog` · 整理日期:2026-08-25
> 分类 ID:`2022050410146100000000000003` · 排序:7 · 文章数:5
## 目录
1. [curl 详解](#curl-详解)
2. [Route](#route)
3. [Tptables概念](#tptables概念)
4. [iptables 规则和ACTION](#iptables-规则和action)
5. [协议](#协议)
---
## 1. curl 详解
<sub>bid: `2023031518364800000000000023`</sub>
### Header
使用 -H 来传递参数
curl -H "tenantId=321" -H "authorization=xxxx:XXxx"
### Method
使用 -X 来指定方法
curl -X GET
### URL
对url 进行添加双引号
curl "www.baidu.com"
### example
#### 1. Get
curl -H "authorization:X:XX" -H "tenantid:sssss" -X GET "localhost:8080/violin-api/api/v1/reminder?reminder_id=xxxxxx"
#### 2. Post
curl -H "Content-Type: application/json" -H "authorization:X:XX" -H "tenantid:sssss" -X POST -d '{"title":"xxxxx","info":"xxxxxxxxxxxxx"}' "localhost:8080/violin-api/api/v1/reminder"
### 使用注意
- powershell 中的curl 只是个alise 不适用
- window下的curl 会出现编码问题,尤其"并不会编码 会导致 后台 出现下列错误
{"error":"invalid character '\\'' looking for beginning of value"}
---
## 2. Route
<sub>bid: `2023032623183000000000000024`</sub>
### 路由表
---
`ip route`
ip route 其实是没有体现网关存在。描述的是网卡和目的ip,源ip之间的关系
默认 经过 10.0.8.1 走默认网卡eth0
意思是说,下面路由要是匹配不到的话,就是经过10.0.8.1 网关(网卡设备eth0)
去 10.0.8.0/22 也走 eth0 网卡,但是源ip是10.0.8.13
如果是去172.17.0.0/16 走 docker0网卡,源ip是172.17.0.1
[root@node2 dev]# ip route
default via 10.0.8.1 dev eth0
10.0.8.0/22 dev eth0 proto kernel scope link src 10.0.8.13
169.254.0.0/16 dev eth0 scope link metric 1002
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
`route -n`
route -n 更多的体现着ip地址的设置问题,
直接可以看到默认的网关gateway是10.0.8.1,通过子网掩码,确定网络地址,访问10.0.8.0的网关是0.0.0.0 即,内部网络,不走网关。
[root@node2 dev]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.8.1 0.0.0.0 UG 0 0 0 eth0
10.0.8.0 0.0.0.0 255.255.252.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
`ip addr`
inet表示主机地址和所处网络段。
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 52:54:00:39:ea:c4 brd ff:ff:ff:ff:ff:ff
inet 10.0.8.13/22 brd 10.0.11.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe39:eac4/64 scope link
valid_lft forever preferred_lft forever
`Flags 标记`
U(route is up)该路由是启动的
H(target is a host)目标是一台主机(ip)
G(use gateway)需要通过外部的主机传送数据包
R(reinstate route for dynamic routing)使用动态路由时恢复路由标记
D(dynamically installed by daemon or redirect)
已经由服务器或转port功能设置为动态路由!
(reject route)这个路由将不会被接受(用来组织不安全的网段)
注:显示路由信息从上到下是从范围大到小。
`ip neigh`
10.0.8.1 这个ip地址对象的网卡是eth0还有mac,但网卡本省绑定的ip地址10.0.8.3,又和ip addr中 link src 10.0.8.3 一样。
这样就说明了一个问题,同一网段的访问,是不通过网关直接走网卡,不同网段,需要走10.0.8.1
[root@node3 ~]# ip neigh
10.0.8.1 dev eth0 lladdr fe:ee:30:30:20:26 REACHABLE
`gateway:指的是路由通过哪个gateway出去`
`Gateway是0.0.0.0或者*表示目标是本主机所属的网络,不需要路由`
### take in actions
---
---
## 3. Tptables概念
<sub>bid: `2023032623302100000000000025`</sub>
### Tptables概念
---
[新手教学](https://www.zsythink.net/archives/1199)
iptables is a package filter firewall for linux system.
iptables cad do below:
- filter package (封包过滤)
- package redirect (封包重定向)
- network address translation (网络地址转换)
to learn iptables, you should to understand the concepts of below:
#### 1. rules
---
- match :符合指定的条件,比如指定的 IP 地址和端口。
- drop :当一个包到达时,简单地丢弃,不做其它任何处理。
- accept:和丢弃相反,接受这个包,让这个包通过。
- reject:和丢弃相似,但它还会向发送这个包的源主机发送错误消息。这个错误消息可以指定,也可以自动产生
- target:指定的动作,说明如何处理一个包,比如:丢弃,接受,或拒绝。
- jump:指定的动作,说明如何处理一个包,比如:丢弃,接受,或拒绝。
- rule:一个或多个匹配及其对应的目标。
#### 2. iptables和netfilter的关系
---
iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables
真正实现防火墙功能的是 netfilter,它是Linux内核中实现包过滤的内部结构。
#### 3. iptables的规则表和链
---
- 表(tables):
iptables内置了4个表,即filter表、nat表、mangle表和raw表。
分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。
- 链(chains):
一个有顺序的check list,每一条链中可以有一条或数条规则。
如果满足,系统就会根据该条规则所定义的方法处理该数据包;
否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。
- 规则表:
1)filter表——三个链:INPUT、FORWARD、OUTPUT
作用:过滤数据包 内核模块:iptables_filter.
2)Nat表——三个链:PREROUTING、POSTROUTING、OUTPUT
作用:用于网络地址转换(IP、端口) 内核模块:iptable_nat
3)Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块:iptable_mangle(别看这个表这么麻烦,咱们设置策略时几乎都不会用到它)
4)Raw表——两个链:OUTPUT、PREROUTING
作用:决定数据包是否被状态跟踪机制处理 内核模块:iptable_raw
- 规则链:
1)INPUT——进来的数据包应用此规则链中的策略
2)OUTPUT——外出的数据包应用此规则链中的策略
3)FORWARD——转发数据包时应用此规则链中的策略
4)PREROUTING——对数据包作路由选择前应用此链中的规则
(记住!所有的数据包进来的时侯都先由这个链处理)
5)POSTROUTING——对数据包作路由选择后应用此链中的规则
(所有的数据包出来的时侯都先由这个链处理)
---
### command
[参照](http://t.zoukankan.com/sixloop-p-iptables-save-help.html)
[命令参照](https://zhuanlan.zhihu.com/p/160840906)
iptables --help 也能看到,先列出一些常用的.
-A --append
Append to chain
-m --match match
extended match (may load extension)
-s --source address[/mask][...]
source specification
-d --destination -d address[/mask][...]
destination specification
-j --jump -j target
target for rule (may load target extension)
-p --protocol -p proto
protocol: by number or name, eg. 'tcp'
-N --new -N chain
Create a new user-defined chain
-t --table -t table
table to manipulate (default: `filter')
-i --in-interface -i [!] input name[+]
network interface name ([+] for wildcard)
-o --out-interface -o [!] output name[+]
network interface name ([+] for wildcard)
### 一些memo
---
[新手教学](https://www.zsythink.net/archives/1199)
1. 通常我们只关系nat表和filter表
`raw -> mangle -> nat -> filter`
2. 创建 chain 时候,如果不指定-t table,默认是filter表
3. ! 表示 取非
`-p ! tcp 表示不是tcp的`
4. iptables -h 中的[!]表示支持 非 规则
`[!] --protocol -p proto protocol: by number or name, eg. tcp`
5. -i -o 是匹配网卡
6. iptables -m comment 模块
`iptables -m comment --comment "xxx"`
就是对该chain进行解释。其中comment是扩展模块,常见的模块有addrtype 模块了。
`iptables -m addrtype --dst-type LOCAL -j DOCKER`
`iptables -m addrtype --help 可以看更详细解说`
addrtype表示对报文的地址类型进行匹配,-dst-type 表示destination
LOCAL:表示地址是本地地址,指本地一切地址含:127.0.0.1回环地址
7. -j DNAT 和 -j SNAT
8.
---
## 4. iptables 规则和ACTION
<sub>bid: `2023032623358600000000000026`</sub>
### 规则查询
---
`iptables -t filter -L`
`iptables -nvL INPUT`
[root@node3 ~]# iptables -nvL INPUT
# policy 表示默认规则
Chain INPUT (policy ACCEPT 344K packets, 31M bytes)
pkts bytes target prot opt in out source destination
0 0 in_test tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8000
1741K 187M KUBE-FIREWALL all -- * * 0.0.0.0/0 0.0.0.0/0
### 规则管理
---
`iptables -F INPUT`
# 清空filter表的INPUT链
iptables -F INPUT
# 添加拒绝INPUT规则
# -I 表示链首插入规则,-A 表示链尾添加规则
# 来自49.233.4.79 的 丢弃
iptables -t filter -I INPUT -s 49.233.4.79 -j DROP
# 所以就算添加了下面的ACCEPT规则,也是ping不同的,因为在链首已经被丢弃
iptables -t filter -A INPUT -s 49.233.4.79 -j ACCEPT
# 如果我再把这个规则添加到链首,就可以ping通了。
iptables -t filter -I INPUT -s 49.233.4.79 -j ACCEPT
[root@node3 ~]# iptables -nvL INPUT
Chain INPUT (policy ACCEPT 451 packets, 45257 bytes)
pkts bytes target prot opt in out source destination
2 168 ACCEPT all -- * * 49.233.4.79 0.0.0.0/0
5 420 DROP all -- * * 49.233.4.79 0.0.0.0/0
0 0 ACCEPT all -- * * 49.233.4.79 0.0.0.0/0
### 删除规则
---
# 指定编号删除 -D INPUT 3 ,删除INPUT 链中,编号为3的规则
# 先查看规则编号 使用--line
iptables -nvL INPUT --line
iptables -t filter -D INPUT 3
# 根据匹配条件删除
iptables -t filter -D INPUT -s 49.233.4.79 -j ACCEPT
# 整体删除
iptables -t filter -F
### 修改规则
---
# 使用-R 指定链,使用数字 来指定 具有相同数字编号的规则
iptables -t filter -R INPUT 1 -s 49.233.4.79 -j REJECT
# 可以看到 REJECT是拒绝行为
[root@node1 tomcat]# ping 43.138.73.106
PING 43.138.73.106 (43.138.73.106) 56(84) bytes of data.
From 43.138.73.106 icmp_seq=1 Destination Port Unreachable
From 43.138.73.106 icmp_seq=2 Destination Port Unreachable
### 保存规则
---
service iptables save
### 匹配规则
---
1. 如果匹配不到任何规则,那么就匹配默认规则(policy)。
# 小误区,关于! 的用法理解,
iptable -t filter -F
# 不是 49.233.4.79 的都接受,但是并没有说是49.233.4.79的拒绝
# 只是说49.233.4.79的没有匹配到这个规则,因为INPUT 默认都是 ACCEPT
# 所以,49.233.4.79的也会通过
iptables -t filter -A INPUT 1 -s !49.233.4.79 -j ACCEPT
# -s -d 如果不指定,即0.0.0.0/0 即所有ip
# 多个条件是 and 关系,必须都符合
2. 匹配条件:协议类型
# 使用-p选项,指定需要匹配的报文的协议类型
# 比如我们拒绝tcp协议
iptables -t filter -F
iptables -t filter -I INPUT -s 49.233.4.79 -p tcp -j REJECT
# 这样我们ping 是可以ping通的,因为ping是icmp协议
# 而curl 43.138.73.106 是被拒绝的,因为是http(tcp)协议
# centos7中 支持以下协议
# tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh
# 不指定协议,即 -p all 任意匹配
3. 匹配条件:网卡接口
# -i -o
# -i 表示来自哪个网卡
# PREROUTING 和 INPUT FORWARD 使用
# -o 表示要去哪个网卡
# POSTROUTING 和 OUTPUT FORWARD 使用
4. -m match 扩展匹配
# 如果想要使用扩展匹配条件,则需要依赖一些扩展模块
# 即扩展匹配,需要使用-m来指定模块
iptables -A INPUT -s 49.233.4.79 -p tcp -m tcp --dport 80 -j REJECT
[root@node3 ~]# iptables -nvL INPUT --line
Chain INPUT (policy ACCEPT 14 packets, 964 bytes)
num pkts bytes target prot opt in out source destination
1 2 120 REJECT tcp -- * * 49.233.4.79 0.0.0.0/0 reject-with icmp-port-unreachable
2 0 0 REJECT tcp -- * * 49.233.4.79 0.0.0.0/0 tcp dpt:80 reject-with icmp-port-unreachable
# 可以看出 上面是使用-m tcp 使用tcp扩展模块
# 如果-p tcp 和 -m tcp 是一样的时候,-m tcp是可以省略的
# --sport 表示源端口号
# –dport 22:25 表示22,23,24,25 范围
# :22 和 80: 表示 0:22 80:65535
# 多个离散端口使用 multiport 模块
-m multiport –dports 22,36,80
5. -m iprange 扩展模块
使用iprange扩展模块可以指定”一段连续的IP地址范围”,用于匹配报文的源地址或者目标地址
# --src-range --dst-range
-m iprange --src-range 192.168.1.127-192.168.1.146
6. -m conntrack 扩展模块
conntrack 状态跟踪
conntrack共可以为连接标记五种状态:
NEW,ESTABLISHED,RELATED,INVALID,UNTRACKED
### 自定义链
---
自定义链并不能直接使用,而是需要被默认链引用才能够使
# 自定义链IN-WEB
iptables -F INPUT
iptables -N IN-WEB
# 可以看到,自定义链没有被任何默认的链引用,即无效状态。
Chain IN-WEB (0 references)
pkts bytes target prot opt in out source destination
删除 -X 自定义链,但是删除前必须要清空链上的规则
iptables -F IN-WEB
iptables -X IN-WEB
### ACTION
---
我们知道-j target ,target既可以接ACTION,也可以接Chain
我们已知的ACTION有 ACCEPT,DROP,REJECT
`ACCPET`
ACCEPT 将封包放行,进行完此处理动作后,将不再比对其它规则,直接跳往下一个规则炼。
`MARK`
MARK 将封包标上某个代号,以便提供作为后续过滤的条件判断依据,进行完此处理动作后,将会继续比对其它规则
`RETURN`
结束在目前规则炼中的过滤程序,返回主规则炼继续过滤.
如果把自定义规则炼看成是一个子程序,那么这个动作,就相当于提早结束子程序并返回到主程序中。
`SNAT`
改写封包来源 IP 为某特定 IP 或 IP 范围,可以指定 port 对应的范围,进行完此处理动作后
将直接跳往下一个规则炼(mangle:postrouting)。范例如下:
iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000
`DNAT`
DNAT 改写封包目的地 IP 为某特定 IP 或 IP 范围,可以指定 port 对应的范围,进行完此处理动作后,
将会直接跳往下一个规则炼(filter:input 或 filter:forward)。范例如下:
iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.1.1-192.168.1.10:80-100
`REJECT`
拦阻该封包,并传送封包通知对方
`DROP`
丢弃封包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序
`REDIRECT`
...
`MASQUERADE`
...
`NAT这个概念:`
NAT是Network Address Translation的缩写,译为”网络地址转换”,NAT说白了就是修改报文的IP地址
-j SNAT --to-source xxx.xxx.xxx.x
-j DNAT --to-destination xxx.xx
### 关于链的顺序
---
- nat 表中的规则可以被哪些链使用:PREROUTING,OUTPUT,POSTROUTING(centos7中还有INPUT,centos6中没有)
- filter 表中的规则可以被哪些链使用:INPUT,FORWARD,OUTPUT
raw 和 mangle不去考虑的话
表的顺序是 nat -> filter
1. 当一个数据包进入网卡时,它首先进入PREROUTING链
nat -> PREROUTING
2.1 如果数据包就是进入本机的
nat -> INPUT
filter -> INPUT
nat -> OUTPUT
filter -> OUTPUT
2.2 如果数据包是需要转发的
filter -> FORWARD
3. 最后进入POSTROUTING
nat -> POSTROUTING
1
2
---
## 5. 协议
<sub>bid: `2023032623438200000000000027`</sub>
## 协议
传输层TCP -
网路层协议IP - 报文
数据链路层协议MAC - 帧
---
### ARP协议
---
[ARP](https://blog.csdn.net/weixin_39761696/article/details/110578444)
ADDRESS Resolution protocol 是一个通过第三层IP地址,找到第二层MAC的协议。
OSI模型把网络运营分成七层,IP地址在OSI模型的第三层,MAC地址在第二层,彼此之间不立即相处。在根据以太网接口推送IP数据时,必须先封装形式第三层(32位IP地址)、再封装第二层(48位MAC地址)的报头,但因为推送时只了解总体目标IP地址,不清楚其MAC地址,又不可以跨第二、三层,因此必须应用地址解析协义。
---