精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Netfileter & Iptables 實現之 Netfilter實現

開發 前端
在《Netfilter & iptables 原理》一文中,我們介紹了 Netfilter 和 iptables 的原理,而本文主要通過源碼分析來介紹一下 Netfilter 與 iptables 的實現過程。

 [[393194]]

本文轉載自微信公眾號「Linux內核那些事」,作者songsong001。轉載本文請聯系Linux內核那些事公眾號。

在《Netfilter & iptables 原理》一文中,我們介紹了 Netfilter 和 iptables 的原理,而本文主要通過源碼分析來介紹一下 Netfilter 與 iptables 的實現過程。

一、Netfilter 掛載點

我們先來回顧一下 Netfilter 的原理,Netfilter 是通過在網絡協議棧的不同階段注冊鉤子函數來實現對數據包的處理與過濾,如 圖1 所示:

(圖1 Netfilter掛載點)

在 圖1 中,藍色部分就是 Netfilter 掛載鉤子函數的位置,所以 Netfilter 定義了 5 個常量來表示這 5 個位置,如下代碼:

  1. // 文件:include/linux/netfilter_ipv4.h 
  2.  
  3. #define NF_IP_PRE_ROUTING   0 
  4. #define NF_IP_LOCAL_IN      1 
  5. #define NF_IP_FORWARD       2 
  6. #define NF_IP_LOCAL_OUT     3 
  7. #define NF_IP_POST_ROUTING  4 

上面代碼中的常量與 圖1 中掛載鉤子函數的位置一一對應,如常量 NF_IP_PRE_ROUTING 對應著 圖1 的 PRE_ROUTING 處。

二、Netfilter 鉤子函數鏈

前面說過,Netfilter 是通過在網絡協議中的不同位置掛載鉤子函數來對數據包進行過濾和處理,而且每個掛載點能夠掛載多個鉤子函數,所以 Netfilter 使用鏈表結構來存儲這些鉤子函數,如 圖2 所示:

(圖2 Netfilter鉤子函數鏈)

如 圖2 所示,Netfilter 的每個掛載點都使用一個鏈表來存儲鉤子函數列表。在內核中,定義了一個名為 nf_hooks 的數組來存儲這些鏈表,如下代碼:

  1. // 文件:net/core/netfilter.c 
  2.  
  3. struct list_head nf_hooks[32][5]; 

struct list_head 結構是內核的通用鏈表結構。

從 nf_hooks 變量定義為一個二維數組,第一維是用來表示不同的協議(如 IPv4 或者 IPv6,本文只討論 IPv4,所以可以把 nf_hooks 當成是一維數組),而第二維用于表示不同的掛載點,如 圖2 中的 5 個掛載點。

三、鉤子函數

接下來我們介紹一下鉤子函數在 Netfilter 中的存儲方式。

前面我們介紹過,Netfilter 通過鏈表來存儲鉤子函數,而鉤子函數是通過結構 nf_hook_ops 來描述的,其定義如下:

  1. // 文件:include/linux/netfilter.h 
  2.  
  3. struct nf_hook_ops 
  4.     struct list_head list; // 連接相同掛載點的鉤子函數 
  5.     nf_hookfn *hook;       // 鉤子函數指針 
  6.     int pf;                // 協議類型 
  7.     int hooknum;           // 鉤子函數所在鏈 
  8.     int priority;          // 優先級 
  9. }; 

下面我們對 nf_hook_ops 結構的各個字段進行說明:

  • list:用于把處于相同掛載點的鉤子函數鏈接起來。
  • hook:鉤子函數指針,就是用于處理或者過濾數據包的函數。
  • pf:協議類型,用于指定鉤子函數掛載在 nf_hooks 數組第一維的位置,如 IPv4 協議設置為 PF_INET。
  • hooknum:鉤子函數所在鏈(掛載點),如 NF_IP_PRE_ROUTING。
  • priority:鉤子函數的優先級,用于管理鉤子函數的調用順序。

其中 hook 字段的類型為 nf_hookfn,nf_hookfn 類型的定義如下:

  1. // 文件:include/linux/netfilter.h 
  2.  
  3. typedef unsigned int nf_hookfn(unsigned int hooknum, 
  4.                                struct sk_buff **skb, 
  5.                                const struct net_device *in
  6.                                const struct net_device *out
  7.                                int (*okfn)(struct sk_buff *)); 

我們也介紹一下 nf_hookfn 函數的各個參數的作用:

  • hooknum:鉤子函數所在鏈(掛載點),如 NF_IP_PRE_ROUTING。
  • skb:數據包對象,就是要處理或者過濾的數據包。
  • in:接收數據包的設備對象。
  • out:發送數據包的設備對象。
  • okfn:當掛載點上所有的鉤子函數都處理過數據包后,將會調用這個函數來對數據包進行下一步處理。

四、注冊鉤子函數

當定義好一個鉤子函數結構后,需要調用 nf_register_hook 函數來將其注冊到 nf_hooks 數組中,nf_register_hook 函數的實現如下:

  1. // 文件:net/core/netfilter.c 
  2.  
  3. int nf_register_hook(struct nf_hook_ops *reg) 
  4.     struct list_head *i; 
  5.  
  6.     br_write_lock_bh(BR_NETPROTO_LOCK); // 對 nf_hooks 進行上鎖 
  7.  
  8.     // priority 字段表示鉤子函數的優先級 
  9.     // 所以通過 priority 字段來找到鉤子函數的合適位置 
  10.     for (i = nf_hooks[reg->pf][reg->hooknum].next
  11.          i != &nf_hooks[reg->pf][reg->hooknum]; 
  12.          i = i->next
  13.     { 
  14.         if (reg->priority < ((struct nf_hook_ops *)i)->priority) 
  15.             break; 
  16.     } 
  17.  
  18.     list_add(&reg->list, i->prev); // 把鉤子函數添加到鏈表中 
  19.  
  20.     br_write_unlock_bh(BR_NETPROTO_LOCK); // 對 nf_hooks 進行解鎖 
  21.  
  22.     return 0; 

nf_register_hook 函數的實現比較簡單,步驟如下:

  • 對 nf_hooks 進行上鎖操作,用于保護 nf_hooks 變量不受并發競爭。
  • 通過鉤子函數的優先級來找到其在鉤子函數鏈表中的正確位置。
  • 把鉤子函數插入到鏈表中。
  • 對 nf_hooks 進行解鎖操作。

插入過程如 圖3 所示:

(圖3 鉤子函數插入過程)

如 圖3 所示,我們要把優先級為 20 的鉤子函數插入到 PRE_ROUTING 這個鏈中,而 PRE_ROUTING 鏈已經存在兩個鉤子函數,一個優先級為 10, 另外一個優先級為 30。

通過與鏈表中的鉤子函數的優先級進行對比,發現新的鉤子函數應該插入到優先級為 10 的鉤子函數后面,所以就 如圖3 所示就把新的鉤子函數插入到優先級為 10 的鉤子函數后面。

五、觸發調用鉤子函數

鉤子函數已經被保存到不同的鏈上,那么什么時候才會觸發調用這些鉤子函數來處理數據包呢?

要觸發調用某個掛載點上(鏈)的所有鉤子函數,需要使用 NF_HOOK 宏來實現,其定義如下:

  1. // 文件:include/linux/netfilter.h 
  2.  
  3. #define NF_HOOK(pf, hook, skb, indev, outdev, okfn)    \ 
  4.     (list_empty(&nf_hooks[(pf)][(hook)])               \ 
  5.         ? (okfn)(skb)                                  \ 
  6.         : nf_hook_slow((pf), (hook), (skb), (indev), (outdev), (okfn))) 

首先介紹一下 NF_HOOK 宏的各個參數的作用:

  • pf:協議類型,就是 nf_hooks 數組的第一個維度,如 IPv4 協議就是 PF_INET。
  • hook:要調用哪一條鏈(掛載點)上的鉤子函數,如 NF_IP_PRE_ROUTING。
  • indev:接收數據包的設備對象。
  • outdev:發送數據包的設備對象。
  • okfn:當鏈上的所有鉤子函數都處理完成,將會調用此函數繼續對數據包進行處理。

而 NF_HOOK 宏的實現也比較簡單,首先判斷一下鉤子函數鏈表是否為空,如果是空的話,就直接調用 okfn 函數來處理數據包,否則就調用 nf_hook_slow 函數來處理數據包。我們來看看 nf_hook_slow 函數的實現:

  1. // 文件:net/core/netfilter.c 
  2.  
  3. int nf_hook_slow(int pf, unsigned int hook, struct sk_buff *skb, 
  4.                  struct net_device *indev, struct net_device *outdev, 
  5.                  int (*okfn)(struct sk_buff *)) 
  6.     struct list_head *elem; 
  7.     unsigned int verdict; 
  8.     int ret = 0; 
  9.  
  10.     elem = &nf_hooks[pf][hook]; // 獲取要調用的鉤子函數鏈表 
  11.  
  12.     // 遍歷鉤子函數鏈表,并且調用鉤子函數對數據包進行處理 
  13.     verdict = nf_iterate(&nf_hooks[pf][hook], &skb, hook, indev, outdev, &elem, okfn); 
  14.     ... 
  15.     // 如果處理結果為 NF_ACCEPT, 表示數據包通過所有鉤子函數的處理, 那么就調用 okfn 函數繼續處理數據包 
  16.     // 如果處理結果為 NF_DROP, 表示數據包被拒絕, 應該丟棄此數據包 
  17.     switch (verdict) { 
  18.     case NF_ACCEPT: 
  19.         ret = okfn(skb); 
  20.         break; 
  21.     case NF_DROP: 
  22.         kfree_skb(skb); 
  23.         ret = -EPERM; 
  24.         break; 
  25.     } 
  26.  
  27.     return ret; 

nf_hook_slow 函數的實現也比較簡單,過程如下:

  • 首先調用 nf_iterate 函數來遍歷鉤子函數鏈表,并調用鏈表上的鉤子函數來處理數據包。
  • 如果處理結果為 NF_ACCEPT,表示數據包通過所有鉤子函數的處理, 那么就調用 okfn 函數繼續處理數據包。
  • 如果處理結果為 NF_DROP,表示數據包沒有通過鉤子函數的處理,應該丟棄此數據包。

既然 Netfilter 是通過調用 NF_HOOK 宏來調用鉤子函數鏈表上的鉤子函數,那么內核在什么地方調用這個宏呢?

比如數據包進入 IPv4 協議層的處理函數 ip_rcv 函數中就調用了 NF_HOOK 宏來處理數據包,代碼如下:

  1. // 文件:net/ipv4/ip_input.c 
  2.  
  3. int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt) 
  4.     ... 
  5.     return NF_HOOK(PF_INET, NF_IP_PRE_ROUTING, skb, dev, NULL, ip_rcv_finish); 

如上代碼所示,在 ip_rcv 函數中調用了 NF_HOOK 宏來處理輸入的數據包,其調用的鉤子函數鏈(掛載點)為 NF_IP_PRE_ROUTING。而 okfn 設置為 ip_rcv_finish,也就是說,當 NF_IP_PRE_ROUTING 鏈上的所有鉤子函數都成功對數據包進行處理后,將會調用 ip_rcv_finish 函數來繼續對數據包進行處理。

六、總結

本文主要介紹了 Netfilter 的實現,因為 Netfilter 是 Linux 網絡數據包過濾的框架,而 iptables 就是建立在 Netfilter 之上的。所以,先了解 Netfilter 的實現對分析 iptables 的實現有非常大的幫助。

而在下一章中,我們將會繼續分析 iptables 的實現。

責任編輯:武曉燕 來源: Linux內核那些事
相關推薦

2011-03-15 12:47:11

netfilteriptables

2011-03-15 15:47:30

netfilteriptables安裝

2011-03-15 10:00:01

NetfilterIPTables

2011-03-15 15:47:26

netfilteriptables

2011-03-15 15:51:12

netfilteriptables

2011-03-15 09:10:43

iptables防火墻

2010-12-07 09:51:43

Linux安全性netfilteriptables

2011-03-15 15:47:34

netfilteriptables

2011-03-15 10:48:47

2011-03-15 09:10:47

iptablesNAT

2011-03-15 14:26:23

iptablesNAT

2011-03-16 09:05:32

RedhatiptablesNAT

2011-03-16 13:29:33

iptables 端口

2011-03-16 09:05:29

iptablesNAT

2011-03-16 09:05:53

NATiptables

2011-03-16 09:05:33

2011-03-16 10:52:20

2011-07-05 14:34:23

2011-07-13 10:30:09

2022-10-27 20:31:19

iptablesnetfilter
點贊
收藏

51CTO技術棧公眾號

午夜精品一区二区在线观看 | 男人操女人逼免费视频| 亚洲av无码片一区二区三区| 国产精品mm| 日韩理论片久久| 日本在线观看免费视频| 在线中文字幕-区二区三区四区| 国产精品一区在线| 奇米一区二区三区四区久久| www.99re6| 牛牛影视久久网| 欧美男人的天堂一二区| 免费不卡av在线| www.在线视频.com| 成人性视频免费网站| 国产精品99久久久久久白浆小说 | 国产日韩欧美一区二区三区| 9191精品国产综合久久久久久| 日韩国产小视频| 成人不用播放器| 成人网在线播放| 国产精品视频久| 久久高清免费视频| 婷婷久久国产对白刺激五月99| 精品国产91久久久久久久妲己 | 日韩主播视频在线| 欧美精品999| 网站永久看片免费| 日韩系列在线| 欧美成人猛片aaaaaaa| 成人性生生活性生交12| 超碰在线视屏| 一区二区三区在线免费视频| 色女人综合av| 日韩有码电影| 国产suv精品一区二区三区| 国产精品揄拍500视频| 国产成人免费观看视频| 欧美不卡在线| 久久伊人精品天天| 男人舔女人下部高潮全视频| 欧美日韩一区二区三区四区不卡 | av在线网址导航| 日韩脚交footjobhd| 亚洲精品大片www| 夜夜爽www精品| 成人在线观看黄色| 91麻豆成人久久精品二区三区| 国产精品区一区二区三在线播放| 国产尤物在线观看| 美女性感视频久久| 国产精品免费在线免费| 日韩熟女一区二区| 日欧美一区二区| 国产高清在线不卡| 亚洲高清视频免费观看| 日韩精品一区第一页| 欧美一区二区三区免费观看| 国产一级片毛片| 国产精品视频| 国产99视频精品免视看7| 国产专区第一页| 葵司免费一区二区三区四区五区| 欧美综合在线观看| 波多野结衣mp4| 视频一区在线视频| 国产美女久久精品香蕉69| 最好看的日本字幕mv视频大全| 首页欧美精品中文字幕| 国产成人啪精品视频免费网| 狠狠狠狠狠狠狠| 日韩一区精品字幕| 成人日韩av在线| 精品人妻一区二区三区日产乱码| 国产成人免费xxxxxxxx| 国产欧美一区二区视频| 色av男人的天堂免费在线| 久久久青草青青国产亚洲免观| 日韩欧美电影一区二区| 日本欧美在线视频免费观看| 一区在线观看视频| 精品少妇人妻av一区二区| 深夜国产在线播放| 欧美日韩国产专区| 日本激情视频在线播放| 9999在线精品视频| 亚洲福利在线播放| 久久精品国产亚洲av久| 亚洲欧美在线专区| 97婷婷大伊香蕉精品视频| 欧产日产国产69| 狠狠色狠狠色综合日日91app| 亚洲r级在线观看| 天天射,天天干| 亚洲国产激情av| 国产精品自拍合集| 成人在线爆射| 日韩一区二区三区免费看| 艳妇乳肉豪妇荡乳xxx| 日韩极品一区| 国内成人精品视频| 中文字幕91爱爱| 成人性生交大合| 日韩精品最新在线观看| 性欧美videos高清hd4k| 色哟哟欧美精品| 精品人妻一区二区三区免费| 爽爽窝窝午夜精品一区二区| 久久精品国产久精国产一老狼| 国产一级一片免费播放放a| 奇米在线7777在线精品| 国产精品日本一区二区| www.久久热.com| 亚洲欧美另类综合偷拍| 成人观看免费完整观看| 精品国产乱码一区二区三区| 亚洲图片欧美午夜| 五月天婷婷综合网| 国产一区二区三区免费| 亚洲7777| 阿v视频在线| 日韩一区二区三区视频在线| 人妻无码一区二区三区免费| 国产精品久久久久9999高清| 91观看网站| 99视频在线观看地址| 性做久久久久久免费观看欧美| 一区二区三区四区毛片| 国产a久久精品一区二区三区| 欧美极品少妇xxxxⅹ免费视频| 国产一区二区三区中文字幕 | 天堂网中文在线观看| 一本色道久久| av一本久道久久波多野结衣| 一本一道波多野毛片中文在线| 精品美女久久久久久免费| 91香蕉国产线在线观看| 久久国产中文字幕| 国产精品扒开腿做爽爽爽的视频| 污视频网站免费观看| 亚洲综合色噜噜狠狠| 女人扒开腿免费视频app| 91中文字幕精品永久在线| 国产福利精品视频| 国内在线免费高清视频| 欧美午夜丰满在线18影院| 天堂www中文在线资源| 亚洲私拍自拍| αv一区二区三区| 亚洲丝袜一区| 日韩视频不卡中文| 欧美日韩在线视频免费| 黄页网站大全一区二区| 伊人久久大香线蕉午夜av| 日韩制服一区| 色琪琪综合男人的天堂aⅴ视频| 国产成人自拍偷拍| 国产亚洲精品aa| 可以免费在线看黄的网站| 国产一区二区三区四区五区传媒 | 日本三级午夜理伦三级三| 国产精品一区二区你懂的| 欧美日韩在线免费观看视频| 电影91久久久| 欧美高跟鞋交xxxxhd| 人妻视频一区二区三区| 精品久久久久久亚洲精品| 3d动漫精品啪啪一区二区下载| 国产日本精品| 日本在线高清视频一区| 99久久er| 久久影视电视剧免费网站| 午夜美女福利视频| 亚洲成人黄色影院| av黄色在线免费观看| 蜜臀久久久久久久| 中国一级黄色录像| avtt综合网| 青草青草久热精品视频在线网站| 欧美色视频免费| 在线精品视频免费播放| 亚洲av无一区二区三区| 丁香六月综合激情| 欧美日韩激情视频在线观看| 超碰成人久久| 51午夜精品| 日本午夜大片a在线观看| 中文字幕精品网| www.com在线观看| 欧美性20hd另类| 亚洲永久精品ww.7491进入| 男人操女人的视频在线观看欧美| 日韩中文字幕亚洲精品欧美| 日韩有码一区| 亚洲影视九九影院在线观看| √最新版天堂资源网在线| 亚洲天堂av在线播放| 99久久精品无免国产免费| 亚洲v精品v日韩v欧美v专区| 内射毛片内射国产夫妻| 国产成人午夜99999| 国产精品无码一本二本三本色| 影音先锋日韩在线| 日本黑人久久| 91精品国产乱码久久久竹菊| 国产不卡视频在线| av电影免费在线观看| 亚洲一区www| 成人毛片在线免费观看| 欧美日精品一区视频| www.av视频在线观看| 国产精品毛片久久久久久| 欧美无人区码suv| 国产美女精品人人做人人爽| 欧美黄网站在线观看| 欧美日韩mv| 亚洲精品国产精品国自产观看| 亚洲不卡在线| 国产欧美日韩丝袜精品一区| 在线观看v片| 欧美激情视频免费观看| 在线观看麻豆| 亚洲欧美综合v| 亚洲精品一区二区三区新线路| 欧美日韩免费不卡视频一区二区三区| 天天插天天操天天干| 亚洲激情综合网| 欧美极品jizzhd欧美18| 91免费看片在线观看| 无码人妻丰满熟妇区毛片蜜桃精品 | 三级在线观看视频| 久久露脸国产精品| av大大超碰在线| 久久精品在线视频| av在线免费播放网站| 亚洲美女免费精品视频在线观看| 丰满人妻一区二区三区四区53 | 国产ts变态重口人妖hd| 欧美少妇xxx| 国产无套丰满白嫩对白| 亚洲国产视频直播| 久久久久久久久久久久国产| 亚洲欧美欧美一区二区三区| 四虎影院中文字幕| 日韩一区有码在线| 日本 欧美 国产| 中文字幕一区在线观看| 美国一级黄色录像| 国产精品女同一区二区三区| xxxxx99| 国产精品污www在线观看| 九九热免费在线| 日本一区二区三级电影在线观看| 色婷婷在线影院| 久久网这里都是精品| 香蕉视频黄色在线观看| 久久久亚洲午夜电影| 99久久久无码国产精品性| 久久精品人人做人人爽97| 欧美成人午夜精品免费| 久久精品亚洲精品国产欧美kt∨| 国产美女免费网站| 国产精品久久免费看| 日韩av网站在线播放| 亚洲三级免费电影| 精品午夜福利在线观看| 亚洲福利一二三区| 精品不卡一区二区| 欧美在线一二三| 国产手机精品视频| 精品国产污网站| 四虎精品在线| 最新国产成人av网站网址麻豆| 免费观看成人高潮| 欧美激情中文字幕在线| 亚洲一二三四| 国产欧美精品日韩| 日韩欧洲国产| 麻豆亚洲一区| 日韩精品欧美| 妺妺窝人体色www看人体| 国产色综合网| 亚洲一级片网站| 国产真实乱子伦精品视频| av漫画在线观看| 26uuu另类欧美亚洲曰本| 色www亚洲国产阿娇yao| 一区二区三区**美女毛片| 国产农村妇女aaaaa视频| 欧美色倩网站大全免费| 午夜精品久久久久久久99热黄桃| 亚洲精品自拍第一页| 亚乱亚乱亚洲乱妇| 久久久久久久久久久久av| 欧美7777| 99精品国产高清一区二区| 久操国产精品| 加勒比海盗1在线观看免费国语版| 亚洲欧洲午夜| 三级av免费观看| 成人av免费在线播放| 免费看污片的网站| 亚洲二区在线观看| 国产又大又黄又爽| 亚洲欧美国产一区二区三区| 青春草视频在线观看| 国产精品福利网| 精品少妇一区| 青少年xxxxx性开放hg| 午夜性色一区二区三区免费视频 | 麻豆成全视频免费观看在线看| 国产精品免费一区豆花| 麻豆成人入口| 男人j进女人j| 日韩精品久久久久久| 日本黄色录像片| 亚洲少妇中出一区| 国产情侣免费视频| 日韩激情在线视频| 青春草在线视频| 91在线视频一区| 波多野结衣在线观看一区二区| 国产精品秘入口18禁麻豆免会员| 精油按摩中文字幕久久| 国产中年熟女高潮大集合| 午夜日韩在线观看| 亚洲精品无码久久久| 日韩在线观看免费| 久久三级毛片| 日本免费高清一区二区| 国产亚洲精品v| 成年人的黄色片| 伊人一区二区三区| 国产特级黄色片| 久久精品国产96久久久香蕉| 成人午夜sm精品久久久久久久| 久久riav二区三区| 亚洲三级网站| 国产精品熟妇一区二区三区四区| 亚洲图片你懂的| 一本一道精品欧美中文字幕| 国产亚洲精品va在线观看| 亚洲私拍视频| 久久久人人爽| 免播放器亚洲| 国精产品一区一区三区免费视频| 亚洲成人福利片| 色噜噜一区二区三区| 国内精品久久久久久| 成人偷拍自拍| 91视频 -- 69xx| 91丨porny丨户外露出| 日韩特级黄色片| 亚洲美女在线视频| 自拍偷自拍亚洲精品被多人伦好爽| 欧洲精品久久| 日韩av一级片| 337人体粉嫩噜噜噜| 欧美午夜寂寞影院| 麻豆av免费在线观看| 亚洲最大福利视频| 51精产品一区一区三区| 超碰中文字幕在线观看| 一区二区国产视频| 少妇精品视频一区二区| 欧美在线视频一区二区| 精品国产视频| 欧美三级午夜理伦三级富婆| 亚洲欧美日韩久久精品| 亚洲产国偷v产偷v自拍涩爱| 国产69精品99久久久久久宅男| 欧美天堂社区| 91热这里只有精品| 成人欧美一区二区三区视频网页| 精品国产va久久久久久久| 欧美激情精品久久久久久免费印度| 噜噜噜狠狠夜夜躁精品仙踪林| 成人在线激情网| 亚洲色图19p| 涩涩视频在线观看免费| 国产精品欧美激情在线播放| 亚洲h色精品| 日本一卡二卡在线| 欧洲精品一区二区| 在线观看中文字幕的网站| 久久久久久久免费| 蜜臀精品久久久久久蜜臀 | 久久精品亚洲天堂| 亚洲va欧美va国产va天堂影院| 欧美日韩免费做爰大片| 91欧美精品午夜性色福利在线| 亚洲高清成人| 国产调教在线观看| 精品国产制服丝袜高跟| 久久久一本精品| av动漫在线免费观看| 国产日韩精品一区| 黄色福利在线观看| 国产精品www| 亚洲精品激情|