行业知识
网络相关指令
ARP表,Route表,Mac表
PDF获取:
brctl showmacs br_name:显示网桥学习到的MAC地址信息
brctl delif br_name device:网桥删除端口
查看ARP 表—arp
-a:显示arp缓冲区的所有条目;-H:指定arp指令使用的地址类型;-d:从arp缓冲区中删除指定主机的arp条目;-D:使用指定接口的硬件地址;-e:以 Linux 的显示风格显示arp缓冲区中的条目;-i:指定要操作arp缓冲区的网络接口;-s:设置指定的主机的IP地址与MAC地址的静态映射;-n:以数字方式显示arp缓冲区中的条目;-v:显示详细的arp缓冲区条目,包括缓冲区条目的统计信息;-f:设置主机的IP地址与MAC地址的静态映射。
IP指令–Route表
ip rule – 操作路由策略数据库
基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目的地址而且能够根据报文大小,应用或IP源地址等属性来选择转发路径。
增加路由策略
格式类型
判断条件 表ID 优先级ip rule add from 192.168.3.1 table 10 prio 199 // 添加规则,源地址为192.168.3.1的包,使用表10
参数解释:
- From: 源地址
- to: 目的地址
- dev: 输入的数据,后面会接接口
- fwmark n:做标记 n
ip rule add to 168.95.1.1 table 10 // 目的地址是 168.95.1.1 使用 table 10ip rule add dev eth2 table 1 // dev eth2 输入的数据,使用 table 1ip rule add dev eth3 table 3 // dev eth3 输入的数据,使用 table 3
ip rule add fwmark 1 table 1 // fwmark 1 的数据,使用 table 1 标记为1的数据ip rule add fwmark 2 table 2 ip rule add fwmark 3 table 3
- 通过路由表 1 路由来自源地址为192.203.80/24的数据包
ip rule add from 192.203.80/24 table 1 prio 220 #增加规则220 prio
- 添加一个路由策略,使得所有来自172.21.45.122的数据包都传递到main表中
- 把源地址为193.233.7.83的数据报的源地址转换为192.168.80.144,并通过表1进行路由
ip rule add from 193.233.7.83 nat 192.168.80.144 table 1 prio 311#nat网络地址转换
- 增加标记
将来自所有的数据包标记为fwmark 0x1,使用table 1
将来自172.21.43.1发送来的数据包标记为fwmark 0x2,使用table 2删除路由策略
删除规则,可以使用 优先级,源地址,目的地址,路由表 等信息作为判断条件。
ip rule del prio 10 # 按照优先级ip rule del from 192.168.1.0/24# 按照判断条件ip rule del table 1# 删除表ip rule del from 192.168.1.0/24 table 1 prio 10
- 根据优先级来删除对应的路由策略
- 按照判断条件来删除源地址的策略
- 删除表中的策略
ip rule del table 1 #一次只能删除一个策略
在 Linux 系统启动时,内核会为路由策略数据库配置三条缺省的规则:
- 0 匹配任何条件 查询路由表local(ID 255) 路由表local是一个特殊的路由表,包含对于本地和广播地址的高优先级控制路由。rule 0非常特殊,不能被删除或者覆盖。
- 32766 匹配任何条件 查询路由表main(ID 254) 路由表main(ID 254)是一个通常的表,包含所有的无策略路由。系统管理员可以删除或者使用另外的规则覆盖这条规则。
- 32767 匹配任何条件 查询路由表default(ID 253) 路由表default(ID 253)是一个空表,它是为一些后续处理保留的。对于前面的缺省策略没有匹配到的数据包,系统使用这个策略进行处理。这个规则也可以删除。
**注:**不要混淆路由表和策略:规则指向路由表,多个规则可以引用一个路由表,而且某些路由表可以策略指向它。如果系统管理员删除了指向某个路由表的所有规则,这个表没有用了,但是仍然存在,直到里面的所有路由都被删除,它才会消失。
route – 管理路由表
route 命令用于查看和操作Linux操作系统中的路由表。它允许您添加,删除和修改路由表的条目,以确定数据包从一台计算机到另一台计算机的传输路径。
查看路由表: windows下
查看路由表:Linux下 “ip route” 或 “route”以下是一些 route 命令的常用选项:
- route -n:以数字格式显示路由表。这将以 IP 地址和网络掩码的数字形式而非主机名和网络掩码的形式来显示路由表的内容。
- route add:添加新的路由表项。
- **route del:**从路由表中删除一条路由。
- route change:更改路由表中的一条路由。
- route flush:清空整个路由表。
route = route -n #默认显示的是中文,显示当前路由表route -en #显示的是英文,显示当前路由表
- 在1号路由表中增加默认网管172.21.45.11
ip route add default via 172.21.45.11 table 1
- 添加源地址是172.21.45.2,目的地址是172.21.45.5的路由
ip route add 172.21.45.2 via 172.21.45.5
- 设置172.21.45.4网段的网关为172.21.45.8,数据走enp0s8接口
ip route add 172.21.45.4 via 172.21.45.8 dev enp0s8
- 在2号路由表中增加172.21.45.5网段的网关为172.21.45.10
ip route add 172.21.45.5 via 172.21.45.10 dev enp0s8 table 2
ip route show – 显示系统路由
- ip route 或:ip route show
- 显示系统路由
- ip route show table local
- 查看本地路由表
ip route get – 获取单目标路由
ip route get 172.21.45.4
ip route del 地址
ip route flush – 输出特定路由
- ip route flush 10.38.0.0/16
- 删除特定路由
- ip route flush table main
- 清空路由表
ip address – 查看所有Ip地址
显示自己的IP地址
hostname -I
ip a:查看所有 IP 地址(以网卡分组)。
ip a show lo:查看 本地 网卡上的 IP 地址。
ip a add 192.168.10.10/24 dev ens33:向 ens33 网卡上添加一个临时 IP 地址 192.168.10.10/24 (dev 是 device 的简写)。
ip a del 192.168.10.10/24 dev ens33:从 ens33 网卡上删除一个临时 IP 地址 192.168.10.10/24。iptables指令 – 实现对网络数据包进出设备及转发的控制
iptables 是 Linux 防火墙系统的重要组成部分,iptables 的主要功能是实现对网络数据包进出设备及转发的控制。当数据包需要进入设备、从设备中流出或者由该设备转发、路由时,都可以使用 iptables 进行控制。
iptables 是集成在 Linux 内核中的包过滤防火墙系统。使用 iptables 可以添加、删除具体的过滤规则,iptables 默认维护着 4 个表和 5 个链,所有的防火墙策略规则都被分别写入这些表与链中。
“四表”是指 iptables 的功能,默认的 iptables 规则表有 filter 表(过滤规则表)、nat 表(地址转换规则表)、mangle(修改数据标记位规则表)、raw(跟踪数据表规则表):
- filter 表:控制数据包是否允许进出及转发,可以控制的链路有 INPUT、FORWARD 和 OUTPUT。
- nat 表:控制数据包中地址转换,可以控制的链路有 PREROUTING、INPUT、OUTPUT 和 POSTROUTING。
- mangle:修改数据包中的原数据,可以控制的链路有 PREROUTING、INPUT、OUTPUT、FORWARD 和 POSTROUTING。
- raw:控制 nat 表中连接追踪机制的启用状况,可以控制的链路有 PREROUTING、OUTPUT。
“五链”是指内核中控制网络的 NetFilter 定义的 5 个规则链。每个规则表中包含多个数据链:
INPUT(入站数据过滤)、
OUTPUT(出站数据过滤)、
FORWARD(转发数据过滤)、
PREROUTING(路由前过滤)
POSTROUTING(路由后过滤),
防火墙规则需要写入到这些具体的数据链中。
Linux 防火墙的过滤框架,如图所示:
可以看出,- 如果是外部主机发送数据包给防火墙本机,数据将会经过 PREROUTING 链与 INPUT 链;
- 如果是防火墙本机发送数据包到外部主机,数据将会经过 OUTPUT 链与 POSTROUTING 链;
- 如果防火墙作为路由负责转发数据,则数据将经过 PREROUTING 链、FORWARD 链以及 POSTROUTING 链。
iptables语法格式
iptables 命令的基本语法格式如下:
iptables [-t table] COMMAND [chain] CRETIRIA -j ACTION
各参数的含义为:
- -t:指定需要维护的防火墙规则表** filter、nat、mangle或raw**。在不使用 -t 时则默认使用 filter 表。
- COMMAND:子命令,定义对规则的管理。
- chain:指明链表。
- CRETIRIA:匹配参数。cretiria
- ACTION:触发动作。action
iptables 命令常用的选项及各自的功能:
选 项 功 能-A 添加防火墙规则-D 删除防火墙规则-I 插入防火墙规则-F 清空防火墙规则-L 列出添加防火墙规则-R 替换防火墙规则-Z 清空防火墙数据表统计信息-P 设置链默认规则
iptables 命令常用匹配参数及各自的功能:
参 数 功 能[!]-p 匹配协议,! 表示取反[!]-s 匹配源地址[!]-d 匹配目标地址[!]-i 匹配入站网卡接口[!]-o 匹配出站网卡接口[!]--sport 匹配源端口[!]--dport 匹配目标端口[!]--src-range 匹配源地址范围[!]--dst-range 匹配目标地址范围[!]--limit 四配数据表速率[!]--mac-source 匹配源MAC地址[!]--sports 匹配源端口[!]--dports 匹配目标端口[!]--stste 匹配状态(INVALID、ESTABLISHED、NEW、RELATED)[!]--string 匹配应用层字串
iptables 命令触发动作及各自的功能:
触发动作 功 能ACCEPT 允许数据包通过DROP 丢弃数据包REJECT 拒绝数据包通过LOG 将数据包信息记录 syslog 曰志DNAT 目标地址转换SNAT 源地址转换MASQUERADE 地址欺骗REDIRECT 重定向
内核会按照顺序依次检查 iptables 防火墙规则,如果发现有匹配的规则目录,则立刻执行相关动作,停止继续向下查找规则目录;如果所有的防火墙规则都未能匹配成功,则按照默认策略处理。使用 -A 选项添加防火墙规则会将该规则追加到整个链的最后,而使用 -I 选项添加的防火墙规则则会默认插入到链中作为第一条规则。
注意:在 Linux CentOS 系统中,iptables 是默认安装的,如果系统中没有 iptables 工具,可以先进行安装。规则的查看与清除
使用 iptables 命令可以对具体的规则进行查看、添加、修改和删除。
查看规则iptables -nvL
各参数的含义为:
- -L 表示查看当前表的所有规则,默认查看的是 filter 表,如果要查看 nat 表,可以加上 -t nat 参数。
- -n 表示不对 IP 地址进行反查,加上这个参数显示速度将会加快。
- -v 表示输出详细信息,包含通过该规则的数据包数量、总字节数以及相应的网络接口。
【例 1】查看规则。首先需要使用 su 命令,切换当前用户到 root 用户。然后在终端页面输入命令如下:
添加规则
添加规则有两个参数分别是 -A 和 -I。其中 -A 是添加到规则的末尾;-I 可以插入到指定位置,没有指定位置的话默认插入到规则的首部。
【例 2】查看当前规则。首先需要使用 su 命令,切换当前用户到 root 用户,然后在终端页面输入命令如下:
添加一条规则到尾部。首先需要使用 su 命令,切换当前用户到 root 用户,然后在终端页面输入如下命令:iptables -A INPUT -s 192.168.1.5 -j DROPiptables -nL --line-number
“#”号开头的表示注释;
“filter”表示所在的表;
“:链名默认策略”表示相应的链及默认策略,具体的规则部分省略了命令名“iptables”;
在末尾处*“COMMIT”表示提交前面的规则设置。**
列出nat表的规则内容,命令如下:iptables-save -t nat
“-t表名”:表示列出某一个表。
iptables-restore命令
iptables-restore 命令可以批量导入Linux防火墙规则,同时也需要结合重定向输入来指定备份文件的位置。命令如下:iptables-restore
注意,导入的文件必须是使用 iptables-save工具导出来的才可以。
先使用 iptables-restore 命令还原 text 文件,然后使用 iptables -t nat -nvL 命令查看清空的规则是否已经还原,如下所示:iptables-restore
ip rule,ip route,iptables 三者之间的关系
iptables:iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的"安全框架"中,这个"安全框架"才是真正的防火墙,这个框架的名字叫netfilter。
注:图中 “路由判断” 就是使用ip rule,ip route设置的规则,其中ip route配置的路由表服务于ip rule配置的规则。
以一例子来说明:公司内网要求192.168.0.100 以内的使用 **10.0.0.1 **网关上网 (电信),其他IP使用 **20.0.0.1 **(网通)上网。- 首先要在网关服务器上添加一个默认路由,当然这个指向是绝大多数的IP的出口网关:ip route add default via 20.0.0.1
- 之后通过 ip route 添加一个路由表:**ip route add table 3 via 10.0.0.1 dev ethX **(ethx 是 10.0.0.1 所在的网卡, 3 是路由表的编号)
- 之后添加 ip rule 规则:**ip rule add fwmark 3 table 3 **(fwmark 3 是标记,table 3 是路由表3 上边。 意思就是凡事标记了 3 的数据使用 table3 路由表)
- 之后使用 iptables 给相应的数据打上标记:iptables -A PREROUTING -t mangle -i eth0 -s 192.168.0.1 - 192.168.0.100 -j MARK --set-mark 3
iptables -t mangle -A FORWARD -i eth3 -p tcp --dport 80 -j MARK --set-mark 1 // eth3输入的HTTP协议数据,标记为 mark 1 iptables -t mangle -A FORWARD -i eth3 -p tcp --dport 25 -j MARK --set-mark 2 // eth3 输入的SMTP协议数据,标记为 mark 2iptables -t mangle -A FORWARD -i eth3 -p tcp --dport 110 -j MARK --set-mark 2 // eth3 输入的POP协议数据,标记为 mark 2iptables -t mangle -A FORWARD -i eth3 -j MARK --set-mark 3 // eth3 输入的其他数据,标记为 mark 3ip rule add fwmark 1 table 1 // fwmark 1 的数据,使用 table 1ip rule add fwmark 2 table 2 ip rule add fwmark 3 table 3
ip link——管理和查看网络接口
ip layer 即链路层。该命令用于管理和查看网络接口。ip link只能看链路层的状态,看不到ip地址
ip link的参数:ip link set DEVICE { up | down | arp { on | off } | name NEWNAME | address LLADDR }选项说明:
dev DEVICE:指定要操作的设备名
up and down:启动或停用该设备
arp on or arp off:启用或禁用该设备的arp协议
name NAME:修改指定设备的名称,建议不要在该接口处于运行状态或已分配IP地址时重命名
address LLADDRESS:设置指定接口的MAC地址
举例:
- 控制 eth1网卡
# 停用 eth1网卡:ip link set eth1 down# 启用 eth1网卡:ip link set eth1 up等价于:ifconfig eth1 down 或 ifconfig eth1 up
- 查看所有的网络链接——ip link show
ip link show语法格式: ip [ -s | -h | -d ] link show [dev DEV] 选项说明: -s[tatistics]:将显示各网络接口上的流量统计信息; -h[uman-readable]:以人类可读的方式显式,即单位转换; -d[etails]:显示详细信息(选项说明可以通过ip help查看)
ip -s -h -d link show dev eth0 #没有eth0Device "eh0" does not exist.
不过可以看一下别人的答案
ip -s -h -d link show dev eth05: eth0: mtu 1500 qdisc mq state UNKNOWN mode DEFAULT group default qlen 1000 link/ether 00:01:02:a4:71:28 brd ff:ff:ff:ff:ff:ff promiscuity 0 numtxqueues 8 numrxqueues 8 RX: bytes packets errors dropped overrun mcast 160M 2.86M 0 0 0 0 TX: bytes packets errors dropped carrier collsns 192k 1.43k 0 0 0 0
各字段含义说明:
BROADCAST:支持广播MULTICAST:支持组播UP:代表网卡开启状态;如果是关闭状态则不显示UP(重要)LOWER_UP:有说法是代表网卡的网线被接上,自己测试验证发现使用ifconfig eth0 down后,UP和LOWER_UP均不显示;使用ifconfig eth0 up后,UP和LOWER_UP均显示(重要)mtu 1500:网络接口的最大传输单元(Maximum Transmission Unit ):1500字节。是包或帧的最大长度,一般以字节记。qdisc:排队规则state UNKNOWN :mode DEFAULT :group default :qlen 1000:link/ether 00:01:02:a4:71:28 表示物理网卡地址brd ff:ff:ff:ff:ff:ff promiscuity 0 numtxqueues 8 numrxqueues 8
ip -s -h -d link show dev can03: can0: mtu 16 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 10 link/can promiscuity 0 can state ERROR-ACTIVE restart-ms 100 bitrate 250000 sample-point 0.800 tq 400 prop-seg 3 phase-seg1 4 phase-seg2 2 sjw 1 mcp251x: tseg1 3..16 tseg2 2..8 sjw 1..4 brp 1..64 brp-inc 1 clock 12500000 re-started bus-errors arbit-lost error-warn error-pass bus-off 0 0 0 0 0 0 numtxqueues 1 numrxqueues 1 RX: bytes packets errors dropped overrun mcast 21.6M 2.71M 1 0 1 0 TX: bytes packets errors dropped carrier collsns 0 0 0 0 0 0
各字段含义说明:
NOARP:没有arp协议ECHO:Echo发送的数据包can state ERROR-ACTIVE restart-ms 100:一般情况,正常的时候,每个节点大多数时间出于CAN_STATE_ERROR_ACTIVE这个状态,也就是错误主动状态。别看这个状态名字叫错误,但是实际上就是对应的普通状态。标示这个节点检测到错误,会发出主动错误标示。随着问题的增多,节点逐渐会升级到CAN_STATE_ERROR_WARNING状态。但是这个状态并没有固定的硬件标示,实际上是一个软件层面的预警。也就是说,对于CAN_STATE_ERROR_ACTIVE和CAN_STATE_ERROR_WARNING而言,这个节点的任何逻辑行为(包括软硬件)都不会有什么区别。随着问题的继续增多,节点会升级到CAN_STATE_ERROR_PASSIVE状态。在这个状态下,节点的硬件行为会改变,收到错误的时候,发送的是被动错误标示。如果此时问题还会继续,则节点会进入CAN_STATE_BUS_OFF状态。这个时候只有检测到128个连续的11个隐性位才能回到CAN_STATE_ERROR_ACTIVE。(参考文献8)如果使用ip link set can0 down关闭can设备,can state显示为: STOPPED restart-ms 100:自动重启的延时时间。出现太多错误时,设备可能进入总线关闭状态,给canrestart-ms 设置一个非零值,可以开启总线关闭自动恢复功能,设置时需要先关闭can设备,如:ip link set can0 downip link set can0 type can bitrate 250000 loopback onip link set can0 type can restart-ms 200ip link set can0 upbitrate 250000 sample-point 0.800波特率:250000 sample-point:采样点tq 400 prop-seg 3 phase-seg1 4 phase-seg2 2 sjw 1mcp251x: tseg1 3..16 tseg2 2..8 sjw 1..4 brp 1..64 brp-inc 1re-started bus-errors arbit-lost error-warn error-pass bus-off重启次数、总线错误、仲裁丢失错误、错误主动(error-warning)、错误被动(error-passive)、总线关闭。接收的过载错误在统计信息的"overrun"域下面列出。TX :将套接字缓冲区的CAN帧发送到CAN控制器;RX :从CAN控制器的CAN帧读取到套接字缓冲区。
还是看自己本地的吧
ip -s -h -d link show dev lo
补充:
(1)除了ip link set 和ip link show,ip link还有其他选项,可以通过ip link help查看;
(2)ip命令除了ip link还有其他选项,可以通过ip help查看;
总结了指令参数的含义IFF_ALLMULTI Receive all multicast packets. 接收所有多播数据包。IFF_AUTOMEDIA Auto media selection active. 自动媒体选择激活。IFF_BROADCAST Valid broadcast address set. 有效的广播地址集。IFF_DEBUG Internal debugging flag. 内部调试标志。IFF_DORMANT Driver signals dormant (since Linux 2.6.17) 驱动程序信号休眠(从Linux 2.6.17开始)IFF_DYNAMIC The addresses are lost when the interface goes down. 当接口关闭时,地址将丢失。IFF_ECHO Echo sent packets (since Linux 2.6.25) Echo发送的数据包(从Linux 2.6.25开始)IFF_LOOPBACK Interface is a loopback interface. 接口是一个环回接口。IFF_LOWER_UP Driver signals L1 up (since Linux 2.6.17) 驱动程序信号L1启动(从Linux 2.6.17开始)IFF_MASTER Master of a load balancing bundle. 负载平衡捆绑包的主控程序。。IFF_MULTICAST Supports multicast 支持多播IFF_NOARP No arp protocol, L2 destination address not set. 没有arp协议,未设置二级目标地址。IFF_NOTRAILERS Avoid use of trailers. IFF_POINTOPOINT Interface is a point-to-point link.IFF_PORTSEL Is able to select media type via ifmap.IFF_PROMISC Interface is in promiscuous mode. IFF_RUNNING Resources allocated.IFF_SLAVE Slave of a load balancing bundle.IFF_UP Interface is running.
上一篇:怎么架设csgo服务器?
下一篇:易语言内存按键操作深度解析