配置參考資料_第1頁(yè)
配置參考資料_第2頁(yè)
配置參考資料_第3頁(yè)
配置參考資料_第4頁(yè)
配置參考資料_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、nftables配置一、概述nftables包過(guò)濾框架歷史小解:nftables配置詳解:此文檔的內(nèi)容是根據(jù)上面的nftables配置詳解的鏈接進(jìn)行翻譯整理的,有些地方可能有錯(cuò)誤,對(duì)于有問題的地方,可以去上面的英文網(wǎng)站查詢,同時(shí)對(duì)于一些不需要了解的內(nèi)容,在文中只給出了鏈接。nftables配置分為表、鏈、規(guī)則三個(gè)層次,示例如下:table ip filter/表 chain input/鏈 type filter hook input priority 0;/規(guī)則 chain output/鏈 type filter hook output priority 0; /規(guī)則 ip daddr g

2、oogle-public-dns- counter packets 0 bytes 0;/規(guī)則 二、基本操作2.1、配置表、刪除表使用命令:% nft delete table ip foo功能說(shuō)明:刪除整個(gè)表其他備注:上述命令適用于內(nèi)核版本3.18及其之后的版本,但是,在此之前的版本,你需要先刪除它的內(nèi)容,否則你講遇到類似下面這樣的錯(cuò)誤提示:% nft delete table filter<cmdline>:1:1-19: Error: Could not delete table: Device or resource busydelete table filter2.1.2

3、、flush表使用命令:% nft flush table ip filter功能說(shuō)明:刪除屬于ip filter表的所有規(guī)則其他備注:這將刪除你注冊(cè)在這個(gè)表中每條鏈所有的規(guī)則2.2、配置鏈在iptables中,你附加你的鏈。然而,與iptables模式操作相反,nftables基礎(chǔ)結(jié)構(gòu)沒有預(yù)定義鏈,因此您需要首先注冊(cè)您的基礎(chǔ)鏈,然后才能添加任何規(guī)則。這允許非常靈活的配置。、添加基礎(chǔ)鏈添加基礎(chǔ)鏈的語(yǔ)法如下:% nft add chain <family> <table-name> <chain-name> type <type> hook <

4、;hook> priority <value> ; 基礎(chǔ)鏈?zhǔn)亲?cè)到Netfilter鉤子中的那些,即。這些鏈看到通過(guò)您的Linux TCP / IP堆棧的數(shù)據(jù)包。以下示例顯示如何通過(guò)以下命令向foo表添加新基礎(chǔ)鏈:% nft add chain ip foo input type filter hook input priority 0 ; 重要:如果從bash運(yùn)行此命令,則必須轉(zhuǎn)義分號(hào)。此命令注冊(cè)輸入鏈,它附加到輸入鉤子,因此它將看到尋址到本地進(jìn)程的數(shù)據(jù)包。優(yōu)先級(jí)很重要,因?yàn)樗鼪Q定了鏈的順序,因此,如果你在輸入鉤子有幾個(gè)鏈,你可以決定哪一個(gè)在另一個(gè)之前看到的數(shù)據(jù)包。如果你想

5、使用nftables來(lái)過(guò)濾桌面Linux計(jì)算機(jī)的流量,即。一臺(tái)不轉(zhuǎn)發(fā)流量的計(jì)算機(jī),也可以注冊(cè)輸出鏈:% nft add chain ip foo output type filter hook output priority 0 ; 現(xiàn)在,您可以篩選傳入(定向到本地進(jìn)程)和傳出(由本地進(jìn)程生成)流量。重要說(shuō)明:如果不包括大括號(hào)中指定的規(guī)則配置,則創(chuàng)建的非基本規(guī)則將不會(huì)看到任何數(shù)據(jù)包(類似于iptables -N chain-name)。對(duì)于nftables 0.5,您還可以像iptables中一樣指定基本規(guī)則的默認(rèn)策略:% nft add chain ip foo output type fi

6、lter hook output priority 0 ; policy accept; 在iptables中,兩個(gè)可能的默認(rèn)策略是接受(accept)和刪除(drop)。在入口鉤上添加規(guī)則時(shí),必須指定規(guī)則將要連接的設(shè)備:% nft add chain netdev foo dev0 filter type filter hook ingress device eth0 priority 0 ; 、基本鏈類型可能的規(guī)則類型是:filter:這顯然是用來(lái)過(guò)濾數(shù)據(jù)包。 這是由arp,bridge,ip,ip6和inet表系列支持的。route:如果任何相關(guān)的IP報(bào)頭字段或數(shù)據(jù)包標(biāo)記被修改,用于重新

7、路由數(shù)據(jù)包。 如果你熟悉iptables,這個(gè)鏈類型為mangle表提供了等價(jià)的語(yǔ)義,但只為輸出鉤子(對(duì)于其他鉤子使用類型過(guò)濾器)。 這由ip和ip6表系列支持。nat:用于執(zhí)行網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)。 屬于流的第一個(gè)分組總是命中此鏈,不跟蹤分組。 因此,切勿使用此鏈進(jìn)行過(guò)濾。 這由ip和ip6表系列支持。配置規(guī)則時(shí)可以使用的可能鉤子有:prerouting:這些數(shù)據(jù)包的路由決定還沒有發(fā)生,因此您不知道它們是否尋址到本地或遠(yuǎn)程系統(tǒng)。input:它發(fā)生在路由決策之后,您可以看到定向到本地系統(tǒng)和在系統(tǒng)中運(yùn)行的進(jìn)程的數(shù)據(jù)包。forward:它也發(fā)生在路由決策之后,可以看到?jīng)]有定向到本地機(jī)器的數(shù)據(jù)包。

8、output:以捕獲源自本地機(jī)器中的進(jìn)程的分組。postrouting:在離開本地系統(tǒng)的數(shù)據(jù)包的路由決定以后。ingress:(僅在netdev系列上可用):從Linux內(nèi)核4.2開始,在數(shù)據(jù)包從NIC驅(qū)動(dòng)程序傳遞之后,您可以在預(yù)先路由之前過(guò)濾流量。所以你有一個(gè)tc的替代。優(yōu)先級(jí)可用于對(duì)鏈進(jìn)行排序或在某些Netfilter內(nèi)部操作之前或之后進(jìn)行排序。 例如,具有優(yōu)先級(jí)-300的預(yù)路由掛鉤上的鏈將在連接跟蹤操作之前放置。作為參考,這里是iptables中使用的不同優(yōu)先級(jí)的列表:NF_IP_PRI_CONNTRACK_DEFRAG (-400):碎片整理的優(yōu)先級(jí)NF_IP_PRI_RAW (-30

9、0):傳統(tǒng)優(yōu)先級(jí)的原始表放置在連接跟蹤操作之前NF_IP_PRI_SELINUX_FIRST (-225): SELinux操作NF_IP_PRI_CONNTRACK (-200): 連接跟蹤操作NF_IP_PRI_MANGLE (-150): 軋制操作NF_IP_PRI_NAT_DST (-100): 目的NATNF_IP_PRI_FILTER (0): 過(guò)濾操作,過(guò)濾表NF_IP_PRI_SECURITY (50): 可以設(shè)置SECmark的安全表的位置NF_IP_PRI_NAT_SRC (100): 源 NATNF_IP_PRI_SELINUX_LAST (225): SELinux在數(shù)

10、據(jù)包出口NF_IP_PRI_CONNTRACK_HELPER (300): 出口處的連接跟蹤、添加非基礎(chǔ)鏈您還可以通過(guò)以下方式在iptables中創(chuàng)建非基本規(guī)則:% nft add chain ip foo test請(qǐng)注意,此鏈不會(huì)看到任何流量,因?yàn)樗桓郊拥饺魏螔煦^,但通過(guò)使用跳轉(zhuǎn)到鏈的操作來(lái)安排您的規(guī)則集到鏈的樹中可能非常有用。、刪除鏈您可以刪除不需要的鏈,例如。% nft delete chain ip foo input唯一的條件是你想要?jiǎng)h除的鏈需要是空的,否則內(nèi)核會(huì)告訴你這個(gè)鏈?zhǔn)窃谑褂谩? nft delete chain ip foo input<cmdline>:1:

11、1-28: Error: Could not delete chain: Device or resource busydelete chain ip foo input您必須先清除該鏈中的規(guī)則集,然后才能刪除鏈。、清除鏈您還可以清除鏈的內(nèi)容。 如果要清除foo表input鏈中的所有規(guī)則,則必須鍵入:nft flush chain foo input、示例示例配置:過(guò)濾流量的獨(dú)立計(jì)算機(jī)您可以創(chuàng)建具有兩個(gè)基本鏈的表,以定義規(guī)則,從而過(guò)濾來(lái)自和離開您計(jì)算機(jī)的流量,假定IPv4連接:% nft add table ip filter% nft add chain ip filter input ty

12、pe filter hook input priority 0 ; % nft add chain ip filter output type filter hook output priority 0 ; 現(xiàn)在,您可以開始將規(guī)則附加到這兩個(gè)基礎(chǔ)鏈上。 請(qǐng)注意,在這種情況下,您不需要正向鏈,因?yàn)楸臼纠僭O(shè)您正在配置nftable來(lái)過(guò)濾不作為路由器的獨(dú)立計(jì)算機(jī)的流量。2.3、簡(jiǎn)單的規(guī)則管理、追加新規(guī)則要添加新規(guī)則,必須指定要使用的相應(yīng)表和鏈,例如。% nft add rule filter output ip daddr counter其中filter是表,output是鏈。上面

13、的示例添加了一個(gè)規(guī)則來(lái)匹配由目標(biāo)為的輸出鏈所看到的所有數(shù)據(jù)包,以便在匹配時(shí)更新規(guī)則計(jì)數(shù)器。 注意,計(jì)數(shù)器在nftables中是可選的。對(duì)于那些熟悉iptables的用戶,規(guī)則追加相當(dāng)于iptables中的-A命令。、查看規(guī)則您可以使用以下命令列出表中包含的規(guī)則:% nft list table filtertable ip filter chain input type filter hook input priority 0; chain output type filter hook output priority 0; ip daddr google-public-dns- counte

14、r packets 0 bytes 0 假設(shè)我們還添加了一個(gè)使用端口的規(guī)則:% nft add rule filter output tcp dport ssh counter您可以使用-n選項(xiàng)禁用主機(jī)名解析:% nft list -n table filtertable ip filter chain input type filter hook input priority 0; chain output type filter hook output priority 0; ip daddr counter packets 0 bytes 0 tcp dport ssh

15、counter packets 0 bytes 0 您還可以通過(guò)-nn禁用服務(wù)名稱解析:% nft list -nn table filtertable ip filter chain input type filter hook input priority 0; chain output type filter hook output priority 0; ip daddr counter packets 0 bytes 0 tcp dport 22 counter packets 0 bytes 0 、測(cè)試你的規(guī)則讓我們用一個(gè)簡(jiǎn)單的ping到測(cè)試這個(gè)規(guī)則:PING 8.

16、8.8.8 () 56(84) bytes of data.64 bytes from : icmp_req=1 ttl=64 time=1.31 ms然后,如果我們列出規(guī)則集,我們獲得:% nft -nn list table filtertable ip filter chain input type filter hook input priority 0; chain output type filter hook output priority 0; ip daddr counter packets 1 bytes 84 tcp dport

17、 22 counter packets 0 bytes 0 請(qǐng)注意,計(jì)數(shù)器已更新。、在給定位置添加規(guī)則如果要在給定位置添加規(guī)則,則必須使用句柄作為參考:% nft list table filter -n -atable filter chain output type filter hook output priority 0; ip protocol tcp counter packets 82 bytes 9680 # handle 8 ip saddr ip daddr drop # handle 7 如果要在處理程序編號(hào)為8的規(guī)則之后添加規(guī)則,

18、則必須鍵入:% nft add rule filter output position 8 ip daddr drop現(xiàn)在,您可以通過(guò)列出規(guī)則集來(lái)檢查該命令的效果:% nft list table filter -n -atable filter chain output type filter hook output priority 0; ip protocol tcp counter packets 190 bytes 21908 # handle 8 ip daddr drop # handle 10 ip saddr ip

19、daddr drop # handle 7 如果要在具有處理程序編號(hào)8的規(guī)則之前插入規(guī)則,則必須鍵入:% nft insert rule filter output position 8 ip daddr drop、刪除規(guī)則您必須通過(guò)-a選項(xiàng)獲取刪除規(guī)則的句柄。 句柄由內(nèi)核自動(dòng)分配,它唯一地標(biāo)識(shí)規(guī)則。% nft list table filter -atable ip filter chain input type filter hook input priority 0; chain output type filter hook output pri

20、ority 0; ip daddr counter packets 1 bytes 84 # handle 5 可以使用以下命令刪除句柄為5的規(guī)則:% nft delete rule filter output handle 5注意:有計(jì)劃通過(guò)傳遞以支持刪除規(guī)則:% nft delete rule filter output ip saddr counter但這還沒有實(shí)現(xiàn)。 因此,您必須使用句柄來(lái)刪除規(guī)則,直到實(shí)現(xiàn)該特性。、刪除一條鏈中的所有規(guī)則您可以使用以下命令刪除鏈中的所有規(guī)則:% nft delete rule filter output您

21、還可以使用以下命令刪除表中的所有規(guī)則:% nft flush table filter、在最前面添加新規(guī)則要通過(guò)insert命令預(yù)先添加新規(guī)則:% nft insert rule filter output ip daddr counter這預(yù)先附加了一個(gè)規(guī)則,該規(guī)則將針對(duì)尋址到的流量更新每個(gè)規(guī)則包和字節(jié)計(jì)數(shù)器。在iptables中的等價(jià)是:請(qǐng)注意,iptables總是提供每個(gè)規(guī)則的計(jì)數(shù)器。、替換規(guī)則您可以通過(guò)指定規(guī)則句柄通過(guò)replace命令替換任何規(guī)則。 因此,首先必須列出帶有選項(xiàng)-a的規(guī)則集,以獲取規(guī)則句柄。# nft list ruleset -atable i

22、p filter chain input type filter hook input priority 0; policy accept; ip protocol tcp counter packets 0 bytes 0 # handle 2 然后,假設(shè)您想要使用句柄號(hào)2替換規(guī)則,則必須指定此句柄號(hào)和要放置的新規(guī)則,而不是它:nft replace rule filter input handle 2 counter然后,當(dāng)列出規(guī)則集時(shí):# nft list ruleset -atable ip filter chain input counter packets 0 bytes 0 您可

23、以有效地注意到,該規(guī)則已被替代為計(jì)數(shù)任何數(shù)據(jù)包的簡(jiǎn)單規(guī)則,而不是如前面的規(guī)則那樣計(jì)數(shù)TCP數(shù)據(jù)包。2.4、原子規(guī)則替換您可以使用-f選項(xiàng)自動(dòng)更新規(guī)則集:% nft -f file其中file包含您的規(guī)則集您可以通過(guò)將現(xiàn)有列表存儲(chǔ)在文件中來(lái)保存規(guī)則集,即。% nft list table filter > filter-table然后,您可以使用-f選項(xiàng)恢復(fù)它:% nft -f filter-table如果您在過(guò)濾器表文件的最開始處預(yù)置flush表過(guò)濾器行,您將實(shí)現(xiàn)原子規(guī)則集替換,等同于iptables-restore提供的內(nèi)容。注意,內(nèi)核在一個(gè)事務(wù)中處理文件中的規(guī)則命令,因此基本上新規(guī)則

24、的刷新和加載發(fā)生在一個(gè)單獨(dú)的事務(wù)中。有些人喜歡用規(guī)則集來(lái)維護(hù)一個(gè)shell腳本文件。注意這種方法,你不能使用shell腳本文件來(lái)實(shí)現(xiàn)原子規(guī)則集更新。 因此,最好的方法是使用本機(jī)nftables腳本功能,并通過(guò)nft -f恢復(fù)規(guī)則集。2.5、從命令行報(bào)告錯(cuò)誤當(dāng)您使用錯(cuò)誤的數(shù)據(jù)類型時(shí),nft命令行實(shí)用程序會(huì)嘗試幫助您。以下示例顯示如果將IPv4地址作為TCP端口傳遞,則錯(cuò)誤輸出。% nft add rule filter input tcp dport counter drop<cmdline>:1:33-39: Error: Could not resolve ser

25、vice: Servname not supported for ai_socktypeadd rule filter input tcp dport counter drop如果命令不完整,典型輸出如下:% nft add rule filter input tcp dport<cmdline>:1:32-32: Error: syntax error, unexpected end of fileadd rule filter input tcp dport2.6、通過(guò)表達(dá)式構(gòu)建規(guī)則nftables提供以下內(nèi)置操作:NE表示不相等,或者你可以使用!=LT表示小于

26、,或者你可以使用<GT表示大于,或者你可以使用>LE表示小于等于,或者你可以使用<=GE表示大于等于,或者你可以使用>=注意:如果您使用來(lái)自shell的符號(hào)<和>,因?yàn)樗鼤?huì)將它們分別解釋為標(biāo)準(zhǔn)輸入和輸出重定向。 你需要逃避他們,例如。 <。以下示例顯示如何匹配未到端口TCP / 22的所有傳入流量。nft add rule filter input tcp dport != 22同樣,您也可以使用以下命令匹配到達(dá)高端口的流量:nft add rule filter input tcp dport >= 10242.7、規(guī)則集級(jí)別的操作、使用原生n

27、ft語(yǔ)法Linux Kernel 3.18包括一些有關(guān)管理您的規(guī)則集作為一個(gè)整體的可用操作的改進(jìn)。1、查看規(guī)則集清單列出完整的規(guī)則集% nft list ruleset列出每個(gè)系列的規(guī)則集% nft list ruleset arp % nft list ruleset ip % nft list ruleset ip6 % nft list ruleset bridge % nft list ruleset inet這些命令將打印給定系列的所有表/鏈/集/規(guī)則。2、刪除規(guī)則集此外,您還可以沖洗(擦除,刪除,擦除)完整的規(guī)則集:% nft flush ruleset也適用于每個(gè)系列:% nft

28、 flush ruleset arp % nft flush ruleset ip % nft flush ruleset ip6 % nft flush ruleset bridge % nft flush ruleset inet3、備份和還原您可以組合以上兩個(gè)命令來(lái)備份您的規(guī)則集:% echo "nft flush ruleset" > backup.nft % nft list ruleset >> backup.nft并原子加載:% nft -f backup.nft4、以XML或JSON格式您還可以以XML或JSON格式導(dǎo)出規(guī)則集。% nft

29、export xml > ruleset.xml % nft export json > ruleset.json注意,導(dǎo)出操作輸出所有家庭(ip,ip6,inet,arp,bridge)的所有表。2.8、監(jiān)視規(guī)則集更新nft可以通過(guò)以下方式顯示規(guī)則集更新的通知:% nft monitor這將訂閱任何種類的規(guī)則集更新。您可以按以下類型過(guò)濾掉事件:object: tables, chains, rules, sets and elements.event: new and destroy.輸出格式可以是:plain text (ie. native nft format)xmljso

30、n以下示例顯示了如何跟蹤規(guī)則更新:% nft monitor rules如果您只想接收新規(guī)則:% nft monitor new rules有點(diǎn)更發(fā)達(dá)的例子在終端中鍵入以下內(nèi)容:term1% nft monitor從不同的終端,如果你鍵入:term2% nft add table inet filter term2% nft add chain inet filter forward term2% nft add rule inet filter forward counter accept term2% nft flush table inet filter forward term2% n

31、ft flush ruleset然后,如果你回到term1,你會(huì)看到:term1% nft monitor add table inet filter add chain inet filter forward add rule inet filter forward counter packets 0 bytes 0 accept delete rule inet filter forward handle 4 delete chain inet filter forward delete table inet filter2.9、腳本三、數(shù)據(jù)包匹配支持的選項(xiàng)3.1、匹配數(shù)據(jù)包報(bào)頭字段nft

32、命令行實(shí)用程序支持以下的第4層協(xié)議:AH,ESP,UDP,UDPlite,TCP,DCCP,SCTP和IPComp。、匹配傳輸協(xié)議以下規(guī)則顯示如何匹配任何類型的TCP流量:% nft add rule filter output ip protocol tcp、匹配以太網(wǎng)頭字段如果要匹配目標(biāo)地址為ff:ff:ff:ff:ff:ff的以太網(wǎng)流量,可以鍵入以下命令:% nft add rule filter input ether daddr ff:ff:ff:ff:ff:ff counter不要忘記,第2層頭信息僅在input路徑中可用。、匹配IPv4報(bào)頭字段您還可以根據(jù)IPv4源和目標(biāo)匹配流量

33、,以下示例顯示如何計(jì)入來(lái)自并且發(fā)往的所有流量:% nft add rule filter input ip saddr 00 ip daddr counter請(qǐng)注意,由于規(guī)則附加到輸入鏈,本地機(jī)器需要使用地址,否則您將看不到任何匹配的;-)。要過(guò)濾像TCP這樣的第4層協(xié)議,可以使用protocol關(guān)鍵字:% nft add rule filter input protocol tcp counter、匹配Ipv6標(biāo)頭字段如果要計(jì)算尋址到abdc : 100的IPv6流量,可以鍵入以下命令:% nft add rule filter output i

34、p6 daddr abcd:100 counter要過(guò)濾像TCP這樣的第4層協(xié)議,可以使用nexthdr關(guān)鍵字:% nft add rule filter input ip6 nexthdr tcp counter不要忘記創(chuàng)建一個(gè)ip6表并注冊(cè)相應(yīng)的鏈來(lái)運(yùn)行下面的例子:、匹配TCP / UDP / UDPlite流量以下示例顯示如何丟棄低TCP端口(1-1024)的所有tcp流量:% nft add rule filter input tcp dport 1-1024 counter drop請(qǐng)注意,此規(guī)則使用間隔(從1到1024)要匹配TCP標(biāo)志,需要使用二進(jìn)制操作。 例如,要計(jì)數(shù)非SYNC

35、的數(shù)據(jù)包:% nft add rule filter input tcp flags != syn counter可以使用更復(fù)雜的過(guò)濾器。 例如,要計(jì)數(shù)和記錄標(biāo)志SYN和ACK設(shè)置的TCP數(shù)據(jù)包:% nft -inft> add rule filter output tcp flags & (syn | ack) = syn | ack counter log、匹配ICMP流量您可以通過(guò)以下方式刪除所有ICMP回顯請(qǐng)求(通常稱為ping):% nft add rule filter input icmp type echo-request counter drop這里是可用的ic

36、mp類型的列表:名稱說(shuō)明echo-reply回聲應(yīng)答destination-unreachable目的地不可達(dá)source-quench來(lái)源淬火redirect重定向echo-requesttime-exceeded時(shí)間超過(guò)parameter-problem參數(shù)問題timestamp-request時(shí)間戳請(qǐng)求timestamp-reply時(shí)間戳回復(fù)info-request信息請(qǐng)求info-reply信息回復(fù)address-mask-request地址掩碼請(qǐng)求address-mask-reply地址掩碼回復(fù)3.2、匹配數(shù)據(jù)包元信息nftables附帶了分組元信息選擇器,您可以使用它來(lái)匹配存儲(chǔ)在網(wǎng)

37、絡(luò)數(shù)據(jù)包中的元信息。、元選擇器您可以匹配的當(dāng)前元信息是:接口設(shè)備名稱和接口設(shè)備索引: iifname, oifname, iif and oif.接口類型: iiftyte and oiftype.TC手柄: priority.socket user and group標(biāo)識(shí): skuid and skgid.包長(zhǎng)度: length.、按接口名稱匹配數(shù)據(jù)包您可以使用以下選擇器來(lái)匹配接口名稱:iifname,用來(lái)匹配輸入網(wǎng)絡(luò)接口名稱。oifname,用來(lái)匹配輸出網(wǎng)絡(luò)接口名稱。IIF,用來(lái)匹配網(wǎng)絡(luò)接口名稱的接口索引。 這比iifname快,因?yàn)樗恍枰容^一個(gè)32位無(wú)符號(hào)整數(shù)而不是一個(gè)字符串。 接口

38、索引是動(dòng)態(tài)分配的,因此不要將其用于動(dòng)態(tài)創(chuàng)建和銷毀的接口,例如。 ppp0。OIF, 像iif,但它匹配輸出網(wǎng)絡(luò)接口索引。接口名稱的示例用法如下:% nft add rule filter input meta oifname lo accept此規(guī)則接受環(huán)回偽設(shè)備lo的所有流量。、按包標(biāo)記匹配數(shù)據(jù)包您可以使用以下規(guī)則匹配標(biāo)記為123的數(shù)據(jù)包:nft add rule filter output meta mark 123 counter、匹配數(shù)據(jù)包的套接字UID您可以使用您的用戶名來(lái)匹配流量,例如。% nft add rule filter output meta skuid pablo co

39、unter或者在給定用戶的/ etc / passwd中沒有條目的情況下,使用32位無(wú)符號(hào)整數(shù)(UID)。% nft add rule filter output meta skuid 1000 counter讓我們只是生成一些HTTP流量來(lái)測(cè)試此規(guī)則:然后,如果檢查計(jì)數(shù)器,您可以驗(yàn)證數(shù)據(jù)包是否匹配該規(guī)則。% nft list table filtertable ip filter chain output type filter hook output priority 0; skuid pablo counter packets 7 bytes 510 chain input type f

40、ilter hook input priority 0; 重要:請(qǐng)注意,如果您使用ping測(cè)試,通常使用suid安裝,以便流量匹配root用戶(uid = 0)。3.3、匹配連接跟蹤狀態(tài)元信息正如在iptables中一樣,您可以匹配Netfilter通過(guò)連接跟蹤系統(tǒng)收集的狀態(tài)跟蹤信息(有時(shí)稱為conntrack或ct信息)以部署狀態(tài)防火墻。、匹配conntrack信息nftables提供了ct選擇器,可以用來(lái)匹配:1、狀態(tài)信息: new, established, related and invalid.在這方面,與iptables沒有改變;2、conntrack 的標(biāo)志;、匹配狀態(tài)信息以下示

41、例說(shuō)明如何使用nftables部署極為簡(jiǎn)單的狀態(tài)防火墻:nft add rule filter input ct state established,related counter accept #1nft add rule filter input counter drop #2規(guī)則1允許作為與網(wǎng)絡(luò)已經(jīng)建立的通信的一部分的分組。 因此,從網(wǎng)絡(luò)中的計(jì)算機(jī)到達(dá)您的計(jì)算機(jī)的任何嘗試將被刪除。 但是,作為您已啟動(dòng)的流的一部分的流量將被接受。 請(qǐng)注意,上面的示例使用逗號(hào)分隔的您要匹配的狀態(tài)列表。如果你不熟悉Netfilter數(shù)據(jù)流狀態(tài)機(jī),可以快速閱讀一下:、匹配conntrack標(biāo)記以下示例顯示如何根

42、據(jù)conntrack標(biāo)記匹配數(shù)據(jù)包:nft add rule filter input ct mark 123 counter要了解更多的關(guān)于鏈接跟蹤標(biāo)記和標(biāo)記數(shù)據(jù)包,請(qǐng)查閱下面鏈接:3.4、速率限制匹配您可以通過(guò)限速對(duì)流量進(jìn)行限制。以下示例顯示如何每秒接受最多10個(gè)ICMP回顯請(qǐng)求數(shù)據(jù)包:% nft add rule filter input icmp type echo-request limit rate 10/second accept從Linux內(nèi)核4.3,你也可以ratelimit每個(gè)字節(jié):% nft add rule filter input limit rate 10 mbyt

43、es/second accept以上規(guī)則接受低于10 mbytes /秒速率的流量。您還可以使用burst參數(shù)指示可以超過(guò)速率限制的數(shù)據(jù)包/字節(jié)數(shù):% nft add rule filter input limit rate 10 mbytes/second burst 9000 kbytes accept這表示您可以超過(guò)9000 kbytes的時(shí)候進(jìn)行速率限制。您還可以將其用于數(shù)據(jù)包:% nft add rule filter input icmp type echo-request limit rate 10/second burst 2 packets counter accept所以你

44、可以超過(guò)2包每秒后進(jìn)行速率限制。限制表達(dá)式,您可以將其用于來(lái)自入口的流量監(jiān)管,作為來(lái)自新netdev系列的tc的替代。四、對(duì)數(shù)據(jù)包支持的處理措施4.1、接受和丟棄數(shù)據(jù)包、丟棄數(shù)據(jù)包您可以使用drop選項(xiàng)丟棄數(shù)據(jù)包。 請(qǐng)注意,drop是一個(gè)終止操作,因此您無(wú)法在其后添加任何其他操作(此操作放在其他所有操作之后)。nft add rule filter output drop請(qǐng)注意,當(dāng)測(cè)試這個(gè),你可能會(huì)失去任何互聯(lián)網(wǎng)連接:-)。、接受包接受任何類型流量的簡(jiǎn)單規(guī)則是:nft add rule filter output accept您可以向該規(guī)則添加計(jì)數(shù)器:nft add rule filter o

45、utput counter accept因此,您可以觀看所有流量實(shí)際接受:nft list table filtertable ip filter chain output type filter hook output priority 0; counter packets 1 bytes 84 accept 4.2、跳到鏈像iptables一樣,你可以使用鏈的樹來(lái)構(gòu)造你的規(guī)則集。 為此,您首先需要通過(guò)以下方式創(chuàng)建自定義鏈:% nft add chain ip filter tcp-chain上面的示例創(chuàng)建了tcp鏈,將用于添加規(guī)則以過(guò)濾tcp流量,例如。% nft add rule ip

46、filter input ip protocol tcp jump tcp-chain我們可以添加一個(gè)簡(jiǎn)單的規(guī)則到tcp-chain來(lái)計(jì)算包和字節(jié):% nft add rule ip filter tcp-chain counter列表應(yīng)該顯示:% nft list table filtertable ip filter chain input type filter hook input priority 0; ip protocol tcp jump tcp-chain chain tcp-chain counter packets 8 bytes 2020 計(jì)數(shù)器應(yīng)通過(guò)生成簡(jiǎn)單的TCP流

47、量來(lái)更新。注意:您只能跳轉(zhuǎn)到非基本鏈。、jump與goto請(qǐng)注意jump和goto之間的區(qū)別。1、如果使用jump來(lái)獲取在另一個(gè)鏈中處理的數(shù)據(jù)包,數(shù)據(jù)包將在結(jié)束后返回到調(diào)用規(guī)則的鏈。2、但是,如果使用goto,數(shù)據(jù)包將在另一個(gè)鏈中處理,但它們不會(huì)返回到調(diào)用規(guī)則的鏈。 在這種情況下,應(yīng)用于數(shù)據(jù)包的默認(rèn)策略將是開始處理數(shù)據(jù)包的原始基礎(chǔ)鏈的默認(rèn)策略。jump示例:分組是:SRC = DST = TCP端口111運(yùn)動(dòng)222table ip filter chain input type filter hook input priority 0; policy accep

48、t; # this is the 1º matching rule ip saddr ip daddr tcp dport 111 tcp dport 222 jump other-chain # this is the 3º matching rule ip saddr ip daddr tcp dport 111 tcp dport 222 accept chain other-chain # this is the 2º matching rule counter packets 8 bytes

49、 2020 goto示例:分組是:SRC = DST = TCP端口111運(yùn)動(dòng)222table ip filter chain input type filter hook input priority 0; policy accept; # this is the 1º matching rule # default policy 'accept' will be applied after other-chain ends processing ip saddr ip daddr tcp dport

50、111 tcp dport 222 goto other-chain # this rule will never be reached by this packet! ip saddr ip daddr tcp dport 111 tcp dport 222 accept chain other-chain # this is the 2º matching rule counter packets 8 bytes 2020 4.3、拒絕流量注意:完全拒絕支持可用,在Linux內(nèi)核3.18。以下規(guī)則顯示如何拒絕來(lái)自網(wǎng)絡(luò)的所有流量:% nft add

51、rule filter input reject如果不指定任何原因,則會(huì)在ICMP / ICMPv6端口發(fā)送不可達(dá)報(bào)文到源。您可以通過(guò)ct選擇器縮小此范圍,因此這只會(huì)拒絕來(lái)自本地計(jì)算機(jī)的流量,而不是源自我們的流量。% nft add rule filter input ct state new reject您還可以指定拒絕原因。 例如:% nft add rule filter input reject with icmp type host-unreachable對(duì)于ICMP,您可以使用以下拒絕原因:net-unreachable:目標(biāo)網(wǎng)絡(luò)不可達(dá)host-unreachable: 目標(biāo)主機(jī)不可訪問prot-unreachable:目標(biāo)協(xié)議不可訪問port-unreachable:目的端口不可達(dá)net-prohibited:網(wǎng)絡(luò)管理方式禁止host-prohibited:主機(jī)管理方式禁止admin-prohibited:通訊管理方式禁止您還可以拒絕指示拒絕原因的IPv6流量,例如:% nft add rule ip6 filter input reject with

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論