免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 一生有你llx
打印 上一主题 下一主题

[系统管理] Linux基础命令 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
151 [报告]
发表于 2019-03-03 10:12 |只看该作者
traceroute
      traceroute指令输出到目标主机的路由包。Traceroute跟踪从IP网络到给定主机的路由数据包。它利用IP协议的生存时间(TTL)字段,并试图在通往主机的路径上从每个网关激发ICMP TIME_SUBERS响应。
traceroute6等价于“traceroute -6
唯一需要的参数是目标主机的名称或IP地址。探测数据包的总大小(IPv 4默认为60字节,IPv 6为80字节)是一个可选参数。在某些情况下,可以忽略指定的大小或将其增加到最小值。
该程序试图跟踪IP数据包将遵循的路由到某些Internet主机,方法是使用一个小的ttl(生命时间)启动探测包,然后从网关侦听ICMP“时间超过”的答复。我们以1开头,然后增加1,直到我们得到一个ICMP“端口不可达”(或TCP重置),这意味着我们到达了“主机”,或者达到了最大值(默认为30跳)。在每个ttl设置处发送三个探针(默认情况下),并打印一行,显示每个探针的ttl、网关地址和往返时间。在请求时,可以在地址之后添加其他信息。如果探测答案来自不同的网关,则将打印每个响应系统的地址。如果在5.0秒(默认)内没有响应,则会为该探针打印一个“*”(星号)。
追踪结束后,可以打印一些附加注释:!h、!n或!P(主机、网络或协议不可达)、!s(源路由失败)、!F(所需碎片化)、!X(管理上禁止通信)、!v(主机优先级冲突)、!C(有效的优先截止),或!<num>(ICMP不可达代码<num>。如果几乎所有的探测器都导致某种无法到达的情况,Traceroute就会放弃并退出。
我们不希望目标主机处理UDP探测包,因此目标端口被设置为一个不太可能的值(您可以使用-p标志更改它)。ICMP或TCP跟踪不存在这样的问题(对于TCP,我们使用半开放技术,这样可以防止目标主机上的应用程序看到我们的探测)。
在现代网络环境下,由于防火墙的广泛应用,传统的traceroute方法并不总是适用的。这样的防火墙过滤“不太可能”的UDP端口,甚至ICMP回音。为了解决这个问题,还实现了一些额外的跟踪方法
此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

2、        语法
traceroute [-46dFITUnreAV]  [-f first_ttl]  [-g gate,…]  [-i device]  [-m max_ttl]  [-p port]  [-s src_addr]
[-q nqueries]  [-N squeries]  [-t tos]  [-l flow_label]  [-w waittime]  [-z sendwait]
[-UL] [-P proto]  [--sport=port] [-M method]  [-O mod_options]  [--mtu]  [--back] host  [packet_len]

3、选项列表
选项
说明
--help
显示帮助信息
-V | --version
显示版本信息
-4 | -6
显式强制IPv4或IPv6跟踪。默认情况下,程序将尝试解析给定的名称,并自动选择适当的协议。如果解析主机名同时返回ipv4和ipv6地址,traceroute将使用ipv4。
-I
使用ICMP进行路由探测
-T
使用TCP协议的SYN进行路由探测
-d
是能socket调试功能
-f first_ttl
指定第一个数据包的TTL,默认是1
-F
不使用碎片
-g gateway
告诉Traceroute将IP源路由选项添加到传出数据包,该数据包通知网络通过指定网关路由数据包(大多数路由器出于安全原因禁用了源路由)。通常,允许多个网关(逗号分隔)。对于IPv 6,num,addr,addr.允许使用,其中num是路由标头类型(默认为类型2)。注意,0类型的路由头现在已不再推荐使用(Rfc 5095)
-i interface
指定网络接口
-m max_ttl
指定最大ttl,默认30
-N squeries
指定同时发送的探测数据包的数量。同时发送几个探针可以大大加快示踪速度。默认值为16。
-n
使用ip地址,不使用hostname
-p port
指定UDP端口
-t tos
对于IPv 4,设置服务类型(TOS)和优先级值。有用的值是16(低延迟)和8(高吞吐量)。注意,为了使用一些TOS优先级值,您必须是超级用户。对于IPv 6,设置流量控制值。
-w waittime
指定等待应答的时间,默认5s
-q nqueries
设置每个跳的探测数据包数。默认为3
-r
忽略正常的路由表
-s
指定发送数据包的ip地址
-z
探测之间的最小时间间隔(默认为0)。如果值大于10,则它指定一个以毫秒为单位的数字,否则为秒数(浮点值也允许)。当某些路由器对icmp消息使用速率限制时非常有用。
-e
显示ICMP扩展(Rfc 4884)。一般形式是类/类型:后面是十六进制转储。MPLS(Rfc 4950)以一种形式显示出来“MPLS:L=label,E=exp_use,S=stack_bottom,T=TTL
-A
在路由注册表中执行路径查找,并在相应地址之后直接打印结果。
高级选项

--sport=port
选择要使用的源端口
-M method
对traceroute操作使用指定的方法。默认的传统UDP方法有名称Default,ICMP(-I)和TCP(-T)分别有ICMP和TCP。特定于方法的选项可以通过-O传递。
-O option
指定一些特定于方法的选项。几个选项用逗号分隔(或在cmdline上使用多个-O)。每种方法都可能有自己的特定选项,或者许多方法根本没有它们
-U
使用UDP对特定的目标端口进行跟踪(而不是增加每个探针的端口)。默认端口为53(DNS)
-UL
使用UDPLITE追踪
-P protocol
使用指定协议的原始数据包进行跟踪。默认协议为253(Rfc 3692)。
--mtu
沿着被追踪的路径发现MTU
--back
打印后跳数时,它似乎与前进方向不同。在假定远程跳发送初始ttl设置为64、128或255(这似乎是一种常见的做法)的情况下,猜测了这个数字。它以“-NUM”的形式打印为否定值。

4、可用的方法method
通常,特定的traceroute方法可能必须由-M名称来选择,但是大多数方法都有它们简单的命令行开关(如果存在,您可以在方法名称之后看到它们)。
method
说明
default
传统的、古老的追踪方法。默认使用。
探测包是具有所谓“不可能”目标端口的UDP数据报。第一个探针的“不可能”端口是33434,然后每个下一个探针的端口增加一个。由于预期端口未使用,目标主机通常返回“ICMP不可访问端口”作为最终响应。(但是,没有人知道当某些应用程序侦听这样的端口时会发生什么)。
这个方法普通用户就可以使用。
icmp       -I
目前最常用的方法是使用ICMP回波数据包作为探针。如果您可以ping(目标主机,则icmp跟踪也适用。
tcp        -T
众所周知的现代方法,旨在绕过防火墙。使用常量目标端口(默认为80,http)。
如果网络路径中存在一些过滤器,那么很可能任何“不太可能”的UDP端口(对于默认方法而言)或甚至ICMP回波(对于ICMP)都会被过滤,并且整个跟踪只会在这样的防火墙上停止。要绕过网络过滤器,我们必须只使用允许的协议/端口组合。如果我们追踪一些,比如说,邮件服务器,那么更有可能“-T –p 25”可以到达它,即使-我不能。
这种方法使用了众所周知的“半开放技术”,它可以防止目标主机上的应用程序看到我们的探测。通常,发送TCP syn。对于未被监听的端口,我们接收TCP重置,一切都完成了。对于活动侦听端口,我们接收TCP syn ack,但通过TCP重置(而不是预期的TCP ack)应答,这样即使应用程序从未注意到,远程TCP会话也会被删除。
这个方法有以下的一些选项,默认的是synsysctl
syn,ack,fin,rst,psh,urg,ece,cwr,在任意组合中为探测包设置指定的tcp标志。
flags=num,将TCP标头中的标志字段设置为num。
ecn,发送带有TCP标志ECA和CWR的syn数据包(用于显式拥塞通知,rfc 316
sack,timestamps,window_scaling,在传出探测包中使用相应的tcp标头选项。
sysctl,对上面的TCP头选项和ecn使用当前sysctl(“/proc/sys/net/*”)设置。默认情况下始终设置,如果没有其他指定的话
mss=num,对maxseg tcp报头选项使用num值(当syn)
tcpconn
TCP方法的初始实现,简单使用CONNECT(2)调用,完成TCP会话的完全打开
udp       -U
使用带有常量目标端口的UDP数据报(默认为53,DNS)。也打算绕过防火墙。
注意,与TCP方法不同的是,目标主机上的相应应用程序总是接收我们的探测(带有随机数据),而且大多数都很容易被它们混淆。但是,大多数情况下,它不会响应我们的数据包,因此我们永远不会看到跟踪中的最后一跳。(幸运的是,似乎至少DNS服务器会以愤怒的方式回复)。
此方法不需要特权。
udplite   -UL
对探针使用udplite数据报(具有固定的目标端口,默认为53),此方法不需要特权。选项:
coverage=num,设置udplite范围num。
raw       -P proto
发送协议原始数据包。选项:
protocol=proto,使用IP协议Proto(默认253)

5、说明
为了加速工作,通常同时发送几个探测器。另一方面,它制造了一个“包裹风暴”,特别是在回复方向。路由器可以节流ICMP响应的速率,有些应答可能会丢失。为了避免这种情况,减少同步探测的数量,甚至将其设置为1(类似于最初的traceroute实现),即-N1。
最终(目标)主机可以丢弃一些同时进行的探测,甚至可能只回答最新的探测。它可以导致额外的“看上去像过期”啤酒花接近最后一跳。我们使用智能算法来自动检测这种情况,但如果在您的情况下它无法帮助,只需使用-N1。
为了获得更好的稳定性,您可以通过-z选项来减缓程序的工作速度,例如,在探测之间使用“-z 0.5”进行半秒暂停。
如果有些跳对每种方法都没有任何报告,那么获得某些信息的最后机会是使用“ping -R”命令(ipv4,并且仅对最近的8跳)。

6、实例
追踪到baidu的路由信息
[root@localhost ~]# ping www.baidu.com -c 1                         //ping目标,得到ip地址
PING www.a.shifen.com (111.13.100.91) 56(84) bytes of data.
[root@localhost ~]# traceroute -n www.baidu.com                   //追踪路由
traceroute to www.baidu.com (111.13.100.92), 30 hops max, 60 byte packets
1  192.168.1.1  4.124 ms  3.936 ms  3.882 ms
2  10.46.80.1  8.917 ms  9.238 ms  9.233 ms
3  183.203.226.201  12.855 ms  12.788 ms  12.802 ms
4  221.180.30.197  12.792 ms 221.180.30.45  12.776 ms  12.762 ms
5  221.183.47.225  13.526 ms  13.363 ms  13.259 ms
6  221.183.37.249  26.798 ms  23.556 ms  26.832 ms
7  * * *
8  111.13.98.101  20.569 ms  20.460 ms 111.13.98.93  24.463 ms
9  111.13.98.93  27.215 ms 111.13.98.101  20.895 ms 111.13.112.53  26.946 ms
10  111.13.108.5  24.136 ms 111.13.112.57  23.754 ms 111.13.112.61  23.712 ms




论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
152 [报告]
发表于 2019-03-04 08:42 |只看该作者
ip
      ip指令可以显示或操作路由、网路设备,设置路由策略和通道。
     此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
     ip [选项]  OBJECT  COMMAND [help]
     OBJECT对象可以是:link,网络设备;addr,设备的协议地址;route,路由表;rule,策略;neigh,arp缓存;tunnel,ip通道;maddr,多播地址;mroute,多播路由
     COMMAND是操作命令,不同的对象有不同的命令配置。
     link对象支持的命令:set、show。
     addr对象支持的命令:add、del、flush、show。
     route对象支持的命令:list、flush、get、add、del、change、append、replace、monitor。
     rule对象支持的命令:list、add、del、flush。
     neigh对象支持的命令:add、del、change、replace、show、flush。
     tunnel对象支持的命令:add、change、del、show。
     maddr支持的命令:add、del。
     mroute支持的命令:show

2、选项列表
选项
说明
-V | -Version
显示版本信息
--help
显示帮助信息
-s | -stats | -statistics
显示详细的信息
-f | -family
指定协议类型
-4
等同-family inet
-6
等同-family inet6
-0
等同-family link
-o | -oneline
每条记录输出一行
-r | -resove
使用系统名字解析DNS

3、ip link---网络设备配置
     链路是一种网络设备,相应的命令显示和改变设备的状态。
     1)ip link set,改变设备属性
     devNAME(default),NAME指定要操作的网络设备。配置SR-IOV虚拟功能(VF)设备时,此关键字应指定关联的物理功能(PF)设备。
     updown,改变设备的状态,开或者关。
     arp onarp off,更改设备的NOARP标志。
     multicast onmulticast off,更改设备的MULTICAST标志。
     dynamic ondynamic off,更改设备的DYNAMIC标志。
     nameNAME,更改设备的名字,如果设备正在运行或者已经有一个配置好的地址,那么操作无效。
     txqueuelenNUMBER,txqlenNUMBER,更改设备发送队列的长度。
     mtuNUMBER,更改设备MTU。
     addressLLADDRESS,更改接口的站点地址
     broadcastLLADDRESS,brdLLADDRESS,peerLLADDRESS,当接口为POINTOPOINT时,更改链路层广播地址或对等地址。
     netnsPID,将设备移动到与进程PID关联的网络命名空间
     aliasNAME,给设备一个符号名以便于参考
     vfNUM,指定要配置的虚拟功能设备。必须使用dev参数指定关联的pf设备。
     警告:如果请求更改多个参数,则在任何更改失败后立即中止IP。这是IP能够将系统移动到不可预测状态的唯一情况。解决方案是避免使用一个ip链路集调用来更改多个参数。
     2)ip link show,显示设备属性
     devNAME(default),NAME指定要显示的网络设备。如果省略此参数,则列出所有设备。
     up,只显示运行的设备。

4、ip address---协议地址管理
     该地址是附加到网络设备上的协议(IP或IPv 6)地址。每个设备必须至少有一个地址才能使用相应的协议。可以将几个不同的地址附加到一个设备上。这些地址不受歧视,因此别名一词不太适合它们,我们在本文件中也没有使用它。ip addr命令显示地址及其属性,添加新地址并删除旧地址。
     1)ip address add,增加新的协议地址
     devNAME,要向其添加地址的设备的名称。
     localADDRESS(default),接口的地址。地址的格式取决于协议。它是一个用于IP的虚线四边形和一系列十六进制半字,用冒号分隔用于IPv 6。地址后面可以是斜杠和十进制数,它们编码网络前缀长度。
     peerADDRESS,点对点接口的远程端点的地址。同样,地址后面可以是斜杠和十进制数,编码网络前缀长度。如果指定了对等地址,则本地地址不能具有前缀长度。网络前缀与对等端相关联,而不是与本地地址相关联。
     broadcastADDRESS,接口的广播地址。可以使用特殊符号“和”-“代替广播地址。在这种情况下,通过设置/重置接口前缀的主机位来导出广播地址。
     labelNAME,每个地址都可以用标签字符串标记。为了保持与Linux2.0网络别名的兼容性,此字符串必须与设备名称重合,或者必须以设备名后跟冒号作为前缀。
     scopeSCOPE_VALUE,地址有效的区域的范围。可用的作用域列在文件“/etc/iproute2/rt_scopes“中。预定义的范围值是:
     Ⅰ)global,地址全局有效。
     Ⅱ)site,(仅IPv 6)该地址为站点本地地址,即该地址在此站点内有效。
     Ⅲ)link,该地址是本地链接,即它仅在此设备上有效。
     Ⅳ)host,该地址仅在此主机内有效。
     2)ip address delete,删除协议地址
     Arguments:与“ip addr add“的参数一致。设备名称是必需的参数。其余的都是可选的。如果没有提供参数,则删除第一个地址。
     3)ip address show,显示协议地址
     devNAME(default),设备名字
     scopeSCOPE_VAL,仅列出具有此作用域的地址。
     toPREFIX,仅列出匹配PREFIX的地址。
     labelPATTERN,只列出与模式匹配的标签的地址。
     dynamic,permanent,仅IPv 6)仅列出由于无状态地址配置而安装的地址,或只列出永久(非动态)地址。
     tentative,(仅IPv 6)仅列出未通过重复地址检测的地址。
     deprecated,(仅IPv 6)仅列出废弃地址
     primarysecondary,只列出主(或辅助)地址。
     4)ip address flush,刷新协议地址
     此命令刷新由某些条件选择的协议地址。此命令具有与Show相同的参数。不同之处在于,当不给出参数时,它不会运行。警告:这个命令(以及下面描述的其他刷新命令)非常危险。如果你犯了一个错误,它不会原谅它,而是会残酷地清除所有的地址。
     使用-statistics选项,命令变得详细。它打印出已删除地址的数量和为刷新地址列表而进行的轮次数。如果提供了两次此选项,则“ip addr flush“也会以上一小节描述的格式转储所有已删除的地址。

5、ip addrlabel---协议地址标签管理
     IPv 6地址标签用于RFC 3484中描述的地址选择。优先级由用户空间管理,只有标签存储在内核中。
     1)ip addrlabel add,增加地址标签
     prefixPREFIX,devDEV,输出接口。
     labelNUMBER,prefix的标签,0xffffffff保留。
     2)ip addrlabel del,删除地址标签
     该命令删除内核中的一个地址标签条目。参数:与“ip addrlabel add“的参数一致,但不需要标签。
     3)ip addrlabel list,列出地址标签
     显示地址标签的内容。
     4)ip addrlabel flush,刷新地址标签
     刷新地址标签的内容,并且不保存默认设置。

6、ip neighbour---邻居/ARP表管理
     邻居对象为共享相同链路的主机建立协议地址和链路层地址之间的绑定。邻接条目被组织成表。IPv 4邻居表的另一个名称是ARP表。相应的命令显示邻居绑定及其属性,添加新的邻居项并删除旧条目。
     1)ip neighbour add,增加邻居表
     2)ip neighbour change,改变已经存在的邻居表
     3)ip neighbour replace,增加一个表或者修改已经存在的表
     这些命令创建新的邻居记录或更新现有记录。上面的三个命令使用方法如下:
     toADDRESS(default),邻居的协议地址。它要么是IPv4,要么是IPv6地址。
     devNAME,连接到邻居的接口。
     lladdrLLADDRESS,邻居的链路层地址,可以是null。
     nudNUD_STATE,邻居的状态,可以是下面的值:
     Ⅰ)permanent,邻居项永远有效,只能内管理员删除。
     Ⅱ)noarp,邻居项有效。将不会尝试验证此条目,但可以在其生存期届满时删除该条目。
     Ⅲ)reachable,邻居项在可达超时过期之前是有效的。
     Ⅳ)stale,邻居的进入是有效的,但却是可疑的。如果邻居状态有效且此命令未更改地址,则此选项不会更改邻居状态。
     4)ip neighbour delete,删除邻居表
     此命令使邻居项无效。这些参数与“ip neigh add“相同,只是将忽略lladdrnud。警告:试图删除或手动更改内核创建的noarp条目可能会导致不可预测的行为。特别是,即使在NOARP接口上,如果地址是多播或广播的,内核也可以尝试解析此地址。
     5)ip neighbour show,显示邻居表
     toADDRESS(default),选择要列出的邻居的前缀
     devNAME,只列出与此设备相连的邻居
     unused,只列出当前未使用的邻居
     nudNUD_STATE,只列出此状态中的相邻项。NUD_STATE接受下面列出的值或特殊值all,这意味着所有状态。此选项可能发生不止一次。如果没有此选项,则IP列出除None和noarp以外的所有条目。
     6)ip neighbour flush,刷新邻居表
     此命令刷新相邻表,根据某些条件选择要刷新的条目。此命令具有与show相同的参数。不同之处在于,当不给出参数时,它不会运行,而要刷新的默认邻居状态不包括permanentnoarp

7、ip route—路由表管理
     操纵内核路由表中的路由条目保存其他网络节点的路径信息。路由类型可以是:
     Ⅰ)unicast,路由条目描述到路由前缀所涵盖的目的地的实际路径。
     Ⅱ)unreachable,这些目的地是无法到达的。丢弃数据包,生成不可访问的ICMP消息主机。本地发件人得到一个EHOSTUNEACH错误。
     Ⅲ)blackhole,这些目的地是无法到达的。数据包被静默丢弃。本地发送者得到一个EINVAL错误
     Ⅳ)prohibit,这些目的地是无法到达的。丢弃数据包并生成ICMP消息通信,该ICMP消息通信在管理上被禁止。本地发件人得到一个EACCES错误。
     Ⅴ)local,目的地分配给此主机。数据包被环回并在本地传送。
     Ⅵ)broadcast,目的地是广播地址。数据包作为链路广播发送。
     Ⅶ)throw,与策略规则一起使用的特殊控制路径。如果选择这样的路由,则将终止此表中的查找,假装没有找到路由。如果没有策略路由,则相当于路由表中没有路由。丢包并生成不可到达的ICMP消息网。本地发送者得到一个ENETUNEACH错误。
     Ⅷ)nat,一条特殊的NAT路线。前缀覆盖的目的地被认为是虚拟地址(或外部地址),需要在转发之前转换为真实地址(或内部地址)。选择要转换到的地址,并附带属性警告:Linux2.6中不再支持路由NAT。
     Ⅸ)viaanycast,未实现目标是分配给此主机的任意广播地址。它们主要等同于本地地址,但有一个不同之处:当将这些地址用作任何数据包的源地址时,这些地址是无效的。
     multicast,用于多播路由的一种特殊类型。它不存在于普通路由表中。
     路由表:Linux-2.x可以将路由打包到从1到255范围内的数字标识的多个路由表中,或者根据文件/etc/iucte 2/rt_tables的名称,默认情况下,所有普通路由都插入主表(ID 254),内核只在计算路由时使用此表。实际上,另一个表总是存在的,这是不可见的,但更重要的是。它是本地表(ID 255)。此表由本地地址和广播地址的路由组成。内核自动维护这个表,管理员通常不需要修改它,甚至不需要查看它。使用策略路由时,多个路由表进入游戏。
     1)ip route add,增加路由
     2)ip route change,修改路由
     3)ip route replace,改变或者增加路由
     toTYPEPREFIX(default),路由的目标前缀。如果省略类型,则IP采用类型单播。以上列出了其他类型的值。前缀是一个IP或IPv 6地址,后面有斜杠和前缀长度。如果前缀的长度丢失,则IP将采用全长主机路由.还有一个特殊的前缀默认值-相当于“IP 0/0“或者”to IPv6 ::/0“
     tosTOS,dsfieldTOS,服务类型(TOS)密钥。该密钥没有关联的掩码,最长的匹配被理解为:首先,比较路由和数据包的TOS。如果它们不相等,那么数据包仍然可以匹配为零TOS的路由。TOS要么是8位十六进制数字,要么是“/etc/iproute2/rt_dsfield“中的标识符。
     metricNUMBER,preferenceNUMBER,路由的首选值。NUMBER是任意32位数。
     tableTABLEID,要添加此路由的表。TABLEID可能是文件“/etc/iproute2/rt_tables“中的一个数字或字符串。如果省略此参数,则IP假定主表,但本地路由、广播路由和NAT路由除外,默认情况下这些路由被放入本地表中。
     devNAME,输出设备名字。
     viaADDRESS,下一个路由器的地址。实际上,这个字段的意义取决于路由类型。对于普通单播路由,它要么是真正的下一跳路由器,要么是安装在BSD兼容模式下的直接路由,它可以是接口的本地地址。对于NAT路由,它是已翻译的IP目的地块的第一个地址。
     srcADDRESS,发送到路由前缀所涵盖的目的地时要首选的源地址。
     realmREALMID,指定此路由的域。REALMID可能是文件“/etc/iproute2/rt_realms“中的一个数字或字符串。
     mtuMTU,mtulockMTU,沿着到达目的地的路径的MTU。如果未使用修饰符锁,则由于路径MTU发现,内核可能更新MTU。如果使用修饰符锁,则不会尝试路径MTU发现,所有数据包都将在IPv4情况下不使用DF位发送,或者在IPv6中碎片到MTU。
     windowNUMBER,TCP向这些目的地广告的最大窗口,以字节为单位。它限制了TCP对等点允许发送给我们的最大数据突发。
     rttTIME,最初的RTT(‘往返时间’)估计。如果没有指定后缀,则单元是直接传递给路由代码的原始值,以保持与以前版本的兼容性。否则,如果使用s、sec或secs后缀指定秒,使用ms、msec或msecs指定毫秒。
     rttvarTIME(2.3.15+ only),初始RTT方差估计。值与上述RTT指定的值相同。
     rto_minTIME(2.6.23+ only),与此目标通信时要使用的最小TCP重传超时。值与上述RTT指定的值相同。
     ssthreshNUMBER(2.3.15+ only),初始慢启动阈值的估计。
     cwndNUMBER(2.3.15+ only),阻塞窗口的夹子。如果不使用锁标志,则忽略它
     initcwndNUMBER,TCP连接的MSS中的最大初始拥塞窗口(CWND)大小。
     initrwndNUMBER(2.6.33+ only),连接到此目标的初始接收窗口大小。实际窗口大小是此值乘以连接的MSS。默认值为零,意味着使用慢速开始值。
     advmssNUMBER(2.3.15+ only),MSS(“最大段大小”)在建立TCP连接时向这些目的地做广告。如果未给出,Linux将使用从第一跳设备MTU中计算出来的默认值。(如果到达这些目的地的路径是不对称的,则这种猜测可能是错误的。)
     reorderingNUMBER(2.3.15+ only),到达此目标的路径上的最大重排序。如果未给出,Linux将使用sysctl变量“net/ipv4/tcp_reordering“所选择的值。
     nexthopNEXTHOP,多径路径的下一个。NEXTHOP是一个复杂的值,其语法类似于顶级参数列表:
     Ⅰ)viaADDRESS,下一个路由器。
     Ⅱ)devNAME,输出设备
     Ⅲ)weightNUMBER,是反映其相对带宽或质量的多径路由的此元素的权重。
     scopeSCOPE_VAL,路由前缀所涵盖的目的地的范围。SCOPE_VAL可以是文件“/etc/iproute2/rt_scopes“中的一个数字或字符串。如果省略此参数,则IP假定所有网关单播路由的作用域全局、直接单播和广播路由的范围链接以及本地路由的范围主机。
     protocolRTPROTO,此路由的路由协议标识符。RTPROTO可以是文件“/etc/iproute2/rt_protos“中的一个数字或字符串。如果未给出路由协议ID,则IP假定协议启动(即假定路由是由不了解他们正在做的事情的人添加的)。一些协议值有固定的解释:
     Ⅰ)redirect,该路由是由于icmp重定向而安装的。
     Ⅱ)kernel,该路由是由内核在自动配置期间安装的。
     Ⅲ)boot,该路由是在启动过程中安装的。如果路由守护进程启动,它将清除所有这些守护进程。
     Ⅳ)static,管理员安装了该路由以覆盖动态路由。路由守护进程将尊重它们,甚至可能会向其对等方发布广告。
     Ⅴ)ra,路由是由路由器发现协议安装的。
     onlink,假装Nextthop直接连接到此链接,即使它不匹配任何接口前缀。
     equalize,允许在多径路由上逐包随机化。如果没有这个修饰符,路由将被冻结到一个选定的下一个,这样负载拆分将只发生在每个流基上。只有当内核被修补时,均衡化才能工作。
     4)ip route delete,删除路由
ip route del“与”ip route add“具有相同的参数,但它们的语义略有不同。键值(to、tos、首选项和表)选择要删除的路由。如果存在可选属性,则IP验证它们是否与要删除的路由的属性一致。如果没有找到具有给定密钥和属性的路由,则”ip route del“将失败
     5)ip route show,显示路由
     toSELECTOR(default),仅从给定的目的地范围中选择路由。SELECTOR由一个可选修饰符(rootmatchexact)和一个前缀组成。root选择前缀不小于PREFIX的路由。例如,“root  0/0“选择整个路由表。match选择前缀长度不超过PREFIX的路由。例如,”match  10.0/16“选择10.0/16、10/8和0/0,但未选择10.1/16和10.0.0/24。exact(或仅仅前缀)选择具有此前缀的路由。如果这两个选项都没有出现,则IP假设为根0/0,即它列出了整个表。
     tosTOS,只选择具有给定tos的路由。
     tableTABLEID,显示此表中的路线。默认设置是显示tablemain。TABLEID可以是实表的ID,也可以是特殊值之一:
     Ⅰ)all,列出所有的表。
     Ⅱ)cache,备份路由缓存。
     clonedcached,列出克隆的路由,即由于某些路由属性(F.E)而从其他路由动态分叉的路由。(MTU)已更新。实际上,它等同于“table cache“。
     fromSELECTOR,语法与to相同,但它绑定源地址范围而不是目的地。请注意,FROM选项仅适用于克隆路由。
     protocolRTPROTO,仅列出此路由的协议。
     scopeSCOPE_VAL,仅列出具有此范围的路由
     typeTYPE,只列出此类型的路由。
     devNAME,只列出经过此设备的路由
     viaPREFIX,只列出通过前缀选择的下一个路由器的路由
     srcPREFIX,只列出由前缀选择的首选源地址的路由。
     realmREALMID,realmsFROMREALM/TOREALM,只列出这些领域的路由。
     6)ip route flush,刷新路由表
     此命令刷新由某些标准选择的路由,参数具有与“ip route show“的参数相同的语法和语义,但是路由表没有列出,而是被清除。唯一的区别是默认操作:显示转储所有IP主路由表,但刷新打印助手页。
     使用“-statistics“选项,命令变得详细。它打印出已删除路由的数目和刷新路由表的轮数。如果该选项被给予两次,IP路由刷新也会以上一小节描述的格式转储所有已删除的路由。
     )ip route get,获取一个单独的路由
     此命令获取一条到达目标的路由,并按照内核所看到的那样打印其内容。
     toADDRESS(default),目标地址。
     fromADDRESS,源地址。
     tosTOS,dsfieldTOS,服务类型。
     iifNAME,预期将从该包到达的设备。
     oifNAME,强制将此数据包路由的输出设备。
     connected,如果没有提供源地址(选项从),则重新查找从第一次查找中接收到的源设置为首选地址的路由。如果使用策略路由,则可能是不同的路由。
     请注意,此操作不等同于“ip route show“。show显示现有路线。如果必要的话,get解决它们并创建新的克隆。

8、ip rule---路由策略数据库管理
     rule规则在路由策略数据库中控制路由选择算法。Internet中使用的经典路由算法只根据数据包的目的地地址(理论上,而不是实际中的TOS字段)进行路由决策。在某些情况下,我们希望通过不同的方式路由数据包,这不仅取决于目的地地址,还取决于其他数据包字段:源地址、IP协议、传输协议端口,甚至包有效负载。此任务称为“策略路由”。为了解决这一问题,传统的基于目标的路由表按照最长的匹配规则排序,被替换为“路由策略数据库”(RPDB),该数据库通过执行一组规则来选择路由。
     每个策略路由规则由一个选择器和一个动作谓词组成。RPDB按照增加优先级的顺序进行扫描。每个规则的选择器应用于{源地址、目标地址、传入接口、tos、fwmark},如果选择器与数据包匹配,则执行操作。动作谓词可能会成功返回。在这种情况下,它将给出路由或故障指示,并终止RPDB查找。否则,RPDB程序将继续执行下一条规则。
     语义上,自然动作是选择下一个和输出设备。在启动时,内核配置由三条规则组成的默认rpdb:
     Ⅰ)Priority: 0。Selector:匹配任何内容,Action:查找本地路由表(ID 255)。本地表是包含本地地址和广播地址的高优先级控制路由的特殊路由表。
     Ⅱ)Priority: 32766。Selector:匹配任何内容,Action:查找路由表主(ID 254)。主表是包含所有非策略路由的普通路由表.管理员可以删除和/或用其他规则重写此规则。
     Ⅲ)Priority: 32767。Selector:匹配任何内容,Action:查找路由表默认值(ID 253)。默认表为空。如果没有先前的默认规则选择数据包,则保留用于某些后处理。这一规则也可以删除。
     RPDB可能包含以下类型的规则:
     Ⅰ)unicast,该规则规定返回在规则引用的路由表中找到的路由。
     Ⅱ)blackhole,这条规则规定要悄悄丢弃数据包。
     Ⅲ)unreachable,该规则规定生成“网络不可达”错误。
     Ⅳ)prohibit,该规则规定产生“在行政上禁止通信”错误。
     Ⅴ)nat,该规则规定将ip数据包的源地址转换为其他值。
     1)ip rule add,增加规则。
     2)ip rule delete,删除规则。
     typeTYPE(default),这个规则的类型
     fromPREFIX,选择要匹配的源前缀
     toPREFIX,选择要匹配的目标前缀
     iifNAME,选择要匹配的传入设备。如果接口是回送的,则该规则只匹配来自此主机的数据包。这意味着您可以为转发包和本地数据包创建单独的路由表,从而完全隔离它们。
     tosTOS,dsfieldTOS,选择要匹配的TOS值。
     fwmarkMARK,选择要匹配的fwmark值。
     priorityPREFERENCE,这条规则的优先级。每个规则都应该有一个显式设置的唯一优先级值。选项、偏好和顺序是优先级的同义词。
     tableTABLEID,如果规则选择器匹配,则查找路由表标识符。还可以使用查找而不是表。
     realmsFROM/TO,规则匹配和路由表查找成功时要选择的区域。只有当路由没有选择任何领域时,才使用要使用的领域。
     natADDRESS,要翻译的IP地址块的基(用于源地址)。该地址可以是NAT地址块的开始(由NAT路由选择),也可以是本地主机地址(甚至为零)。在最后一种情况下,路由器不会翻译数据包,而是将它们伪装成这个地址。使用map-to而不是nat意味着同样的事情。
     3)ip rule flush,刷新规则,还转储所有已删除的规则。
     没有参数。
     4)ip rule show,显示规则
     没有参数。

9、ip maddress---多播地址管理
     1)ip maddress show,显示多播地址
     devNAME(default),设备名字
     2)ip maddress add,增加多播地址
     3)ip maddress delete,删除多播地址
     这些命令附加/分离一个静态链路层多播地址,以便在接口上侦听。请注意,不可能静态地加入协议多播组。此命令仅管理链接层地址
     addressLLADDRESS(default),链路层多播地址。
     devNAME,加入/删除多播地址的设备

10、ip mroute---多播路由缓存管理
     mroute对象是由用户级mrouting守护进程创建的多播路由缓存条目。由于组播路由引擎当前接口的局限性,无法对多播路由对象进行管理更改,因此只能显示对象
     ip mroute show,列出mroute缓存项
     toPREFIX(default),选择要列出的目标多播地址的前缀。
     iifNAME,接收多播数据包的接口。
     fromPREFIX,选择多播路由的IP源地址的前缀

11、ip tunnel---通道配置
     tunnel对象是隧道,它将数据包封装在IP包中,然后通过IP基础结构发送。加密(或外部)地址族由“-f“选项指定。默认的是ipv4。
     1)ip tunnel add,增加一个新隧道
     2)ip tunnel change,修改一个已经存在的隧道
     3)ip tunnel delete,删除隧道
     nameNAME(default),隧道设备名字。
     modeMODE,设置隧道模式。可用的模式取决于封装地址系列。IPv 4封装可用的模式:ipip、SIT、isatap和grep;IPv6封装的模式:ip6ip6、ipip6和any。
     remoteADDRESS,设置隧道的远程端点
     localADDRESS,设置隧道数据包的固定本地地址。它必须是此主机的另一个接口上的地址。
     ttlN,在隧道化的数据包上设置固定的TTL N。N是介于1-255范围内的一个数字.0是一个特殊值,意味着数据包继承TTL值。IPv 4隧道的默认值是:Inherence。IPv6隧道的默认值是:64。
     tosT,dsfieldT,tclassT,在隧道数据包上设置固定的TOS(或IPv 6中的流量类)T。默认值是:inherit。
     devNAME,将隧道绑定到设备名称,以便隧道数据包只能通过此设备路由,并且在到达端点的路由发生更改时无法逃逸到另一个设备。
     nopmtudisc,禁用此隧道上的路径MTU发现。默认情况下启用它。请注意,固定的ttl与此选项不兼容:使用固定的ttl进行隧道操作总是会使pmtu发现。
     keyK,ikey K,okey K,(只有GRE隧道)使用键控GRE与密钥K,K要么是一个数字或一个类似IP地址的虚线四边形。key参数设置在两个方向上使用的键。ikey和okey参数为输入和输出设置不同的键。
     csum, icsum, ocsum,(只有GRE隧道)生成/要求隧道数据包的校验和。ocsum标志计算传出数据包的校验和。icsum标志要求所有输入数据包都具有正确的校验和。csum标志等效于组合icsum ocsum
     seq, iseq, oseq,(只有GRE隧道)序列化数据包。oseq标志允许对传出数据包进行排序。iseq标志要求对所有输入数据包进行序列化。seq标志等效于iseq oseq组合。这不是工作。不要用它
     dscpinherit,(只有IPv 6隧道)在内部和外部报头之间继承DS字段
     encaplimELIM,设置固定的封装限制。缺省值为4
     flowlabelFLOWLABEL,(只有IPv 6隧道)设置固定的流标签。
     4)ip tunnel prl,潜在路由器列表(只有ISATAP)
     devNAME,
     prl-defaultADDR,
     prl-nodefaultADDR,
     prl-deleteADDR,
     添加或删除addr作为潜在的路由器或默认路由器
     5)ip tunnel show,列出隧道
     没有参数

12、ip monitor and rtmon---状态监控
     IP实用程序可以连续地监视设备、地址和路由的状态。此选项的格式略有不同。也就是说,监视器command是命令行中的第一个命令,然后对象列表如下:
     ip monitor  [ all | LISTofOBJECTS]
     OBJECT-LIST是我们要监视的对象类型的列表。它可能包含链接、地址和路由。如果没有提供文件参数,则IP将打开RTNETLINK,侦听该参数,并以前面部分描述的格式转储状态更改。
     如果给定文件名,则不会侦听RTNETLINK,而是打开包含以二进制格式保存的RTNETLINK消息的文件,并将其转储。可以使用rtmon实用程序生成这样的历史文件。此实用程序具有类似于IP监视器的命令行语法。理想情况下,应该在发出第一个网络配置命令之前启动rtmon。例如,如果你在一个启动脚本中插入:
     rtmon file /var/log/rtmon.log
     稍后您将能够查看完整的历史记录。当然,可以随时启动rtmon。它在历史记录的前面加上在启动时转储的状态快照。

13、ip xfrm---设置xfrm
     xfrm是一个IP框架,它可以转换数据报的格式,即用某种算法对数据包进行加密。xfrm策略和xfrm状态通过模板tmpl_list相关联。该框架被用作IPsec协议的一部分。
     1)ip xfrm state add,增加新的状态
     2)ip xfrm state update,更新已经存在的状态
     3)ip xfrm state allocspi,分配SPI数值
     MODE,设置为默认传输,但可以设置为tunnelro或者beet
     FLAG-LIST,包含一个或多个标志。
     FLAG,可以设置为noecndecap-dscpwildrecv
     ENCAP,封装设置为封装类型ENCAP-TYPE、源端口SPORT、目标端口DPORT和OADDR。
     ENCAP-TYPE,可以是espinudp或者espinudp-nonike。
     ALGO-LIST,包含一个或多个算法Algo,该算法依赖于Algo_type设置的算法类型。它可以使用这些算法encauthcomp
     4)ip xfrm policy add,增加新策略
     5)ip xfrm policy update,更新已经存在的策略
     6)ip xfrm policy delete,删除存在的策略
     7)ip xfrm policy get,过去存在的策略
     8)ip xfrm policy deleteall,删除所有的xfrm策略
     9)ip xfrm policy list,打印策略列表
     10)ip xfrm policy flush,舒心策略
     dirDIR,目录可以是inpoutfwd
     SELECTOR,选择将设置策略的地址。选择器由源地址和目标地址定义。
     UPSPEC,由源端口sport、目的端口dporttypecode定义。
     devDEV,指定网络设备。
     indexINDEX,索引策略的数量。
     ptypePTYPE,默认是main,可以切换为sub
     actionACTION,默认是allow,可以切换为block
     priorityPRIORITY,级别是一个数字,默认0。
     LIMIT-LIST,限制以秒、字节或数据包数量为单位设置。
     TMPL-LIST,模板列表基于IDmodereqidlevel。
     ID,由源地址、目标地址、proto和spi的值指定。
     XFRM_PROTO,值可以是espahcomproute2hao。
     MODE,默认transport,,还可以是tunnelbeet。
     LEVEL,默认required,还可以是use。
     UPSPEC,由sportdporttypecode指定。
     11)ip xfrm monitor,用于列出所有对象或定义的对象组。
     xfrm monitor可以监视所有对象或其中定义的组的策略。

14、ip token
     IPv 6令牌化接口标识支持用于向节点分配众所周知的主机部分地址,同时仍然从路由器广告获得全局网络前缀。令牌标识符的主要目标是服务器平台,其中的地址通常是手动配置的,而不是使用DHCPv 6或SLAAC。通过使用令牌化标识符,主机仍然可以使用SLAAC确定其网络前缀,但如果其网络前缀更改,则更容易自动重新编号[1]。
     1)ip token set,设置接口令牌
     TOKEN,接口标识符令牌地址
     devDEV,网络接口
     2)ip token get,从内核获取接口令牌
     显示特定网络设备的令牌化接口标识符。参数:与“ip token set”的参数一致,但必须省略该令牌。
     3)ip token list,列出所有接口令牌
     列出内核中网络接口的所有令牌化接口标识符

15、实例
1)显示设备的各种协议地址
[root@localhost ~]# ip addr show             //显示设备支持的协议的地址
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:14:33:57 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.9/24 brd 192.168.1.255 scope global eth0
    inet6 fe80::a00:27ff:fe14:3357/64 scope link
       valid_lft forever preferred_lft forever
2)为目标设备添加地址
[root@localhost ~]# ip addr help              //查看帮助文档
Usage: ip addr {add|change|replace} IFADDR dev STRING [ LIFETIME ]
                                                     [ CONFFLAG-LIST]
       ip addr del IFADDR dev STRING
       ip addr {show|flush} [ dev STRING ] [ scope SCOPE-ID ]
                            [ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ]
[root@localhost ~]# ip addr add 192.168.1.110 dev eth0          //eth0添加新的ip
[root@localhost ~]# ip addr show dev eth0                         //查看eth0的地址信息,多了一个ip
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:14:33:57 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.9/24 brd 192.168.1.255 scope global eth0
    inet 192.168.1.110/32 scope global eth0
    inet6 fe80::a00:27ff:fe14:3357/64 scope link
       valid_lft forever preferred_lft forever




论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
153 [报告]
发表于 2019-03-06 10:30 |只看该作者
iptables
      iptables指令用来设置Linux内核的ip过滤规则以及管理nat功能。iptables用于在Linux内核中设置、维护和检查IPv4数据包过滤规则表。可以定义几个不同的表。每个表包含许多内置链,也可能包含用户定义的链。每个链都是一个规则列表,可以匹配一组数据包。每条规则都指定如何处理匹配的数据包。这被称为“目标”,它可能是跳转到同一表中的用户定义链。
     此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
     iptables [-t table]  {-A|-D}  chain  rule-specification
     iptables [-t table]  -I  chain [rulenum]  rule-specification
     iptables [-t table]  -R  chain  rulenum rule-specification
     iptables [-t table]  -D  chain rulenum
     iptables [-t table]  -S  [chain [rulenum]]
     iptables [-t table]  {-F|-L|-Z}  [chain [rulenum]]  [options...]
     iptables [-t table]  -N  chain
     iptables [-t table]  -X  [chain]
     iptables [-t table]  -P  chain target
     iptables [-t table]  -E  old-chain-name  new-chain-name rule-specification = [matches...] [target]
     match = -m matchname [per-match-options]  target = -j targetname [per-target-options]
     目前Linux内核支持3个相互独立的表:filter,过滤ip数据包;nat,配置nat功能;mangle,修改ip数据包。
     filter是默认表,包含INPUT(发送给本机) 、OUTPUT(本机向外发送)、FORWARD(被路由出去)三个链。
     nat表包含PREROUTING(修改刚收到的数据包) 、OUTPUT(在路由之前处理本机产生的数据包) 、POSTROUTING(修改将要发送的数据包)三个链。
     mangle表包含PREROUTING(路由之前,修改收到的包) 、OUTPUT(路由之前,修改本机产生的包) 、INPUT(修改发送到本机的包) 、FORWARD (修改路由之后的包) 、POSTROUTING(修改将被本机发送的包)五个链。
     Linux系统中的内置目标包括:ACCEPT(允许数据包通过)DROP(丢弃数据包) QUEUE(传递包到用户空间)RETURN(停止向后检测其他的规则,返回之前的条用规则处)

2、选项列表
     选项可以按组来区分
命令
说明
-t table
指定要管理的表
-A | --append chain rule-specification
追加记录
-D | --delete chain rule-specification
删除记录
-I | --insert chain [rulenum] rule-specification
插入记录
-R | --replace chain [rulenum] rule-specification
替换记录
-L | --list [chain]
列出记录
-S | --list-rules [chain]
列出已选择链的所有规则。如果没有选择任何链,则所有链都打印
-F | --flush [chain]
删除指定的记录
-Z | --zero [chain [rulenum]]
将数据计数和字节计数清零
-N | --new-chain chain
用户自定义新链
-X | --delete-chain [chain]
删除用户自定义链
-P | --policy chaintarget
为指定的链设置策略
-E | --rename-chain old new
重命名链
-h
显示帮助信息
参数
说明
[!] –p | --protocol protocol
指定协议类型tcp、udp、icmp、all,协议前加!标识否定
[!] –s |  --sourceaddress[/mask][,…
源地址
[!] –d
--destinationaddress[/mask][,…
目标
-j | --jump
指定跳转的目标
-g | --goto chain
这指定应在用户指定的链中继续处理。与“--jump”选项不同,返回将不再在此链中继续处理,而是在通过“--jump”调用我们的链中继续处理。
[!] –i | --in-interface name
接收数据包的接口名称(仅用于输入、转发和PREROUTING链的数据包)。当“!”参数在接口名称之前使用,意义被倒置。如果接口名以“+”结尾,则以此名称开头的任何接口都将匹配。如果省略此选项,则任何接口名称都将匹配。
-o | --out-interfacename
指定数据包离开的网络接口
[!] –f | --fragment
这意味着该规则仅指分段数据包的第二段和更多的片段。
-c | --set-counters packets bytes
这使管理员能够初始化规则的数据包和字节计数器(在插入、追加、替换操作期间)。
其他选项
说明
-v | --verbose
冗长的输出,该选项使List命令显示接口名称、规则选项(如果有的话)和TOS掩码。还列出了数据包计数器和字节计数器
-n | --numeric
数字输出IP地址和端口号将以数字格式打印。默认情况下,程序将尝试将它们显示为主机名、网络名称或服务(只要适用)。
-x | --exact
扩大数字。显示数据包和字节计数器的确切值,而不是只显示K‘s(1000倍)M’s(1000 K倍数)或G‘s(1000 m倍数)中的四舍五入数。此选项仅与-L命令相关。
--line-numbers
当列出规则时,将行号添加到每条规则的开头,对应于该规则在链中的位置。
--modprobe=command
在向链中添加或插入规则时,使用命令加载任何必要的模块(目标、匹配扩展等)


论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
154 [报告]
发表于 2019-03-06 10:31 |只看该作者
3、匹配扩展
     iptable可以使用扩展的数据包匹配模块。它们以两种方式加载:隐式地,当指定“-p”或“—protocol”时,或者使用“-m”或“—match”选项,后面跟着匹配的模块名称;之后,根据特定模块的不同,可以使用各种额外的命令行选项。可以在一行中指定多个扩展匹配模块,并且可以在指定模块后使用“-h“或“--help“选项来接收特定于该模块的帮助。
     1)addrtype
     此模块根据数据包的地址类型匹配数据包。地址类型在内核网络堆栈中使用,并将地址分类为不同的组。该组的确切定义取决于特定的第三层协议。地址类型可以是以下的几种:
     UNSPEC,未指明的地址,例如,0.0.0.0。
     UNICAST,单播地址。
     LOCAL,本地地址。
     BROADCAST,广播地址。
     ANYCAST,选播包。
     MULTICAST,多播地址。
     BLACKHOLE,黑洞地址。
     UNREACHABLE,不可达到的地址。
     PROHIBIT,被禁止的地址。
     THROW,FIXME。
     NAT,FIXME。
     XRESOLVE
     [!] --src-type type,如果源地址为给定类型,则匹配。
     [!] --dst-type type,如果目标地址是给定类型的,则匹配。
     --limit-iface-in,地址类型检查可以限制在数据包即将进入的接口上。此选项仅在PREROUTING、INPUT和FORWARD链中有效。它不能用“--limit-iface-out “选项来指定。
     --limit-iface-out,地址类型检查可以限制在包将要输出的接口上。此选项仅在POSTROUTING、OUTPUT和FORWARD链中有效。它不能用“--limit-iface-in“选项指定。
     2)ah
     此模块与IPSec数据包的身份验证头中的Spis匹配。
     [!] --ahspi spi[:spi]
     3)cluster
     允许您部署网关和后端负载共享集群,而不需要负载平衡器。此匹配要求所有节点都看到相同的数据包。因此,集群匹配决定该节点是否必须处理给定以下选项的数据包。
     --cluster-total-nodesnum,设置集群中的总节点数。
     [!] --cluster-local-nodenum,设置本地节点编号ID。
     [!] --cluster-local-nodemaskmask,设置本地节点编号ID掩码。您可以使用此选项而不是”--cluster-local-node“。
     --cluster-hash-seedvalue,设置Jenkins散列的种子值。
iptables  -A PREROUTING  -t mangle -i eth1 -m cluster --cluster-total-nodes 2 --cluster-local-node  1  --cluster-hash-seed  0xdeadbeef  -j  MARK  --set-mark 0xffff
iptables  -A PREROUTING  -t mangle -i eth2 -m cluster --cluster-total-nodes 2 --cluster-local-node  1  --cluster-hash-seed  0xdeadbeef  -j  MARK  --set-mark 0xffff
iptables -A PREROUTING -t mangle -i eth1 -m mark ! --mark 0xffff -j DROP
iptables -A PREROUTING -t mangle -i eth2 -m mark ! --mark 0xffff -j DROP
     下面的命令使所有节点都看到相同的数据包
ip maddr add 01:00:5e:00:01:01 dev eth1
ip maddr add 01:00:5e:00:01:02 dev eth2
arptables   -A  OUTPUT   -o   eth1  --h-length  6  -j  mangle  --mangle-mac-s 01:00:5e:00:01:01
arptables -A INPUT -i eth1 --h-length 6 --destination-mac 01:00:5e:00:01:01 –j mangle --mangle-mac-d 00:zz:yyx:5a:27
arptables   -A  OUTPUT   -o   eth2  --h-length  6  -j  mangle  --mangle-mac-s 01:00:5e:00:01:02
arptables -A INPUT -i eth2 --h-length 6 --destination-mac 01:00:5e:00:01:02 –j mangle --mangle-mac-d 00:zz:yyx:5a:27
     4)comment
     允许向任何规则添加注释(最多256个字符)。
     --commentcomment
iptables -A INPUT -s 192.168.0.0/16 -m  comment  --comment  "A  privatized  IP block"
     5)connbytes
     主要用途是检测长时间下载,并在流量控制中使用较低优先级的频带来标记它们。每个连接传输的字节也可以通过“conntrack -L”查看,并通过ctnetlink访问。
     [!] --connbytesfrom[:to],将大于FROM,小于TO的连接中的数据包匹配,“!”用于匹配不在此范围内的数据包。
     --connbytes-dir {original|reply|both}要考虑哪些数据包
     --connbytes-mode {packets|bytes|avgpkt}是否检查数据包的数量、传输的字节数或到目前为止收到的所有数据包的平均大小(以字节为单位)。请注意,当“both”与“avgpkt”一起使用时,而且数据(主要是)只朝一个方向(例如HTTP)进行,平均数据包大小将约为实际数据包的一半。
iptables   ..  -m  connbytes  --connbytes 10000:100000  --connbytes-dir  both --connbytes-mode bytes
     6)connlimit
     允许您限制每个客户端IP地址(或客户地址块)到服务器的并行连接数。
     [!] --connlimit-aboven,如果现有连接的数目大于n,则匹配
     --connlimit-maskprefix_length,使用前缀长度对主机进行分组。对于IPv 4,这必须是介于(包括)0和32之间的数字。对于IPv 6,在0到128之间。
#每个客户端主机允许2个telnet连接
iptables -A INPUT -p tcp --syn --dport 23 -m connlimit --connlimit-above 2  -j REJECT
iptables  -A  INPUT -p tcp --syn --dport 23 -m connlimit ! --connlimit-above 2 -j ACCEPT
#将并行HTTP请求的数量限制在每C类网络16次(24位网络掩码)
iptables  -p  tcp  --syn  --dport  80  -m   connlimit  --connlimit-above   16 --connlimit-mask 24 -j REJECT
#将链路本地网络的并行HTTP请求限制为16次
(ipv6)   ip6tables  -p  tcp  --syn  --dport  80  -s fe80::/64  -m  connlimit --connlimit-above 16 --connlimit-mask 64 -j REJECT
     7)connmark
     此模块匹配与连接关联的netfilter标记字段(可以使用下面的CONNMARK目标进行设置)。
     [!] --markvalue[/mask],将连接中的数据包与给定的标记值相匹配(如果指定了掩码,则在比较之前用标记进行逻辑分析)
     8)conntrack
     此模块与连接跟踪结合时,允许访问此数据包/连接的连接跟踪状态。
     [!] --ctstatestatelist,Statelist是要匹配的连接状态的逗号分隔列表。下面列出了可能的状态。
     [!] --ctprotol4proto,第4层协议匹配(按号码或名称)
     [!] --ctorigsrcaddress[/mask]
     [!] --ctorigdstaddress[/mask]
     [!] --ctreplsrcaddress[/mask]
     [!] --ctrepldstaddress[/mask],与original/reply、source/destination地址匹配。
     [!] --ctorigsrcportport
     [!] --ctorigdstportport
     [!] --ctreplsrcportport
     [!] --ctrepldstportport,匹配original/reply、source/destination端口(TCP/UDP/等)或GRE键
     [!] --ctstatusstatelis,Statuslist是要匹配的连接状态的逗号分隔列表。下面列出了可能的状态
     [!] --ctexpiretime[:time],将剩余生存期(以秒为单位)与给定值或范围(包括)进行匹配。
     --ctdir {ORIGINAL|REPLY},匹配按指定方向流动的数据包。如果根本没有指定此标志,则匹配两个方向的数据包。
     ctstate的有效值
     INVALID,意味着数据包与已知的连接没有关联。
     NEW,意味着该数据包已启动一个新连接,或与未在两个方向上看到数据包的连接相关联。
     ESTABLISHED,意味着该数据包与看到两个方向的数据包的连接相关联。
     RELATED,意味着数据包正在启动新连接,但与现有连接相关联,例如FTP数据传输或ICMP错误。
     SNAT,虚拟状态,如果原始源地址与回复目的地不同,则进行匹配。
     DNAT,虚拟状态,如果原始目的地与应答源不同,则进行匹配。
     ctstatus的有效值
     NONE,不是下列任何一项。
     EXPECTED,这是一个预期的连接。
     SEEN_REPLY,ConnTrack在两个方向都看到了数据包。
     ASSURED,连接项不应提前过期。
     CONFIRMED,确认连接:原始数据包已离开框。
     9)dccp
     [!] --source-port,--sportport[:port]
     [!] --destination-port,--dportport[:port]
     [!] --dccp-typesmask,当DCCP数据包类型为“掩码”之一时匹配。“掩码”是以逗号分隔的数据包类型列表。类型可以是:REQUEST、RESPONSE、DATA、ACK、DATAACK、CLOSEREQ、CLOSE、RESET、SYNC、SYNCACK、INVALID
     [!] --dccp-optionnumber,匹配如果设置DCP选项
     10)dscp
     此模块与IP报头中TOS字段中的6位DSCP字段匹配。Dscp已经取代了IETF中的TOS。
     [!] --dscpvalue,匹配数值(十进制或十六进制)值[0-63]
     [!] --dscp-classclass,匹配DiffServ类。此值可能是BE、EF、AFxx或CSX类中的任何一个。然后,它将被转换为其相应的数值。
     11)ecn
     这允许您匹配IPv 4和TCP报头的ECN位。ECN是RFC3168中指定的显式拥塞通知机制。
     [!] --ecn-tcp-cwr,如果设置了TCP ECN CWR(拥塞窗口接收)位,则匹配。
     [!] --ecn-tcp-ece,如果设置了TCP ECN ECE(ECN Echo)位,则匹配。
     [!] --ecn-ip-ect num,这与特定的IPv 4 ECT(ECN能力传输)相匹配。你必须在‘0’和‘3’之间指定一个数字。
     12)esp
     此模块与ipsec数据包的esp报头中的spis匹配。
     [!] --espspispi[:spi]
     13)hashlimit
     哈希限制使用散列桶来表示一组连接的速率限制匹配(如极限匹配),使用单个iptables规则。分组可以完成perhostgroup(源和/或目标地址)和/或每个端口。它使您能够表达“每组每个时间量子N个数据包”:
     源主机上的匹配:192.168.0.0/16期间每台主机每秒1000个数据包。
     源Prot匹配:每项服务每秒100包(192.168.1.1)。
     子网的匹配:10.0.0.0/8中每个/28子网每分钟10000包。
     --hashlimit-uptoamount[/second|/minute|/hour|/day],如果速率低于或等于amount/quantum,则匹配。它被指定为一个数字,带有可选的时间量子后缀;默认值是3/小时。
     --hashlimit-aboveamount[/second|/minute|/hour|/day],如果速率大于amount/quantum,则匹配
     --hashlimit-burstamount,要匹配的数据包的最大初始数量:当未达到上述指定的限制时,该数目将被重新充电一次,最多可达到此数目;默认值为5。
     --hashlimit-mode {srcip|srcport|dstip|dstport},...,要考虑的以逗号分隔的对象列表。如果给出了“--hash-limit-mode“选项,hashlimit就像limit一样,但是在进行哈希内务管理时会花费很大的代价。
     --hashlimit-srcmaskprefix,当使用“--hashlimit-mode“时,所遇到的所有源地址都将根据给定的前缀长度进行分组,因此创建的子网将受到哈希限制。前缀必须介于(包括)0和32之间。
     --hashlimit-dstmaskprefix,类似“--hashlimit-srcmask“,但是对于目标地址。
     --hashlimit-namefoo,“/proc/net/ipt_hashlimit/foo“条目的名称。
     --hashlimit-htable-sizebuckets,哈希表的桶数。
     --hashlimit-htable-maxentries,散列中的最大项。
     --hashlimit-htable-expiremsec,在散列条目过期多少毫秒之后。
     --hashlimit-htable-gcintervalmsec,垃圾收集间隔之间有多少毫秒。
     14)helper
     此模块匹配与特定连接辅助程序相关的数据包。
     [!] --helperstring,匹配与指定的连接辅助程序相关的数据包。对于默认端口上与ftp会话相关的数据包,字符串可以是“ftp”。对于其他端口,将-portnr附加到值,即。“ftp-2121”
     15)icmp
     如果指定了“--protocol icmp”,则可以使用此扩展。它提供了以下选项
     [!] --icmp-type{type[/code]|typename},这允许指定icmp类型,它可以是数值icmp类型、类型/代码对,也可以是命令显示的icmp类型名称之一。
     16)iprange
     这与给定的任意范围的ip地址匹配。
     [!] --src-rangefrom[-to],匹配指定范围内的源IP。
     [!] --dst-rangefrom[-to],匹配指定范围内的目标IP。
     17)length
     此模块将数据包的第3层有效载荷(例如第4层包)的长度与特定值或范围相匹配。
     [!] --lengthlength[:length]
     18)limit
     此模块使用令牌桶过滤器以有限的速度匹配。使用此扩展的规则将匹配,直到达到此限制(除非“!”使用标志)。它可以与日志目标结合使用,提供有限的日志记录。
     --limitrate[/second|/minute|/hour|/day],最大平均匹配率:指定为数字,带有可选的‘/秒’、‘/分钟’、‘/小时’或‘/日’后缀;默认值为3/小时
     --limit-burstnumber,要匹配的数据包的最大初始数量:当未达到上述指定的限制时,此数字将被重新充电一次,最多可达到此数目;默认值为5。
     19)mac
     [!] --mac-sourceaddress,匹配源MAC地址。它必须是XX:XX:XX:XX:XX:XX格式。请注意,这只对来自以太网设备并进入PREROUTING、FORWARD或INPUT链的数据包有意义。
     20)mark
     此模块匹配与数据包关联的netfilter标记字段(可以使用下面的标记目标设置该标记)。
     [!] --markvalue[/mask],将数据包与给定的无符号标记值匹配(如果指定了掩码,则在进行比较之前,该掩码将与掩码进行逻辑连接)
     21)multiport
     此模块匹配一组源端口或目标端口。最多可指定15个端口。端口范围(端口:端口)算作两个端口。它只能与“-p tcp“或”-p udp“一起使用。
     [!] --source-ports,--sportsport[,port|,port:port]...,如果源端口是给定端口之一,则匹配。旗杆运动是这个选项的方便别名。多个端口或端口范围使用逗号分隔,端口范围使用冒号指定。因此,53,1024:65535将匹配端口53,所有端口都是从1024到65535。
     [!] --destination-ports,--dportsport[,port|,port:port]..,如果目标端口是给定端口之一,则匹配。标志--dports是此选项的方便别名。
     [!] --portsport[,port|,port:port]...,如果源端口或目标端口等于给定端口之一,则匹配。
     22)owner
     对于本地生成的数据包,此模块试图匹配数据包创建者的各种特征。此匹配仅在OUTPUT链和POSTROUTING链中有效。转发的数据包没有任何与其相关联的套接字。来自内核线程的数据包确实有一个套接字,但通常没有所有者。
     [!] --uid-ownerusername
     [!] --uid-owneruserid[-userid],如果数据包套接字的文件结构(如果有)是给定用户拥有的,则匹配。您还可以指定数字UID或UID范围。
     [!] --gid-ownergroupname
     [!] --gid-ownergroupid[-groupid],如果数据包套接字的文件结构属于给定组,则匹配。您还可以指定数字GID或GID范围。
     [!] --socket-exists,如果数据包与套接字相关联,则匹配。
     23)physdev
     该模块在桥端口输入和输出设备上匹配,这些输入和输出设备被奴役到桥接设备上。此模块是支持透明桥接IP防火墙的基础结构的一部分,仅适用于2.5.44版本以上的内核版本。
     [!] --physdev-inname,接收数据包的桥端口的名称(仅用于INPUT、FORWARD和PREROUTING链的数据包)。如果接口名以“+“结尾,则以此名称开头的任何接口都将匹配。如果数据包没有通过桥接设备到达,则此数据包将与此选项不匹配,除非“!”被利用了。
     [!] --physdev-outname,要发送数据包的桥接端口的名称(用于FORWARD、OUTPUT和POSTROUTING链的数据包)。如果接口名以“+“结尾,则以此名称开头的任何接口都将匹配。注意,在NAT和Magle输出链中,不能在桥输出端口上匹配,但是在过滤器输出链中可以匹配。如果数据包不会由网桥设备离开,或者如果它还不知道输出设备将是什么,那么该数据包将与此选项不匹配,除非‘!’使用。
     [!] --physdev-is-in,如果数据包已通过网桥接口输入,则匹配。
     [!] --physdev-is-out,如果数据包将通过网桥接口离开,则匹配。。
     [!] --physdev-is-bridged,如果数据包正在桥接,因此不被路由,则匹配。这仅在FORWARD链和POSTROUTING链中有用。
     24)pkttype
     此模块与链路层数据包类型匹配。
     [!] --pkt-type {unicast|broadcast|multicast}
     25)policy
     此模块与IPsec用于处理数据包的策略相匹配。
     --dir{in|out},用于选择是否匹配用于解除封装的策略或将用于封装的策略。in在PREROUTING、INPUT、FORWARD链中有效,out在POSTROUTING、OUTPUT、FORWARD链中有效。
     --pol {none|ipsec},如果数据包要接受ipsec处理,则匹配。
     --strict,选择是否匹配确切的策略,或者如果策略的任何规则与给定的策略匹配,则选择匹配。
     [!] --reqidid,匹配策略规则的reqid。可以使用setkey(指定REQID,使用unique:id作为级别。
     [!] --spi spi,匹配SA的SPI。
     [!] --proto {ah|esp|ipcomp},匹配封装协议。
     [!] --mode {tunnel|transport},匹配封装模式。
     [!] --tunnel-srcaddr[/mask],匹配隧道模式sa的源端点地址。只有和“--mode tunnel“一起使用有效。
     [!] --tunnel-dstaddr[/mask],匹配隧道模式sa的目标端点地址。只有和“--mode tunnel“一起使用有效。
     --next,启动策略规范中的下一个元素,只有和“--strict.“一起使用有效。
     26)quota
     通过减少每个数据包的字节计数器来实现网络配额。
     --quotabytes,配额(以字节为单位)。
     27)rateest
     该速率估计器可以与RATEEST目标收集的估计费率相匹配。它支持绝对bps/pps值匹配,比较两种速率估计量,并匹配两种速率估计量之间的差异。
     --rateest1name,第一比率估计器的名称。
     --rateest2name,第二比率估计器的名称。
     --rateest-delta,将差异与给定的比率进行比较
     --rateest1-bpsvalue,
     --rateest2-bpsvalue,每秒比较字节
     --rateest1-ppsvalue,
     --rateest2-ppsvalue,每秒比较包
     [!] --rateest-lt,如果速率小于给定的速率/估计量,则匹配
     [!] --rateest-gt,如果速率大于给定的速率/估计量,则匹配
     [!] --rateest-eq,如果速率等于给定的速率/估计量,则匹配
#示例:在启动数据连接时,可以根据可用带宽从FTP服务器通过两行路由传出数据连接:
#估计出率
iptables   -t   mangle   -A  POSTROUTING -o  eth0  -j  RATEEST  --rateest-name  eth0 --rateest-interval 250ms --rateest-ewma 0.5s
iptables  -t  mangle  -A  POSTROUTING -o  ppp0  -j  RATEEST   --rateest-name   ppp0 --rateest-interval 250ms --rateest-ewma 0.5s
#基于可用带宽的标记
iptables  -t  mangle  -A balance -m conntrack --ctstate NEW -m helper --helper ftp –m rateest  --rateest-delta  --rateest1  eth0   --rateest-bps1   2.5mbit   --rateest-gt --rateest2 ppp0 --rateest-bps2 2mbit -j CONNMARK --set-mark 1
iptables  -t  mangle  -A balance -m conntrack --ctstate NEW -m helper --helper ftp –m rateest --rateest-delta --rateest1 ppp0 --rateest-bps1 2mbit --rateest-gt --rateest2 eth0 --rateest-bps2 2.5mbit -j CONNMARK --set-mark 2
iptables -t mangle -A balance -j CONNMARK --restore-mark
     28)realm
     这与路由领域匹配。路由域用于复杂的路由设置,涉及到诸如BGP这样的动态路由协议。
     [!] --realmvalue[/mask],匹配给定的领域号(可选掩码)。如果不是一个数字,则值可以是“/etc/iproute2/rt_realms”中的命名域(在这种情况下不能使用掩码)。
     29)recent
     允许您动态创建IP地址列表,然后以几种不同的方式与该列表进行匹配。例如,您可以创建一个“坏蛋”列表,列出试图连接到防火墙上的端口139的人,然后在不考虑这些包的情况下丢弃它们的所有未来数据包。--set、--rcheck、--update、--remove是相互排斥的。
     --namename,指定要用于命令的列表。如果没有指定名称,则将使用默认名称。
     [!] --set,他将把数据包的源地址添加到列表中。如果源地址已经在列表中,这将更新现有条目。这将永远返回成功(或失败,如果传入!)。
     --rsource,匹配/保存最近列表中每个数据包的源地址。这是默认的
     --rdest,匹配/保存最近列表中每个数据包的目标地址
     [!] --rcheck,检查数据包的源地址是否当前在列表中。
     [!] --update,类似“--rcheck”,但如果匹配,它将更新“最后一次看到”时间戳。
     [!] --remove,检查数据包的源地址是否当前在列表中,如果是,该地址将从列表中删除,规则将返回true。如果找不到地址,则返回false。
     --secondsseconds,此选项必须与“--rcheck”或“--update”之一结合使用.使用时,这将缩小匹配范围,仅当地址在列表中并在最后给定的秒内被看到时才发生。
     --hitcounthits,此选项必须与“--rcheck”或“--update”之一结合使用。使用时,这将缩小匹配范围,仅当地址在列表中且数据包已接收到大于或等于给定值时才发生。此选项可与“--seconds”一起使用,以创建一个更窄的匹配,需要在特定的时间范围内执行一定数量的命中。HitCount参数的最大值由xt_recent内核模块的“ip_pkt_list_tot”参数给出。在命令行中超过此值将导致拒绝该规则。
     --rttl,此选项只能与“--rcheck”或“--update”中的一个一起使用。当使用时,这将缩小匹配范围,只有当地址在列表中,并且当前数据包的ttl与符合“--set”规则的数据包匹配时才会发生匹配。这可能是有用的,如果你有问题的人伪造他们的源地址,以便通过这个模块拒绝其他人访问你的网站通过发送虚假的数据包给你。
iptables -A FORWARD -m recent --name badguy --rcheck --seconds 60 -j DROP
iptables -A FORWARD -p tcp -i eth0 --dport 139 -m recent --name  badguy --set -j DROP
     “/proc/net/xt_new/*”是关于每个列表中每个条目的地址和信息的当前列表。可以读取“/proc/net/xt_new/”中的每个文件来查看当前列表,或者使用以下命令编写两个文件来修改列表:
echo +addr >/proc/net/xt_recent/DEFAULT
增加addr到默认的列表
echo -addr >/proc/net/xt_recent/DEFAULT
将addr从默认列表删除
echo / >/proc/net/xt_recent/DEFAULT
舒心默认列表
     模块本身接受参数,默认显示如下:
     ip_list_tot=100,每个表记住的地址数
     ip_pkt_list_tot=20,记住的每个地址的数据包数
     ip_list_hash_size=0,散列表大小。0意味着根据ip_list_tot(默认值:512)计算它。
     ip_list_perms=0644,“/proc/net/xt_recent/*”的全新啊
     ip_list_uid=0,“/proc/net/xt_recent/*”的拥有者ID。
     ip_list_gid=0,“/proc/net/xt_recent/*”的拥有者组ID。
     30)sctp
     [!] --source-port,--sportport[:port]
     [!] --destination-port,--dport port[:port]
     [!] --chunk-types {all|any|only} chunktype[:flags] [...],
     大写中的标志字母表示如果设置将匹配标志,小写表示匹配(如果未设置)。
     Chunk types:  DATA INIT INIT_ACK SACK HEARTBEAT HEARTBEAT_ACK ABORT SHUTDOWN SHUTDOWN_ACK ERROR COOKIE_ECHO COOKIE_ACK ECN_ECNE ECN_CWR  SHUTDOWN_COMPLETE ASCONF ASCONF_ACK
     chunk type:available flags
     DATA:U B E u b e
     ABORT:T t
     SHUTDOWN_COMPLETE:T t
     例子
iptables -A INPUT -p sctp --dport 80 -j DROP
iptables -A INPUT -p sctp --chunk-types any DATA,INIT -j DROP
iptables -A INPUT -p sctp --chunk-types any DATA:Be -j ACCEPT



论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
155 [报告]
发表于 2019-03-06 10:32 |只看该作者
31)set
     该模块匹配可由ipset(定义的IP集。
     [!] --match-setsetnameflag[,flag]..,其中flag是用逗号分隔的src或dst规范的列表,其中最多只能有6个。
iptables -A FORWARD -m set --match-set test src,dst
将匹配数据包,对于这些数据包(如果SET类型为ipportmap),源地址和目标端口对可以在指定的集合中找到。如果指定集的集合类型为单维(例如ipmap),则该命令将匹配在指定集中可以找到源地址的数据包。
     如果选项与其他扩展的选项不冲突,则可以将选项“--match-set”替换为“--set”。
     32)socket
     如果可以通过在数据包上执行套接字查找找到打开的套接字,则他的匹配项。
     --transparent,忽略非transparent的包。
     33)state
     当与连接跟踪相结合时,此模块允许访问此数据包的连接跟踪状态。
     [!] --statestate,其中状态是要匹配的连接状态的逗号分隔列表。可能的状态是无效的,这意味着由于某些原因无法识别数据包,其中包括内存不足和ICMP错误,这些错误与任何已知的连接不相对应,这意味着该数据包与一个已经在两个方向上看到数据包的连接相关联,新的意思是该数据包已经启动了一个新连接,或以其他方式与没有在两个方向上看到数据包的连接相关联,以及相关的意思是,该数据包正在启动一个新连接,但与现有连接相关联,例如FTP数据传输或ICMP错误。
     34)statistic
     该模块基于一定的统计条件对数据包进行匹配。它支持使用“--mode”选项设置的两种不同的模式。
     --modemode,设置匹配规则的匹配模式,所支持的模式为随机模式和nth模式。
     --probabilityp,将随机匹配数据包的概率从0设置为1。它只适用于随机模式。
     --everyn,每第n包匹配一包。它只适用于nth模式。
     --packetp,为nth模式设置初始计数器值(0<=p<=n-1,默认值0)
     35)string
     该模块通过使用某种模式匹配策略来匹配给定的字符串。它需要一个Linux内核>=2.6.14。
     --algo {bm|kmp},选择模式匹配策略(bm=Boyer-Moore,  kmp=Knuth-Pratt- Morris)
     --fromoffset,设置它开始寻找匹配的偏移量。如果未通过,默认为0。
     --tooffset,设置它开始寻找匹配的偏移量。如果未通过,则默认为数据包大小。
     [!] --stringpattern,匹配给定的模式。
     [!] --hex-string pattern,匹配以十六进制表示的给定模式。
     36)tcp
     如果指定了“--protocol TCP”,则可以使用这些扩展。它提供了以下选项:
     [!] --source-port,--sportport[:port],源端口或端口范围规范。这可以是服务名称,也可以是端口号。如果省略第一个端口,则假定为“0”;如果省略最后一个端口,则假定为“65535”。如果第一个端口大于第二个端口,它们将被交换
     [!] --destination-port,--dportport[:port],目的端口或端口范围规范。“--dport”的方便别名。
     [!] --tcp-flagsmaskcomp,匹配指定的TCP标志。第一个参数掩码是我们应该检查的标志,写成逗号分隔列表,第二个参数comp是必须设置的以逗号分隔的标志列表。flag可以是SYN ACK FIN RST URG PSH ALL NONE
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN
这个命令只匹配了SYN标志
     [!] --syn,只匹配设置了SYN位,并且清除了ACK,RST,FIN为的包。等价于“--tcp-flags SYN,RST,ACK,FIN SYN
     [!] --tcp-optionnumber,如果设置了tcp选项就匹配。
     37)tcpmss
     这与TCP标头的TCPMSS(最大段大小)字段匹配。您只能在TCP SYN或SYN/ACK数据包上使用这一点,因为MSS只在连接启动时的TCP握手期间协商。
     [!] --mssvalue[:value],匹配给定的tcp mss值或范围。
     38)time
     如果数据包到达时间/日期在给定范围内,则匹配。所有选项都是可选的,但在指定的时候都是可选的。
     --datestartYYYY[-MM[-DD[Thh[:mm[:ss]]]]]
     --datestopYYYY[-MM[-DD[Thh[:mm[:ss]]]]],仅在给定时间内匹配,必须采用ISO 8601“T”表示法。可能的时间范围是1970-01-01T00:00:00到2038-01-19T04:17:07。如果没有指定“--datestart”或“--datestop”,则将分别默认为1970-01-01和2038-01-19。
     --timestarthh:mm[:ss]
     --timestophh:mm[:ss],只有在指定的白天匹配。可能的时间范围是00:00到23:59:59。允许前导零(例如“06:03”),并正确解释为基数-10。
     [!] --monthdaysday[,day...],只在一个月的指定日期匹配。可能值为1到31。请注意,在没有第31天的月份中,指定31当然不匹配;28天或29天的2月也是如此。
     [!] --weekdaysday[,day...],只有在给定的工作日匹配。可能的值分别是Mon、Tue、Wed、Thu、Fri、sat、Sun或1到7之间的值。您也可以使用两个字符的变体(Mo,Tu等)。
     --utc,把给--datestart、--datestop、--timestart、--timestop的时间解释为UTC。
     --localtz,把给--datestart、--datestop、--timestart、--timestop的时间解释为本地时间(默认)。
匹配星期天
-m time --weekdays Sa,Su
匹配国家假日
-m time --datestart 2007-12-24 --datestop 2007-12-27
由于停止时间实际上包括在内,因此需要下列停止时间才能与新一天的第一秒钟不匹配:
-m time --datestart 2007-01-01T17:00 --datestop 2007-01-01T23:59:59
午餐时间
-m time --timestart 12:30 --timestop 13:30
这个月的第四个星期五:
-m time --weekdays Fr --monthdays 22,23,24,25,26,27,28
     39)tos
     此模块匹配IPv 4报头中的8位服务类型字段(即包括IPv 6报头中的“优先级”比特)或(也包括8位)优先级字段。
     [!] --tos value[/mask],匹配具有给定TOS标记值的数据包。如果指定了mask,则在比较之前使用TOS标记进行逻辑分析。
     [!] --tos symbol,在为IPv4使用tos匹配时,您可以指定一个符号名。可以通过使用“-m tos-h”调用iptables来获得已识别的TOS名称的列表。请注意,这意味着掩码为0x3F,即除ECN位外的所有掩码。
     40)ttl
     此模块匹配ip报头中活动字段的时间。
     --ttl-eqttl,如果和给定的ttl值相等,那么就匹配。
     --ttl-gtttl,如果大于给定的ttl值,那么就匹配。
     --ttl-ltttl,如果小于给定的ttl值,那么就匹配。
     41)u32
     U32测试从数据包中提取的多达4个字节的数量是否具有指定的值。要提取哪些内容的规范足够通用,可以在给定的偏移量下从tcp报头或有效负载中找到数据。
     [!] --u32tests,该参数相当于下面描述的一种小型语言中的程序。
tests := location "=" value | tests "&&" location "=" value
value := range | value "," range
range := number | number ":" number
     一个单数,n,被解释为n:n。n:m被解释为数的范围>=n和<=m。     
location := number | location operator number
operator := "&" | "<<" | ">>" | "@"
     操作符‘&’,‘<<’,‘>>‘和‘&&’均与C中相同。‘=’实际上是一个集合成员资格运算符,值语法描述了一个集合。‘@’操作符允许进入下一个标头,并在下面进一步描述。目前,对测试的大小有一些人为的实现限制。
     *u32参数中“=”不超过10个,“&&”不超过9个;
     *每个值不超过10个范围(和9个逗号);
     *每个地点不超过10个number(和9个操作符);
     要描述位置的含义,请想象下面解释它的机器。有三个寄存器:a是char*类型,最初IP报头的地址;B和C是无符号32位整数,最初为零。指令是:
number B = number;
C = (*(A+B)<<24) + (*(A+B+1)<<16) + (*(A+B+2)<< + *(A+B+3)
&number C = C & number
<< number C = C << number
>> number C = C >> number
@number A = A + C;
     任何对[SKB->Data,SKB->End]外部内存的访问都会导致匹配失败。否则,计算结果是C的最终值。允许使用空白,但在测试中不需要。但是,出现在其中的字符可能需要shell引用,因此将参数括在引号中是个好主意。
例子代码
匹配总长度>=256的IP数据包。IP报头包含一个以字节2-3为单位的总长度字段。以及使用0xFFFF(给定字节2-3),并测试它是否在[0x100:0xFFF]范围内。
--u32 "0 & 0xFFFF = 0x100:0xFFFF"

匹配ICMP数据包与ICMP类型0。首先测试它是否是ICMP数据包,真IP字节9(协议)=1
--u32 "6 & 0xFF = 1 && ...
读取字节6-9,使用&丢弃字节6-8,并将结果与1进行比较。下一次测试它不是片段。(如果是这样的话,它可能是这样的包的一部分,但我们不能总是说出来。)注:如果您想要匹配IP报头之外的任何内容,则通常需要进行此测试。最后6位字节6和所有字节7都是0当且仅当这是一个完整的数据包(不是片段)。或者,您可以只测试字节6的最后5位,从而允许第一个片段。
... 4 & 0x3FFF = 0 && ...
最后一次测试:通过IP报头的第一个字节(类型)是0。这就是我们必须使用@语法的地方。以32位字表示的ip报头(Ihl)的长度存储在ip报头本身的字节0的右侧。
... 0 >> 22 & 0x3C @ 0 >> 24 = 0"
前0表示读取字节0-3,>22表示向右移动22位。移动24位将给出第一个字节,所以只有22位是4倍,再加上几个比特。&3C然后删除右边的两个额外位和第一个字节的前四位。例如,如果IHL=5,则IP报头长20(4x5)字节。在本例中,字节0-1为(二进制)xxx0101 yzzzz,>22为10位值xxx0101yy,&3C为010100。@意味着将这个数字用作数据包中的新偏移量,并从那里开始读取四个字节。这是ICMP有效负载的前4个字节,其中0字节是ICMP类型。因此,我们只需将值24移到右侧,除去第一个字节之外的所有字节,并将结果与0进行比较。

TCP有效负载字节8-12是1、2、5或8中的任意一个。首先,我们测试数据包是否是TCP数据包(类似于ICMP)。
--u32 "6 & 0xFF = 6 && ...
接下来,测试它不是一个片段(与上面相同)。
... 0 >> 22 & 0x3C @ 12 >> 26 & 0x3C @ 8 = 1,2,5,8"
如上面所示,0>22&3C计算IP报头中的字节数。@使这成为数据包中的新偏移量,这是TCP报头的开始。TCP头的长度(同样以32位字表示)是TCP头12字节的左半部分。12>26&3C以字节计算这个长度(类似于之前的IP报头)。“@”使其成为新的偏移量,这是TCP有效负载的开始。最后,8读取有效负载的字节8-12并=检查结果是否为1、2、5或8中的任何一个。
     42)udp
     如果指定了“--protocol udp”,则可以使用这些扩展。它提供了以下选项:
     [!] --source-port,--sport port[:port],源端口或端口范围规范。
     [!] --destination-port,--dportport[:port],目的端口或端口范围规范。
     43)unclean
     此模块不需要任何选项,而是尝试匹配看起来格式错误或不寻常的数据包。

论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
156 [报告]
发表于 2019-03-06 10:33 |只看该作者
4、目标扩展
     1)AUDIT
     此目标允许为到达目标的数据包创建审核记录。它可以用来记录接受、丢弃和拒绝的数据包。
     --type {accept|drop|reject},设置审计记录类型。
iptables -N AUDIT_DROP
iptables -A AUDIT_DROP -j AUDIT --type drop
iptables -A AUDIT_DROP -j DROP
     2)CHECKSUM
     这个目标允许有选择地处理损坏的/旧的应用程序。它只能在mangle表上使用。
     --checksum-fill,计算并填写缺少校验和的数据包中的校验和。如果您需要处理诸如dhcp客户端之类的旧应用程序,这些应用程序不能很好地处理校验和卸载,但不希望在设备中禁用校验和卸载,这一点尤其有用。
     3)CLASSIFY
     该模块允许您设置skb->priority(从而将数据包分类为特定的CBQ类)。
     --set-classmajor:minor,设置主类和次要类值。即使没有提供0x前缀,这些值也总是被解释为十六进制。
     4)CLUSTERIP
     此模块允许您配置一个简单的节点集群,这些节点共享特定的IP和MAC地址,而无需在其前面显式负载均衡器。连接是静态地分布在此集群中的节点之间的。
     --new,创建一个新的集群IP。对于给定的集群IP,始终必须在第一条规则上设置这一项。
     --hashmodemode,指定hash模式,可以是:sourceipsourceip-sourceportsourceip-sourceport-destport
     --clustermacmac,指定集群IP MAC地址。必须是链路层多播地址。
     --total-nodesnum,该集群中节点总数的数目。
     --local-nodenum,此集群中的本地节点号。
     --hash-initrnd,指定用于哈希初始化的随机种子。
     5)CONNMARK
     此模块设置与连接关联的netfilter标记值。标记宽32位。
     --set-xmarkvalue[/mask],将mask定义的为归零,value定义的位和ctmark异或。
     --save-mark[--nfmasknfmask] [--ctmask ctmask],使用给定的掩码将数据包标记(Nfmark)复制到连接标记(Ctmark)。新的nfmark值确定如下:
     ctmark = (ctmark & ~ctmask) ^ (nfmark & nfmask)
     例如,ctmask定义要清除哪些位,nfmask中要将哪些nfmark为和ctmark进行异或。默认为0xFFFFFFFF。
     --restore-mark[--nfmasknfmask] [--ctmask ctmask],只有在mangle表中使用。
     --and-markbits,ctmark和bits进行与操作,助记符:--set-xmark 0/invbits。
     --or-markbits,ctmark和bits进行或操作,助记符:--set-xmark bits/bits。
     --xor-markbits,ctmark和bits进行异或操作,助记符:--set-xmark bits/0。
     --set-markvalue[/mask],置位连接标记。如果指定了掩码,则只修改掩码中设置的位。
     --save-mark[--maskmask],将nfmark复制到ctmark。如果指定了掩码,则只复制这些位。
     --restore-mark[--maskmask],将cctmark复制到nfmark。如果指定了掩码,则仅复制这些位。这在mangle表中是有效的
     6)CONNSECMARK
     此模块将安全标记从数据包复制到连接(如果没有标记),从连接复制回数据包(也只有在未标记的情况下)。通常与SECMARK一起使用,它仅在mangle表中有效。
     --save,如果数据包有安全标记,如果未标记连接,请将其复制到连接中。
     --restore,如果数据包没有安全标记,而连接有安全标记,则将安全标记从连接复制到数据包。
     7)DNAT
     此目标仅在nat表、PREROUTING和OUTPUT链以及仅从这些链调用的用户定义链中有效。它指定应修改数据包的目标地址(并且此连接中的所有未来数据包也将被破坏),并且应该停止检查规则。它需要以下一种选择:
     --to-destination[ipaddr][-ipaddr][:port[-port]],它可以指定单个新的目标IP地址、包含的IP地址范围以及可选的端口范围(只有在规则还指定“-p tcp”或“-p udp”时才有效)。如果未指定端口范围,则永远不会修改目标端口。如果未指定IP地址,则只修改目标端口。
     --random,如果使用选项“--random”,则端口映射将是随机的(内核>=2.6.22)。
     --persistent,为每个连接提供相同的源/目标地址。这取代了同一个目标。对持久映射的支持可从2.6.29-Rc2中获得。
     8)DSCP
     此目标允许在IPv 4数据包的TOS报头中更改DSCP位的值。由于这操作一个数据包,它只能在mangle表中使用。
     --set-dscpvalue,将DSCP字段设置为数字值(可以是十进制或十六进制)。
     --set-dscp-classclass,将DSCP字段设置为DiffServ类。
     9)ECN
     这个目标允许有选择地围绕已知的ECN黑洞工作。它只能在mangle表中使用。
     --ecn-tcp-remove,从TCP报头中删除所有ECN位。当然,它只能与“-p tcp”一起使用。
     10)LOG
     打开匹配数据包的内核日志记录。当将此选项设置为规则时,Linux内核将通过内核日志(在其中可以使用dmesg或sy d(读取)打印所有匹配数据包(如大多数IP报头字段)上的一些信息。这是一个“非终止目标”,即在下一个规则中继续进行规则遍历。因此,如果要记录拒绝的数据包,请使用两个具有相同匹配条件的单独规则,首先使用目标日志,然后删除(或拒绝)。
     --log-levellevel,日志记录级别。
     --log-prefixprefix,前缀为指定prefix的日志消息;长度可达29个字母,用于区分日志中的消息。
     --log-tcp-sequence,记录TCP序列号。如果用户可以读取日志,则这是一种安全风险。
     --log-tcp-options,从TCP数据包报头log选项
     --log-ip-options,从IP数据包报头log选项
     --log-uid,记录生成数据包的进程的userid
     11)MARK
     此目标用于设置与数据包关联的Netfilter标记值。目标只能在mangle表中使用。例如,它可以与基于fwmark的路由一起使用(需要iucte 2)。标记字段宽32位。
     --set-xmarkvalue[/mask],将掩码和XOR值给出的位归零到数据包标记(“nfmark”)中。如果省略掩码,则假定为0xFFFFFFFF。
     --set-markvalue[/mask],将掩码和OR值给出的位归零到数据包标记(“nfmark”)中。如果省略掩码,则假定为0xFFFFFFFF。
     --and-markbits,将nfmark和bits进行与操作,助记符:--set-xmark  0/invbits。
     --or-markbits,将nfmark和bits进行或操作,助记符:--set-xmark  bits/bits。
     --xor-markbits,将nfmark和bits进行异或操作,助记符:--set-xmark  bits/0。
     12)MASQUERADE
     此目标仅在NAT表中的POSTROUTING链中有效。它应该只用于动态分配的IP(拨号)连接:如果您有一个静态IP地址,则应该使用SNAT目标。伪装相当于指定一个映射到数据包将要输出的接口的IP地址,但也会导致连接在接口下降时被遗忘。当下一个拨号不太可能具有相同的接口地址时,这是正确的行为(因此,任何已建立的连接无论如何都会丢失)。只有一个选择:
     --to-portsport[-port],这指定了要使用的一系列源端口,覆盖默认的SNAT源端口-选择启发式(见上文)。
     --random,随机化源端口映射,如果使用选项-随机,则端口映射将是随机的(内核>=2.6.21)。
     13)MIRROR
     这是一个实验演示目标,它反转IP报头中的源字段和目标字段,并重新传输数据包。它仅在输入链、前向链和PREROUTING链以及仅从这些链调用的用户定义链中有效。请注意,任何数据包过滤链、连接跟踪或NAT都看不到传出数据包,以避免循环和其他问题。
     14)NETMAP
     此目标允许您静态地将整个地址网络映射到另一个地址网络。它只能从NAT表中的规则中使用。
     --toaddress[/mask],要映射到的网络地址。生成的地址将以下方式构造:掩码中的所有位都是从新的“地址”中填充的。掩码中的所有零位都是从原始地址填充的。
     15)NFLOG
     此目标提供匹配数据包的日志记录。当为规则设置此目标时,Linux内核将数据包传递给加载的日志后端以记录数据包。这通常与nfnetlink_log作为日志后端结合使用,后者将通过NetLink套接字将数据包多播到指定的多播组。一个或多个用户空间进程可以订阅组以接收分组。与日志一样,这是一个不终止的目标,即在下一个规则中继续进行规则遍历。
     --nflog-groupnlgroup,数据包所在的NetLink组(1~2^32-1)(仅适用于nfnetlink_log)。默认值为0。
     --nflog-prefixprefix,一个前缀字符串,包含在日志消息中,长度可达64个字符,用于区分日志中的消息。
     --nflog-rangesize,要复制到用户空间的字节数(仅适用于nfnetlink_log)。nfnetlink_log实例可以指定它们自己的范围,此选项将重写它。
     --nflog-thresholdsize,在将数据包发送到用户空间(仅适用于nfnetlink_log)之前,要在内核中排队的数据包数。较高的值会减少每个数据包的开销,但会增加延迟,直到数据包到达用户空间为止。默认值为1。
     16)NFQUEUE
     此目标是QUEUE目标的扩展。与QUEUE相反,它允许您将数据包放入任何特定队列中,该队列由其16位队列号标识。它只能与内核版本2.6.14或更高版本一起使用,因为它需要nfnetlink_Queue内核支持。队列平衡选项在Linux2.6.31中添加,队列旁路在2.6.39中添加。
     --queue-numvalue,这指定要使用的队列号。有效队列号为0至65535。默认值为0。
     --queue-balancevalue:value,这指定要使用的队列范围。然后在给定的队列中平衡数据包。
     --queue-bypass,默认情况下,如果在NFQUEUE上没有用户空间程序侦听,那么所有要排队的数据包都会被丢弃。当使用此选项时,将悄悄绕过NFQUEUE规则。包将转到下一个规则。
     17)NOTRACK
     此目标禁用与该规则匹配的所有数据包的连接跟踪,只能在raw表中使用。
     18)RATEEST
     RATEEST目标收集统计数据,执行速率估计计算,并将结果保存起来,以便使用最优匹配进行以后的评估。
     --rateest-namename,将匹配的数据包计数到按名称引用的池中,这是可以自由选择的。
     --rateest-intervalamount{s|ms|us},速率测量间隔,以秒、毫秒或微秒为单位。
     --rateest-ewmalogvalue,速率测量平均时间常数。
     19)REDIRECT
     此目标仅在NAT表、PREROUTING和输出链以及仅从这些链调用的用户定义链中有效。它将数据包重定向到机器本身,方法是将目标IP更改为传入接口的主地址(本地生成的数据包映射到127.0.0.1地址)。
     --to-ports port[-port],这将指定要使用的目的端口或端口范围:否则,目标端口将永远不会更改。只有配合选项“-p tcp”和“-p udp”才有用。
     --random,如果使用选项“--random”,则端口映射将是随机的(内核>=2.6.22)
     20)REJECT
     这用于响应匹配的数据包发送错误数据包:否则,它等同于丢弃,因此它是一个终止目标,结束规则遍历。此目标仅在输入、前向和输出链以及用户定义的仅从这些链调用的链中有效。以下选项控制返回的错误数据包的性质:
     --reject-withtype,type可以是icmp-net-unreachable, icmp-host-unreachabl,icmp-port-unreachable,icmp-proto-unreachable,icmp-net-prohibited,icmp-host-prohibited,icmp-admin-prohibited
     21)SAME
     类似于SNAT/DNAT,取决于链:它接受一系列地址“--to 1.2.3.4-1.2.3.7”。为每个连接提供相同的源/目标地址。
     --toipaddr[-ipaddr],要将源映射到的地址。可以为多个范围指定不止一次。
     --nodst,在选择新的源-ip时,不要在计算中使用目标-ip。
     --random,端口映射将强制随机化,以避免基于端口预测的攻击(内核>=2.6.21)。
     22)SECMARK
     这用于设置与数据包关联的安全标记值,以供安全子系统(如SELinux)使用。它只在残缺表中有效。标记宽32位。
     --selctxsecurity_context
     23)SET
     此模块从ip集中添加和/或删除可由ipset(定义的项。
     --add-setsetnameflag[,flag...],将数据包的地址/端口添加到集合中
     --del-setsetnameflag[,flag...],从集合中删除数据包的地址/端口
     24)SNAT
     此目标仅在NAT表中的POSTROUTING链中有效。它指定应该修改数据包的源地址(并且这个连接中的所有未来数据包也将被破坏),并且应该停止检查规则。它需要一种选择
     --to-sourceipaddr[-ipaddr][:port[-port]],它可以指定单个新的源IP地址、包含的IP地址范围以及可选的端口范围(只有在规则还指定-p TCP或-p UDP时才有效)。     如果未指定端口范围,则512以下的源端口将映射到512以下的其他端口:512和1023之间的端口将映射到1024以下的端口,而其他端口将映射到1024或以上端口。如有可能,不会更改端口。
     --random,如果使用了选项“--random”,则端口映射将被随机化(内核>=2.6.21)。
     --persistent,为每个连接提供相同的源/目标地址。这取代了同一个目标。对持久映射的支持可从2.6.29-Rc2中获得
     25)TCPMMS
     此目标允许更改TCP SYN数据包的MSS值,以控制该连接的最大大小(通常将其限制为输出接口的MTU减去40(ipv4)或者减去60(ipv6)。当然,它只能与-p TCP一起使用。它仅在mangle表中有效。
     该目标用于克服阻碍“ICMP碎片需要”或“ICMPv 6数据包太大”数据包的犯罪行为。这个问题的症状是,Linux防火墙/路由器的所有功能都很好,但是它背后的机器永远不能交换大数据包:Web浏览器连接,然后挂起没有收到的数据;小邮件工作正常,但大型电子邮件挂着;SSH工作正常,但scp在初次握手后挂起。
     解决办法:激活此选项并将规则添加到防火墙配置中,如
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
     --set-mssvalue,显式地将MSS选项设置为指定的值。如果数据包的MSS已经低于值,则不会增加(从Linux2.6.25开始),以避免主机依赖适当的MSS出现更多问题
     --clamp-mss-to-pmtu,自动将MSS值夹到(IPv4的PATH_MTU-40;IPv 6的PATH_MTU-60)。
     26)TCPOPTSTRIP
     此目标将从TCP数据包中删除TCP选项。(它实际上将以无操作代替。)因此,您需要添加“-p tcp”参数。
     --strip-optionsoption[,option...],去掉给定的选项。这些选项可以由TCP选项号或符号名称指定。可以通过使用“-j TCPOPTSTRIP -h”调用iptable来获得可识别选项的列表。
     27)TOS
     此模块在IPv 4报头中设置服务类型字段(包括“优先级”位)或在IPv 6报头中设置优先级字段。注意,TOS与DSCP和ECN共享相同的位。tos目标仅在mangle表中有效。
     --set-tosvalue[/mask],将掩码和XOR值给出的位归零到TOS/Priority字段中。如果省略掩码,则假定为0 xff。
     --set-tossymbol,在为IPv4使用TOS目标时,可以指定一个符号名。它暗示了0xFF的掩码。可以通过使用“-j TOS -h”调用iptables来获得已识别的TOS名称的列表。
     --and-tosbits,bits和TOS执行与操作。(助记符用于“--set-tos 0/invbits”,其中inbit是位的二进制否定。)
     --or-tosbits,bits和TOS执行或操作。
     --xor-tosbits,bits和TOS执行异或操作。
     28)TPROXY
     此目标仅在mangle表、PREROUTING链和用户定义链中有效,这些链仅从该链调用。它将数据包重定向到本地套接字,而不以任何方式更改数据包报头。它还可以更改标记值,然后在高级路由规则中使用。它有三个选项:
     --on-portport,这指定要使用的目标端口。这是必需的选项,0表示新的目标端口与原始端口相同。这只有在规则还指定“-p tcp“或”-p udp“时才有效。
     --on-ipaddress,这指定要使用的目标地址。默认情况下,该地址是传入接口的ip地址。这只有在规则还指定“-p tcp“或”-p udp“时才有效。
     --tproxy-markvalue[/mask],用给定的值/掩码标记数据包。这里的fwmark值集可以被高级路由使用。(透明代理工作所必需的:否则这些数据包将被转发,这可能不是您想要的。)
     29)TRACE
     此目标标记Packes,以便内核在遍历表、链、规则时记录与数据包匹配的每条规则。(日志记录需要ipt_log或ip6t_log模块)。数据包以字符串前缀记录:“TRACE:tablename:chainname:type:ruenum”,其中type可以是普通规则的“rule”,用户定义的链末尾的隐式规则可以是“return”,内置链的策略可以是“policy”。
     只能在raw表中使用。

30)TTL
     这用于修改IPv 4 TTL头字段。TTL字段确定数据包可以遍历多少跳(路由器),直到超过生存时间。设置或递增ttl字段可能非常危险,因此应不惜任何代价加以避免。不要在离开本地网络的数据包上设置或增加值!
     --ttl-setvalue,设置TTL值为value。
     --ttl-decvalue,减少TTL的值value次。
     --ttl-incvalue,增加TTL的值value次。

31)ULOG
     此目标提供匹配数据包的用户空间日志记录。当为规则设置此目标时,Linux内核将通过NetLink套接字对此数据包进行多播。然后,一个或多个用户空间进程可以订阅各种多播组并接收分组。与日志一样,这是一个“不终止的目标”,即在下一个规则中继续进行规则遍历。
     --ulog-nlgroupnlgroup,这指定了将数据包发送到的netlink组(1-32)。默认值为1
     --ulog-prefixprefix,前缀为指定前缀的日志消息;长度可达32个字符,用于区分日志中的消息。
     --ulog-cprangesize,要复制到用户空间的字节数。值为0总是复制整个数据包,而不考虑其大小。默认值为0
     --ulog-qthresholdsize,内核中要排队的数据包数。例如,将此值设置为10,在内核内累加10个数据包,并将它们作为一个NetLink多部分消息传输到用户空间。默认值为1(用于向后兼容性)

5、实例
1)显示filter表的记录
[root@localhost ~]# iptables -t filter –L                //显示指定表的记录
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere                  
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp -- anywhere            anywhere            
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
2)禁止端口135的tcp数据包
[root@localhost ~]# iptables -t filter -A INPUT -p tcp --dport 135 -j DROP          //添加记录,忽略135端口的tcp数据包
[root@localhost ~]# iptables –L         //查看表,已经加入规则
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
DROP       tcp  --  anywhere             anywhere            tcp dpt:epmap
3)禁止目标地址访问本机
[root@localhost ~]# iptables -A INPUT -s 192.168.1.110 -j DROP                           //禁止110地址访问本机
[root@localhost ~]# iptables -L |grep DROP                                                  //查看filter表,已经添加记录
DROP       tcp  --  anywhere             anywhere            tcp dpt:epmap
DROP       all  --  192.168.1.110        anywhere   




论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
157 [报告]
发表于 2019-03-09 08:14 |只看该作者
iptables-save
      iptables-save指令可以将内核中当前的iptables配置导出到标准输出。通过IO重定向功能来定向输出到文件。
     此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
     iptables-save [选项]

2、选项列表
选项
说明
-c | --counters
输出当前的数据包计数器和字节计数器信息
-t | --table
指定要导出的表
-M| --modprobemodprobe_program
指定调制解调器探测程序的路径。默认情况下,iptables-Save将检查“/proc/sys/kernel/modprobe”,以确定可执行文件的路径。

3、实例
1)显示iptables配置
[root@localhost ~]# iptables-save –c                   //显示计数器信息
# Generated by iptables-save v1.4.7 on Sun Sep 30 16:20:14 2018
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1802:148673]
[14011:18173274] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
[27:2268] -A INPUT -p icmp -j ACCEPT
[585:30820] -A INPUT -i lo -j ACCEPT
[4526:2073410] -A INPUT -i eth+ -j ACCEPT
[0:0] -A INPUT -i wlan+ -j ACCEPT
[0:0] -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
[0:0] -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
2)导出指定表的信息
[root@localhost ~]# iptables-save -t nat               //输出nat表的信息
# Generated by iptables-save v1.4.7 on Sun Sep 30 16:21:17 2018
*nat
REROUTING ACCEPT [6181:2947647]
OSTROUTING ACCEPT [573:30328]
:OUTPUT ACCEPT [2466:479800]
-A POSTROUTING -o eth+ -j MASQUERADE
-A POSTROUTING -o wlan+ -j MASQUERADE
COMMIT
# Completed on Sun Sep 30 16:21:17 2018




论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
158 [报告]
发表于 2019-03-11 07:17 |只看该作者
本帖最后由 一生有你llx 于 2019-04-22 09:03 编辑

accept
      accept指令用来设置允许向目标打印机发送打印任务。
     此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、Fedora。

1、语法
     cupsaccept [ -E ]  [ -U username ]  [ -h hostname[:port] ]  destination(s)

2、选项列表
选项
说明
-E
强制加密
-U
连接打印机的时候,发送用户名
-h
选择目标打印机ip和端口

3、实例
     允许向目标打印机发送打印任务
[root@localhost /]# accept printer01



reject
     reject指令用来设置拒绝向目标打印机发送打印任务。
     此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、Fedora、openSUSE、SUSE。

1、语法
     cupsreject [ -E ]  [ -U username ]  [ -h hostname[:port] ]  [ -r reason ]  destination(s)

2、选项列表
选项
说明
-E
强制加密
-U
连接打印机的时候,发送用户名
-h
选择目标打印机ip和端口
-r
设置拒绝的原因

3、实例
     拒绝向目标打印机发送打印任务
[root@localhost /]# reject printer01              //拒绝发送打印请求
You have new mail in /var/spool/mail/root
[root@localhost /]# lpr /weijie/5.c               //打印文件,可以看到结果失败了
lpr: Destination "printer01" is not accepting jobs.


做了一个Linux学习的平台,目前出来一个雏形,各位可以参考使用
链接:https://pan.baidu.com/s/1GOLVU2CbpBNGtunztVpaCQ  密码:n7bk


论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
159 [报告]
发表于 2019-03-13 15:03 |只看该作者
lpc
       lpc指令用来控制打印机,它提供了一个命令行,用户可以输出命令来控制打印机。如果命令行上没有指定命令,lpc将从标准输入中显示提示符并接受命令。
       此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、Fedora、openSUSE、SUSE。

1、语法
       lpc [ command  [ parameter(s) ] ]

2、命令列表
命令
说明
exit | quit
退出打印机命令行
? | help
显示帮助
status
显示打印机状态

3、实例
进入lpc命令行
[root@localhost /]# lpc               //进入命令行
lpc&gt; help                            //显示帮助
命令可能是缩写。命令是:
exit    help    quit    status  ?
lpc&gt; ?                               //显示帮助
命令可能是缩写。命令是:
exit    help    quit    status  ?
lpc&gt; status                        //显示打印机状态
printer01:
    打印机在设备 &apos;ipp&apos; 上,速度 -1
    队列已停用
    打印已启用
    1 个条目
    监控程序已存在
lpc&gt;exit                          //退出
You have new mail in /var/spool/mail/root
[root@localhost /]#




论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2018-12-10 14:43:45
160 [报告]
发表于 2019-03-13 15:09 |只看该作者
[color=rgb(68, 68, 6]做了一个Linux学习的平台,目前出来一个雏形,各位可以参考使用
链接:https://pan.baidu.com/s/1GOLVU2CbpBNGtunztVpaCQ  密码:n7bk

[color=rgb(68, 68, 6]

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP