赞
踩
PDF获取:
网络拓扑图解析:
LAN网络设备间的通信
router table
ARP table
Mac table
例如:电脑1(192.168.1.11) ping 电脑4(192.168.1.44).
安装brctl网桥工具
$ sudo apt-get install bridge-utils
主要参数解释
-a<主机>:显示arp缓冲区的所有条目;
-H<地址类型>:指定arp指令使用的地址类型;
-d<主机>:从arp缓冲区中删除指定主机的arp条目;
-D:使用指定接口的硬件地址;
-e:以 Linux 的显示风格显示arp缓冲区中的条目;
-i<接口>:指定要操作arp缓冲区的网络接口;
-s<主机><MAC地址>:设置指定的主机的IP地址与MAC地址的静态映射;
-n:以数字方式显示arp缓冲区中的条目;
-v:显示详细的arp缓冲区条目,包括缓冲区条目的统计信息;
-f<文件>:设置主机的IP地址与MAC地址的静态映射。
上面00:50:56:f3:c9:8e是网关192.168.2.2的MAC地址,00:50:56:c0:00:08是虚拟机VMnet8的MAC地址。
基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目的地址而且能够根据报文大小,应用或IP源地址等属性来选择转发路径。
格式类型
判断条件 表ID 优先级
ip rule add from 192.168.3.1 table 10 prio 199
// 添加规则,源地址为192.168.3.1的包,使用表10
参数解释:
ip rule add to 168.95.1.1 table 10 // 目的地址是 168.95.1.1 使用 table 10
ip rule add dev eth2 table 1 // dev eth2 输入的数据,使用 table 1
ip 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
ip rule add from 192.203.80/24 table 1 prio 220 #增加规则220 prio
如果去掉prio的话,最后的222默认就是路由表的名称,并且因为没有设定规则ID,就默认在目前的规则上添加一个,220->219
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 系统启动时,内核会为路由策略数据库配置三条缺省的规则:
**注:**不要混淆路由表和策略:规则指向路由表,多个规则可以引用一个路由表,而且某些路由表可以策略指向它。如果系统管理员删除了指向某个路由表的所有规则,这个表没有用了,但是仍然存在,直到里面的所有路由都被删除,它才会消失。
route 命令用于查看和操作Linux操作系统中的路由表。它允许您添加,删除和修改路由表的条目,以确定数据包从一台计算机到另一台计算机的传输路径。
查看路由表: windows下
查看路由表:Linux下 “ip route” 或 “route”
以下是一些 route 命令的常用选项:
route = route -n #默认显示的是中文,显示当前路由表
route -en #显示的是英文,显示当前路由表
在 route -n 命令的输出中可以看见标志即路由类型。以下是一些常见的路由类型及其含义:
因此,对于输出中的每一行,第一列的字符组合表示该路由的类型和属性。例如,UG 表示该路由是一个默认网关,并且可用。同样,UGH 表示该路由是一个主机路由,并且是默认网关,并且可用。
在 route add 命令中,可以使用 -gw 选项指定一个网关,也可以使用 -dev 选项指定要使用的网络设备。
route add -net 172.21.45.0 netmask 255.255.255.0 gw 172.21.45.254
route add -net 172.21.45.44 netmask 255.255.255.0 dev eth0
route del default gw 172.21.45.33 #指定删除默认路由
#如果不加iP地址,则会默认删除当前的默认路由
route change -net 172.21.45.0 netmask 255.255.255.0 gw 172.21.45.2
使用 route flush 命令将清空整个路由表,这意味着所有当前定义的路由都将被删除。在路由表被清空后,系统将无法将数据包路由到其目标地址,将无法访问网络。
因此,在执行 route flush 命令之前,应该确保已经备份了路由表,以便在需要时可以快速恢复。如果需要仅删除特定的路由表项,应该使用 route del 命令来删除特定的路由表项。
linux 系统中,可以自定义从 1-252个路由表。其中,linux系统维护了4个路由表:
查找路由表可以通过ip route show table table_number[table name]命令,路由表和表明的对应关系记录在/etc/iproute2/rt_tables中
ip route show table 表号[表名]
# 第一行是默认路由,表示在路由表上查不到数据时时,报文都从 enp0s3 网卡出去,去 IP 为 10.0.0.2 的另一台主机。
# 第二行是网络路由,表示去 10.0.0.0/24 网络的报文都从 enp0s3 网卡出去,报文中携带的源地址(本机地址)为 10.0.0.128。
# 第三行也是网络路由,表示去 172.17.0.0/16 网络的报文都从 docker0 网卡出去,报文中携带的源地址(本机地址)为 172.17.0.1。
# 由第二行可知,走默认路由时,报文中携带的源地址(本机地址)为 10.0.0.128。
在编写下列的指令时候,可能会报错**“RTNETLINK answers: Operation not permitted”,在指令的前面加上sudo即可。或者直接使用root权限**
增加的路由必须要和本身的ip地址处于同一子网中才行。
ip route add default via 172.21.45.11 table 1
ip route add 172.21.45.2 via 172.21.45.5
ip route add 172.21.45.4 via 172.21.45.8 dev enp0s8
ip route add 172.21.45.5 via 172.21.45.10 dev enp0s8 table 2
ip route get 172.21.45.4
获取到目标的单个路由,并按照内核所看到的方式打印其内容
ip route del default #删除当前默认网关
如果要想删除指定的默认路由,则需要加上via + ip地址
ip route del default via 172.21.45.254
删除指定路由
ip route del 地址
显示自己的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 是 Linux 防火墙系统的重要组成部分,iptables 的主要功能是实现对网络数据包进出设备及转发的控制。当数据包需要进入设备、从设备中流出或者由该设备转发、路由时,都可以使用 iptables 进行控制。
iptables 是集成在 Linux 内核中的包过滤防火墙系统。使用 iptables 可以添加、删除具体的过滤规则,iptables 默认维护着 4 个表和 5 个链,所有的防火墙策略规则都被分别写入这些表与链中。
“四表”是指 iptables 的功能,默认的 iptables 规则表有 filter 表(过滤规则表)、nat 表(地址转换规则表)、mangle(修改数据标记位规则表)、raw(跟踪数据表规则表):
“五链”是指内核中控制网络的 NetFilter 定义的 5 个规则链。每个规则表中包含多个数据链:
INPUT(入站数据过滤)、
OUTPUT(出站数据过滤)、
FORWARD(转发数据过滤)、
PREROUTING(路由前过滤)
POSTROUTING(路由后过滤),
防火墙规则需要写入到这些具体的数据链中。
Linux 防火墙的过滤框架,如图所示:
可以看出,
iptables 命令的基本语法格式如下:
iptables [-t table] COMMAND [chain] CRETIRIA -j 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
各参数的含义为:
【例 1】查看规则。首先需要使用 su 命令,切换当前用户到 root 用户。然后在终端页面输入命令如下:
添加规则
添加规则有两个参数分别是 -A 和 -I。其中 -A 是添加到规则的末尾;-I 可以插入到指定位置,没有指定位置的话默认插入到规则的首部。
【例 2】查看当前规则。首先需要使用 su 命令,切换当前用户到 root 用户,然后在终端页面输入命令如下:
添加一条规则到尾部。首先需要使用 su 命令,切换当前用户到 root 用户,然后在终端页面输入如下命令:
iptables -A INPUT -s 192.168.1.5 -j DROP
iptables -nL --line-number
修改规则
在修改规则时需要使用-R参数。
【例 4】把添加在第1 行规则的 DROP 修改为 ACCEPT。首先需要使用 su 命令,切换当前用户到 root 用户,然后在终端页面输入如下命令:
iptables -R INPUT 1 -s 192.168.1.5 -j ACCEPT
iptables -nL --line-number
对比发现,第 1 行规则的 target 已修改为 ACCEPT。
删除规则
删除规则有两种方法,但都必须使用 -D 参数。
【例 5】删除添加的第 1 行的规则。首先需要使用su命令,切换当前用户到 root 用户,然后在终端页面输入如下命令:
iptables -D INPUT 1 -s 192.168.1.5 -j ACCEPT
或
iptables -D INPUT 1
已经删除第一行的规则
注意:有时需要删除的规则较长,删除时需要写一大串的代码,这样比较容易写错,这时可以先使用 -line-number 找出该条规则的行号,再通过行号删除规则。
默认的 iptables 防火墙规则会立刻生效,但如果不保存,当计算机重启后所有的规则都会丢失,所以对防火墙规则进行及时保存的操作是非常必要的。
iptables 软件包提供了两个非常有用的工具,我们可以使用这两个工具处理大量的防火墙规则。这两个工具分别是** iptables-save 和 iptables-restore**,使用该工具可以实现防火墙规则的保存与还原。这两个工具的最大优势是处理庞大的规则集时速度非常快。
CentOS 7 系统中防火墙规则默认保存在 /etc/sysconfig/iptables 文件中,使用 iptables-save 将规则保存至该文件中可以实现保存防火墙规则的作用,计算机重启后会自动加载该文件中的规则。如果使用 iptables-save 将规则保存至其他位置,可以实现备份防火墙规则的作用。当防火墙规则需要做还原操作时,可以使用 iptables-restore 将备份文件直接导入当前防火墙规则。
iptables-save命令
iptables-save 命令用来批量导出 Linux 防火墙规则,语法介绍如下:
保存在默认文件夹中(保存防火墙规则):iptables-save > /etc/sysconfig/iptables
保存在其他位置(备份防火墙规则):iptables-save > 文件名称
直接执行 iptables-save 命令:显示出当前启用的所有规则,按照 raw、mangle、nat、filter 表的顺序依次列出,如下所示:
“#”号开头的表示注释;
“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 < test
iptables -t nat -nvL
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 **(网通)上网。
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 2
iptables -t mangle -A FORWARD -i eth3 -p tcp --dport 110 -j MARK --set-mark 2 // eth3 输入的POP协议数据,标记为 mark 2
iptables -t mangle -A FORWARD -i eth3 -j MARK --set-mark 3 // eth3 输入的其他数据,标记为 mark 3
ip rule add fwmark 1 table 1 // fwmark 1 的数据,使用 table 1
ip rule add fwmark 2 table 2
ip rule add fwmark 3 table 3
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网卡:
ip link set eth1 down
# 启用 eth1网卡:
ip link set eth1 up
等价于:
ifconfig eth1 down 或 ifconfig eth1 up
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 #没有eth0
Device "eh0" does not exist.
不过可以看一下别人的答案
ip -s -h -d link show dev eth0
5: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> 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 can0
3: can0: <NOARP,UP,LOWER_UP,ECHO> 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 down ip link set can0 type can bitrate 250000 loopback on ip link set can0 type can restart-ms 200 ip link set can0 up bitrate 250000 sample-point 0.800 波特率:250000 sample-point:采样点 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 re-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.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。