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

來,今天飛哥帶你理解 Iptables 原理!

開發 前端
現在 iptables 這個工具的應用似乎是越來越廣了。不僅僅是在傳統的防火墻、NAT 等功能出現,在今天流行的的 Docker、Kubernets、Istio 項目中也經常能見著對它的身影。正因為如此,所以深入理解 iptables 工作原理是非常有價值的事情。

[[438998]]

大家好,我是飛哥!

現在 iptables 這個工具的應用似乎是越來越廣了。不僅僅是在傳統的防火墻、NAT 等功能出現,在今天流行的的 Docker、Kubernets、Istio 項目中也經常能見著對它的身影。正因為如此,所以深入理解 iptables 工作原理是非常有價值的事情。

Linux 內核網絡棧是一個純內核態的東西,和用戶層功能是天然隔離。但為了迎合各種各樣用戶層不同的需求,內核開放了一些口子出來供用戶干預。使得用戶層可以通過一些配置,改變內核的工作方式,從而實現特殊的需求。

Linux 在內核網絡組件中很多關鍵位置布置了 netfilter 過濾器。Iptables 就是基于 netfilter 來實現的。所以本文中 iptables 和 netfilter 這兩個名詞有時候就混著用了。

飛哥也在網上看過很多關于 netfilter 技術文章,但是我覺得都寫的不夠清晰。所以咱們擼起袖子,自己寫一篇。Netfilter 的實現可以簡單地歸納為四表五鏈。我們來詳細看看四表、五鏈究竟是啥意思。

一、Iptables 中的五鏈

Linux 下的 netfilter 在內核協議棧的各個重要關卡埋下了五個鉤子。每一個鉤子都對應是一系列規則,以鏈表的形式存在,所以俗稱五鏈。當網絡包在協議棧中流轉到這些關卡的時候,就會依次執行在這些鉤子上注冊的各種規則,進而實現對網絡包的各種處理。

要想把五鏈理解好,飛哥認為最關鍵是要把內核接收、發送、轉發三個過程分開來看。

1.1 接收過程

Linux 在網絡包接收在 IP 層的入口函數是 ip_rcv。網絡在這里包碰到的第一個 HOOK 就是 PREROUTING。當該鉤子上的規則都處理完后,會進行路由選擇。如果發現是本設備的網絡包,進入 ip_local_deliver 中,在這里又會遇到 INPUT 鉤子。

我們來看下詳細的代碼,先看 ip_rcv。

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

NF_HOOK 這個函數會執行到 iptables 中 pre_routing 里的各種表注冊的各種規則。當處理完后,進入 ip_rcv_finish。在這里函數里將進行路由選擇。這也就是 PREROUTING 這一鏈名字得來的原因,因為是在路由前執行的。

  1. //file: net/ipv4/ip_input.c 
  2. static int ip_rcv_finish(struct sk_buff *skb){ 
  3.     ... 
  4.     if (!skb_dst(skb)) { 
  5.         int err = ip_route_input_noref(skb, iph->daddr, iph->saddr, 
  6.                            iph->tos, skb->dev); 
  7.         ... 
  8.     } 
  9.     ... 
  10.     return dst_input(skb); 
  11.  

如果發現是本地設備上的接收,會進入 ip_local_deliver 函數。接著是又會執行到 LOCAL_IN 鉤子,這也就是我們說的 INPUT 鏈。

  1. //file: net/ipv4/ip_input.c 
  2. int ip_local_deliver(struct sk_buff *skb){ 
  3.  ...... 
  4.     return NF_HOOK(NFPROTO_IPV4, NF_INET_LOCAL_IN, skb, skb->dev, NULL
  5.                ip_local_deliver_finish); 
  6.  

簡單總結接收數據的處理流程是:PREROUTING鏈 -> 路由判斷(是本機)-> INPUT鏈 -> ...

1.2 發送過程

Linux 在網絡包發送的過程中,首先是發送的路由選擇,然后碰到的第一個 HOOK 就是 OUTPUT,然后接著進入 POSTROUTING 鏈。

來大致過一下源碼,網絡層發送的入口函數是 ip_queue_xmit。

  1. //file: net/ipv4/ip_output.c 
  2. int ip_queue_xmit(struct sk_buff *skb, struct flowi *fl) 
  3.  // 路由選擇過程 
  4.  // 選擇完后記錄路由信息到 skb 上 
  5.  rt = (struct rtable *)__sk_dst_check(sk, 0); 
  6.  if (rt == NULL) { 
  7.   // 沒有緩存則查找路由項 
  8.   rt = ip_route_output_ports(...); 
  9.   sk_setup_caps(sk, &rt->dst); 
  10.  } 
  11.  skb_dst_set_noref(skb, &rt->dst); 
  12.  ... 
  13.  //發送 
  14.  ip_local_out(skb); 

在這里先進行了發送時的路由選擇,然后進入發送時的 IP 層函數 __ip_local_out。

  1. //file: net/ipv4/ip_output.c  
  2. int __ip_local_out(struct sk_buff *skb) 
  3.  struct iphdr *iph = ip_hdr(skb); 
  4.  
  5.  iph->tot_len = htons(skb->len); 
  6.  ip_send_check(iph); 
  7.  return nf_hook(NFPROTO_IPV4, NF_INET_LOCAL_OUT, skb, NULL
  8.          skb_dst(skb)->dev, dst_output); 

上面的 NF_HOOK 將發送數據包送入到 NF_INET_LOCAL_OUT (OUTPUT) 鏈。執行完后,進入 dst_output。

  1. //file: include/net/dst.h 
  2. static inline int dst_output(struct sk_buff *skb) 
  3.  return skb_dst(skb)->output(skb); 

在這里獲取到之前的選路,并調用選到的 output 發送。將進入 ip_output。

  1. //file: net/ipv4/ip_output.c 
  2. int ip_output(struct sk_buff *skb) 
  3.  ... 
  4.  
  5.  //再次交給 netfilter,完畢后回調 ip_finish_output 
  6.  return NF_HOOK_COND(NFPROTO_IPV4, NF_INET_POST_ROUTING, skb, NULL, dev, 
  7.   ip_finish_output, 
  8.   !(IPCB(skb)->flags & IPSKB_REROUTED)); 

總結下發送數據包流程是:路由選擇 -> OUTPUT鏈 -> POSTROUTING鏈 -> ...

1.3 轉發過程

其實除了接收和發送過程以外,Linux 內核還可以像路由器一樣來工作。它將接收到網絡包(不屬于自己的),然后根據路由表選到合適的網卡設備將其轉發出去。

這個過程中,先是經歷接收數據的前半段。在 ip_rcv 中經過 PREROUTING 鏈,然后路由后發現不是本設備的包,那就進入 ip_forward 函數進行轉發,在這里又會遇到 FORWARD 鏈。最后還會進入 ip_output 進行真正的發送,遇到 POSTROUTING 鏈。

我們來過一下源碼,先是進入 IP 層入口 ip_rcv,在這里遇到 PREROUTING 鏈。

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

PREROUTING 鏈條上的規則都處理完后,進入 ip_rcv_finish,在這里路由選擇,然后進入 dst_input。

  1. //file: include/net/dst.h 
  2. static inline int dst_input(struct sk_buff *skb) 
  3.  return skb_dst(skb)->input(skb); 

轉發過程的這幾步和接收過程一模一樣的。不過內核路徑就要從上面的 input 方法調用開始分道揚鑣了。非本設備的不會進入 ip_local_deliver,而是會進入到 ip_forward。

  1. //file: net/ipv4/ip_forward.c 
  2. int ip_forward(struct sk_buff *skb) 
  3.  ...... 
  4.  return NF_HOOK(NFPROTO_IPV4, NF_INET_FORWARD, skb, skb->dev, 
  5.          rt->dst.dev, ip_forward_finish); 

在 ip_forward_finish 里會送到 IP 層的發送函數 ip_output。

  1. //file: net/ipv4/ip_output.c 
  2. int ip_output(struct sk_buff *skb) 
  3.  ... 
  4.  //再次交給 netfilter,完畢后回調 ip_finish_output 
  5.  return NF_HOOK_COND(NFPROTO_IPV4, NF_INET_POST_ROUTING, skb, NULL, dev, 
  6.   ip_finish_output, 
  7.   !(IPCB(skb)->flags & IPSKB_REROUTED)); 

在 ip_output 里會遇到 POSTROUTING 鏈。再后面的流程就和發送過程的下半段一樣了。

總結下轉發數據過程:PREROUTING鏈 -> 路由判斷(不是本設備,找到下一跳) -> FORWARD鏈 -> POSTROUTING鏈 -> ...

1.4 iptables 匯總

理解了接收、發送和轉發三個過程以后,讓我們把上面三個流程匯總起來。

數據接收過程走的是 1 和 2,發送過程走的是 4 、5,轉發過程是 1、3、5。有了這張圖,我們能更清楚地理解 iptables 和內核的關系。

二、Iptables 的四表

在上一節中,我們介紹了 iptables 中的五個鏈。在每一個鏈上都可能是由許多個規則組成的。在 NF_HOOK 執行到這個鏈的時候,就會把規則按照優先級挨個過一遍。如果有符合條件的規則,則執行規則對應的動作。

而這些規則根據用途的不同,又可以raw、mangle、nat 和 filter。

row 表的作用是將命中規則的包,跳過其它表的處理,它的優先級最高。

mangle 表的作用是根據規則修改數據包的一些標志位,比如 TTL

nat 表的作用是實現網絡地址轉換

filter 表的作用是過濾某些包,這是防火墻工作的基礎

例如在 PREROUTING 鏈中的規則中,分別可以執行 row、mangle 和 nat 三種功能。

我們再來聊聊,為什么不是全部四個表呢。這是由于功能的不同,不是所有功能都會完全使用到五個鏈。

Raw 表目的是跳過其它表,所以只需要在接收和發送兩大過程的最開頭處把關,所以只需要用到 PREROUTING 和 OUTPUT 兩個鉤子。

Mangle 表有可能會在任意位置都有可能會修改網絡包,所以它是用到了全部的鉤子位置。

NAT 分為 SNAT(Source NAT)和 DNAT(Destination NAT)兩種,可能會工作在 PREROUTING、INPUT、OUTPUT、POSTROUTING 四個位置。

Filter 只在 INPUT、OUTPUT 和 FORWARD 這三步中工作就夠了。

從整體上看,四鏈五表的關系如下圖。

這里再多說一點,每個命名空間都是有自己獨立的 iptables 規則的。我們拿 NAT 來舉例,內核在遍歷 NAT 規則的時候,是從 net(命名空間變量)的 ipv4.nat_table 上取下來的。NF_HOOK 最終會執行到 nf_nat_rule_find 函數。

  1. //file: net/ipv4/netfilter/iptable_nat.c 
  2. static unsigned int nf_nat_rule_find(...) 
  3.  struct net *net = nf_ct_net(ct); 
  4.  unsigned int ret; 
  5.  
  6.  //重要!!!!!! nat_table 是在 namespace 中存儲著的 
  7.  ret = ipt_do_table(skb, hooknum, inout, net->ipv4.nat_table); 
  8.  if (ret == NF_ACCEPT) { 
  9.   if (!nf_nat_initialized(ct, HOOK2MANIP(hooknum))) 
  10.    ret = alloc_null_binding(ct, hooknum); 
  11.  } 
  12.  return ret; 

Docker 容器就是基于命名空間來工作的,所以每個 Docker 容器中都可以配置自己獨立的 iptables 規則。

三、Iptables 使用舉例

看完前面兩小節,大家已經理解了四表五鏈是如何實現的了。那我們接下來通過幾個實際的功能來看下實踐中是如何使用 iptables 的。

3.1 nat

假如說我們有一臺 Linux,它的 eth0 的 IP 是10.162.0.100,通過這個 IP 可以訪問另外其它服務器。現在我們在這臺機器上創建了個 Docker 虛擬網絡環境 net1 出來,它的網卡 veth1 的 IP 是 192.168.0.2。

如果想讓 192.168.0.2 能訪問外部網絡,則需要宿主網絡命名空間下的設備工作幫其進行網絡包轉發。由于這是個私有的地址,只有這臺 Linux 認識,所以它是無法訪問外部的服務器的。這個時候如果想要讓 net1 正常訪問 10.162.0.101,就必須在轉發時執行 SNAT - 源地址替換。

SNAT 工作在路由之后,網絡包發送之前,也就是 POSTROUTING 鏈。我們在宿主機的命名空間里增加如下這條 iptables 規則。這條規則判斷如果源是 192.168.0 網段,且目的不是 br0 的,統統執行源 IP 替換判斷。

  1. # iptables -t nat -A POSTROUTING -s 192.168.0.0/24 ! -o br0 -j MASQUERADE 

有了這條規則,我們來看下整個發包過程。

當數據包發出來的時候,先從 veth 發送到 br0。由于 br0 在宿主機的命名空間中,這樣會執行到 POSTROUTING 鏈。在這個鏈有我們剛配置的 snat 規則。根據這條規則,內核將網絡包中 192.168.0.2(外界不認識) 替換成母機的 IP 10.162.0.100(外界都認識)。同時還要跟蹤記錄鏈接狀態。

然后宿主機根據自己的路由表進行判斷,選擇默認發送設備將包從 eth0 網卡發送出去,直到送到 10.162.0.101。

接下來在 10.162.0.100 上會收到來自 10.162.0.101 的響應包。由于上一步記錄過鏈接跟蹤,所以宿主機能知道這個回包是給 192.168.0.2 的。再反替換并通過 br0 將返回送達正確的 veth 上。

這樣 net1 環境中的 veth1 就可以訪問外部網絡服務了。

3.2 DNAT 目的地址替換

接著上面小節里的例子,假設我們想在 192.168.0.2 上提供 80 端口的服務。同樣,外面的服務器是無法訪問這個地址的。這個時候要用到 DNAT 目的地址替換。需要在數據包進來的時候,將其目的地址替換成 192.168.0.2:80 才行。

DNAT 工作在內核接收到網絡包的第一個鏈中,也就是 PREROUTING。我們增加一條 DNAT 規則,具體的配置如下。

  1. # iptables -t nat -A PREROUTING ! -i br0 -p tcp -m tcp --dport 8088 -j DNAT --to-destination 192.168.0.2:80 

當有外界來的網絡包到達 eth0 的時候。由于 eth0 在母機的命名空間中,所以會執行到 PREROUTING 鏈。

該規則判斷如果端口是 8088 的 TCP 請求,則將目的地址替換為 192.168.0.2:80。再通過 br0(192.168.0.1)轉發數據包,數據包將到達真正提供服務的 192.168.0.2:80 上。

同樣在 DNAT 中也會有鏈接跟蹤記錄,所以 192.168.0.2 給 10.162.0.101 的返回包中的源地址會被替換成 10.162.0.100:8088。之后 10.162.0.101 收到包,它一直都以為自己是真的和 10.162.0.100:8088 通信。

這樣 net1 環境中的 veth1 也可以提供服務給外網使用了。事實上,單機的 Docker 就是通過這兩小節介紹的 SNAT 和 DNAT 配置來進行網絡通信的。

3.3 filter

Filter 表主要實現網絡包的過濾。假如我們發現了一個惡意 IP 瘋狂請求我們的服務器,對服務造成了影響。那么我們就可以用 filter 把它禁掉。其工作原理就是在接收包的 INPUT 鏈位置處進行判斷,發現是惡意請求就盡早干掉不處理。避免進入到更上層繼續浪費 CPU 開銷。

具體的配置方法細節如下:

  1. # iptables -I INPUT -s 1.2.3.4 -j DROP //封禁 
  2.  
  3. # iptables -D INPUT -s 1.2.3.4 -j DROP //解封 

當然也可以封禁某個 IP 段。

  1. # iptables -I INPUT -s 121.0.0.0/8 -j DROP //封禁 
  2.  
  3. # iptables -I INPUT -s 121.0.0.0/8 -j DROP //解封 

再比如說假設你不想讓別人任意 ssh 登錄你的服務器,只允許你的 IP 訪問。那就只放開你自己的 IP,其它的都禁用掉就好了。

  1. # iptables -t filter -I INPUT -s 1.2.3.4 -p tcp --dport 22 -j ACCEPT 
  2.  
  3. # iptables -t filter -I INPUT -p tcp --dport 22 -j DROP 

3.4 raw

Raw 表中的規則可以繞開其它表的處理。在 nat 表中,為了保證雙向的流量都能正常完成地址替換,會跟蹤并且記錄鏈接狀態。每一條連接都會有對應的記錄生成。使用以下兩個命令可以查看。

  1. # conntrack -L 
  2.  
  3. # cat /proc/net/ip_conntrack 

但在高流量的情況下,可能會有連接跟蹤記錄滿的問題發生。我就遇到過一次在測試單機百萬并發連接的時候,發生因連接數超過了 nf_conntrack_max 而導致新連接無法建立的問題。

  1. # ip_conntrack: table full, dropping packet 

但其實如果不使用 NAT 功能的話,鏈接跟蹤功能是可以關閉的,例如。

  1. # iptables -t raw -A PREROUTING -d 1.2.3.4 -p tcp --dport 80 -j NOTRACK 
  2.  
  3. # iptables -A FORWARD -m state --state UNTRACKED -j ACCEPT 

3.5 mangle

路由器在轉發網絡包的時候,ttl 值會減 1 ,該值為 0 時,最后一個路由就會停止再轉發這個數據包。如若不想讓本次路由影響 ttl,便可以在 mangel 表中加個 1,把它給補回來。

  1. # ptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-inc 1 

所有從 eth0 接口進來的數據包的 ttl 值加 1,以抵消路由轉發默認減的 1。

總結

Iptables 是一個非常常用,也非常重要的工具。Linux 上的防火墻、nat 等基礎功能都是基于它實現的。還有現如今流行的的 Docker、Kubernets、Istio 項目中也經常能見著對它的身影。正因為如此,所以深入理解 iptables 工作原理是非常有價值的事情。

今天我們先是在第一節里從內核接收、發送、轉發三個不同的過程理解了五鏈的位置。

接著又根據描述了 iptables 從功能上看的另外一個維度,表。每個表都是在多個鉤子位置處注冊自己的規則。當處理包的時候觸發規則,并執行。從整體上看,四鏈五表的關系如下圖。

最后我們又分別在 raw、mangle、nat、filter 幾個表上舉了簡單的應用例子。希望通過今天的學習,你能將 iptables 徹底融會貫通。相信這一定會對你的工作有很大的幫助的!

 

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

2025-01-09 09:10:39

2024-02-21 08:19:54

2020-03-18 13:40:03

Spring事數據庫代碼

2023-12-26 08:08:02

Spring事務MySQL

2022-05-11 07:38:45

SpringWebFlux

2024-12-02 08:00:00

營銷聊天機器人AI

2025-02-17 11:41:14

2011-03-16 09:05:29

iptablesNAT

2011-03-16 16:06:46

iptables日志MySQL

2011-09-27 11:09:13

2022-04-26 08:32:36

CSS前端

2018-12-05 09:20:02

MySQL數據庫索引

2015-07-06 11:26:29

2024-02-19 08:17:10

Kafka消息隊列收發消息

2019-01-28 09:32:30

跳槽員工程序員

2017-02-28 09:10:31

開源大型機

2016-06-12 17:20:47

2021-07-27 08:16:35

DeepinIptablesservice文件

2011-03-15 15:47:26

netfilteriptables

2020-05-17 16:15:49

RPCJava代碼
點贊
收藏

51CTO技術棧公眾號

在线中文字幕一区二区| 成人一区而且| 国产日韩一级二级三级| 乱亲女秽乱长久久久| 男人天堂网视频| 亚洲va欧美va| 性欧美69xoxoxoxo| 色94色欧美sute亚洲线路一久| 亚洲精品欧美日韩| 亚洲 欧美 变态 另类 综合| 午夜激情成人网| 97精品视频在线观看自产线路二| 美女久久久久久久| 亚洲欧美日本一区二区三区| 97超视频免费观看| 欧美亚洲另类在线一区二区三区| 久久精品国产亚洲av高清色欲 | 久久久久久亚洲精品| 一级做a免费视频| 高清福利在线观看| 久久激情婷婷| 精品中文字幕久久久久久| 国产一二三在线视频| 亚洲av无码国产综合专区 | 91网站在线观看免费| 国产精品久久久久精| 欧美第十八页| 91精品一区二区三区在线观看| 亚洲开发第一视频在线播放| 中文字幕日产av| 久久伦理在线| 91精品国产品国语在线不卡| 国产人妻互换一区二区| 99草在线视频| 中文视频一区| 精品福利一二区| 亚洲 欧美 综合 另类 中字| 殴美一级特黄aaaaaa| 99精品国产福利在线观看免费| 亚洲黄色有码视频| 日韩 欧美 高清| av在线免费观看网| 国产呦萝稀缺另类资源| 欧美大片免费观看| 日韩av无码一区二区三区不卡| 日本在线影院| 中文在线资源观看网站视频免费不卡| 国产欧美亚洲视频| 久草国产在线观看| 亚洲欧美tv| 欧美系列一区二区| 99re成人在线| 日韩激情第一页| 又色又爽又高潮免费视频国产| 免费在线看a| 国产·精品毛片| 欧洲成人在线观看| 久久精品亚洲a| 高清精品xnxxcom| 欧美亚洲愉拍一区二区| 在线观看成人免费| 在线观看xxx| 久久综合激情| 欧美高清性猛交| 波多野结衣影院| 性欧美xxxx| 青青草国产成人av片免费| 国产日韩亚洲| 日韩av在线一区| 天天操天天爱天天爽| www在线观看播放免费视频日本| 国产成人精品一区二区三区四区 | 日本视频在线| www.亚洲人| 成人乱色短篇合集| 国产又黄又爽又色| 伊人久久大香线蕉综合四虎小说 | 92国产精品久久久久首页 | 免费a级在线播放| 99免费精品在线| 91精品啪在线观看麻豆免费 | 91精品国产高清自在线看超| 中国一级黄色录像| 深夜福利视频一区| 国产一区二区在线看| 日本中文字幕久久看| 久久久美女视频| 色一区二区三区四区| 日韩精品中文字幕在线播放| 亚洲制服在线观看| 日本一区二区三区视频在线| 精品国产福利在线| 国产肉体ⅹxxx137大胆| 色视频在线免费观看| 99久久免费国产| 99国产在线观看| 狠狠躁夜夜躁人人爽视频| 亚洲免费成人| 欧美极品欧美精品欧美视频 | 91国内在线视频| 亚洲熟女www一区二区三区| 精品视频免费| 国产婷婷成人久久av免费高清 | xfplay精品久久| 国产精品久久久久久久久久久久冷 | 亚洲a在线播放| 亚洲天天综合网| 日本伊人精品一区二区三区观看方式 | 国产精品免费一区二区三区四区| 国产人妖一区二区三区| 久久电影国产免费久久电影| 国产精品视频色| 中文字幕永久在线| 日韩激情一二三区| 热久久这里只有精品| 91在线看视频| 亚洲美女毛片| 91大神福利视频在线| 日韩精品――中文字幕| 熟女人妇 成熟妇女系列视频| 六月婷婷综合网| 成人av资源在线| 国内精品视频在线播放| 亚洲国产精品二区| 国产成人综合亚洲91猫咪| 91久久精品www人人做人人爽| 不卡视频在线播放| 成人中文字幕合集| 精品一区二区不卡| 欧美捆绑视频| 亚洲国产精品成人久久综合一区| 亚洲高清不卡一区| 成人看av片| 一区二区三区91| 欧美一级欧美一级| 在线能看的av网址| 欧亚洲嫩模精品一区三区| 国产福利在线免费| 欧美二区观看| 日韩精品欧美国产精品忘忧草| 亚洲成人网在线播放| 教室别恋欧美无删减版| 久久亚洲成人精品| 久久久久香蕉视频| 丝袜亚洲另类欧美| 91视频国产高清| 欧美一级在线免费观看| 久久你懂得1024| 综合久久国产| 国产精品vvv| 欧洲精品在线观看| 91精品又粗又猛又爽| 亚洲另类av| 久久精品91久久久久久再现| 国产主播在线播放| 日韩精品三区四区| 不卡视频一区二区| 你懂的视频在线播放| 中文字幕综合网| 精品国产免费av| 韩国一区二区三区视频| 日韩精品视频在线观看网址| 久草福利资源在线| 翔田千里一区二区| 51午夜精品| 黄色网址在线播放| 夜夜嗨av一区二区三区| 97久久超碰国产精品电影| 国产一区二区在线网站| 日本激情在线观看| 狠狠躁夜夜躁久久躁别揉| 老司机久久精品| 你懂的一区二区三区| 麻豆乱码国产一区二区三区| 国产区一区二区三| 国产精品一区在线观看乱码| 日本不卡久久| 爱啪视频在线观看视频免费| 欧美美女网站色| 18禁裸乳无遮挡啪啪无码免费| 久久久久蜜桃| 国产精品777| 免费看国产片在线观看| 1024精品合集| 看欧美ab黄色大片视频免费| 欧美日韩另类图片| 欧美第一黄色网| 亚洲一区二区影视| 国产午夜一区二区三区| 国产v片免费观看| 久久国际精品| 精品国产一区二区三区久久狼5月| 日本视频在线观看免费| 成人免费毛片高清视频| 穿情趣内衣被c到高潮视频| 日本成人福利| 亚洲色图欧美制服丝袜另类第一页| 豆国产97在线 | 亚洲| 国产在线不卡一区| 伊人婷婷久久| 国产麻豆一区| 亚洲最新中文字幕| 欧美日韩综合一区二区三区| 99国产精品久| 欧美国产日韩激情| 日韩成人视屏| 九九热精品在线| 国产一区二区三区中文字幕| 中文字幕 久热精品 视频在线| 99视频在线免费| 女优一区二区三区| 7m第一福利500精品视频| 少妇又色又爽又黄的视频| 亚洲一区二区欧美| 亚洲午夜久久久久久久久| 国产一区清纯| 国产免费高清一区| 99热99re6国产在线播放| 调教一区二区| 欧美性69xxxx肥| av在线网站观看| 麻豆久久精品| 日本一区二区三不卡| 忘忧草在线www成人影院| 国产亚洲精品久久久久久| 成人黄色免费网| 亚洲欧洲三级电影| 亚洲天堂一区二区在线观看| 国产精品a级| 激情五月综合色婷婷一区二区 | 欧美日韩伦理在线免费| 国产精品久久久久久久美男| 日本中文字幕视频在线| 欧美一区二区久久久| 久久久久无码精品国产| 91色综合久久久久婷婷| 天天爽天天爽夜夜爽| 99久久亚洲精品蜜臀| 91九色露脸| 国产激情在线播放| 在线a欧美视频| 精品人妻无码一区二区| 午夜国产精品影院在线观看| 91精品国自产在线| 国产美女视频一区| 131美女爱做视频| 日韩影院二区| 国产日韩二区| 福利一区视频| 欧美黑人xxx| 邻居大乳一区二区三区| 快射av在线播放一区| 群体交乱之放荡娇妻一区二区| 日韩三级成人av网| 欧美成人免费小视频| www久久久com| 精品人伦一区二区三区蜜桃网站 | 处破女av一区二区| 精品国产一区二区三区四区vr | 五月天激情综合| 少妇视频一区二区| 99视频有精品| 91网址在线观看精品| 9色精品在线| 日本黄色a视频| 亚洲第一论坛sis| 91色精品视频在线| 亚洲精品.com| 久久久久久久国产精品视频| av电影在线观看一区二区三区| 欧美成人伊人久久综合网| 日本中文字幕在线观看视频| 一区二区三区**美女毛片| a资源在线观看| 91丨九色丨国产丨porny| 天堂av手机在线| 天堂va蜜桃一区二区三区漫画版| 日韩久久久久久久久久久久| 成人午夜国产| 欧美成人在线免费观看| 一区中文字幕| 亚洲tv在线观看| a∨色狠狠一区二区三区| 51色欧美片视频在线观看| 欧洲在线视频| 免费av在线一区| 欧美日韩欧美| 国产一区二区黑人欧美xxxx| 午夜小视频在线播放| 日韩精品一区二| 国产精品九九九九| 欧美久久久久久久久| av首页在线观看| 日韩精品欧美成人高清一区二区| 精品久久久视频| 日本一级免费视频| 久久久久久久综合日本| 国产黄色三级网站| 成人免费毛片app| 四虎国产精品永久免费观看视频| 久久精品国产一区二区| 精品久久久久久中文字幕2017| 国产精品视频| avav在线看| 亚洲免费精品| 日本www在线视频| 亚洲日本黄色| 阿v天堂2017| 在线高清一区| 日韩免费一级视频| 一区二区日韩免费看| 免费不卡av在线| 一区二区久久| 日本va中文字幕| 日本91福利区| 五月婷婷激情久久| 秋霞电影网一区二区| 免费黄色一级网站| 日韩有码一区二区三区| 一区二区三区网址| 久久精品99国产国产精| 亚洲一区二区三区四区精品| 国产精品18久久久久久久网站| 天天色天天干天天色| 国产一区视频在线看| 真实乱偷全部视频| 成人ar影院免费观看视频| 黄色性生活一级片| 日韩av系列| 精品欧美一区二区久久| 午夜精品久久久久久久第一页按摩| 日韩一区二区在线看| 精品人妻无码一区二区| 亚洲激情成人网| 裸体xxxx视频在线| xxx一区二区| 免费在线看电影| 国产91网红主播在线观看| 麻豆久久久久| 懂色中文一区二区三区在线视频| 网友自拍一区| 亚洲精品高清视频| 欧美日韩网站| 能在线观看的av网站| 国产一区二区三区在线观看免费 | 国产精品啪啪啪视频| 国产尤物精品| 亚洲一二三区av| 国产麻豆精品在线| 精品久久久久久中文字幕人妻最新| 欧美国产精品一区二区| 欧洲猛交xxxx乱大交3| 精品久久久久久亚洲精品| 中文字幕久久熟女蜜桃| 日韩欧美国产三级| 欧美69xxxxx| 美女av一区二区| 88xx成人永久免费观看| 亚洲一区二区三区四区在线播放| 日本中文字幕在线一区| 婷婷视频在线播放| 久久不射网站| 午夜性福利视频| 国产欧美视频在线观看| 久久黄色小视频| 日本乱人伦一区| 国模人体一区二区| 日韩综合中文字幕| 国产网站在线| 成人免费福利视频| 日韩在线你懂的| 国产一级不卡视频| 久久精品国产一区二区三区免费看| 日本一区二区在线免费观看| 亚洲色图在线视频| 午夜视频网站在线观看| 精品无人区乱码1区2区3区在线| 麻豆传媒视频在线观看| 国产精品久久久久av免费| 天天干天天草天天射| 日韩欧美一级| 中文字幕欧美日韩一区| 久久精品国产精品| 人妻精品一区一区三区蜜桃91| 亚洲女人天堂av| 欧美1234区| 91在线观看免费网站| 国产亚洲电影| 婷婷无套内射影院| 国产原创一区二区| 永久免费看片直接| 欧美日韩视频一区二区| 秋霞av在线| 欧美亚洲第一页| 美女主播精品视频一二三四| 日本天堂免费a| 国产精品一区二区免费不卡 | 久久综合五月天婷婷伊人| 国产精品111| 欧美精品一区二区不卡 |