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

用戶態 Tcpdump 如何實現抓到內核網絡包的?

網絡 通信技術
在網絡包的發送和接收過程中,絕大部分的工作都是在內核態完成的。那么問題來了,我們常用的運行在用戶態的程序 tcpdump 是那如何實現抓到內核態的包的呢?

[[422515]]

本文轉載自微信公眾號「開發內功修煉」,作者張彥飛allen。轉載本文請聯系開發內功修煉公眾號。

大家好,我是飛哥!

今天聊聊大家工作中經常用到的 tcpdump。

在網絡包的發送和接收過程中,絕大部分的工作都是在內核態完成的。那么問題來了,我們常用的運行在用戶態的程序 tcpdump 是那如何實現抓到內核態的包的呢?有的同學知道 tcpdump 是基于 libpcap 的,那么 libpcap 的工作原理又是啥樣的呢。如果讓你裸寫一個抓包程序,你有沒有思路?

按照飛哥的風格,不搞到最底層的原理咱是不會罷休的。所以我對相關的源碼進行了深入分析。通過本文,你將徹底搞清楚了以下這幾個問題。

tcpdump 是如何工作的?

  • netfilter 過濾的包 tcpdump 是否可以抓的到?
  • 讓你自己寫一個抓包程序的話該如何下手?
  • 借助這幾個問題,我們來展開今天的探索之旅!

一、網絡包接收過程

在圖解Linux網絡包接收過程一文中我們詳細介紹了網絡包是如何從網卡到達用戶進程中的。這個過程我們可以簡單用如下這個圖來表示。

找到 tcpdump 抓包點

我們在網絡設備層的代碼里找到了 tcpdump 的抓包入口。在 __netif_receive_skb_core 這個函數里會遍歷 ptype_all 上的協議。還記得上文中我們提到 tcpdump 在 ptype_all 上注冊了虛擬協議。這時就能執行的到了。來看函數:

  1. //file: net/core/dev.c 
  2. static int __netif_receive_skb_core(struct sk_buff *skb, bool pfmemalloc) 
  3.     ...... 
  4.     //遍歷 ptype_all (tcpdump 在這里掛了虛擬協議) 
  5.     list_for_each_entry_rcu(ptype, &ptype_all, list) { 
  6.         if (!ptype->dev || ptype->dev == skb->dev) { 
  7.             if (pt_prev) 
  8.                 ret = deliver_skb(skb, pt_prev, orig_dev); 
  9.             pt_prev = ptype; 
  10.         } 
  11.     } 

在上面函數中遍歷 ptype_all,并使用 deliver_skb 來調用協議中的回調函數。

  1. //file: net/core/dev.c  
  2. static inline int deliver_skb(...) 
  3.  return pt_prev->func(skb, skb->dev, pt_prev, orig_dev); 

對于 tcpdump 來說,就會進入 packet_rcv 了(后面我們再說為啥是進入這個函數)。這個函數在 net/packet/af_packet.c 文件中。

  1. //file: net/packet/af_packet.c 
  2. static int packet_rcv(struct sk_buff *skb, ...) 
  3.  __skb_queue_tail(&sk->sk_receive_queue, skb); 
  4.  ...... 

可見 packet_rcv 把收到的 skb 放到了當前 packet socket 的接收隊列里了。這樣后面調用 recvfrom 的時候就可以獲取到所抓到的包!!

再找 netfilter 過濾點

為了解釋我們開篇中提到的問題,這里我們再稍微到協議層中多看一些。在 ip_rcv 中我們找到了一個 netfilter 相關的執行邏輯。

  1. //file: net/ipv4/ip_input.c 
  2. int ip_rcv(...) 
  3.  ...... 
  4.  return NF_HOOK(NFPROTO_IPV4, NF_INET_PRE_ROUTING, skb, dev, NULL
  5.          ip_rcv_finish); 

如果你用 NF_HOOK 作為關鍵詞來搜索,還能搜到不少 netfilter 的過濾點。不過所有的過濾點都是位于 IP 協議層的。

在接收包的過程中,數據包是先經過網絡設備層然后才到協議層的。

那么我們開篇中的一個問題就有了答案了。假如我們設置了 netfilter 規則,在接收包的過程中,工作在網絡設備層的 tcpdump 先開始工作。還沒等 netfilter 過濾,tcpdump 就抓到包了!

所以,在接收包的過程中,netfilter 過濾并不會影響 tcpdump 的抓包!

二、網絡包發送過程

我們接著再來看網絡包發送過程。在25 張圖,一萬字,拆解 Linux 網絡包發送過程一文中,我們詳細描述過網絡包的發送過程。發送過程可以匯總成簡單的一張圖。

找到 netfilter 過濾點

在發送的過程中,同樣是在 IP 層進入各種 netfilter 規則的過濾。

  1. //file: net/ipv4/ip_output.c   
  2. int ip_local_out(struct sk_buff *skb) 
  3.  //執行 netfilter 過濾 
  4.  err = __ip_local_out(skb); 
  5.  
  6. int __ip_local_out(struct sk_buff *skb) 
  7.  ...... 
  8.  return nf_hook(NFPROTO_IPV4, NF_INET_LOCAL_OUT, skb, NULL
  9.          skb_dst(skb)->dev, dst_output); 

在這個文件中,還能看到若干處 netfilter 過濾邏輯。

找到 tcpdump 抓包點

發送過程在協議層處理完畢到達網絡設備層的時候,也有 tcpdump 的抓包點。

  1. //file: net/core/dev.c 
  2. int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev, 
  3.    struct netdev_queue *txq) 
  4.  ... 
  5.  if (!list_empty(&ptype_all)) 
  6.   dev_queue_xmit_nit(skb, dev); 
  7.  
  8. static void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev) 
  9.  list_for_each_entry_rcu(ptype, &ptype_all, list) { 
  10.   if ((ptype->dev == dev || !ptype->dev) && 
  11.       (!skb_loop_sk(ptype, skb))) { 
  12.    if (pt_prev) { 
  13.     deliver_skb(skb2, pt_prev, skb->dev); 
  14.     pt_prev = ptype; 
  15.     continue
  16.    } 
  17.   ...... 
  18.   } 
  19.  }  

在上述代碼中我們看到,在 dev_queue_xmit_nit 中遍歷 ptype_all 中的協議,并依次調用 deliver_skb。這就會執行到 tcpdump 掛在上面的虛擬協議。

在網絡包的發送過程中,和接收過程恰好相反,是協議層先處理、網絡設備層后處理。

如果 netfilter 設置了過濾規則,那么在協議層就直接過濾掉了。在下層網絡設備層工作的 tcpdump 將無法再捕獲到該網絡包。

三、TCPDUMP 啟動

前面兩小節我們說到了內核收發包都通過遍歷 ptype_all 來執行抓包的。那么我們現在來看看用戶態的 tcpdump 是如何掛載協議到內 ptype_all 上的。

我們通過 strace 命令我們抓一下 tcpdump 命令的系統調用,顯示結果中有一行 socket 系統調用。Tcpdump 秘密的源頭就藏在這行對 socket 函數的調用里。

  1. # strace tcpdump -i eth0 
  2. socket(AF_PACKET, SOCK_RAW, 768) 
  3. ...... 

socket 系統調用的第一個參數表示創建的 socket 所屬的地址簇或者協議簇,取值以 AF 或者 PF 開頭。在 Linux 里,支持很多種協議族,在 include/linux/socket.h 中可以找到所有的定義。這里創建的是 packet 類型的 socket。

協議族和地址族:每一種協議族都有其對應的地址族。比如 IPV4 的協議族定義叫 PF_INET,其地址族的定義是 AF_INET。它們是一一對應的,而且值也完全一樣,所以經常混用。

  1. //file: include/linux/socket.h 
  2. #define AF_UNSPEC 0 
  3. #define AF_UNIX  1 /* Unix domain sockets   */ 
  4. #define AF_LOCAL 1 /* POSIX name for AF_UNIX */ 
  5. #define AF_INET  2 /* Internet IP Protocol  */ 
  6. #define AF_INET6 10 /* IP version 6   */ 
  7. #define AF_PACKET 17 /* Packet family  */ 
  8. ...... 

另外上面第三個參數 768 代表的是 ETH_P_ALL,socket.htons(ETH_P_ALL) = 768。

我們來展開看這個 packet 類型的 socket 創建的過程中都干了啥,找到 socket 創建源碼。

  1. //file: net/socket.c 
  2. SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol)  
  3.  ...... 
  4.  retval = sock_create(family, type, protocol, &sock);  
  5.  
  6. int __sock_create(struct net *net, int family, int type, ...) 
  7.  ...... 
  8.  pf = rcu_dereference(net_families[family]); 
  9.  err = pf->create(net, sock, protocol, kern); 

在 __sock_create 中,從 net_families 中獲取了指定協議。并調用了它的 create 方法來完成創建。

net_families 是一個數組,除了我們常用的 PF_INET( ipv4 ) 外,還支持很多種協議族。比如 PF_UNIX、PF_INET6(ipv6)、PF_PACKET等等。每一種協議族在 net_families 數組的特定位置都可以找到其 family 類型。在這個 family 類型里,成員函數 create 指向該協議族的對應創建函數。

根據上圖,我們看到對于 packet 類型的 socket,pf->create 實際調用到的是 packet_create 函數。我們進入到這個函數中來一探究竟,這是理解 tcpdump 工作原理的關鍵!

  1. //file: packet/af_packet.c 
  2. static int packet_create(struct net *net, struct socket *sock, int protocol, 
  3.     int kern) 
  4.  ... 
  5.  po = pkt_sk(sk); 
  6.  po->prot_hook.func = packet_rcv; 
  7.  
  8.  //注冊鉤子 
  9.  if (proto) { 
  10.   po->prot_hook.type = proto; 
  11.   register_prot_hook(sk); 
  12.  } 
  13.  
  14. static void register_prot_hook(struct sock *sk) 
  15.  struct packet_sock *po = pkt_sk(sk); 
  16.  dev_add_pack(&po->prot_hook); 

在 packet_create 中設置回調函數為 packet_rcv,再通過 register_prot_hook => dev_add_pack 完成注冊。注冊完后,是在全局協議 ptype_all 鏈表中添加了一個虛擬的協議進來。

我們再來看下 dev_add_pack 是如何注冊協議到 ptype_all 中的。回顧我們開頭看到的 socket 函數調用,第三個參數 proto 傳入的是 ETH_P_ALL。那 dev_add_pack 其實最后是把 hook 函數添加到了 ptype_all 里了,代碼如下。

  1. //file: net/core/dev.c 
  2. void dev_add_pack(struct packet_type *pt) 
  3.  struct list_head *head = ptype_head(pt); 
  4.  list_add_rcu(&pt->list, head); 
  5.  
  6. static inline struct list_head *ptype_head(const struct packet_type *pt) 
  7.  if (pt->type == htons(ETH_P_ALL)) 
  8.   return &ptype_all; 
  9.  else 
  10.   return &ptype_base[ntohs(pt->type) & PTYPE_HASH_MASK]; 

我們整篇文章都以 ETH_P_ALL 為例,但其實有的時候也會有其它情況。在別的情況下可能會注冊協議到 ptype_base 里了,而不是 ptype_all。同樣, ptype_base 中的協議也會在發送和接收的過程中被執行到。

總結:tcpdump 啟動的時候內部邏輯其實很簡單,就是在 ptype_all 中注冊了一個虛擬協議而已。

四、總結

現在我們再回頭看開篇提到的幾個問題。

1. tcpdump是如何工作的

用戶態 tcpdump 命令是通過 socket 系統調用,在內核源碼中用到的 ptype_all 中掛載了函數鉤子上去。無論是在網絡包接收過程中,還是在發送過程中,都會在網絡設備層遍歷 ptype_all 中的協議,并執行其中的回調。tcpdump 命令就是基于這個底層原理來工作的。

2. netfilter 過濾的包 tcpdump是否可以抓的到

關于這個問題,得分接收和發送過程分別來看。在網絡包接收的過程中,由于 tcpdump 近水樓臺先得月,所以完全可以捕獲到命中 netfilter 過濾規則的包。

但是在發送的過程中,恰恰相反。網絡包先經過協議層,這時候被 netfilter 過濾掉的話,底層工作的 tcpdump 還沒等看見就啥也沒了。

3. 讓你自己寫一個抓包程序的話該如何下手

如果你想自己寫一段類似 tcpdump 的抓包程序的話,使用 packet socket 就可以了。我用 c 寫了一段抓包,并且解析源 IP 和目的 IP 的簡單 demo。

源碼地址:https://github.com/yanfeizhang/coder-kung-fu/blob/main/tests/network/test04/main.c

編譯一下,注意運行需要 root 權限。

  1. # gcc -o main main.c 
  2. # ./main  

運行結果預覽如下。

 

最后,還是求再看,求轉發!

 

責任編輯:武曉燕 來源: 開發內功修煉
相關推薦

2021-09-17 11:59:21

tcpdump網絡包Linux

2023-03-01 23:56:11

2023-03-10 14:56:37

Linuxconnect系統

2023-03-01 23:53:30

Linuxshutdown進程

2023-10-26 11:39:54

Linux系統CPU

2021-12-20 09:53:51

用戶態內核態應用程序

2025-03-07 08:30:00

pwruLinux網絡包追蹤

2025-10-13 02:11:00

2025-09-26 02:22:00

2023-03-28 15:51:20

2023-03-06 15:43:56

2022-03-25 12:31:49

Linux根文件內核

2024-08-22 14:47:50

開源Linux網絡抓包工具

2009-07-16 09:02:38

LINUX 2.4.x網絡安全LINUX開發

2021-08-31 07:54:24

TCPIP協議

2023-01-06 08:04:10

GPU容器虛擬化

2021-08-10 16:50:37

內核內存管理

2025-10-31 01:22:00

2017-08-16 16:20:01

Linux內核態搶占用戶態搶占

2023-05-12 07:27:24

Linux內核網絡設備驅動
點贊
收藏

51CTO技術棧公眾號

大菠萝精品导航| 亚洲爱爱综合网| 国产精品免费99久久久| 欧洲一区在线电影| 天天干天天色天天爽| 精品久久久无码中文字幕| 亚洲天堂激情| 国产亚洲欧洲高清| 欧美国产在线一区| 中文字幕人成乱码在线观看 | 亚洲第一主播视频| 免费看污久久久| 亚洲综合精品视频| 亚洲精品四区| 精品激情国产视频| 国产伦精品一区二区三区妓女 | 精品无码国产污污污免费网站| 国产美女久久| 第一福利永久视频精品| 伊人久久大香线蕉精品| 少妇一级淫片免费看| 蜜桃av一区二区三区电影| 久久久免费高清电视剧观看| 丁香六月激情综合| 久久久久久久久久久久久久久久久久久久 | 青娱乐国产91| 亚洲欧美激情在线观看| 毛片av一区二区| 97精品伊人久久久大香线蕉| 日本在线一级片| gogogo高清在线观看一区二区| 亚洲第一精品福利| 一级做a爱视频| 校园春色亚洲色图| 亚洲国产精品天堂| 欧美少妇一区二区三区| www.视频在线.com| 91老司机福利 在线| 99国产精品久久久久老师| 亚洲一区中文字幕永久在线| 久久精品官网| 欧美综合第一页| 国产精品50页| 亚洲高清网站| 欧美激情精品久久久久久黑人 | 久久精品影视| 日韩在线激情视频| 青娱乐国产视频| 国产99亚洲| 亚洲毛片在线观看| 免费a级黄色片| 日韩美女精品| 精品一区精品二区| 免费成人深夜夜行p站| 国产精品15p| 精品对白一区国产伦| 国产欧美视频一区| 99re6热只有精品免费观看| 日韩视频免费观看高清完整版在线观看 | 欧美精品乱码视频一二专区| 久久久久国产精品| 久久精品影视伊人网| 日本一级特级毛片视频| 99欧美视频| 欧美精品在线免费播放| 久久r这里只有精品| 欧美精品色网| 68精品久久久久久欧美| a v视频在线观看| 亚洲韩日在线| 国产v综合ⅴ日韩v欧美大片| 黄色大全在线观看| 久久电影国产免费久久电影| 91在线视频免费| 亚洲精品成人电影| 91一区一区三区| 视频一区亚洲| 亚洲图区一区| 欧美日韩性视频| wwww.国产| 美女日韩一区| 日韩经典中文字幕| 亚洲高潮女人毛茸茸| 91精品啪在线观看国产81旧版| 久久99精品久久久久久噜噜| 日韩精品一区二区三区国语自制| 久久一区国产| 91理论片午午论夜理片久久| 黑人操亚洲女人| 国产亚洲精品久| 黄色录像特级片| 日韩精品极品| 在线播放视频一区| 中文字幕精品久久久| 欧美色图激情小说| 欧美疯狂做受xxxx高潮| 手机在线看片1024| 国产在线观看免费一区| 激情小说综合区| 男人影院在线观看| 亚洲3atv精品一区二区三区| 成人性生生活性生交12| 亚洲码欧美码一区二区三区| 亚洲欧美www| 欧美三级 欧美一级| 久久大逼视频| www.av一区视频| 中国日本在线视频中文字幕| 五月天久久比比资源色| 亚洲欧美日本一区二区三区| 欧美深夜视频| 免费91麻豆精品国产自产在线观看 | 巨乳女教师的诱惑| av一区二区高清| 91精品国产网站| 超碰在线播放97| 国产精品福利电影一区二区三区四区| 香港三级韩国三级日本三级| 国产激情综合| 中文字幕亚洲图片| 欧美精品一二三四区| 国产乱码一区二区三区| 亚洲草草视频| 激情开心成人网| 亚洲国产成人久久| 久草网站在线观看| 久久aⅴ国产欧美74aaa| 欧美专区一二三| 日韩欧美精品一区二区三区| 精品福利视频一区二区三区| 小泽玛利亚一区二区免费| 日韩精品成人一区二区在线| 久久久久资源| 忘忧草在线影院两性视频| 日韩你懂的电影在线观看| 99热这里只有精品4| 视频一区在线播放| 麻豆精品视频| 精品国产第一福利网站| 日韩电影网在线| 四虎永久在线精品| 不卡电影一区二区三区| av在线免费观看国产| 欧美精品影院| 欧美精品一区二区三区国产精品| 一区二区三区免费在线| 国产精品拍天天在线| 一区二区xxx| 日韩理论电影大全| 国产区亚洲区欧美区| 1024免费在线视频| 欧美精品18+| 黄色片子在线观看| 国内一区二区视频| 狠狠噜天天噜日日噜| 亚洲一区二区电影| 欧美大片在线免费观看| 丰满肉肉bbwwbbww| 狠狠久久亚洲欧美专区| a级大片在线观看| 秋霞电影网一区二区| 亚洲一区二三| 午夜视频在线观看精品中文| 久久久久国产精品免费网站| 狠狠躁日日躁夜夜躁av| 亚洲国产精品影院| 99re久久精品国产| 丝袜美腿成人在线| 一区二区成人国产精品| 精品国产亚洲一区二区三区大结局| 久久综合色88| 天堂av在线免费| 欧美午夜无遮挡| 一本色道久久88| 成人午夜在线视频| 99色精品视频| 午夜影院欧美| 国产一区二区三区四区五区加勒比| 色综合桃花网| 久久韩国免费视频| 手机av免费在线观看| 日韩欧美在线视频观看| 亚洲色图27p| av电影在线观看一区| www.欧美日本| 欧美日韩国产免费观看| 久久国产精品亚洲va麻豆| 成人看片毛片免费播放器| 欧美老妇交乱视频| 免费在线一级视频| 欧美剧情片在线观看| 日韩网红少妇无码视频香港| 欧美高清在线一区| 95视频在线观看| 免费不卡在线视频| 欧日韩免费视频| 99久久.com| 久久一区二区精品| 日韩精品一级| 国产成人精品在线播放| 伊人福利在线| 在线日韩日本国产亚洲| 国产 欧美 自拍| 欧美日韩国产首页| 日本视频免费在线| 亚洲欧美一区二区久久| 国产精品毛片一区二区| 懂色av一区二区三区免费看| 日本xxxx黄色| 母乳一区在线观看| 欧美黄网在线观看| 日韩精品首页| 欧美久久久久久| 国内视频在线精品| 91网在线免费观看| 国产精品久久亚洲不卡| 91高清视频在线免费观看| 麻豆传媒在线观看| 国产一区二区三区在线| 三级av在线播放| 精品国产乱码久久久久久浪潮 | 精品国产欧美一区二区| 蜜臀99久久精品久久久久小说| 亚洲成av人片| 黄色一级视频在线观看| 亚洲欧洲美洲综合色网| 色屁屁草草影院ccyy.com| 92精品国产成人观看免费| 激情av中文字幕| 国产精品18久久久久| 手机av在线免费| 美女国产一区二区三区| 日韩视频免费在线播放| 欧美亚洲三区| av免费观看大全| 亚洲国产日韩在线| 欧美午夜小视频| 欧美影院一区| www.男人天堂网| 国内一区二区三区| 久久这里只有精品8| 中文无码久久精品| 中国女人做爰视频| 影视一区二区| 国产情侣第一页| 极品少妇一区二区三区| 免费高清一区二区三区| 黄色日韩精品| 日本熟妇人妻xxxx| 在线亚洲一区| 久久精品99国产| 日韩电影在线一区二区三区| 五月婷婷狠狠操| 久久99最新地址| 亚洲第一区第二区第三区| 国内精品视频一区二区三区八戒| 国产乱码一区二区三区四区| 国产精品白丝jk白祙喷水网站| 人妻换人妻仑乱| 成人激情综合网站| 精品中文字幕在线播放 | 欧美日韩在线不卡一区| 国产精品一区高清| 亚洲免费在线精品一区| 亚洲91中文字幕无线码三区| 成人短视频在线观看免费| 国产精品va| 男人天堂999| 麻豆免费精品视频| 自拍一级黄色片| av一区二区三区| 人人人妻人人澡人人爽欧美一区| 18涩涩午夜精品.www| 欧美日韩精品一区二区三区视频播放| 一个色妞综合视频在线观看| 日本污视频在线观看| 一本久道中文字幕精品亚洲嫩| 中文字幕在线2018| 日韩精品中文字幕一区二区三区| 日本高清视频www| 中文字幕欧美日韩| 国产丝袜视频在线播放| 青青草成人在线| 懂色av色香蕉一区二区蜜桃| 精品免费视频123区| 第一sis亚洲原创| 久久久久久久9| 秋霞av亚洲一区二区三| 久久精品无码一区二区三区毛片| 91丨国产丨九色丨pron| 国产白丝一区二区三区| 亚洲成人1区2区| 中文字幕永久在线视频| 亚洲成人久久久久| 色欧美激情视频在线| 韩国欧美亚洲国产| 久久人人视频| 久久久久久国产精品mv| 先锋资源久久| 成人黄色片视频| 国产成人综合亚洲91猫咪| 亚洲精品午夜视频| 亚洲成人免费在线| 91亚洲国产成人久久精品麻豆| 亚洲国产精品久久91精品| 日本中文字幕在线看| 欧美在线观看日本一区| 欧美成人一级| 在线视频精品一区| 亚洲欧美日韩精品一区二区 | 亚洲色欲综合一区二区三区| 国产成人在线视频网址| www久久久久久久| 精品国产户外野外| 成人午夜免费福利| 日韩中文字幕在线视频| 亚洲精品国产精品国产| 成人永久免费| 亚洲一区在线| 国产免费中文字幕| 久久精子c满五个校花| 日本一区二区不卡在线| 日韩欧美激情在线| 黄色网页在线免费观看| 国产精品日韩在线观看| 欧美美乳视频| 黄色一级片播放| 99在线精品观看| 国产午夜精品无码一区二区| 日韩欧美高清dvd碟片| 欧美极品视频| 国产日本欧美视频| 久久美女精品| 天堂网在线免费观看| 国产日韩欧美综合在线| 中文人妻av久久人妻18| 国产视频精品自拍| 日韩激情电影免费看| 久久综合九色99| 国产亚洲精品v| 波多野结衣影院| 欧美日韩亚洲网| 日韩二区三区| 日产日韩在线亚洲欧美| 偷拍亚洲色图| 欧美日韩第二页| 欧美国产综合一区二区| 五月天中文字幕| 中文字幕亚洲欧美日韩在线不卡 | 秋霞网一区二区三区| 欧美午夜精品久久久久久孕妇 | 日韩美女激情视频| 久久91麻豆精品一区| 六月丁香婷婷激情| 久久久亚洲欧洲日产国码αv| 天天操夜夜操视频| 伊人久久久久久久久久久| 午夜日韩成人影院| 四虎影视永久免费在线观看一区二区三区 | 欧美高清自拍一区| 成人在线视频中文字幕| 激情伊人五月天| 久久久久国产精品麻豆ai换脸| 天天射天天干天天| 日韩一区二区欧美| 视频欧美一区| 黄色影院一级片| 亚洲国产精品t66y| 国产成人精品白浆久久69| 久久99久久99精品中文字幕| 欧美深夜视频| 午夜免费看视频| 一区二区国产视频| 手机亚洲第一页| 国产精品亚洲自拍| 欧美一区综合| 三上悠亚影音先锋| 欧美日本国产一区| 欧美精品videossex少妇| 蜜桃久久精品乱码一区二区| 久久精品国产亚洲高清剧情介绍 | 亚洲欧美成人综合| 殴美一级黄色片| 欧美va亚洲va| 在线观看精品| 日韩成人三级视频| 久久久不卡网国产精品二区| 国产精品亚洲lv粉色| 97在线视频观看| 亚州av乱码久久精品蜜桃| 黄色录像a级片| 欧美一区二区免费观在线| 在线中文字幕播放| av电影一区二区三区| 久久综合狠狠综合| 国产精品怡红院| 国产盗摄xxxx视频xxx69| 欧美一区二区三区久久精品茉莉花 | jizzjizz国产精品喷水| 亚洲天天做日日做天天谢日日欢 |