溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux基礎(chǔ)命令---iptables防火墻

發(fā)布時間:2020-08-11 18:34:44 來源:ITPUB博客 閱讀:247 作者:一生有你llx 欄目:建站服務(wù)器

iptables

iptables 指令用來設(shè)置Linux內(nèi)核的ip過濾規(guī)則以及管理nat功能。iptables用于在Linux內(nèi)核中設(shè)置、維護和檢查IPv4數(shù)據(jù)包過濾規(guī)則表。可以定義幾個不同的表。每個表包含許多內(nèi)置鏈,也可能包含用戶定義的鏈。每個鏈都是一個規(guī)則列表,可以匹配一組數(shù)據(jù)包。每條規(guī)則都指定如何處理匹配的數(shù)據(jù)包。這被稱為“目標(biāo)”,它可能是跳轉(zhuǎn)到同一表中的用戶定義鏈。

此命令的適用范圍: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內(nèi)核支持3個相互獨立的表:filter,過濾ip數(shù)據(jù)包;nat,配置nat功能;mangle,修改ip數(shù)據(jù)包。

filter 是默認(rèn)表,包含INPUT(發(fā)送給本機) 、OUTPUT(本機向外發(fā)送)、FORWARD(被路由出去)三個鏈。

nat 表包含PREROUTING(修改剛收到的數(shù)據(jù)包) 、OUTPUT(在路由之前處理本機產(chǎn)生的數(shù)據(jù)包) 、POSTROUTING(修改將要發(fā)送的數(shù)據(jù)包)三個鏈。

mangle 表包含PREROUTING(路由之前,修改收到的包) 、OUTPUT(路由之前,修改本機產(chǎn)生的包) 、INPUT(修改發(fā)送到本機的包) 、FORWARD (修改路由之后的包) 、POSTROUTING(修改將被本機發(fā)送的包)五個鏈。

Linux 系統(tǒng)中的內(nèi)置目標(biāo)包括:ACCEPT(允許數(shù)據(jù)包通過)DROP(丟棄數(shù)據(jù)包) QUEUE(傳遞包到用戶空間)RETURN(停止向后檢測其他的規(guī)則,返回之前的條用規(guī)則處)

 

2 、選項列表

選項可以按組來區(qū)分

命令

說明

-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]

列出已選擇鏈的所有規(guī)則。如果沒有選擇任何鏈,則所有鏈都打印

-F | --flush  [chain]

刪除指定的記錄

-Z | --zero  [chain [rulenum]]

將數(shù)據(jù)計數(shù)和字節(jié)計數(shù)清零

-N | --new-chain  chain

用戶自定義新鏈

-X | --delete-chain  [chain]

刪除用戶自定義鏈

-P  |  --policy  chain target

為指定的鏈設(shè)置策略

-E  |  --rename-chain  old   new

重命名鏈

-h

顯示幫助信息

參數(shù)

說明

[!] –p | --protocol  protocol

指定協(xié)議類型tcp、udp、icmp、all,協(xié)議前加!標(biāo)識否定

[!] –s |  --source address [/mask][,…

源地址

[!] –d 

--destination address[/mask][,…

目標(biāo)

-j | --jump

指定跳轉(zhuǎn)的目標(biāo)

-g | --goto  chain

這指定應(yīng)在用戶指定的鏈中繼續(xù)處理。與“ --jump ”選項不同,返回將不再在此鏈中繼續(xù)處理,而是在通過“ --jump ”調(diào)用我們的鏈中繼續(xù)處理。

[!] –i | --in-interface  name

接收數(shù)據(jù)包的接口名稱(僅用于輸入、轉(zhuǎn)發(fā)和PREROUTING鏈的數(shù)據(jù)包)。當(dāng)“!”參數(shù)在接口名稱之前使用,意義被倒置。如果接口名以“+”結(jié)尾,則以此名稱開頭的任何接口都將匹配。如果省略此選項,則任何接口名稱都將匹配。

-o | --out-interface name

指定數(shù)據(jù)包離開的網(wǎng)絡(luò)接口

[!] –f | --fragment

這意味著該規(guī)則僅指分段數(shù)據(jù)包的第二段和更多的片段。

-c | --set-counters  packets   bytes

這使管理員能夠初始化規(guī)則的數(shù)據(jù)包和字節(jié)計數(shù)器(在插入、追加、替換操作期間)。

其他選項

說明

-v | --verbose

冗長的輸出,該選項使List命令顯示接口名稱、規(guī)則選項(如果有的話)和TOS掩碼。還列出了數(shù)據(jù)包計數(shù)器和字節(jié)計數(shù)器

-n | --numeric

數(shù)字輸出IP地址和端口號將以數(shù)字格式打印。默認(rèn)情況下,程序?qū)L試將它們顯示為主機名、網(wǎng)絡(luò)名稱或服務(wù)(只要適用)。

-x | --exact

擴大數(shù)字。顯示數(shù)據(jù)包和字節(jié)計數(shù)器的確切值,而不是只顯示K‘s(1000倍)M’s(1000 K倍數(shù))或G‘s(1000 m倍數(shù))中的四舍五入數(shù)。此選項僅與-L命令相關(guān)。

--line-numbers

當(dāng)列出規(guī)則時,將行號添加到每條規(guī)則的開頭,對應(yīng)于該規(guī)則在鏈中的位置。

--modprobe= command

在向鏈中添加或插入規(guī)則時,使用命令加載任何必要的模塊(目標(biāo)、匹配擴展等)

 

3 、匹配擴展

iptable 可以使用擴展的數(shù)據(jù)包匹配模塊。它們以兩種方式加載:隱式地,當(dāng)指定“-p”或“—protocol”時,或者使用“-m”或“—match”選項,后面跟著匹配的模塊名稱;之后,根據(jù)特定模塊的不同,可以使用各種額外的命令行選項??梢栽谝恍兄兄付ǘ鄠€擴展匹配模塊,并且可以在指定模塊后使用“-h“或“--help“選項來接收特定于該模塊的幫助。

1 )addrtype

此模塊根據(jù)數(shù)據(jù)包的地址類型匹配數(shù)據(jù)包。地址類型在內(nèi)核網(wǎng)絡(luò)堆棧中使用,并將地址分類為不同的組。該組的確切定義取決于特定的第三層協(xié)議。地址類型可以是以下的幾種:

UNSPEC ,未指明的地址,例如,0.0.0.0。

UNICAST ,單播地址。

LOCAL ,本地地址。

BROADCAST ,廣播地址。

ANYCAST ,選播包。

MULTICAST ,多播地址。

BLACKHOLE ,黑洞地址。

UNREACHABLE ,不可達(dá)到的地址。

PROHIBIT ,被禁止的地址。

THROW ,F(xiàn)IXME。

NAT ,F(xiàn)IXME。

XRESOLVE ,

[!] --src-type type ,如果源地址為給定類型,則匹配。

[!] --dst-type type ,如果目標(biāo)地址是給定類型的,則匹配。

--limit-iface-in ,地址類型檢查可以限制在數(shù)據(jù)包即將進入的接口上。此選項僅在PREROUTING、INPUT和FORWARD鏈中有效。它不能用“--limit-iface-out “選項來指定。

--limit-iface-out ,地址類型檢查可以限制在包將要輸出的接口上。此選項僅在POSTROUTING、OUTPUT和FORWARD鏈中有效。它不能用“--limit-iface-in“選項指定。

2 ah

此模塊與IPSec數(shù)據(jù)包的身份驗證頭中的Spis匹配。

[!] --ahspi spi[:spi]

3 cluster

允許您部署網(wǎng)關(guān)和后端負(fù)載共享集群,而不需要負(fù)載平衡器。此匹配要求所有節(jié)點都看到相同的數(shù)據(jù)包。因此,集群匹配決定該節(jié)點是否必須處理給定以下選項的數(shù)據(jù)包。

--cluster-total-nodes num ,設(shè)置集群中的總節(jié)點數(shù)。

[!] --cluster-local-node num ,設(shè)置本地節(jié)點編號ID。

[!] --cluster-local-nodemask mask ,設(shè)置本地節(jié)點編號ID掩碼。您可以使用此選項而不是” --cluster-local-node “。

--cluster-hash-seed value ,設(shè)置Jenkins散列的種子值。

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 eth3 -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 mark ! --mark 0xffff -j DROP

iptables -A PREROUTING -t mangle -i eth3 -m mark ! --mark 0xffff -j DROP

下面的命令使所有節(jié)點都看到相同的數(shù)據(jù)包

ip maddr add 01:00:5e:00:01:01 dev eth2

ip maddr add 01:00:5e:00:01:02 dev eth3

arptables   -A  OUTPUT   -o   eth2  --h-length  6  -j  mangle  --mangle-mac-s 01:00:5e:00:01:01

arptables -A INPUT -i eth2 --h-length 6 --destination-mac 01:00:5e:00:01:01 –j mangle --mangle-mac-d 00:zz:yy:xx:5a:27

arptables   -A  OUTPUT   -o   eth3  --h-length  6  -j  mangle  --mangle-mac-s 01:00:5e:00:01:02

arptables -A INPUT -i eth3 --h-length 6 --destination-mac 01:00:5e:00:01:02 –j mangle --mangle-mac-d 00:zz:yy:xx:5a:27

4 comment

允許向任何規(guī)則添加注釋(最多256個字符)。

--comment comment

iptables -A INPUT -s 192.168.0.0/16 -m  comment  --comment  "A  privatized  IP block"

5 connbytes

主要用途是檢測長時間下載,并在流量控制中使用較低優(yōu)先級的頻帶來標(biāo)記它們。每個連接傳輸?shù)淖止?jié)也可以通過“conntrack -L”查看,并通過ctnetlink訪問。

[!] --connbytes from [:to] ,將大于FROM,小于TO的連接中的數(shù)據(jù)包匹配,“!”用于匹配不在此范圍內(nèi)的數(shù)據(jù)包。

--connbytes-dir {original|reply|both} , 要考慮哪些數(shù)據(jù)包

--connbytes-mode {packets|bytes|avgpkt} 是否檢查數(shù)據(jù)包的數(shù)量、傳輸?shù)淖止?jié)數(shù)或到目前為止收到的所有數(shù)據(jù)包的平均大小(以字節(jié)為單位)。請注意,當(dāng)“both”與“avgpkt”一起使用時,而且數(shù)據(jù)(主要是)只朝一個方向(例如HTTP)進行,平均數(shù)據(jù)包大小將約為實際數(shù)據(jù)包的一半。

iptables   ..  -m  connbytes  --connbytes 10000:100000  --connbytes-dir  both --connbytes-mode bytes

6 connlimit

允許您限制每個客戶端IP地址(或客戶地址塊)到服務(wù)器的并行連接數(shù)。

[!] --connlimit-above n ,如果現(xiàn)有連接的數(shù)目大于n,則匹配

--connlimit-mask prefix_length ,使用前綴長度對主機進行分組。對于IPv 4,這必須是介于(包括)0和32之間的數(shù)字。對于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 請求的數(shù)量限制在每 C 類網(wǎng)絡(luò) 16 (24 位網(wǎng)絡(luò)掩碼 )

iptables  -p  tcp  --syn  --dport  80  -m   connlimit  --connlimit-above   16 --connlimit-mask 24 -j REJECT

# 將鏈路本地網(wǎng)絡(luò)的并行 HTTP 請求限制為 16

(ipv6)   ip6tables  -p  tcp  --syn  --dport  80  -s fe80::/64  -m  connlimit --connlimit-above 16 --connlimit-mask 64 -j REJECT

7 connmark

此模塊匹配與連接關(guān)聯(lián)的netfilter標(biāo)記字段(可以使用下面的CONNMARK目標(biāo)進行設(shè)置)。

[!] --mark value [/ mask ] ,將連接中的數(shù)據(jù)包與給定的標(biāo)記值相匹配(如果指定了掩碼,則在比較之前用標(biāo)記進行邏輯分析)

8 )conntrack

此模塊與連接跟蹤結(jié)合時,允許訪問此數(shù)據(jù)包/連接的連接跟蹤狀態(tài)。

[!] --ctstate statelist ,Statelist是要匹配的連接狀態(tài)的逗號分隔列表。下面列出了可能的狀態(tài)。

[!] --ctproto l4proto ,第4層協(xié)議匹配(按號碼或名稱)

[!] --ctorigsrc address [/ mask ]

[!] --ctorigdst address [/ mask ]

[!] --ctreplsrc address [/ mask ]

[!] --ctrepldst address [/ mask ] ,與original/reply、source/destination地址匹配。

[!] --ctorigsrcport port

[!] --ctorigdstport port

[!] --ctreplsrcport port

[!] --ctrepldstport port ,匹配original/reply、source/destination端口(TCP/UDP/等)或GRE鍵

[ !] --ctstatus statelis ,Statuslist是要匹配的連接狀態(tài)的逗號分隔列表。下面列出了可能的狀態(tài)

[!] --ctexpire time [: time ] ,將剩余生存期(以秒為單位)與給定值或范圍(包括)進行匹配。

--ctdir {ORIGINAL|REPLY} ,匹配按指定方向流動的數(shù)據(jù)包。如果根本沒有指定此標(biāo)志,則匹配兩個方向的數(shù)據(jù)包。

ctstate 的有效值

INVALID ,意味著數(shù)據(jù)包與已知的連接沒有關(guān)聯(lián)。

NEW ,意味著該數(shù)據(jù)包已啟動一個新連接,或與未在兩個方向上看到數(shù)據(jù)包的連接相關(guān)聯(lián)。

ESTABLISHED ,意味著該數(shù)據(jù)包與看到兩個方向的數(shù)據(jù)包的連接相關(guān)聯(lián)。

RELATED ,意味著數(shù)據(jù)包正在啟動新連接,但與現(xiàn)有連接相關(guān)聯(lián),例如FTP數(shù)據(jù)傳輸或ICMP錯誤。

SNAT ,虛擬狀態(tài),如果原始源地址與回復(fù)目的地不同,則進行匹配。

DNAT ,虛擬狀態(tài),如果原始目的地與應(yīng)答源不同,則進行匹配。

ctstatus 的有效值

NONE ,不是下列任何一項。

EXPECTED ,這是一個預(yù)期的連接。

SEEN_REPLY ,ConnTrack在兩個方向都看到了數(shù)據(jù)包。

ASSURED ,連接項不應(yīng)提前過期。

CONFIRMED ,確認(rèn)連接:原始數(shù)據(jù)包已離開框。

9 dccp

[!] --source-port , --sport port [: port ]

[!] --destination-port,--dport port [: port ]

[!] --dccp-types mask ,當(dāng)DCCP數(shù)據(jù)包類型為“掩碼”之一時匹配?!把诖a”是以逗號分隔的數(shù)據(jù)包類型列表。類型可以是: REQUEST、RESPONSE、DATA、ACK、DATAACK、CLOSEREQ、CLOSE、RESET、SYNC、SYNCACK、INVALID 。

[!] --dccp-option number ,匹配如果設(shè)置DCP選項 

10 dscp

此模塊與IP報頭中TOS字段中的6位DSCP字段匹配。Dscp已經(jīng)取代了IETF中的TOS。

[!] --dscp value ,匹配數(shù)值(十進制或十六進制)值[0-63]

[!] --dscp-class class ,匹配DiffServ類。此值可能是BE、EF、AFxx或CSX類中的任何一個。然后,它將被轉(zhuǎn)換為其相應(yīng)的數(shù)值。

11 ecn

這允許您匹配IPv 4和TCP報頭的ECN位。ECN是RFC3168中指定的顯式擁塞通知機制。

[!] --ecn-tcp-cwr ,如果設(shè)置了TCP ECN CWR(擁塞窗口接收)位,則匹配。

[ !] --ecn-tcp-ece ,如果設(shè)置了TCP ECN ECE(ECN Echo)位,則匹配。

[!] --ecn-ip-ect num ,這與特定的IPv 4 ECT(ECN能力傳輸)相匹配。你必須在‘0’和‘3’之間指定一個數(shù)字。

12 esp

此模塊與ipsec數(shù)據(jù)包的esp報頭中的spis匹配。

[!] --espspi spi [: spi ]

13 hashlimit

哈希限制使用散列桶來表示一組連接的速率限制匹配(如極限匹配),使用單個iptables規(guī)則。分組可以完成perhostgroup(源和/或目標(biāo)地址)和/或每個端口。它使您能夠表達(dá)“每組每個時間量子N個數(shù)據(jù)包”:

源主機上的匹配:192.168.0.0/16期間每臺主機每秒1000個數(shù)據(jù)包。

源Prot匹配:每項服務(wù)每秒100包(192.168.1.1)。

子網(wǎng)的匹配:10.0.0.0/8中每個/28子網(wǎng)每分鐘10000包。

--hashlimit-upto amount [/second|/minute|/hour|/day] ,如果速率低于或等于amount/quantum,則匹配。它被指定為一個數(shù)字,帶有可選的時間量子后綴;默認(rèn)值是3/小時。

--hashlimit-above amount [/second|/minute|/hour|/day] ,如果速率大于amount/quantum,則匹配

--hashlimit-burst amount ,要匹配的數(shù)據(jù)包的最大初始數(shù)量:當(dāng)未達(dá)到上述指定的限制時,該數(shù)目將被重新充電一次,最多可達(dá)到此數(shù)目;默認(rèn)值為5。

--hashlimit-mode {srcip|srcport|dstip|dstport},... ,要考慮的以逗號分隔的對象列表。如果給出了“- -hash-limit-mode “選項, hashlimit 就像 limit 一樣,但是在進行哈希內(nèi)務(wù)管理時會花費很大的代價。

--hashlimit-srcmask prefix ,當(dāng)使用“ --hashlimit-mode “時,所遇到的所有源地址都將根據(jù)給定的前綴長度進行分組,因此創(chuàng)建的子網(wǎng)將受到哈希限制。前綴必須介于(包括)0和32之間。

--hashlimit-dstmask prefix ,類似“ --hashlimit-srcmask “,但是對于目標(biāo)地址。

--hashlimit-name foo ,“/proc/net/ipt_hashlimit/foo“條目的名稱。

--hashlimit-htable-size buckets ,哈希表的桶數(shù)。

--hashlimit-htable-max entries ,散列中的最大項。

--hashlimit-htable-expire msec ,在散列條目過期多少毫秒之后。

--hashlimit-htable-gcinterval msec ,垃圾收集間隔之間有多少毫秒。

14 helper

此模塊匹配與特定連接輔助程序相關(guān)的數(shù)據(jù)包。

[!] --helper string ,匹配與指定的連接輔助程序相關(guān)的數(shù)據(jù)包。對于默認(rèn)端口上與ftp會話相關(guān)的數(shù)據(jù)包,字符串可以是“ftp”。對于其他端口,將-portnr附加到值,即。“ftp-2121”

15 icmp

如果指定了“ --protocol icmp ”,則可以使用此擴展。它提供了以下選項

[!] --icmp-type {type[/code]|typename} ,這允許指定icmp類型,它可以是數(shù)值icmp類型、類型/代碼對,也可以是命令顯示的icmp類型名稱之一。

16 iprange

這與給定的任意范圍的ip地址匹配。

[!] --src-range from [-to] ,匹配指定范圍內(nèi)的源IP。

[!] --dst-range from [-to] ,匹配指定范圍內(nèi)的目標(biāo)IP。

17 length

此模塊將數(shù)據(jù)包的第3層有效載荷(例如第4層包)的長度與特定值或范圍相匹配。

[!] --length length [: length ]

18 limit

此模塊使用令牌桶過濾器以有限的速度匹配。使用此擴展的規(guī)則將匹配,直到達(dá)到此限制(除非“!”使用標(biāo)志)。它可以與日志目標(biāo)結(jié)合使用,提供有限的日志記錄。

--limit rate [/second|/minute|/hour|/day] ,最大平均匹配率:指定為數(shù)字,帶有可選的‘/秒’、‘/分鐘’、‘/小時’或‘/日’后綴;默認(rèn)值為3/小時

--limit-burst number ,要匹配的數(shù)據(jù)包的最大初始數(shù)量:當(dāng)未達(dá)到上述指定的限制時,此數(shù)字將被重新充電一次,最多可達(dá)到此數(shù)目;默認(rèn)值為5。

19 mac

[!] --mac-source address ,匹配源MAC地址。它必須是XX:XX:XX:XX:XX:XX格式。請注意,這只對來自以太網(wǎng)設(shè)備并進入PREROUTING、FORWARD或INPUT鏈的數(shù)據(jù)包有意義。

20 mark

此模塊匹配與數(shù)據(jù)包關(guān)聯(lián)的netfilter標(biāo)記字段(可以使用下面的標(biāo)記目標(biāo)設(shè)置該標(biāo)記)。

[!] --mark value [/ mask ] ,將數(shù)據(jù)包與給定的無符號標(biāo)記值匹配(如果指定了掩碼,則在進行比較之前,該掩碼將與掩碼進行邏輯連接)

21 )multiport

此模塊匹配一組源端口或目標(biāo)端口。最多可指定15個端口。端口范圍(端口:端口)算作兩個端口。它只能與“ -p tcp “或” -p udp “一起使用。

[!] --source-ports , --sports port [, port |, port : port ]... ,如果源端口是給定端口之一,則匹配。旗桿運動是這個選項的方便別名。多個端口或端口范圍使用逗號分隔,端口范圍使用冒號指定。因此,53,1024:65535將匹配端口53,所有端口都是從1024到65535。

[ !] --destination-ports , --dports port [, port |, port : port ].. ,如果目標(biāo)端口是給定端口之一,則匹配。標(biāo)志--dports是此選項的方便別名。

[!] --ports port [, port |, port : port ]... ,如果源端口或目標(biāo)端口等于給定端口之一,則匹配。

22 owner

對于本地生成的數(shù)據(jù)包,此模塊試圖匹配數(shù)據(jù)包創(chuàng)建者的各種特征。此匹配僅在OUTPUT鏈和POSTROUTING鏈中有效。轉(zhuǎn)發(fā)的數(shù)據(jù)包沒有任何與其相關(guān)聯(lián)的套接字。來自內(nèi)核線程的數(shù)據(jù)包確實有一個套接字,但通常沒有所有者。

[!] --uid-owner username

[!] --uid-owner userid [- userid ] ,如果數(shù)據(jù)包套接字的文件結(jié)構(gòu)(如果有)是給定用戶擁有的,則匹配。您還可以指定數(shù)字UID或UID范圍。

[!] --gid-owner groupname

[!] --gid-owner groupid [- groupid ] ,如果數(shù)據(jù)包套接字的文件結(jié)構(gòu)屬于給定組,則匹配。您還可以指定數(shù)字GID或GID范圍。

[!] --socket-exists ,如果數(shù)據(jù)包與套接字相關(guān)聯(lián),則匹配。

23 physdev

該模塊在橋端口輸入和輸出設(shè)備上匹配,這些輸入和輸出設(shè)備被奴役到橋接設(shè)備上。此模塊是支持透明橋接IP防火墻的基礎(chǔ)結(jié)構(gòu)的一部分,僅適用于2.5.44版本以上的內(nèi)核版本。

[!] --physdev-in name ,接收數(shù)據(jù)包的橋端口的名稱(僅用于INPUT、FORWARD和PREROUTING鏈的數(shù)據(jù)包)。如果接口名以“+“結(jié)尾,則以此名稱開頭的任何接口都將匹配。如果數(shù)據(jù)包沒有通過橋接設(shè)備到達(dá),則此數(shù)據(jù)包將與此選項不匹配,除非“!”被利用了。

[!] --physdev-out name ,要發(fā)送數(shù)據(jù)包的橋接端口的名稱(用于FORWARD、OUTPUT和POSTROUTING鏈的數(shù)據(jù)包)。如果接口名以“+“結(jié)尾,則以此名稱開頭的任何接口都將匹配。注意,在NAT和Magle輸出鏈中,不能在橋輸出端口上匹配,但是在過濾器輸出鏈中可以匹配。如果數(shù)據(jù)包不會由網(wǎng)橋設(shè)備離開,或者如果它還不知道輸出設(shè)備將是什么,那么該數(shù)據(jù)包將與此選項不匹配,除非‘!’使用。

[!] --physdev-is-in ,如果數(shù)據(jù)包已通過網(wǎng)橋接口輸入,則匹配。

[!] --physdev-is-out ,如果數(shù)據(jù)包將通過網(wǎng)橋接口離開,則匹配。。

[!] --physdev-is-bridged ,如果數(shù)據(jù)包正在橋接,因此不被路由,則匹配。這僅在FORWARD鏈和POSTROUTING鏈中有用。

24 pkttype

此模塊與鏈路層數(shù)據(jù)包類型匹配。

[!] --pkt-type {unicast|broadcast|multicast}

25 policy

此模塊與IPsec用于處理數(shù)據(jù)包的策略相匹配。

--dir {in|out} ,用于選擇是否匹配用于解除封裝的策略或?qū)⒂糜诜庋b的策略。in在PREROUTING、INPUT、FORWARD鏈中有效,out在POSTROUTING、OUTPUT、FORWARD鏈中有效。

--pol {none|ipsec} ,如果數(shù)據(jù)包要接受ipsec處理,則匹配。

--strict ,選擇是否匹配確切的策略,或者如果策略的任何規(guī)則與給定的策略匹配,則選擇匹配。

[!] --reqid id ,匹配策略規(guī)則的reqid。可以使用setkey(8)指定REQID,使用unique:id作為級別。

[!] --spi  spi ,匹配SA的SPI。

[!] --proto {ah|esp|ipcomp} ,匹配封裝協(xié)議。

[!] --mode {tunnel|transport} ,匹配封裝模式。

[!] --tunnel-src addr [/ mask ] ,匹配隧道模式sa的源端點地址。只有和“ --mode tunnel “一起使用有效。

[!] --tunnel-dst addr [/ mask ] ,匹配隧道模式sa的目標(biāo)端點地址。只有和“ --mode tunnel “一起使用有效。

--next ,啟動策略規(guī)范中的下一個元素,只有和“ --strict. “一起使用有效。

26 )quota

通過減少每個數(shù)據(jù)包的字節(jié)計數(shù)器來實現(xiàn)網(wǎng)絡(luò)配額。

--quota bytes ,配額(以字節(jié)為單位)。

27 rateest

該速率估計器可以與RATEEST目標(biāo)收集的估計費率相匹配。它支持絕對bps/pps值匹配,比較兩種速率估計量,并匹配兩種速率估計量之間的差異。

--rateest1 name ,第一比率估計器的名稱。

--rateest2 name ,第二比率估計器的名稱。

--rateest-delta ,將差異與給定的比率進行比較

--rateest1-bps value ,

--rateest2-bps value ,每秒比較字節(jié)

--rateest1-pps value ,

--rateest2-pps value ,每秒比較包

[!] --rateest-lt ,如果速率小于給定的速率/估計量,則匹配

[!] --rateest-gt ,如果速率大于給定的速率/估計量,則匹配

[!] --rateest-eq ,如果速率等于給定的速率/估計量,則匹配

# 示例:在啟動數(shù)據(jù)連接時,可以根據(jù)可用帶寬從 FTP 服務(wù)器通過兩行路由傳出數(shù)據(jù)連接:

# 估計出率

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

# 基于可用帶寬的標(biāo)記

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

這與路由領(lǐng)域匹配。路由域用于復(fù)雜的路由設(shè)置,涉及到諸如BGP這樣的動態(tài)路由協(xié)議。

[!] --realm value [/ mask ] ,匹配給定的領(lǐng)域號(可選掩碼)。如果不是一個數(shù)字,則值可以是“ /etc/iproute2/rt_realms ”中的命名域(在這種情況下不能使用掩碼)。

29 recent

允許您動態(tài)創(chuàng)建IP地址列表,然后以幾種不同的方式與該列表進行匹配。例如,您可以創(chuàng)建一個“壞蛋”列表,列出試圖連接到防火墻上的端口139的人,然后在不考慮這些包的情況下丟棄它們的所有未來數(shù)據(jù)包。 --set、--rcheck、--update、--remove 是相互排斥的。

--name name ,指定要用于命令的列表。如果沒有指定名稱,則將使用默認(rèn)名稱。

[!] --set ,他將把數(shù)據(jù)包的源地址添加到列表中。如果源地址已經(jīng)在列表中,這將更新現(xiàn)有條目。這將永遠(yuǎn)返回成功(或失敗,如果傳入!)。

--rsource ,匹配/保存最近列表中每個數(shù)據(jù)包的源地址。這是默認(rèn)的

--rdest ,匹配/保存最近列表中每個數(shù)據(jù)包的目標(biāo)地址

[!] --rcheck ,檢查數(shù)據(jù)包的源地址是否當(dāng)前在列表中。

[!] --update ,類似“ --rcheck ”,但如果匹配,它將更新“最后一次看到”時間戳。

[!] --remove ,檢查數(shù)據(jù)包的源地址是否當(dāng)前在列表中,如果是,該地址將從列表中刪除,規(guī)則將返回true。如果找不到地址,則返回false。

--seconds seconds ,此選項必須與“ --rcheck ”或“ --update ”之一結(jié)合使用.使用時,這將縮小匹配范圍,僅當(dāng)?shù)刂吩诹斜碇胁⒃谧詈蠼o定的秒內(nèi)被看到時才發(fā)生。

--hitcount hits ,此選項必須與“ --rcheck ”或“ --update ”之一結(jié)合使用。使用時,這將縮小匹配范圍,僅當(dāng)?shù)刂吩诹斜碇星覕?shù)據(jù)包已接收到大于或等于給定值時才發(fā)生。此選項可與“ --seconds ”一起使用,以創(chuàng)建一個更窄的匹配,需要在特定的時間范圍內(nèi)執(zhí)行一定數(shù)量的命中。HitCount參數(shù)的最大值由xt_recent內(nèi)核模塊的“ip_pkt_list_tot”參數(shù)給出。在命令行中超過此值將導(dǎo)致拒絕該規(guī)則。

--rttl ,此選項只能與“ --rcheck ”或“ --update ”中的一個一起使用。當(dāng)使用時,這將縮小匹配范圍,只有當(dāng)?shù)刂吩诹斜碇校⑶耶?dāng)前數(shù)據(jù)包的ttl與符合“ --set ”規(guī)則的數(shù)據(jù)包匹配時才會發(fā)生匹配。這可能是有用的,如果你有問題的人偽造他們的源地址,以便通過這個模塊拒絕其他人訪問你的網(wǎng)站通過發(fā)送虛假的數(shù)據(jù)包給你。

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/*”是關(guān)于每個列表中每個條目的地址和信息的當(dāng)前列表。可以讀取“/proc/net/xt_new/”中的每個文件來查看當(dāng)前列表,或者使用以下命令編寫兩個文件來修改列表:

echo +addr >/proc/net/xt_recent/DEFAULT

增加 addr 到默認(rèn)的列表

echo -addr >/proc/net/xt_recent/DEFAULT

addr 從默認(rèn)列表刪除

echo / >/proc/net/xt_recent/DEFAULT

舒心默認(rèn)列表

模塊本身接受參數(shù),默認(rèn)顯示如下:

ip_list_tot = 100 ,每個表記住的地址數(shù)

ip_pkt_list_tot = 20 ,記住的每個地址的數(shù)據(jù)包數(shù)

ip_list_hash_size = ,散列表大小。0意味著根據(jù)ip_list_tot(默認(rèn)值:512)計算它。

ip_list_perms = 0644 ,“/proc/net/xt_recent/*”的全新啊

ip_list_uid = ,“/proc/net/xt_recent/*”的擁有者ID。

ip_list_gid = ,“/proc/net/xt_recent/*”的擁有者組ID。

30 sctp

[!] --source-port,--sport port [: port ]

[!] --destination-port,--dport  port [: port ]

[!] --chunk-types {all|any|only}  chunktype [: flags ] [...] ,

大寫中的標(biāo)志字母表示如果設(shè)置將匹配標(biāo)志,小寫表示匹配(如果未設(shè)置)。

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

31 set

該模塊匹配可由ipset(8)定義的IP集。

[!] --match-set setname flag [, flag ].. ,其中flag是用逗號分隔的src或dst規(guī)范的列表,其中最多只能有6個。

iptables -A FORWARD -m set --match-set test src,dst

將匹配數(shù)據(jù)包,對于這些數(shù)據(jù)包(如果SET類型為ipportmap),源地址和目標(biāo)端口對可以在指定的集合中找到。如果指定集的集合類型為單維(例如ipmap),則該命令將匹配在指定集中可以找到源地址的數(shù)據(jù)包。

如果選項與其他擴展的選項不沖突,則可以將選項“ --match-set ”替換為“ --set ”。

32 socket

如果可以通過在數(shù)據(jù)包上執(zhí)行套接字查找找到打開的套接字,則他的匹配項。

--transparent ,忽略非transparent的包。

33 state

當(dāng)與連接跟蹤相結(jié)合時,此模塊允許訪問此數(shù)據(jù)包的連接跟蹤狀態(tài)。

[!] --state state ,其中狀態(tài)是要匹配的連接狀態(tài)的逗號分隔列表。可能的狀態(tài)是無效的,這意味著由于某些原因無法識別數(shù)據(jù)包,其中包括內(nèi)存不足和ICMP錯誤,這些錯誤與任何已知的連接不相對應(yīng),這意味著該數(shù)據(jù)包與一個已經(jīng)在兩個方向上看到數(shù)據(jù)包的連接相關(guān)聯(lián),新的意思是該數(shù)據(jù)包已經(jīng)啟動了一個新連接,或以其他方式與沒有在兩個方向上看到數(shù)據(jù)包的連接相關(guān)聯(lián),以及相關(guān)的意思是,該數(shù)據(jù)包正在啟動一個新連接,但與現(xiàn)有連接相關(guān)聯(lián),例如FTP數(shù)據(jù)傳輸或ICMP錯誤。

34 statistic

該模塊基于一定的統(tǒng)計條件對數(shù)據(jù)包進行匹配。它支持使用“--mode”選項設(shè)置的兩種不同的模式。

--mode mode ,設(shè)置匹配規(guī)則的匹配模式,所支持的模式為隨機模式和nth模式。

--probability p ,將隨機匹配數(shù)據(jù)包的概率從0設(shè)置為1。它只適用于隨機模式。

--every n ,每第n包匹配一包。它只適用于nth模式。

--packet p ,為nth模式設(shè)置初始計數(shù)器值(0<=p<=n-1,默認(rèn)值0)

35 string

該模塊通過使用某種模式匹配策略來匹配給定的字符串。它需要一個Linux內(nèi)核>=2.6.14。

--algo {bm|kmp} ,選擇模式匹配策略(bm=Boyer-Moore,  kmp=Knuth-Pratt- Morris)

--from offset ,設(shè)置它開始尋找匹配的偏移量。如果未通過,默認(rèn)為0。

--to offset ,設(shè)置它開始尋找匹配的偏移量。如果未通過,則默認(rèn)為數(shù)據(jù)包大小。

[!] --string pattern ,匹配給定的模式。

[!] --hex-string  pattern ,匹配以十六進制表示的給定模式。

36 tcp

如果指定了“ --protocol TCP ”,則可以使用這些擴展。它提供了以下選項:

[!] --source-port , --sport port [: port ] ,源端口或端口范圍規(guī)范。這可以是服務(wù)名稱,也可以是端口號。如果省略第一個端口,則假定為“0”;如果省略最后一個端口,則假定為“65535”。如果第一個端口大于第二個端口,它們將被交換

[!] --destination-port , --dport port [: port ] ,目的端口或端口范圍規(guī)范?!?-dport”的方便別名。

[!] --tcp-flags mask comp ,匹配指定的TCP標(biāo)志。第一個參數(shù)掩碼是我們應(yīng)該檢查的標(biāo)志,寫成逗號分隔列表,第二個參數(shù)comp是必須設(shè)置的以逗號分隔的標(biāo)志列表。flag可以是 SYN ACK FIN RST URG PSH ALL NONE

iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN

這個命令只匹配了 SYN 標(biāo)志

[!] --syn ,只匹配設(shè)置了SYN位,并且清除了ACK,RST,F(xiàn)IN為的包。等價于“ --tcp-flags SYN,RST,ACK,FIN SYN

[!] --tcp-option number ,如果設(shè)置了tcp選項就匹配。

37 tcpmss

這與TCP標(biāo)頭的TCPMSS(最大段大小)字段匹配。您只能在TCP SYN或SYN/ACK數(shù)據(jù)包上使用這一點,因為MSS只在連接啟動時的TCP握手期間協(xié)商。

[!] --mss value [: value ] ,匹配給定的tcp mss值或范圍。

38 time

如果數(shù)據(jù)包到達(dá)時間/日期在給定范圍內(nèi),則匹配。所有選項都是可選的,但在指定的時候都是可選的。

--datestart YYYY [- MM [- DD [ Thh [: mm [: ss ]]]]]

--datestop YYYY [- MM [- DD [ Thh [: mm [: ss ]]]]] ,僅在給定時間內(nèi)匹配,必須采用ISO 8601“T”表示法??赡艿臅r間范圍是1970-01-01T00:00:00到2038-01-19T04:17:07。如果沒有指定“--datestart”或“--datestop”,則將分別默認(rèn)為1970-01-01和2038-01-19。

--timestart hh : mm [: ss ]

--timestop hh : mm [: ss ] ,只有在指定的白天匹配。可能的時間范圍是00:00到23:59:59。允許前導(dǎo)零(例如“06:03”),并正確解釋為基數(shù)-10。

[!] --monthdays day [, day ...] ,只在一個月的指定日期匹配??赡苤禐?到31。請注意,在沒有第31天的月份中,指定31當(dāng)然不匹配;28天或29天的2月也是如此。

[!] --weekdays day [, day ...] ,只有在給定的工作日匹配。可能的值分別是Mon、Tue、Wed、Thu、Fri、sat、Sun或1到7之間的值。您也可以使用兩個字符的變體(Mo,Tu等)。

--utc ,把給 --datestart、--datestop、--timestart、--timestop 的時間解釋為UTC。

--localtz ,把給 --datestart、--datestop、--timestart、--timestop 的時間解釋為本地時間(默認(rèn))。

匹配星期天

-m time --weekdays Sa,Su

匹配國家假日

-m time --datestart 2007-12-24 --datestop 2007-12-27

由于停止時間實際上包括在內(nèi),因此需要下列停止時間才能與新一天的第一秒鐘不匹配:

-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位服務(wù)類型字段(即包括IPv 6報頭中的“優(yōu)先級”比特)或(也包括8位)優(yōu)先級字段。

[!] --tos  value [/ mask ] ,匹配具有給定TOS標(biāo)記值的數(shù)據(jù)包。如果指定了mask,則在比較之前使用TOS標(biāo)記進行邏輯分析。

[!] --tos  symbol ,在為IPv4使用tos匹配時,您可以指定一個符號名。可以通過使用“ -m tos-h ”調(diào)用iptables來獲得已識別的TOS名稱的列表。請注意,這意味著掩碼為0x3F,即除ECN位外的所有掩碼。

40 ttl

此模塊匹配ip報頭中活動字段的時間。

--ttl-eq ttl ,如果和給定的ttl值相等,那么就匹配。

--ttl-gt ttl ,如果大于給定的ttl值,那么就匹配。

--ttl-lt ttl ,如果小于給定的ttl值,那么就匹配。

41 u32

U32 測試從數(shù)據(jù)包中提取的多達(dá)4個字節(jié)的數(shù)量是否具有指定的值。要提取哪些內(nèi)容的規(guī)范足夠通用,可以在給定的偏移量下從tcp報頭或有效負(fù)載中找到數(shù)據(jù)。

[!] --u32 tests ,該參數(shù)相當(dāng)于下面描述的一種小型語言中的程序。

tests := location "=" value | tests "&&" location "=" value

value := range | value "," range

range := number | number ":" number

一個單數(shù),n,被解釋為n:n。n:m被解釋為數(shù)的范圍>=n和<=m。     

location := number | location operator number

operator := "&" | "<<" | ">>" | "@"

操作符‘&’,‘<<’,‘>>‘和‘&&’均與C中相同。‘=’實際上是一個集合成員資格運算符,值語法描述了一個集合?!瓳’操作符允許進入下一個標(biāo)頭,并在下面進一步描述。目前,對測試的大小有一些人為的實現(xiàn)限制。

* u32 參數(shù)中“=”不超過10個,“&&”不超過9個;

* 每個值不超過10個范圍(和9個逗號);

* 每個地點不超過10個number(和9個操作符);

要描述位置的含義,請想象下面解釋它的機器。有三個寄存器:a是char*類型,最初IP報頭的地址;B和C是無符號32位整數(shù),最初為零。指令是:

number B = number;

C = (*(A+B)<<24) + (*(A+B+1)<<16) + (*(A+B+2)<<8) + *(A+B+3)

&number C = C & number

<< number C = C << number

>> number C = C >> number

@number A = A + C;

任何對[SKB->Data,SKB->End]外部內(nèi)存的訪問都會導(dǎo)致匹配失敗。否則,計算結(jié)果是C的最終值。允許使用空白,但在測試中不需要。但是,出現(xiàn)在其中的字符可能需要shell引用,因此將參數(shù)括在引號中是個好主意。

例子代碼

匹配總長度 >=256 IP 數(shù)據(jù)包。 IP 報頭包含一個以字節(jié) 2-3 為單位的總長度字段。以及使用 0xFFFF( 給定字節(jié) 2-3) ,并測試它是否在 [0x100 0xFFF] 范圍內(nèi)。

--u32 "0 & 0xFFFF = 0x100:0xFFFF"

 

匹配 ICMP 數(shù)據(jù)包與 ICMP 類型 。首先測試它是否是 ICMP 數(shù)據(jù)包,真 IP 字節(jié) 9( 協(xié)議 )=1

--u32 "6 & 0xFF = 1 && ...

讀取字節(jié) 6-9 ,使用 & 丟棄字節(jié) 6-8 ,并將結(jié)果與 1 進行比較。下一次測試它不是片段。 ( 如果是這樣的話,它可能是這樣的包的一部分,但我們不能總是說出來。 ) 注:如果您想要匹配 IP 報頭之外的任何內(nèi)容,則通常需要進行此測試。最后 6 位字節(jié) 6 和所有字節(jié) 7 都是 當(dāng)且僅當(dāng)這是一個完整的數(shù)據(jù)包 ( 不是片段 ) ?;蛘?,您可以只測試字節(jié) 6 的最后 5 位,從而允許第一個片段。

... 4 & 0x3FFF = 0 && ...

最后一次測試:通過 IP 報頭的第一個字節(jié) ( 類型 ) 。這就是我們必須使用 @ 語法的地方。以 32 位字表示的 ip 報頭 (Ihl) 的長度存儲在 ip 報頭本身的字節(jié) 的右側(cè)。

... 0 >> 22 & 0x3C @ 0 >> 24 = 0"

表示讀取字節(jié) 0-3 , >22 表示向右移動 22 位。移動 24 位將給出第一個字節(jié),所以只有 22 位是 4 倍,再加上幾個比特。 &3C 然后刪除右邊的兩個額外位和第一個字節(jié)的前四位。例如,如果 IHL=5 ,則 IP 報頭長 20(4x5) 字節(jié)。在本例中,字節(jié) 0-1 ( 二進制 )xxx0101 yzzzz , >22 10 位值 xxx0101yy &3C 010100 。 @ 意味著將這個數(shù)字用作數(shù)據(jù)包中的新偏移量,并從那里開始讀取四個字節(jié)。這是 ICMP 有效負(fù)載的前 4 個字節(jié),其中 字節(jié)是 ICMP 類型。因此,我們只需將值 24 移到右側(cè),除去第一個字節(jié)之外的所有字節(jié),并將結(jié)果與 進行比較。

 

TCP 有效負(fù)載字節(jié) 8-12 1 2 、 5 8 中的任意一個。首先,我們測試數(shù)據(jù)包是否是 TCP 數(shù)據(jù)包 ( 類似于 ICMP)

--u32 "6 & 0xFF = 6 && ...

接下來,測試它不是一個片段 ( 與上面相同 )

... 0 >> 22 & 0x3C @ 12 >> 26 & 0x3C @ 8 = 1,2,5,8"

如上面所示, 0>22&3C 計算 IP 報頭中的字節(jié)數(shù)。 @ 使這成為數(shù)據(jù)包中的新偏移量,這是 TCP 報頭的開始。 TCP 頭的長度 ( 同樣以 32 位字表示 ) TCP 12 字節(jié)的左半部分。 12>26&3C 以字節(jié)計算這個長度 ( 類似于之前的 IP 報頭 ) 。 “@” 使其成為新的偏移量,這是 TCP 有效負(fù)載的開始。最后, 8 讀取有效負(fù)載的字節(jié) 8-12 = 檢查結(jié)果是否為 1 、 2 5 8 中的任何一個。

42 udp

如果指定了“ --protocol udp ”,則可以使用這些擴展。它提供了以下選項:

[!] --source-port,--sport  port [: port ] ,源端口或端口范圍規(guī)范。

[!] --destination-port , --dport port [: port ] ,目的端口或端口范圍規(guī)范。

43 unclean

此模塊不需要任何選項,而是嘗試匹配看起來格式錯誤或不尋常的數(shù)據(jù)包。

 

4 、目標(biāo)擴展

1 AUDIT

此目標(biāo)允許為到達(dá)目標(biāo)的數(shù)據(jù)包創(chuàng)建審核記錄。它可以用來記錄接受、丟棄和拒絕的數(shù)據(jù)包。

--type {accept|drop|reject} ,設(shè)置審計記錄類型。

iptables -N AUDIT_DROP

iptables -A AUDIT_DROP -j AUDIT --type drop

iptables -A AUDIT_DROP -j DROP

2 CHECKSUM

這個目標(biāo)允許有選擇地處理損壞的/舊的應(yīng)用程序。它只能在mangle表上使用。

--checksum-fill ,計算并填寫缺少校驗和的數(shù)據(jù)包中的校驗和。如果您需要處理諸如dhcp客戶端之類的舊應(yīng)用程序,這些應(yīng)用程序不能很好地處理校驗和卸載,但不希望在設(shè)備中禁用校驗和卸載,這一點尤其有用。

3 CLASSIFY

該模塊允許您設(shè)置skb-> priority( 從而將數(shù)據(jù)包分類為特定的CBQ類)。

--set-class major : minor ,設(shè)置主類和次要類值。即使沒有提供0x前綴,這些值也總是被解釋為十六進制。

4 CLUSTERIP

此模塊允許您配置一個簡單的節(jié)點集群,這些節(jié)點共享特定的IP和MAC地址,而無需在其前面顯式負(fù)載均衡器。連接是靜態(tài)地分布在此集群中的節(jié)點之間的。

--new ,創(chuàng)建一個新的集群IP。對于給定的集群IP,始終必須在第一條規(guī)則上設(shè)置這一項。

--hashmode mode ,指定hash模式,可以是: sourceip sourceip-sourceport , sourceip-sourceport-destport

--clustermac mac ,指定集群IP MAC地址。必須是鏈路層多播地址。

--total-nodes num ,該集群中節(jié)點總數(shù)的數(shù)目。

--local-node num ,此集群中的本地節(jié)點號。

--hash-init rnd ,指定用于哈希初始化的隨機種子。

5 CONNMARK

此模塊設(shè)置與連接關(guān)聯(lián)的netfilter標(biāo)記值。標(biāo)記寬32位。

--set-xmark value [/ mask ] ,將mask定義的為歸零,value定義的位和ctmark異或。

--save-mark [ --nfmask nfmask ] [--ctmask ctmask] ,使用給定的掩碼將數(shù)據(jù)包標(biāo)記(Nfmark)復(fù)制到連接標(biāo)記(Ctmark)。新的nfmark值確定如下:

ctmark = (ctmark & ~ctmask) ^ (nfmark & nfmask)

例如,ctmask定義要清除哪些位,nfmask中要將哪些nfmark為和ctmark進行異或。默認(rèn)為0xFFFFFFFF。

--restore-mark [ --nfmask nfmask] [--ctmask ctmask] ,只有在mangle表中使用。

--and-mark bits ,ctmark和bits進行與操作,助記符:--set-xmark 0/invbits。

--or-mark bits ,ctmark和bits進行或操作,助記符:--set-xmark bits/bits。

--xor-mark bits ,ctmark和bits進行異或操作,助記符:--set-xmark bits/0。

--set-mark value [/ mask ] ,置位連接標(biāo)記。如果指定了掩碼,則只修改掩碼中設(shè)置的位。

--save-mark [ --mask mask ] ,將nfmark復(fù)制到ctmark。如果指定了掩碼,則只復(fù)制這些位。

--restore-mark [ --mask mask ] ,將cctmark復(fù)制到nfmark。如果指定了掩碼,則僅復(fù)制這些位。這在mangle表中是有效的

6 CONNSECMARK

此模塊將安全標(biāo)記從數(shù)據(jù)包復(fù)制到連接(如果沒有標(biāo)記),從連接復(fù)制回數(shù)據(jù)包(也只有在未標(biāo)記的情況下)。通常與SECMARK一起使用,它僅在mangle表中有效。

--save ,如果數(shù)據(jù)包有安全標(biāo)記,如果未標(biāo)記連接,請將其復(fù)制到連接中。

--restore ,如果數(shù)據(jù)包沒有安全標(biāo)記,而連接有安全標(biāo)記,則將安全標(biāo)記從連接復(fù)制到數(shù)據(jù)包。

7 DNAT

此目標(biāo)僅在 nat 表、PREROUTING和OUTPUT鏈以及僅從這些鏈調(diào)用的用戶定義鏈中有效。它指定應(yīng)修改數(shù)據(jù)包的目標(biāo)地址(并且此連接中的所有未來數(shù)據(jù)包也將被破壞),并且應(yīng)該停止檢查規(guī)則。它需要以下一種選擇:

--to-destination [ ipaddr ][- ipaddr ][: port [- port ]] ,它可以指定單個新的目標(biāo)IP地址、包含的IP地址范圍以及可選的端口范圍(只有在規(guī)則還指定“ -p tcp ”或“ -p udp ”時才有效)。如果未指定端口范圍,則永遠(yuǎn)不會修改目標(biāo)端口。如果未指定IP地址,則只修改目標(biāo)端口。

--random ,如果使用選項“--random”,則端口映射將是隨機的(內(nèi)核>=2.6.22)。

--persistent ,為每個連接提供相同的源/目標(biāo)地址。這取代了同一個目標(biāo)。對持久映射的支持可從2.6.29-Rc2中獲得。

8 DSCP

此目標(biāo)允許在IPv 4數(shù)據(jù)包的TOS報頭中更改DSCP位的值。由于這操作一個數(shù)據(jù)包,它只能在mangle表中使用。

--set-dscp value ,將DSCP字段設(shè)置為數(shù)字值(可以是十進制或十六進制)。

--set-dscp-class class ,將DSCP字段設(shè)置為DiffServ類。

9 ECN

這個目標(biāo)允許有選擇地圍繞已知的 ECN 黑洞工作。它只能在mangle表中使用。

--ecn-tcp-remove ,從TCP報頭中刪除所有ECN位。當(dāng)然,它只能與“ -p tcp ”一起使用。

10 LOG

打開匹配數(shù)據(jù)包的內(nèi)核日志記錄。當(dāng)將此選項設(shè)置為規(guī)則時,Linux內(nèi)核將通過內(nèi)核日志(在其中可以使用dmesg或sy d(8)讀取)打印所有匹配數(shù)據(jù)包(如大多數(shù)IP報頭字段)上的一些信息。這是一個“非終止目標(biāo)”,即在下一個規(guī)則中繼續(xù)進行規(guī)則遍歷。因此,如果要記錄拒絕的數(shù)據(jù)包,請使用兩個具有相同匹配條件的單獨規(guī)則,首先使用目標(biāo)日志,然后刪除(或拒絕)。

--log-level level ,日志記錄級別。

--log-prefix prefix ,前綴為指定 prefix 的日志消息;長度可達(dá)29個字母,用于區(qū)分日志中的消息。

--log-tcp-sequence ,記錄TCP序列號。如果用戶可以讀取日志,則這是一種安全風(fēng)險。

--log-tcp-options ,從TCP數(shù)據(jù)包報頭log選項

--log-ip-options ,從IP數(shù)據(jù)包報頭log選項

--log-uid ,記錄生成數(shù)據(jù)包的進程的userid

11 MARK

此目標(biāo)用于設(shè)置與數(shù)據(jù)包關(guān)聯(lián)的Netfilter標(biāo)記值。目標(biāo)只能在mangle表中使用。例如,它可以與基于fwmark的路由一起使用(需要iucte 2)。標(biāo)記字段寬32位。

--set-xmark value [/ mask ] ,將掩碼和XOR值給出的位歸零到數(shù)據(jù)包標(biāo)記(“nfmark”)中。如果省略掩碼,則假定為0xFFFFFFFF。

--set-mark value [/ mask ] ,將掩碼和OR值給出的位歸零到數(shù)據(jù)包標(biāo)記(“nfmark”)中。如果省略掩碼,則假定為0xFFFFFFFF。

--and-mark bits ,將nfmark和 bits 進行與操作,助記符: --set-xmark   0/invbits。

--or-mark bits ,將nfmark和 bits 進行或操作,助記符: --set-xmark   bits/bits。

--xor-mark bits ,將nfmark和 bits 進行異或操作,助記符: --set-xmark   bits/0。

12 MASQUERADE

此目標(biāo)僅在NAT表中的POSTROUTING鏈中有效。它應(yīng)該只用于動態(tài)分配的IP(撥號)連接:如果您有一個靜態(tài)IP地址,則應(yīng)該使用SNAT目標(biāo)。偽裝相當(dāng)于指定一個映射到數(shù)據(jù)包將要輸出的接口的IP地址,但也會導(dǎo)致連接在接口下降時被遺忘。當(dāng)下一個撥號不太可能具有相同的接口地址時,這是正確的行為(因此,任何已建立的連接無論如何都會丟失)。只有一個選擇:

--to-ports port [- port ] ,這指定了要使用的一系列源端口,覆蓋默認(rèn)的SNAT源端口-選擇啟發(fā)式(見上文)。

--random ,隨機化源端口映射,如果使用選項-隨機,則端口映射將是隨機的(內(nèi)核>=2.6.21)。

13 MIRROR

這是一個實驗演示目標(biāo),它反轉(zhuǎn)IP報頭中的源字段和目標(biāo)字段,并重新傳輸數(shù)據(jù)包。它僅在輸入鏈、前向鏈和PREROUTING鏈以及僅從這些鏈調(diào)用的用戶定義鏈中有效。請注意,任何數(shù)據(jù)包過濾鏈、連接跟蹤或NAT都看不到傳出數(shù)據(jù)包,以避免循環(huán)和其他問題。

14 NETMAP

此目標(biāo)允許您靜態(tài)地將整個地址網(wǎng)絡(luò)映射到另一個地址網(wǎng)絡(luò)。它只能從NAT表中的規(guī)則中使用。

--to address [/ mask ] ,要映射到的網(wǎng)絡(luò)地址。生成的地址將以下方式構(gòu)造:掩碼中的所有位都是從新的“地址”中填充的。掩碼中的所有零位都是從原始地址填充的。

15 NFLOG

此目標(biāo)提供匹配數(shù)據(jù)包的日志記錄。當(dāng)為規(guī)則設(shè)置此目標(biāo)時,Linux內(nèi)核將數(shù)據(jù)包傳遞給加載的日志后端以記錄數(shù)據(jù)包。這通常與nfnetlink_log作為日志后端結(jié)合使用,后者將通過NetLink套接字將數(shù)據(jù)包多播到指定的多播組。一個或多個用戶空間進程可以訂閱組以接收分組。與日志一樣,這是一個不終止的目標(biāo),即在下一個規(guī)則中繼續(xù)進行規(guī)則遍歷。

--nflog-group nlgroup ,數(shù)據(jù)包所在的NetLink組(1~2^32-1)(僅適用于nfnetlink_log)。默認(rèn)值為0。

--nflog-prefix prefix ,一個前綴字符串,包含在日志消息中,長度可達(dá)64個字符,用于區(qū)分日志中的消息。

--nflog-range size ,要復(fù)制到用戶空間的字節(jié)數(shù)(僅適用于nfnetlink_log)。nfnetlink_log實例可以指定它們自己的范圍,此選項將重寫它。

--nflog-threshold size ,在將數(shù)據(jù)包發(fā)送到用戶空間(僅適用于nfnetlink_log)之前,要在內(nèi)核中排隊的數(shù)據(jù)包數(shù)。較高的值會減少每個數(shù)據(jù)包的開銷,但會增加延遲,直到數(shù)據(jù)包到達(dá)用戶空間為止。默認(rèn)值為1。

16 NFQUEUE

此目標(biāo)是 QUEUE 目標(biāo)的擴展。與 QUEUE 相反,它允許您將數(shù)據(jù)包放入任何特定隊列中,該隊列由其16位隊列號標(biāo)識。它只能與內(nèi)核版本2.6.14或更高版本一起使用,因為它需要nfnetlink_Queue內(nèi)核支持。隊列平衡選項在Linux2.6.31中添加,隊列旁路在2.6.39中添加。

--queue-num value ,這指定要使用的隊列號。有效隊列號為0至65535。默認(rèn)值為0。

--queue-balance value : value ,這指定要使用的隊列范圍。然后在給定的隊列中平衡數(shù)據(jù)包。

--queue-bypass ,默認(rèn)情況下,如果在NFQUEUE上沒有用戶空間程序偵聽,那么所有要排隊的數(shù)據(jù)包都會被丟棄。當(dāng)使用此選項時,將悄悄繞過NFQUEUE規(guī)則。包將轉(zhuǎn)到下一個規(guī)則。

17 NOTRACK

此目標(biāo)禁用與該規(guī)則匹配的所有數(shù)據(jù)包的連接跟蹤,只能在 raw 表中使用。

18 RATEEST

RATEEST 目標(biāo)收集統(tǒng)計數(shù)據(jù),執(zhí)行速率估計計算,并將結(jié)果保存起來,以便使用最優(yōu)匹配進行以后的評估。

--rateest-name name ,將匹配的數(shù)據(jù)包計數(shù)到按名稱引用的池中,這是可以自由選擇的。

--rateest-interval amount {s|ms|us} ,速率測量間隔,以秒、毫秒或微秒為單位。

--rateest-ewmalog value ,速率測量平均時間常數(shù)。

19 )REDIRECT

此目標(biāo)僅在NAT表、PREROUTING和輸出鏈以及僅從這些鏈調(diào)用的用戶定義鏈中有效。它將數(shù)據(jù)包重定向到機器本身,方法是將目標(biāo)IP更改為傳入接口的主地址(本地生成的數(shù)據(jù)包映射到127.0.0.1地址)。

--to-ports port[-port] ,這將指定要使用的目的端口或端口范圍:否則,目標(biāo)端口將永遠(yuǎn)不會更改。只有配合選項“-p tcp”和“-p udp”才有用。

--random ,如果使用選項“--random”,則端口映射將是隨機的(內(nèi)核>=2.6.22)

20 REJECT

這用于響應(yīng)匹配的數(shù)據(jù)包發(fā)送錯誤數(shù)據(jù)包:否則,它等同于丟棄,因此它是一個終止目標(biāo),結(jié)束規(guī)則遍歷。此目標(biāo)僅在輸入、前向和輸出鏈以及用戶定義的僅從這些鏈調(diào)用的鏈中有效。以下選項控制返回的錯誤數(shù)據(jù)包的性質(zhì):

--reject-with type ,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”。為每個連接提供相同的源/目標(biāo)地址。

--to ipaddr [- ipaddr ] ,要將源映射到的地址。可以為多個范圍指定不止一次。

--nodst ,在選擇新的源-ip時,不要在計算中使用目標(biāo)-ip。

--random ,端口映射將強制隨機化,以避免基于端口預(yù)測的攻擊(內(nèi)核>=2.6.21)。

22 SECMARK

這用于設(shè)置與數(shù)據(jù)包關(guān)聯(lián)的安全標(biāo)記值,以供安全子系統(tǒng)(如SELinux)使用。它只在殘缺表中有效。標(biāo)記寬32位。

--selctx security_context

23 SET

此模塊從ip集中添加和/或刪除可由ipset(8)定義的項。

--add-set setname flag [, flag ...] ,將數(shù)據(jù)包的地址/端口添加到集合中

--del-set setname flag [, flag ...] ,從集合中刪除數(shù)據(jù)包的地址/端口

24 SNAT

此目標(biāo)僅在NAT表中的POSTROUTING鏈中有效。它指定應(yīng)該修改數(shù)據(jù)包的源地址(并且這個連接中的所有未來數(shù)據(jù)包也將被破壞),并且應(yīng)該停止檢查規(guī)則。它需要一種選擇

--to-source ipaddr [- ipaddr ][: port [- port ]] ,它可以指定單個新的源IP地址、包含的IP地址范圍以及可選的端口范圍(只有在規(guī)則還指定-p TCP或-p UDP時才有效)。如果未指定端口范圍,則512以下的源端口將映射到512以下的其他端口:512和1023之間的端口將映射到1024以下的端口,而其他端口將映射到1024或以上端口。如有可能,不會更改端口。

--random ,如果使用了選項“ --random ”,則端口映射將被隨機化(內(nèi)核>=2.6.21)。

--persistent ,為每個連接提供相同的源/目標(biāo)地址。這取代了同一個目標(biāo)。對持久映射的支持可從2.6.29-Rc2中獲得

25 TCPMMS

此目標(biāo)允許更改TCP SYN數(shù)據(jù)包的MSS值,以控制該連接的最大大小(通常將其限制為輸出接口的MTU減去40(ipv4)或者減去60(ipv6)。當(dāng)然,它只能與-p TCP一起使用。它僅在mangle表中有效。

該目標(biāo)用于克服阻礙“ICMP碎片需要”或“ICMPv 6數(shù)據(jù)包太大”數(shù)據(jù)包的犯罪行為。這個問題的癥狀是,Linux防火墻/路由器的所有功能都很好,但是它背后的機器永遠(yuǎn)不能交換大數(shù)據(jù)包:Web瀏覽器連接,然后掛起沒有收到的數(shù)據(jù);小郵件工作正常,但大型電子郵件掛著;SSH工作正常,但scp在初次握手后掛起。

解決辦法:激活此選項并將規(guī)則添加到防火墻配置中,如

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

--set-mss value ,顯式地將MSS選項設(shè)置為指定的值。如果數(shù)據(jù)包的MSS已經(jīng)低于值,則不會增加(從Linux2.6.25開始),以避免主機依賴適當(dāng)?shù)腗SS出現(xiàn)更多問題

--clamp-mss-to-pmtu ,自動將MSS值夾到(IPv4的PATH_MTU-40;IPv 6的PATH_MTU-60)。

26 TCPOPTSTRIP

此目標(biāo)將從TCP數(shù)據(jù)包中刪除TCP選項。(它實際上將以無操作代替。)因此,您需要添加“ -p tcp ”參數(shù)。

--strip-options option [, option ...] ,去掉給定的選項。這些選項可以由TCP選項號或符號名稱指定。可以通過使用“ -j TCPOPTSTRIP -h ”調(diào)用iptable來獲得可識別選項的列表。

27 TOS

此模塊在IPv 4報頭中設(shè)置服務(wù)類型字段(包括“優(yōu)先級”位)或在IPv 6報頭中設(shè)置優(yōu)先級字段。注意,TOS與DSCP和ECN共享相同的位。tos目標(biāo)僅在mangle表中有效。

--set-tos value [/ mask ] ,將掩碼和XOR值給出的位歸零到TOS/Priority字段中。如果省略掩碼,則假定為0 xff。

--set-tos symbol ,在為IPv4使用TOS目標(biāo)時,可以指定一個符號名。它暗示了0xFF的掩碼。可以通過使用“ -j TOS -h ”調(diào)用iptables來獲得已識別的TOS名稱的列表。

--and-tos bits , bits 和TOS執(zhí)行與操作。(助記符用于“--set-tos 0/invbits”,其中inbit是位的二進制否定。)

--or-tos bits , bits 和TOS執(zhí)行或操作。

--xor-tos bits , bits 和TOS執(zhí)行異或操作。

28 TPROXY

此目標(biāo)僅在mangle表、PREROUTING鏈和用戶定義鏈中有效,這些鏈僅從該鏈調(diào)用。它將數(shù)據(jù)包重定向到本地套接字,而不以任何方式更改數(shù)據(jù)包報頭。它還可以更改標(biāo)記值,然后在高級路由規(guī)則中使用。它有三個選項:

--on-port port ,這指定要使用的目標(biāo)端口。這是必需的選項,0表示新的目標(biāo)端口與原始端口相同。這只有在規(guī)則還指定“ -p tcp “或” -p udp “時才有效。

--on-ip address ,這指定要使用的目標(biāo)地址。默認(rèn)情況下,該地址是傳入接口的ip地址。這只有在規(guī)則還指定“ -p tcp “或” -p udp “時才有效。

--tproxy-mark value [/ mask ] ,用給定的值/掩碼標(biāo)記數(shù)據(jù)包。這里的fwmark值集可以被高級路由使用。(透明代理工作所必需的:否則這些數(shù)據(jù)包將被轉(zhuǎn)發(fā),這可能不是您想要的。)

29 TRACE

此目標(biāo)標(biāo)記Packes,以便內(nèi)核在遍歷表、鏈、規(guī)則時記錄與數(shù)據(jù)包匹配的每條規(guī)則。(日志記錄需要ipt_log或ip6t_log模塊)。數(shù)據(jù)包以字符串前綴記錄:“TRACE:tablename:chainname:type:ruenum”,其中type可以是普通規(guī)則的“rule”,用戶定義的鏈末尾的隱式規(guī)則可以是“return”,內(nèi)置鏈的策略可以是“policy”。

只能在raw表中使用。

 

30 TTL

這用于修改IPv 4 TTL頭字段。TTL字段確定數(shù)據(jù)包可以遍歷多少跳(路由器),直到超過生存時間。設(shè)置或遞增ttl字段可能非常危險,因此應(yīng)不惜任何代價加以避免。不要在離開本地網(wǎng)絡(luò)的數(shù)據(jù)包上設(shè)置或增加值!

--ttl-set value ,設(shè)置TTL值為 value

--ttl-dec value ,減少TTL的值 value 次。

--ttl-inc value ,增加TTL的值 value 次。

 

31 ULOG

此目標(biāo)提供匹配數(shù)據(jù)包的用戶空間日志記錄。當(dāng)為規(guī)則設(shè)置此目標(biāo)時,Linux內(nèi)核將通過NetLink套接字對此數(shù)據(jù)包進行多播。然后,一個或多個用戶空間進程可以訂閱各種多播組并接收分組。與日志一樣,這是一個“不終止的目標(biāo)”,即在下一個規(guī)則中繼續(xù)進行規(guī)則遍歷。

--ulog-nlgroup nlgroup ,這指定了將數(shù)據(jù)包發(fā)送到的netlink組(1-32)。默認(rèn)值為1

--ulog-prefix prefix ,前綴為指定前綴的日志消息;長度可達(dá)32個字符,用于區(qū)分日志中的消息。

--ulog-cprange size ,要復(fù)制到用戶空間的字節(jié)數(shù)。值為0總是復(fù)制整個數(shù)據(jù)包,而不考慮其大小。默認(rèn)值為0

--ulog-qthreshold size ,內(nèi)核中要排隊的數(shù)據(jù)包數(shù)。例如,將此值設(shè)置為10,在內(nèi)核內(nèi)累加10個數(shù)據(jù)包,并將它們作為一個NetLink多部分消息傳輸?shù)接脩艨臻g。默認(rèn)值為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數(shù)據(jù)包

[root@localhost ~]#  iptables -t filter -A INPUT -p tcp --dport 135 -j DROP          // 添加記錄,忽略 135 端口的 tcp 數(shù)據(jù)包

 

[root@localhost ~]#  iptables –L         // 查看表,已經(jīng)加入規(guī)則

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 

DROP       tcp  --  anywhere             anywhere            tcp dpt:epmap 

3 )禁止目標(biāo)地址訪問本機

[root@localhost ~]#  iptables -A INPUT -s 192.168.1.110 -j DROP                           // 禁止 110 地址訪問本機

[root@localhost ~]#  iptables -L |grep DROP                                                  // 查看 filter 表,已經(jīng)添加記錄

DROP       tcp  --  anywhere             anywhere            tcp dpt:epmap 

DROP       all  --  192.168.1.110        anywhere   

 

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI