日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

万字总结Linux内核过滤框架(Nftables)

發(fā)布時(shí)間:2023/12/18 linux 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 万字总结Linux内核过滤框架(Nftables) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

夜已深然未央,準(zhǔn)備接著講述有關(guān)Netfilter的故事,行文有點(diǎn)松散,由于未打草稿,有點(diǎn)隨意識(shí)而流,一氣呵成不知是自夸還是自嘲,權(quán)當(dāng)小時(shí)候?qū)懙娜沼洶?#xff0c;自幼喜歡每天寫日記,中學(xué)時(shí)更是以退士為名折騰了幾箱子抄本,前幾年由于喝酒就改為周記了,現(xiàn)在意識(shí)到了生命短暫,時(shí)間甚是不夠用,不能在迷迷糊糊 中得過(guò)且過(guò),就準(zhǔn)備把自己知道的關(guān)于Linux網(wǎng)絡(luò)的東西一點(diǎn)一滴記錄下來(lái),本來(lái)想繼續(xù)行文于紙上,然而發(fā)現(xiàn)在個(gè)人電腦智能手機(jī)時(shí)代,很多字早就不會(huì)寫 了...上回沒(méi)有說(shuō)完關(guān)于iptables的故事,本文繼續(xù)...

一.nftables前傳-iptables之弊端

iptables幾乎是無(wú)人不知無(wú)人不曉,人們被卷入了框框也就覺(jué)得任何事情都是理所當(dāng)然,但我例外,和其他很多事情一樣,在這個(gè)領(lǐng)域,我依然做并且樂(lè)于做那個(gè)“被排除的人”。

iptables的諸多弊端已經(jīng)不能再視而不見(jiàn),然而只有很少的人看到了這些,大多數(shù)的人作為使用者,僅僅是使用罷了。在此我不會(huì)吐槽很多了。以下的弊端來(lái)自nftables的宣傳文檔,但是即使是在國(guó)外,也引發(fā)了超級(jí)多的爭(zhēng)論:

1.iptables框架在內(nèi)核態(tài)知道得太多,以至于產(chǎn)生了大量的代碼冗余。

這一點(diǎn)是顯而易見(jiàn)的,比如對(duì)于TCP和UDP而言,取sport,dport沒(méi)有什么不同,但是iptables卻使用了兩套代碼,這只是一個(gè)例子,類似的還有很多。

2.iptables的rule結(jié)構(gòu)設(shè)計(jì)不合理。

1.iptables的結(jié)構(gòu)

iptables由表,鏈,規(guī)則組成,其中規(guī)則又由match,target組成。如下面的結(jié)構(gòu)所示:

Table{Chain[Rule(match,match,match,...)->target,Rule(match,match,match,...)->target,...],Chain[...],... }

2.iptables的規(guī)則匹配執(zhí)行流程

iptables的規(guī)則是按照配置順序順序匹配的,在每一張表的每一個(gè)鏈上依次匹配每一條規(guī)則,在每一條規(guī)則依次匹配每一個(gè)match,全部匹配的match執(zhí)行該規(guī)則的target,由target決定:

  • a.繼續(xù)匹配下一條規(guī)則
  • b.對(duì)數(shù)據(jù)包做一些修改
  • c.跳轉(zhuǎn)到其它的鏈(即開始從該鏈依次匹配該鏈上的每一條規(guī)則)
  • d.返回引發(fā)跳轉(zhuǎn)的鏈(即繼續(xù)匹配跳轉(zhuǎn)前的鏈的下一條規(guī)則)
  • e.丟棄數(shù)據(jù)包
  • f.接收數(shù)據(jù)包(即不再繼續(xù)往下匹配,直接返回)
  • g.記錄日志
  • h....

資料直通車:最新Linux內(nèi)核源碼資料文檔+視頻資料

學(xué)習(xí)直通車:Linux內(nèi)核源碼/內(nèi)存調(diào)優(yōu)/文件系統(tǒng)/進(jìn)程管理/設(shè)備驅(qū)動(dòng)/網(wǎng)絡(luò)協(xié)議棧

整個(gè)iptables框架執(zhí)行的流程如下:

循環(huán)1:static breakrule = 0;遍歷一個(gè)chain的每一條rule {nomatch = 0;循環(huán)2:遍歷一條rule的每一個(gè)match {result = rule->match[curr](skb, info);if(result != MATCH) {nomatch = 1;break;}}if (nomatch == 1) {continue該chain的下一條rule;}result = rule->target(skb, info);if (result == DROP) {break丟棄數(shù)據(jù)包 } else if (result == ACCEPT) {break接受數(shù)據(jù)包} else if (result == GOTO) {breakrule = rule;跳轉(zhuǎn)到相應(yīng)的chain,執(zhí)行循環(huán)1} else if (result == RETURN) {break返回調(diào)用chain,執(zhí)行其breakrule的下一條rule} ... }

看了上述的代碼就基本知道了iptables的命令實(shí)現(xiàn),程序員能做的就是擴(kuò)展iptables的功能,具體的做法有兩個(gè):寫一個(gè)match以及寫一個(gè)target。除此之外,程序員就沒(méi)轍了,剩下的就看使用者的想象力了...

通過(guò)上面的流程,可以發(fā)現(xiàn),包過(guò)濾的流程最終要落實(shí)到規(guī)則匹配,而過(guò)濾的動(dòng)作最終落實(shí)到了該規(guī)則的target,前面的所有的match匹配返回結(jié)果就是0或者非0表示是否匹配,只有所有的match均匹配,才會(huì)執(zhí)行target。這就決定了下面幾件事:

a.如果你想實(shí)現(xiàn)多個(gè)target,就不得不寫多條規(guī)則

比如實(shí)現(xiàn)log和drop,那么就要寫兩條規(guī)則,或者擴(kuò)展一個(gè)LOG_and_DROP target,前者影響效率,后者需要編程。你很在乎性能,同時(shí)你又不是程序員不懂編程,你就抓狂了...

b.你可以寫一個(gè)match,在里面偷偷摸摸做一點(diǎn)事情,但是外部不知道

這一切太不正規(guī)了,你可以在一個(gè)match里面把一個(gè)數(shù)據(jù)包的校驗(yàn)碼改掉,也可以在里面做log,做NAT什么的,但是iptables的框架的本意雖不允許你這么做但是又沒(méi)有阻止你的行為。

我們可以在iptables執(zhí)行流的一個(gè)細(xì)節(jié)(上述的流程中未畫出)中看到另一個(gè)細(xì)節(jié),即iptables在match中僅僅確定“是否匹配”真的已經(jīng)很 不夠,就連代碼都設(shè)計(jì)得很勉強(qiáng)。如果你看ipt_do_table這個(gè)核心函數(shù),會(huì)發(fā)現(xiàn)一個(gè)控制變量名叫hotdrop,這個(gè)變量是干什么的呢?按照注釋 的意思是:

@hotdrop: drop packet if we had inspection problems

這 個(gè)hotdrop作為傳出參數(shù)傳入每一個(gè)match回調(diào)函數(shù),用于在match內(nèi)部指示將一個(gè)數(shù)據(jù)包丟棄。這就暴露出了設(shè)計(jì)的不足,丟棄一個(gè)數(shù)據(jù)包不是 target要做的嗎?一個(gè)match的職責(zé)是選擇該數(shù)據(jù)包是否匹配,干嘛要指示丟棄它呢?這不是越級(jí)么?這只是一個(gè)細(xì)節(jié),你可以說(shuō)出一千個(gè)理由表明它是 合理的,但是它卻是丑陋的!

二.一點(diǎn)小歷史

弄清楚歷史總是能明白更多,這絕對(duì)是一句真話,但是恰恰是專業(yè)化阻止了大多數(shù)的程序員去讀歷史,哪怕是IT的歷史。最好的歷史資料就是原著,Netfilter的歷史不長(zhǎng),從Linux 2.3.15內(nèi)核版本被引入至今,不會(huì)像老子莊子那樣被篡改地體無(wú)完膚。

我們當(dāng)然要看iptables被引入的那段歷史。

iptables被引入旨在替掉ipchains,因?yàn)楫?dāng)時(shí)ipchains的維護(hù)者Rusty Russell認(rèn)識(shí)到它擁有諸多的弊端。總的說(shuō)來(lái),弊端有兩個(gè),其它的都是由這兩個(gè)而發(fā):

a.內(nèi)核的firewall框架僅僅設(shè)置了3個(gè)檢查點(diǎn),即input,forward,output,對(duì)于環(huán)回包以及indev,outdev的控制力很弱;

b.代碼寫死,匹配項(xiàng)固定,沒(méi)有可擴(kuò)展性。

問(wèn) 題就在這里的b。針對(duì)問(wèn)題a,Rusty Russell提出了Netfilter的設(shè)計(jì),精心設(shè)計(jì)了5個(gè)HOOK點(diǎn),解決了幾乎所有的控制點(diǎn)的問(wèn)題,特別是OUTPUT點(diǎn)的設(shè)計(jì)頂級(jí)絕妙,它被安 放在路由之后,原因在于Linux協(xié)議棧的路由操作之后才會(huì)給出完整的過(guò)濾匹配項(xiàng),比如源IP地址,出口設(shè)備等,路由之后的OUTPUT同時(shí)給了調(diào)用者再 次路由的權(quán)限。FORWARD和INPUT作為路由的二分,同時(shí)保持了無(wú)用功最少化,因?yàn)槿绻銢](méi)有打開ip_forward選項(xiàng),即便不是INPUT的 數(shù)據(jù)包也不會(huì)進(jìn)入FORWARD,如果根本就沒(méi)有找到路由,則既不會(huì)到達(dá)INPUT,也不會(huì)到達(dá)FORWARD。對(duì)于PREROUTING而言,它可以通 過(guò)conntrack區(qū)分本地環(huán)回流量和網(wǎng)卡進(jìn)入流量...不管怎么說(shuō),這是內(nèi)核的工作,這個(gè)Netfilter的設(shè)計(jì)十分完美,至今依然被使用。

對(duì)于問(wèn)題b,Rusty Russell提出了iptables,它是一個(gè)高度可擴(kuò)展的框架,也就是從此時(shí)起,iptables擁有了match/target配對(duì)的擴(kuò)展方式,每 當(dāng)需要擴(kuò)展的時(shí)候,每一個(gè)match/target除了有用戶態(tài)的lib之外,還有用內(nèi)核態(tài)的支持,它將ipchains時(shí)代的固定匹配模式變成了可以自 己編程擴(kuò)展的了。

針對(duì)ipchains的弊端,Rusty Russell可謂是給出了完美的解決方案,然而僅此而已!任何一個(gè)來(lái)自同一作者的新的框架幾乎均是為了解決上一個(gè)框架的弊端的,iptables作為一 個(gè)新秀,在獲得歡呼的時(shí)候,不會(huì)有人去考慮它的弊端,任何事情都是這樣,不是嗎?

iptables的弊端是被逐步發(fā)現(xiàn)的,Rusty Russell作為ipchains和iptables的共同作者,它對(duì)待后者取代前者的態(tài)度永遠(yuǎn)都是保守的,一個(gè)全新的框架需要另一個(gè)人或者團(tuán)隊(duì)來(lái)提 出,而不可能出現(xiàn)在Rusty Russell本人手里以及iptables團(tuán)隊(duì)的內(nèi)部。

針對(duì)Netfilter,Rusty寫了大量的文檔,均在Netfilter網(wǎng)站上可以找到:?http://people.netfilter.org/rusty/unreliable-guides/不可否認(rèn),這些都是珍貴的第一手資料,對(duì)于我們理解Netfilter,可能沒(méi)有比這些更好的了。任何人都可以從這些原著中找到“XX為何會(huì)這樣”這種問(wèn)題的蛛絲馬跡,同時(shí)它們也是指導(dǎo)你如何改進(jìn)現(xiàn)有框架的明燈。

三.nftables登場(chǎng)

鑒于iptables的諸多缺點(diǎn)(其實(shí)并不是缺點(diǎn),但是match/target配對(duì)的擴(kuò)展方式導(dǎo)致了開發(fā)者延伸了劣勢(shì),最終將其確定為缺點(diǎn)),nftables旨在一個(gè)個(gè)地改進(jìn)它們。

首先是兩個(gè)問(wèn)題:

a.如何使用一種統(tǒng)一的方式來(lái)解析數(shù)據(jù)包

在這個(gè)問(wèn)題的解決上,u32 match給了作者思路

b.如何執(zhí)行多個(gè)action

事 實(shí)上,是iptables的matches/target配對(duì)的方式限制了開發(fā)者的思路。為何非要區(qū)分match和target呢?iptables框架 的執(zhí)行流程限制了match的結(jié)果就是個(gè)布爾型,所有的動(dòng)作都在target中執(zhí)行,如果去掉了這個(gè)限制,將整個(gè)流程都開放給開發(fā)者,那就靈活多了。 nftables就在這樣的背景下登場(chǎng)了。事實(shí)證明,nftables做的比修正弊端更多,走的更遠(yuǎn)。

首先nftables采用了“虛擬機(jī)解釋字節(jié)碼”的方式,使一條rule真的成了“為一個(gè)數(shù)據(jù)包做一些事情”這樣靈活的命令,而去掉了“匹配所有的 match之后執(zhí)行一個(gè)target”這樣的限制。虛擬機(jī)執(zhí)行字節(jié)碼的方式早就被BPF采用了,我們熟知的tcpdump抓包程序就是利用的它來(lái)過(guò)濾的數(shù) 據(jù)包。我們來(lái)看一下nftables框架的執(zhí)行流程:

循環(huán)1:static breakrule = 0;遍歷一個(gè)chain的每一條rule {nomatch = 0;reg[MAX]循環(huán)2:遍歷一條rule的每一個(gè)expression {void rule->expression[curr]->operations->expr(skb, info, reg)if(reg[VERDICT] != CONTINUE) {break;}}if (reg[VERDICT] == CONTINUE) {continue該chain的下一條rule;} else if (reg[VERDICT] == DROP) {break丟棄數(shù)據(jù)包 } else if (reg[VERDICT] == ACCEPT) {break接受數(shù)據(jù)包} else if (reg[VERDICT] == GOTO) {breakrule = rule;跳轉(zhuǎn)到相應(yīng)的chain,執(zhí)行循環(huán)1} else if (reg[VERDICT] == RETURN) {break調(diào)用chain,執(zhí)行其breakrule的下一條rule} ... }

光從這個(gè)流程上看,就已經(jīng)可以和iptables分出勝負(fù)了。可以看到,nftables沒(méi)有match和target,而是將一 條rule抽象成了若干條的表達(dá)式,即expression,所謂的表達(dá)式就是一個(gè)主語(yǔ)加謂詞的式子,它是“可執(zhí)行”的,它可以“做任何事情”,而不僅僅 是計(jì)算一個(gè)匹配結(jié)果。除此之外,nftables內(nèi)置了一組寄存器,其中之一是verdict寄存器,它指示了“下一步要怎么做”。

每一條 expression執(zhí)行完了之后,會(huì)取出該寄存器,由該寄存器的值來(lái)采取下一步的行動(dòng)。這個(gè)verdict寄存器替換了iptables中target 返回值,這就可以在一條rule中采取多個(gè)動(dòng)作,每條動(dòng)作可以解析成一個(gè)expression,每一個(gè)expression在執(zhí)行后將verdict寄存 器設(shè)置為CONTINUE即可!

除了執(zhí)行流程的顯著區(qū)別之外,nftables最大的意義在于它對(duì)expression進(jìn)行了抽象,nftables的內(nèi)核框架可以注冊(cè)很多種的 expression,每一種都有一個(gè)操作集,其中expr回調(diào)函數(shù)執(zhí)行具體的expression表達(dá)式。典型的expression有:

payload表達(dá)式:

將一個(gè)數(shù)據(jù)包的某一段數(shù)據(jù)拷貝到一個(gè)nftables寄存器指示的緩沖區(qū),除了出錯(cuò)之外verdict寄存器均為CONTINUE。

compare表達(dá)式:

將某段數(shù)據(jù)和nftables寄存器指示的緩沖區(qū)作比較,若不相等則設(shè)置verdict寄存器為BREAK。

counter表達(dá)式:

按照數(shù)據(jù)包的大小遞增字節(jié)計(jì)數(shù)器以及包計(jì)數(shù)器的值,保持verdict寄存器為CONTINUE。

log表達(dá)式:

對(duì)數(shù)據(jù)包記錄日志,保持verdict寄存器為CONTINUE。

nat表達(dá)式:

按照nftables寄存器的數(shù)值對(duì)數(shù)據(jù)包做NAT,verdict寄存器設(shè)置為NAT操作的結(jié)果,注意,NAT的參考數(shù)據(jù)均來(lái)自nftables寄存器。

compat表達(dá)式:

保 持對(duì)iptables的兼容性。細(xì)分為match寄存器以及target寄存器,其中match表達(dá)式調(diào)用iptables rule的match,若匹配設(shè)置verdict寄存器為CONTINUE,否則為BREAK;target表達(dá)式調(diào)用iptables rule的target,并根據(jù)target的結(jié)果設(shè)置verdict寄存器。

回到nftables的執(zhí)行流程,結(jié)合上述的表達(dá)式,看看這一切像什么?

這難道不就是一個(gè)解釋器嗎?類似高級(jí)語(yǔ)言比如Python的解釋器,將每一個(gè)表達(dá)式解釋執(zhí)行,我們可以將一條nftables rule分解為一系列的表達(dá)式,僅此而已,如下所示:

expr1: reg[verdict] = CONTINUE; reg[0] = skb[m...n]; expr2: info[0] = something from userspace; ret = compare(reg[0], info[0]);if (ret == true) ; then reg[verdict] = CONTINUE; else reg[verdict] = BREAK; break; fi expr3: log_packet(skb); expr4: ret = do_nat_packet(skb, reg[i]/*address to trans*/...); if (ret == true) ; then reg[verdict] = CONTINUE; else reg[verdict] = BREAK; break; fi ...

看看吧,一條規(guī)則做了多少事情啊啊啊!解釋器按照expr1到expr4的順序執(zhí)行expression,每次執(zhí)行下一個(gè)expression之前要檢查verdict寄存器,那么誰(shuí)是解釋器,當(dāng)然就是上面的nftables的執(zhí)行流程啦!

nftables到底是什么玩意兒?實(shí)則一個(gè)虛擬機(jī)!那么這部虛擬機(jī)執(zhí)行的指令來(lái)自何方?來(lái)自用戶態(tài)的配置。用戶態(tài)怎么配置?當(dāng)然是使用nft命令。nft是什么命令?是類似iptables的命令。nft命令能否舉一個(gè)例子?能:

nft add rule ip filter input ip saddr 1.1.1.1 drop

這 條命令怎么和諸多的表達(dá)式對(duì)應(yīng)?答案是nft命令行工具內(nèi)置了一個(gè)”編譯器“,將一條human readable命令編譯成了一個(gè)個(gè)的expression代碼。編譯的細(xì)節(jié)是什么?可以寫一本書,但是了解一下tcpdump的方式也就該能理解了。 tcpdump命令最終會(huì)將編譯好的指令注入到內(nèi)核的BPF系統(tǒng),以下是一條很常見(jiàn)的tcpdump命令:

tcpdump -i eth0 dst 1.1.1.1

它會(huì)翻譯成什么代碼呢?后面跟上-dd參數(shù)就可以看出來(lái):

root@debian:/usr/local/etc/nftables# tcpdump -i eth0 dst 1.1.1.1 -dd { 0x28, 0, 0, 0x0000000c }, { 0x15, 0, 2, 0x00000800 }, { 0x20, 0, 0, 0x0000001e }, { 0x15, 4, 5, 0x01010101 }, { 0x15, 1, 0, 0x00000806 }, { 0x15, 0, 3, 0x00008035 }, { 0x20, 0, 0, 0x00000026 }, { 0x15, 0, 1, 0x01010101 }, { 0x6, 0, 0, 0x0000ffff }, { 0x6, 0, 0, 0x00000000 },

具 體是什么意思請(qǐng)參考BPF的手冊(cè)。nftables設(shè)置的規(guī)則最終也會(huì)被”編譯“成類似的”指令“注入到內(nèi)核的nftables系統(tǒng),形成一個(gè)個(gè)的 expression。要注意,并不是所有的規(guī)則指令都是可以編譯的,比如iptables兼容指令就不能編譯,log指令也不能被編譯。

nftables就是這樣一個(gè)具有美感的包過(guò)濾框架,理解了它的運(yùn)行方式之后,你就可以擴(kuò)展它了,和iptables擴(kuò)展match/target不同, 對(duì)于nftables,你只需要擴(kuò)展expression即可,就是說(shuō)你要自己編寫expression,然后讓nftables虛擬機(jī)(即上面的執(zhí)行流 程)執(zhí)行它就可以了。最后,我們來(lái)看一下nftables框架的結(jié)構(gòu):

Table{Chain[Rule(expression,expression,expression,...)Rule(expression,expression,expression,...)...],Chain[...],... } expression := expression | datatype | operation | expression | datatype operation := + | - | * | / | memcpy | contain | ... datatype := u8 | u16 | u16 | ... | container | ... container := hash | map | tree | set | list | array | ...

四.這一切到底怎么了

值得注意的是,雖然nftables在美學(xué)角度上完勝iptables,但是作為一個(gè)框架,它的性能并不十分高效。和nf-hipac相 比,iptables并不比nftables輸?shù)酶鼞K些。事實(shí)上,nftables和iptables一樣,對(duì)于一條chain上的所有rule,也是逐 條遍歷的,所不同的只是遍歷每條rule時(shí)執(zhí)行具體匹配的方式有所不同。那么和nf-hipac相比,nftables為何成功了?

其實(shí)nftables還遠(yuǎn)遠(yuǎn)沒(méi)有成功,它的阻力不是來(lái)自性能,而是來(lái)自iptables的陣營(yíng)!nftables作為一個(gè)優(yōu)美的框架,考慮的不僅僅是性 能,事實(shí)上性能只是其考慮的極小的一方面。作為一個(gè)框架,它首先要考慮的是擴(kuò)展性以及和iptables的兼容性。反對(duì)的聲音分分鐘響徹于 耳,iptables并沒(méi)有錯(cuò),match/target配對(duì)的方式并沒(méi)有錯(cuò),match就是要返回true or false,最終的結(jié)果就是要target來(lái)執(zhí)行,總之就是要區(qū)分match和target,并且各司其職!!

覺(jué)得iptables不能執(zhí)行多個(gè)動(dòng)作的為何不自己寫一個(gè)可以執(zhí)行多個(gè)動(dòng)作的target啊啊啊?!

覺(jué)得iptables逐條執(zhí)行且不能完成nf-hipac創(chuàng)舉的為何不將nf-hipac封裝成一個(gè)單獨(dú)的match啊啊啊?!

封裝成單獨(dú)match的nf-hipac看起來(lái)會(huì)是:

iptables -A INPUT -m hipac --match-hipac hipac_test -j NOTHING nf-hipac create hipac_test nf-hipac add hipac_test -s 1.1.1.1 -j DROP ...

看到iptables的優(yōu)勢(shì)了吧,人家根本就不是來(lái)和nf-hipac拼性能的,人家是海納百川的,人家有容乃大!難道姓毛的椅子男要上戰(zhàn)場(chǎng)拚*** 嗎?NO!NO!NO!姑且不談nf-hipac,和上面類似的還有ipset,ipset不就是被封裝成一個(gè)match而和iptables聯(lián)動(dòng)的 嗎?iptables并不差,錯(cuò)在人們根本就不該直接將每一個(gè)簡(jiǎn)單功能擴(kuò)展成一套match/target聯(lián)合體,最終形成令人作嘔的代碼!是這樣嗎?

好吧!我承認(rèn)上面的YY都是對(duì)的!但是看看nftables,它是不是也可以這么玩并且玩得更high呢?!是啊!是吧!nftables內(nèi)部直接內(nèi)置了 諸多的容器類數(shù)據(jù)類型,比如rbtree,hash等,作為一種復(fù)合容器,你往里面放東西就是了,還用寫match嗎?我這么說(shuō)的意思是,寫過(guò) match/target的都知道,要例行多少公事啊,你要注冊(cè)match或者target,還要復(fù)制很多管理代碼,看過(guò)xtables-addons的 都知道其中之苦。

使用nftables的話,如果你想為iptables擴(kuò)展一個(gè)功能模塊,很多工作都可以在用戶態(tài)完成,換句話說(shuō),如果僅僅是基于 skb(即數(shù)據(jù)包)的內(nèi)容做過(guò)濾,那么nftables便是協(xié)議無(wú)關(guān)的,因?yàn)椴还苁裁磪f(xié)議,你都可以將過(guò)濾表達(dá)式用 payload,compare,bit等簡(jiǎn)單的expression開表示,協(xié)議解析的工作在用戶態(tài)編譯nftables指令的時(shí)候完成即可,到了內(nèi)核 態(tài),nftables虛擬機(jī)只執(zhí)行表達(dá)式,不管協(xié)議!

世界在向前走,我們要向前看!看看Linux的包過(guò)濾框架,從最初的移植BSD的實(shí)現(xiàn),到現(xiàn)在的nftables,中間經(jīng)歷了多少的坎坷曲折,每次有新東 西進(jìn)來(lái)總是會(huì)有復(fù)古者的謾罵!這下可好,這下可好,Linux內(nèi)核在主干上直接內(nèi)置了nftables的支持,正如當(dāng)初Netfilter進(jìn)入主干時(shí)的情 形一樣。

Just do it,劃時(shí)代的nftables,我并不是說(shuō)它有多么猛,而是說(shuō),它真的很干凈。

tables,chains,這名字叫得真不好,可是無(wú)論如何它也只是個(gè)名字而已。iptables要不是因?yàn)槊?#xff0c;我也不會(huì)為了理解它糾結(jié)那么久,現(xiàn)在 又來(lái)個(gè)nftables...Cisco管類似的東西叫做list,即ACL,也只是個(gè)名字,如果說(shuō)tables不好聽,list是不是顯得更低級(jí)呢?不 管低級(jí)不低級(jí),華為也延續(xù)了Cisco的叫法。因此下一代的包過(guò)濾框架也叫做tables,估計(jì)顯示文化上的認(rèn)同要比其實(shí)質(zhì)更加有用吧,特別是對(duì)待起名字 這件事上。iptables已經(jīng)深入人心,nftables這個(gè)名字會(huì)讓人更容易接受。當(dāng)初iptables替代ipchains,那是革命性的替換,而 這次,更多的顯示出來(lái)的是成熟Linux機(jī)制的一種自然而然的演變,或者說(shuō)進(jìn)化更合適些吧。

五.nftables用起來(lái)

我第一時(shí)間想的是在2.6.32上將nftables跑起來(lái),然而失敗了,根本就沒(méi)有辦法編譯。那么下面就是想辦法了,看了很多的宣傳文檔和HOWTO以及nftables的主站,花了好久clone了git映像,編譯通過(guò),終于跑起來(lái)了。

后來(lái)我干脆直接在http://kernel.org上下載3.17版本的內(nèi)核,在make config的時(shí)候?qū)ft相關(guān)的東西都給選上,然后編譯更新內(nèi)核。同時(shí)下載用戶態(tài)的nftables-0.3版本utils,編譯之,過(guò)程中缺什么補(bǔ)什 么,最終很順利。在make install之后,首先執(zhí)行:

nft -f /usr/local/etc/nftables/ipv4-filter

這條命令是在內(nèi)核中載入了filter表,除了執(zhí)行預(yù)先配置好的文件,你也可以手工載入table。

在table,chain就緒之后,就是在自己希望的chain上添加rule了:

nft add rule ip filter output ip daddr 1.2.3.4 drop

其它的用法請(qǐng)man nft,非常詳細(xì)但不詳盡的文檔,另外的好資料在?https://home.regit.org/netfilter-en/nftables-quick-howto以及?https://home.regit.org/2014/01/why-you-will-love-nftables!

我為何沒(méi)有將其移植到低版本的內(nèi)核上呢?因?yàn)槲矣X(jué)得這太簡(jiǎn)單了,為何出此狂言?因?yàn)閚ftables僅僅和Netfilter的 nf_register/unregister_hooks接口,其它的都是其框架內(nèi)部做的,其復(fù)雜性在于nft_expr_ops,而這個(gè)是非常獨(dú)立 的,和既有的內(nèi)核沒(méi)有任何關(guān)系。對(duì)于用戶態(tài)utils,本身就有一個(gè)nftables項(xiàng)目存在,就是一個(gè)編譯問(wèn)題,而這個(gè)編譯是本來(lái)就能通過(guò)編譯的。

六.配置防火墻變成了編程

本文的最后,我來(lái)從全局的角度看一下nftables和iptables的最終區(qū)別。

=我已經(jīng)從內(nèi)部原理的角度分析了nftables帶來(lái)的改變,那么這些給用戶到底能帶來(lái)多少實(shí)惠呢?如果沒(méi)有實(shí)惠,那么在用戶群中是不會(huì)有動(dòng)力切換到 nftables的。實(shí)惠不多,只有一個(gè),但是僅此就夠了,那就是:nftables讓用戶可以按照編程的思想來(lái)組織自己的配置邏輯。

=怎么說(shuō)呢?我們來(lái)看一個(gè)wiki上展示的例子吧:

nft add rule ip filter input ip protocol vmap { tcp : jump tcp-chain,udp : jump udp-chain , icmp : jump icmp-chain }

這是什么?這是一條“編程語(yǔ)句”,它擁有一個(gè)簡(jiǎn)單的if-else if-else if邏輯,或者你把它當(dāng)成switch-case也可以。注意,這可是在一條規(guī)則中完成的!如果用iptables的話,你不得不獨(dú)立寫多條規(guī)則。以上的語(yǔ)句多么像是:

這是什么?這是一條“編程語(yǔ)句”,它擁有一個(gè)簡(jiǎn)單的if-else if-else if邏輯,或者你把它當(dāng)成switch-case也可以。注意,這可是在一條規(guī)則中完成的!如果用iptables的話,你不得不獨(dú)立寫多條規(guī)則。以上的語(yǔ)句多么像是:

proto = skb->net_hdr->proto; if (proto == tcp) {tcp_chain(skb); } else if (proto == udp) {udp_chain(skb); } else if (proto == icmp) {icmp_chain(skb); }

nftables變成了真正的編程語(yǔ)言!既然成了編程語(yǔ)言,如果支持變量將會(huì)是多么靈活的一件事啊,幸運(yùn)的是,哦,不,不能說(shuō)幸運(yùn),而是nftables原生的性質(zhì),nftables支持“變量”!注意下面的命令:

nft add set filter blackhole { type ipv4_addr\;} nft add rule ip input ip saddr @blackhole drop nft add element filter blackhole { 192.168.1.4, 192.168.1.5 }

雖然iptables的ipset match也可以這樣做,但是那畢竟只是一個(gè)match而已,nftables原生就支持這種語(yǔ)法!甚至,甚至還可以用字典映射策略的語(yǔ)法:

nft add map filter mydict { type ipv4_addr : verdict\; } nft add rule filter input ip saddr vmap @mydict nft add element filter mydict { 192.168.0.10 : drop, 192.168.0.11 : accept }

這樣一來(lái),管理員將會(huì)像程序員一樣靈活組織自己的邏輯。

七.一個(gè)有點(diǎn)悲觀的事實(shí)

去 搜一下ipchain的文檔,幾乎沒(méi)有幾個(gè)能打開的,然后去搜iptables的,目前人氣還很旺,nftables的呢?能搜到結(jié)果,但是想用起來(lái)要費(fèi) 點(diǎn)勁。這就是前仆后繼的過(guò)程,可以設(shè)想將來(lái)的某天,nftables也會(huì)像ipchain一樣逐漸冷淡,淡出人們的視線...這難道就是Linux環(huán)境包 過(guò)濾框架的宿命嗎?

這并不是技術(shù)發(fā)展的必然,老牌的UNIX工具vi,Emacs直到現(xiàn)在依然是黑客們的利器,網(wǎng)絡(luò)工具netcat也是小巧便攜經(jīng)久不衰...而Linux 的包過(guò)濾框架短短的15年間更新?lián)Q代了多次。令人感到希望的是Netfilter這個(gè)底層的框架基本已經(jīng)穩(wěn)定,不管是iptables還是 nftables,都是基于Netfilter來(lái)開發(fā)的,而早期的ipfw則不是,那時(shí)的(Linux 2.3.15內(nèi)核之前的)底層包過(guò)濾框架及其簡(jiǎn)陋,因此Netfilter一出現(xiàn)就上位了。值得注意的是,這里面包含了太多的是開發(fā)者Rusty Russell的個(gè)人風(fēng)格,Netfilter是他完成的,ipchains也是他,這不禁讓人想起了破立有秩的Ingo Molnar,引入了O(1)調(diào)度器,然后卻用更好的CFS調(diào)度器替換了它...UNIX則非常不同,個(gè)人因素少之又少...

總結(jié)

以上是生活随笔為你收集整理的万字总结Linux内核过滤框架(Nftables)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

欧美一级激情 | 日日夜夜草| 精品国产一区二区三区蜜臀 | 国产精品久久久区三区天天噜 | 国产成人精品免高潮在线观看 | 久久精品欧美一 | 日韩专区在线播放 | 91一区啪爱嗯打偷拍欧美 | 久久国产网 | 中文字幕 国产 一区 | av中文字幕日韩 | 高清av免费一区中文字幕 | 久久成人综合视频 | 极品嫩模被强到高潮呻吟91 | 国产在线毛片 | 国产精品一区二区三区在线播放 | 天天综合久久 | 97国产精品免费 | 日韩国产精品一区 | 日韩理论片在线观看 | 国产精品xxxx18a99 | 欧美成人区 | 天天干天天操天天射 | 日本丶国产丶欧美色综合 | 久久99热这里只有精品 | 欧美一级日韩三级 | 麻豆91网站 | 中文字幕免费观看全部电影 | 国产在线一线 | 中文字幕 第二区 | 香蕉网站在线观看 | 四虎影视久久久 | 久久国产视频网站 | 国产精品久久久久高潮 | 亚洲韩国一区二区三区 | 午夜精品视频福利 | 国产精品 日韩 | 亚洲在线视频网站 | 黄色国产高清 | 免费黄色特级片 | 久久国产精品一区二区三区四区 | 91成品人影院 | 高清精品视频 | 五月开心六月婷婷 | 91精彩视频在线观看 | 99c视频高清免费观看 | 国产亚洲精品久久久久久大师 | 精品国内自产拍在线观看视频 | 免费看污的网站 | 干干夜夜 | 91x色 | 日日干天天爽 | 国产精品va| 13日本xxxxxⅹxxx20 | 成人午夜影院 | 久久九精品 | 欧美日在线观看 | 色综久久 | 国产91对白在线 | 免费视频久久久久 | 午夜精品福利一区二区三区蜜桃 | 亚洲国产99 | 国产精品久久99综合免费观看尤物 | 国产精品麻豆一区二区三区 | 免费a视频 | 久久在线看| 96精品视频 | 天堂在线成人 | 激情网在线视频 | 亚洲一区二区麻豆 | 丁香六月五月婷婷 | 久久精品久久久精品美女 | www久草 | 久久免费在线观看 | 久久电影中文字幕视频 | 久久久久国产视频 | 久久高清免费观看 | 成年美女黄网站色大片免费看 | 日韩三级精品 | 永久黄网站色视频免费观看w | 亚洲日本va午夜在线影院 | 成人av高清在线观看 | 人人澡人人爽欧一区 | 日日碰夜夜爽 | 久久线视频 | 欧美极度另类 | 在线国产黄色 | 国产亚洲人成网站在线观看 | 欧美99精品 | 精品国产aⅴ一区二区三区 在线直播av | 久久在线看 | 98超碰在线| 国产精品观看 | 又色又爽又激情的59视频 | 玖玖爱免费视频 | 国产成人在线综合 | 这里只有精品视频在线 | 免费十分钟 | 狠狠网站 | 成人一区影院 | 精品成人a区在线观看 | 久久99亚洲精品 | 色99之美女主播在线视频 | 国产91在线播放 | 国产精品18久久久久久vr | 蜜桃av久久久亚洲精品 | 亚洲影院天堂 | 久久免费精品 | 一级免费黄色 | 欧美成人黄色片 | 久久久精品国产免费观看同学 | 欧美久久久久久久久久久久 | 亚洲日本va午夜在线电影 | 国产精品久久一区二区三区不卡 | www色av| 丁香午夜婷婷 | 久久久久久久久久久成人 | 亚洲视频免费在线看 | 国产精品一区二区在线 | 国产一级二级在线 | 日韩综合精品 | 成人免费观看视频大全 | 免费日韩一级片 | 国产香蕉97碰碰碰视频在线观看 | 在线看成人片 | 婷婷六月天丁香 | 最新91在线视频 | 国产91av视频在线观看 | 免费污片| 国产免费成人 | 狠狠黄| 韩国中文三级 | 免费午夜视频在线观看 | 天天操天天怕 | 国产91欧美 | 国产视频一区二区三区在线 | 欧美91片 | 天堂在线视频免费观看 | 成人羞羞免费 | av中文字幕在线看 | 久久情网 | 97免费中文视频在线观看 | 狠狠干免费 | 91看片淫黄大片一级在线观看 | 国产破处在线视频 | 亚洲精品中文字幕视频 | 天天天天爽 | 欧美激情在线看 | 色综合久久中文字幕综合网 | 中文字幕在线播放日韩 | 成人免费大片黄在线播放 | 六月天色婷婷 | 狠狠操天天射 | 国产69熟| 亚洲视频久久 | 麻豆一精品传二传媒短视频 | 黄色的网站免费看 | 欧美二区三区91 | 国产一区二区久久精品 | 激情综合六月 | 国产精品久久久久久久久久新婚 | 久久精品日本啪啪涩涩 | 四虎在线免费观看视频 | 久久免费的精品国产v∧ | 欧美国产日韩在线观看 | 国产成人一区二区三区免费看 | 久久精品一 | 日韩精品免费在线播放 | 日韩va亚洲va欧美va久久 | 欧美激情精品 | 91精品国产三级a在线观看 | .国产精品成人自产拍在线观看6 | 少妇搡bbbb搡bbb搡69 | 亚洲成熟女人毛片在线 | 夜夜看av | 午夜久久影视 | www.97色.com| 日韩中文字幕免费 | 国产精品女人久久久 | 国产真实精品久久二三区 | 成全在线视频免费观看 | 日韩a在线看| 欧美日韩在线观看一区 | 精品久久久久久久久久久久久 | 99色视频在线 | 中文字幕你懂的 | 天天干天天操 | 久久婷婷一区 | 天堂va在线观看 | 一区二区三区电影 | 国产一区二区三区四区在线 | 国产成视频在线观看 | 最新高清无码专区 | 97色综合 | 美女视频a美女大全免费下载蜜臀 | 久久高清视频免费 | 亚洲激情在线视频 | 成人在线免费观看网站 | 在线观看中文字幕第一页 | 日日夜夜精品免费观看 | 国产精品成人一区二区 | 最新中文字幕在线播放 | 欧美性直播| 97超碰国产精品女人人人爽 | 久久综合狠狠狠色97 | 中文字幕国产精品一区二区 | 99精品国产一区二区三区麻豆 | 亚洲精品乱码白浆高清久久久久久 | 国产精品久久久久久麻豆一区 | 麻花天美星空视频 | 日韩一区二区三区在线观看 | 精品国产伦一区二区三区观看体验 | 国产精品国产毛片 | 在线日韩视频 | 香蕉91视频 | 免费观看完整版无人区 | 欧美成人视 | www.久久久.cum | 91亚洲精品视频 | 免费看在线看www777 | 久久精品香蕉视频 | 欧美日韩视频免费看 | 香蕉视频色 | 色综合天天综合 | 色网站在线| 久久精品一| 久久伊人精品一区二区三区 | 婷婷在线视频 | 午夜视频在线瓜伦 | 久久久噜噜噜久久久 | 国产精品av在线 | 婷婷激情综合 | 亚洲成色 | 三上悠亚一区二区在线观看 | 亚洲欧美激情精品一区二区 | 欧美在线日韩在线 | 久久草视频| 麻豆国产精品永久免费视频 | 日日操日日插 | 日韩一区二区在线免费观看 | 超级av在线 | 免费精品在线视频 | 人人干人人干人人干 | 国产三级av在线 | 成年人电影免费在线观看 | 五月婷婷视频在线 | 久久久91精品国产 | 久久精品麻豆 | 亚洲精品视频在线观看免费 | 国产色婷婷精品综合在线手机播放 | 在线视频你懂得 | 天天色视频 | 一级成人网 | 亚洲精品在线视频 | 亚洲国产精品成人综合 | 91理论片午午伦夜理片久久 | 日本中文不卡 | 日韩在线免费播放 | 国产精品专区在线观看 | 免费无遮挡动漫网站 | 97免费在线观看视频 | 四虎永久免费在线观看 | 最近最新中文字幕 | 天天曰夜夜操 | www四虎影院 | 最新中文字幕视频 | 国产涩涩在线观看 | 在线观看视频一区二区三区 | 日韩激情小视频 | 久久r精品 | 国产精品久久一 | 超碰在线公开免费 | 久久精品久久久久电影 | 亚洲一级特黄 | 超碰国产在线观看 | 久久手机在线视频 | 国产精品久久久久婷婷 | 99热国内精品 | 天天干天天摸天天操 | 又黄又爽又色无遮挡免费 | 91在线porny国产在线看 | 成年美女黄网站色大片免费看 | 天天视频色 | 久久免费视频一区 | 综合影视 | 国产精品成人久久久 | 开心激情五月婷婷 | 成人免费在线看片 | 日韩中文字幕免费视频 | 成人av网址大全 | 久久精品欧美一区二区三区麻豆 | 亚洲四虎影院 | 激情黄色一级片 | 久久这里有 | 99国产在线观看 | 97av免费视频 | 一区中文字幕 | 亚洲一级二级三级 | 综合网成人 | 亚洲三级在线免费观看 | a在线免费观看视频 | 久久一区二区免费视频 | 成人久久18免费网站麻豆 | 色婷婷狠狠五月综合天色拍 | 久久麻豆精品 | 狠狠ri| 成人毛片久久 | 婷婷色影院 | 精品国产成人在线 | 91在线文字幕 | 午夜在线观看影院 | 亚州国产精品视频 | 在线va视频 | 久章操 | 色综合色综合色综合 | 麻豆视屏 | 久久成人在线 | 制服丝袜在线 | 在线 精品 国产 | 在线 视频 亚洲 | 国产精品成人免费精品自在线观看 | 91黄视频在线 | 国产专区欧美专区 | 91麻豆文化传媒在线观看 | 国产成人精品亚洲a | 欧美午夜理伦三级在线观看 | 天堂在线v| 丝袜少妇在线 | 日日干,天天干 | 亚洲一级电影在线观看 | 天天想夜夜操 | 久久精品一区二区三区国产主播 | 国产精品免费视频一区二区 | 天天激情在线 | 国产99色 | www日| 综合久久网 | 欧美日韩不卡一区 | 精品黄色片 | 亚洲一级特黄 | 国产精品久久久久一区 | 91视频黄色 | 天天干天天干天天干天天干天天干天天干 | 国产精品久久人 | 一区二区电影在线观看 | 国产一区国产二区在线观看 | 午夜视频免费播放 | 中文字幕五区 | 国内视频1区 | 日韩欧美一区二区三区在线 | 欧美成人999 | 欧美 日韩 视频 | 国产精品久久久久久久久久久久 | 久久不射影院 | 91黄视频在线 | 日日摸日日碰 | 亚洲成av人片在线观看无 | www.色com| 国产色在线 | 91看片淫黄大片在线播放 | 亚洲最快最全在线视频 | 黄污视频大全 | 伊人伊成久久人综合网站 | 日韩精品免费一区二区在线观看 | 久久免费电影网 | 亚洲播放一区 | 狠狠干天天色 | 精品中文字幕在线观看 | 高清av免费看 | 国产精品美女在线 | 中文日韩在线视频 | 欧美日韩国产欧美 | 日韩av手机在线观看 | 婷婷免费视频 | 亚洲精品ww | 亚洲国产片色 | 97超碰福利久久精品 | 亚洲国产丝袜在线观看 | 久久成人国产精品 | 91麻豆精品国产自产在线 | 99精品乱码国产在线观看 | 黄色亚洲大片免费在线观看 | 91免费试看| av成人免费在线 | 午夜私人影院久久久久 | 亚洲国产精品99久久久久久久久 | 人人看97 | 久久av网址 | 69国产精品成人在线播放 | wwwwww国产| 超碰在线免费福利 | 久久久久久网站 | www.狠狠| 69精品| 国产探花| 99精品久久99久久久久 | 亚洲免费视频观看 | 国产人成看黄久久久久久久久 | 天天操天天干天天综合网 | 亚洲专区欧美 | 91精品国产福利在线观看 | 久草在线手机视频 | 香蕉影院在线 | 久久伊人精品一区二区三区 | 久久论理| 91大片网站 | 久草99 | 久久久久日本精品一区二区三区 | 日日夜夜天天 | 91成人短视频在线观看 | 九色91av | 国产在线精品国自产拍影院 | 日韩精品一区二区在线 | 国产精品视频app | 国产精品亚洲片在线播放 | 蜜臀久久99精品久久久酒店新书 | 久久免费大片 | 国产成人在线一区 | 精品国产福利在线 | 99精品视频一区 | 最新日韩电影 | 婷婷丁香狠狠爱 | 久久久久久久久久电影 | 91在线免费视频观看 | 四虎国产精品免费观看视频优播 | 97在线超碰 | 激情丁香月 | 一级片黄色片网站 | 人人澡人人干 | 久久精品视频在线看 | 91精品国自产在线观看 | 在线观看韩国av | 欧美黑人xxxx猛性大交 | 丁香五香天综合情 | www.天天干 | 中文字幕亚洲欧美日韩2019 | 999成人| 成人播放器 | 亚洲欧美日韩不卡 | 黄色一级大片在线观看 | 久久精品中文字幕一区二区三区 | 亚洲影院一区 | 国产精品久久电影网 | 超碰在线观看97 | 久久在现视频 | 奇米影视在线99精品 | 国产高清视频免费最新在线 | 国产成人精品亚洲 | 69视频永久免费观看 | 五月婷婷视频在线 | 日韩视频二区 | 亚洲最新合集 | 在线国产日韩 | 久久免费福利视频 | 国产三级在线播放 | 久久免费视频一区 | 超碰在线天天 | 免费三级骚| 国产999精品久久久影片官网 | 不卡av在线播放 | 麻豆传媒视频在线播放 | 人人超碰人人 | 97在线影院 | 日韩精品无 | 日本aaa在线观看 | 日韩久久网站 | 在线视频免费观看 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 国产又粗又猛又爽 | 久久艹艹 | 国产精品视频免费看 | 久久综合色一综合色88 | 午夜影院一级片 | 99精品网站| 国产福利免费在线观看 | 在线免费观看黄网站 | 91日韩在线 | 不卡中文字幕av | 国产精品va在线观看入 | 91成人国产 | 色91在线视频 | 欧美乱淫视频 | 久草在线免费色站 | 国产亚洲精品久久久久久久久久久久 | 成年人电影免费看 | 久草在线观 | 婷婷在线网站 | 成人国产精品久久久春色 | 国产99在线免费 | 国产精品av在线免费观看 | 国产高清中文字幕 | 亚洲高清精品在线 | 精品福利网站 | 国产1区在线观看 | 中文字幕高清 | 亚洲伦理电影在线 | 色5月婷婷| 成人在线免费视频 | 婷婷丁香久久五月婷婷 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 亚洲午夜不卡 | 视频在线观看99 | 日日噜噜噜噜夜夜爽亚洲精品 | 精品视频国产 | 久久综合精品一区 | 99精品免费在线观看 | 91精品久久久久久综合五月天 | 国产美女永久免费 | 狠狠色丁香久久婷婷综合_中 | 亚洲国产精品传媒在线观看 | 欧美精品久久久久久久久老牛影院 | 久久蜜臀一区二区三区av | 九九久久电影 | 日本护士三级少妇三级999 | 精品视频专区 | 最近日本韩国中文字幕 | 久久婷婷视频 | 久久国产精品99久久久久久丝袜 | 久久国产精品免费观看 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 中文字幕在线视频免费播放 | www欧美日韩| 国产亚洲视频中文字幕视频 | 欧美日韩在线视频免费 | 国产精品成人免费 | 日韩黄色中文字幕 | 亚洲三级av | 日韩精品无 | 色的网站在线观看 | 久久成 | 久久久精品久久 | 成人黄色电影免费观看 | 欧美日韩视频精品 | 黄色av影院| 免费久草视频 | 天天射狠狠干 | 亚洲精品国产精品国自产 | 欧美日韩精品在线观看视频 | 色 中文字幕 | 中文字幕在线视频第一页 | 在线免费观看国产视频 | 久久99久久精品 | 国产精品99久久久久久宅男 | 亚洲一级特黄 | 最新亚洲视频 | 国产91免费在线 | 久久精品一区二区三区中文字幕 | 国产精品乱码久久久 | 国产精品区免费视频 | 夜夜操网 | 国产一区二区在线看 | 国产v在线播放 | 国产高清视频在线免费观看 | 国产成人精品一区二 | 黄色精品网站 | 人人舔人人射 | 激情av一区二区 | 亚洲高清免费在线 | 成人国产精品 | 日韩欧美国产视频 | 国产成人一区二区精品非洲 | 又色又爽又黄高潮的免费视频 | 国产69久久久 | 欧美精品久久久 | 国产精品99蜜臀久久不卡二区 | 国内精品视频久久 | 成人丁香花 | 国产精品嫩草影院99网站 | 国产免费观看久久 | 国产一区二区三区高清播放 | 色鬼综合网 | 国产无限资源在线观看 | 国产中文字幕在线 | 成人性生交大片免费观看网站 | 四虎最新域名 | 懂色av一区二区在线播放 | 欧美一级片免费观看 | 丁香伊人网 | 夜夜躁日日躁狠狠躁 | 久久久久久伊人 | 国产v视频 | 中文字幕在线视频一区二区 | 国产精品久久久久久久久久尿 | 日本精品va在线观看 | 成人av视屏 | 精品免费久久久久 | 婷婷精品在线视频 | 欧美日韩精品影院 | 国内成人综合 | 亚洲精品在线免费播放 | www.大网伊人| 开心激情综合网 | 在线免费国产视频 | 精品一区二区6 | 久久国产精品久久精品国产演员表 | 日韩欧美在线视频一区二区 | 久久九九精品久久 | 国产精品国产三级国产不产一地 | 亚洲一级片在线观看 | 91精品毛片 | 国产色啪 | www免费黄色| 91大神一区二区三区 | 欧美日韩破处 | 久久精品99久久久久久 | 欧美韩日精品 | 国产精品美女久久久久久久久久久 | 丁香导航| 97精品欧美91久久久久久 | 亚洲精品乱码久久久久久蜜桃91 | 91av在| 精品亚洲男同gayvideo网站 | 久久久久久久久免费视频 | www.午夜色.com| 日韩精品免费一线在线观看 | 亚洲精品伦理在线 | 黄色小网站在线观看 | 欧美一区二区伦理片 | 国色天香永久免费 | 久久久久久久久久久高潮一区二区 | 久久久久免费精品视频 | 国产女人18毛片水真多18精品 | 久久久在线视频 | 麻豆超碰 | 欧美日韩视频一区二区三区 | 麻豆视频在线 | 久久伊人精品一区二区三区 | 日本中文字幕网 | 国产原创av在线 | 国产美女视频免费 | 天天拍天天干 | 啪啪精品| 亚洲国产免费看 | 亚洲欧美色婷婷 | 精品国产一区二区三区久久久 | 午夜美女网站 | 特级黄色电影 | av免费观看高清 | 在线中文字幕电影 | 精油按摩av | 999电影免费在线观看2020 | 色婷婷视频网 | 亚洲精品999| 99高清视频有精品视频 | 欧美精品黑人性xxxx | av三区在线 | 久久精品一级片 | 97超在线视频 | 日日干天夜夜 | 蜜臀91丨九色丨蝌蚪老版 | www.狠狠插.com | 国产精品一区二区久久精品爱涩 | 国产一区二区在线影院 | 97精品国产91久久久久久久 | 久久精品国产一区二区电影 | 精品国产99 | 日本精品一 | 99亚洲天堂| 蜜桃av综合网 | 国模一二三区 | 日韩精品视频在线免费观看 | 久久综合九色综合欧美就去吻 | 国产色视频123区 | 日韩精品高清不卡 | 日本久久久久久久久久久 | 国语久久 | 不卡av电影在线观看 | 九九热视频在线免费观看 | 欧洲成人av | 亚洲国产日韩精品 | 久久精品99国产精品亚洲最刺激 | 国外成人在线视频网站 | 狠狠干网站 | 亚洲国产精品一区二区尤物区 | 日韩午夜在线观看 | 天天曰天天曰 | 久草在线免费电影 | 亚洲香蕉在线观看 | 天堂视频一区 | 久久免费国产精品1 | av网站免费线看精品 | 国产成人亚洲精品自产在线 | 一级片免费观看视频 | 手机在线视频福利 | 草久在线观看 | 成人中文字幕在线 | 欧美精品被 | 欧美久久成人 | 国产一区二区高清 | 久久视频在线观看免费 | 久久99精品国产麻豆婷婷 | 精品在线观看国产 | 午夜精品久久久久99热app | 国产精品美女毛片真酒店 | 999毛片| 亚洲爱爱视频 | 综合在线色 | 69av久久| www.av在线.com| 91午夜精品| 草免费视频| 久久免视频 | 久久人人精品 | 中文字幕麻豆 | 国产精品九九九九九九 | 麻豆va一区二区三区久久浪 | 在线а√天堂中文官网 | 日本黄色免费在线 | 一区二区三区精品在线视频 | 岛国av在线免费 | 亚洲精品乱码久久久一二三 | 中文资源在线观看 | 精品一区精品二区 | 亚洲高清网站 | 激情网站免费观看 | 色福利网 | 97视频免费观看2区 亚洲视屏 | 欧美日韩在线观看不卡 | 国产美女免费观看 | 一区二区国产精品 | 免费日韩一区二区三区 | 久久99精品热在线观看 | 成人羞羞免费 | 久久国产精品99久久久久久进口 | 国产精品99久久久久 | 国产91精品一区二区麻豆网站 | 欧美日韩一区二区视频在线观看 | 欧美激精品 | 成人在线超碰 | zzijzzij日本成熟少妇 | 黄网站色成年免费观看 | 香蕉在线观看 | av中文字幕第一页 | 99热亚洲精品 | 香蕉精品视频在线观看 | 国产免费视频在线 | 在线观看免费成人 | 日韩 在线 | 国产日产精品一区二区三区四区的观看方式 | 区一区二区三在线观看 | 久草视频2 | 激情文学丁香 | 久久伊人操 | 欧美一区二区三区激情视频 | 91精品国产91久久久久久三级 | 丁香五月亚洲综合在线 | 天天操天天操天天操天天操天天操天天操 | av天天澡天天爽天天av | 日本久久中文字幕 | 亚洲婷婷网 | 九九久久国产精品 | 国产精品美女久久久久久久网站 | 欧美日韩观看 | 免费在线观看亚洲视频 | 国产一区二区影院 | 国产精品mv在线观看 | 欧美精品在线观看一区 | 日本中文乱码卡一卡二新区 | 亚洲年轻女教师毛茸茸 | 婷婷丁香五 | 国产精品久久久久久久久久不蜜月 | 91精品一区二区三区蜜臀 | 亚洲天天综合网 | 五月开心六月婷婷 | 伊人婷婷激情 | 天天干天天射天天操 | 国产精品久久久久久影院 | 日韩在线网 | 91视频在线免费看 | 视频福利在线观看 | 久久久久综合精品福利啪啪 | 日韩久久网站 | 欧美日韩高清国产 | av在线播放快速免费阴 | 精品国产伦一区二区三区观看体验 | 日韩精品视频一二三 | 黄色一级网 | 成人国产精品 | 国产淫片 | 欧美日韩国产综合网 | 中文字幕观看在线 | 久久久久中文字幕 | 欧美日韩在线电影 | 在线免费黄色 | 91在线中文 | 精品亚洲成a人在线观看 | 青青河边草免费视频 | 国产精品一区二区久久国产 | 六月丁香婷婷久久 | 在线免费高清 | 黄色大片日本 | 99热精品久久 | 国产精品久久久久久久久久免费 | 999视频在线播放 | 中文资源在线观看 | 成人av电影免费在线播放 | 日韩精品一区二区三区电影 | 成人精品影视 | 婷婷丁香激情网 | 国产高清绿奴videos | 日韩手机在线 | 成人永久视频 | 亚洲精品mv在线观看 | 91久久偷偷做嫩草影院 | 五月天伊人网 | 在线免费观看黄色小说 | 亚洲 欧美日韩 国产 中文 | 天天干视频在线 | 99理论片 | 天天se天天cao天天干 | 亚洲国产成人久久 | 亚洲女欲精品久久久久久久18 | 91在线成人 | 国产.精品.日韩.另类.中文.在线.播放 | 成人av一二三区 | 嫩草av影院| 久久久久国产成人免费精品免费 | 日韩午夜网站 | av官网 | 久草青青在线观看 | 成年人免费在线观看网站 | 91大神电影 | 婷婷激情欧美 | 久久久国产视频 | 亚洲一区视频免费观看 | 久久中文欧美 | 四虎免费在线观看 | 91黄视频在线 | 成人啊 v| 911久久| 国产亚洲欧美在线视频 | 国产99久久久国产精品成人免费 | 91激情视频在线观看 | 免费黄色在线网址 | av色综合网| 奇米影视四色8888 | 在线91精品 | 一区二区三区 亚洲 | 久久免费福利 | 午夜国产一区 | 国产亚洲午夜高清国产拍精品 | 中文字幕欧美三区 | 中文视频在线播放 | 黄色小说网站在线 | 天天色天天上天天操 | 午夜精品久久久久 | 永久免费观看视频 | 精品女同一区二区三区在线观看 | 996久久国产精品线观看 | 狠狠综合久久 | www.色就是色 | 4p变态网欧美系列 | 91丨九色丨高潮 | 国产日韩精品在线 | 亚洲精品视频在线观看免费视频 | 91麻豆国产福利在线观看 | 欧美日韩国产精品一区二区 | 91丨九色丨蝌蚪丰满 | 2019中文最近的2019中文在线 | 日韩欧美在线观看一区 | 激情五月六月婷婷 | 天天爽网站| 欧美 激情 国产 91 在线 | 人人插人人搞 | 免费黄色在线网站 | 视频国产一区二区三区 | 久久久18 | 97电影院网 | 久久精品视频免费 | 日韩av中文字幕在线免费观看 | 超碰在线94 | 亚洲精品国产精品国自产观看浪潮 | 国产精品18久久久久久久网站 | 久久久网 | 一区二区三区日韩精品 | 国产老熟| 国产中文字幕亚洲 | 制服丝袜在线91 | 欧美精品免费在线 | 五月天久久综合 | 亚洲午夜精品一区二区三区电影院 | 成年人免费av网站 | 亚洲日本精品 | 伊人久久五月天 | 精品一区二区精品 | 日本丰满少妇免费一区 | 国内精品小视频 | 美女黄频在线观看 | 国产首页| 国产黑丝袜在线 | 奇米影视8888| 成人午夜影视 | 国产一二三精品 | 亚洲专区免费观看 | 日韩欧美高清在线观看 | 91精品国产成人观看 | 欧美国产91| 欧美日韩国产精品一区二区三区 | 欧美性黄网官网 | 超碰久热 | 日韩在线视 | 狠狠亚洲| 激情影音| 特级西西444www高清大视频 | 看国产黄色片 | 亚洲激情小视频 | 成人丁香花 | 欧美午夜一区二区福利视频 | 中文在线免费观看 | 97人人看 | 亚洲精品免费在线播放 | av福利在线免费观看 | 91亚洲精品久久久蜜桃网站 | 精品美女久久久久久免费 | 国产精品久久久久久久久久久免费 | 亚洲综合色视频 | 欧美久久电影 | 最新成人在线 | 国产精品高清在线 | 色综合www| 久久久久一区 | 国产一级视频 | 国产91精品高清一区二区三区 | 日韩在线观看视频中文字幕 | 91麻豆免费看 | 丁香六月激情婷婷 | 看片一区二区三区 | 91精品区 | 九九爱免费视频 | 色亚洲网 | 在线观看黄网 | 日韩免费观看一区二区三区 | 国产九色视频在线观看 | 国产成人久久精品77777 | 久草在线视频免费资源观看 | 特级片免费看 | 成年人视频免费在线播放 | 日韩在线免费高清视频 | 五月综合激情婷婷 | 黄色软件视频网站 | 99国产情侣在线播放 | 久久九九久久九九 | www.com黄色 | 在线免费高清 | 天天爽天天碰狠狠添 | 天天草av | 国产偷国产偷亚洲清高 | 欧美性色综合网 | 国产日产精品一区二区三区四区的观看方式 | 精品在线一区二区 | 久久久久在线 | 久久乐九色婷婷综合色狠狠182 | 国产精品一区二区电影 | 国产三级午夜理伦三级 | 麻豆影视网 | 最近中文字幕在线播放 | 亚洲伊人成综合网 | 91香蕉国产在线观看软件 | 中文字幕资源在线 | 精品国产乱码一区二 | 麻豆影视在线免费观看 | 久久久免费播放 | 精品一区 精品二区 | 91精品国产自产在线观看永久 | 国产福利免费在线观看 | 丁香视频 | 日韩伦理一区二区三区av在线 | 涩涩网站在线播放 | 国产精品久久久电影 | 精品视频国产一区 | 欧美午夜性生活 | 欧美一级艳片视频免费观看 | 六月丁香激情综合色啪小说 | 不卡电影一区二区三区 | 欧美俄罗斯性视频 | 久操视频在线播放 | 欧美性生活久久 | 中文字幕中文字幕在线中文字幕三区 | 911国产在线观看 | 国产一级做a爱片久久毛片a | 超碰在线观看av.com | 天天射天天干天天插 | 国产精品久久久久久久久久久久冷 | 正在播放 国产精品 | 婷婷激情五月综合 | 久久99网| 狠狠干天天干 | 亚洲高清在线视频 | 青草视频在线看 | 日韩电影在线看 | 亚洲视频专区在线 | 999久久久国产精品 高清av免费观看 | 免费在线观看亚洲视频 | 成人国产精品免费 | 久久影视一区二区 | 高清av中文在线字幕观看1 | 麻豆小视频在线观看 | 亚洲精品影院在线观看 |