add kownledge ahout mechine learning2
This commit is contained in:
@@ -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
|
||||
@@ -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
@@ -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
@@ -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地址,又不可以跨第二、三层,因此必须应用地址解析协义。
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user