精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

天天做夜夜做人人爱精品| 色老头在线观看| 蜜桃精品视频在线| 久久成人国产精品| 日本精品一二三| 亚洲欧美小说色综合小说一区| 中文字幕av一区 二区| yy111111少妇影院日韩夜片 | www.国产视频.com| 欧美大胆的人体xxxx| 久久久久高清精品| 91在线网站视频| 在线天堂中文字幕| 在线电影一区二区| 国产午夜精品全部视频在线播放| 熟妇女人妻丰满少妇中文字幕| 九九色在线视频| 日韩理论在线观看| 日韩高清专区| 视频污在线观看| 精品一区二区免费在线观看| 欧美一区在线直播| 青青草原在线免费观看视频| 精品成人影院| 日韩一区二区三区免费观看| 不卡av免费在线| 久久久男人天堂| 一区二区在线观看不卡| 亚洲欧美日韩精品在线| 图片区 小说区 区 亚洲五月| 激情另类小说区图片区视频区| 国产91精品久久久久久| 久久国产一级片| 婷婷综合视频| 在线免费看av不卡| 亚洲欧洲久久久| 日韩超碰人人爽人人做人人添| 日韩欧美一级特黄在线播放| 欧美在线aaa| 欧美aaa视频| 日本丶国产丶欧美色综合| 男人添女人下部高潮视频在观看| 在线中文字幕电影| 亚洲丝袜美腿综合| 一个色的综合| 丝袜美腿美女被狂躁在线观看| 久久久亚洲欧洲日产国码αv| 精品产品国产在线不卡| 黄色av网址在线| 岛国精品在线观看| 成人动漫视频在线观看免费| 国产99久久九九精品无码免费| 久久精品国产亚洲a| 国产极品jizzhd欧美| 日本黄色一级视频| 视频在线观看一区| 国产精品三级久久久久久电影| 免费黄色片视频| 男人的天堂亚洲一区| 国产日韩av在线| 国产精品久久久久久久免费| 久草这里只有精品视频| 91精品中国老女人| 性生交大片免费看女人按摩| 国产精品69久久久久水密桃| 99re视频| 五十路在线观看| 久久精品亚洲精品国产欧美| 日韩免费中文专区| 日韩在线免费电影| 亚洲久草在线视频| 免费看欧美黑人毛片| 一区二区电影免费观看| 色哟哟精品一区| 日韩欧美国产片| 麻豆一二三区精品蜜桃| 精品少妇一区二区三区免费观看| 精品熟女一区二区三区| 亚洲深夜福利在线观看| 最近2019年中文视频免费在线观看 | 国产精品乡下勾搭老头1| 国产91精品一区二区绿帽| 少妇人妻一区二区| 日本一区二区三区在线观看| 手机成人av在线| 污视频在线看网站| 色综合久久久久久久久久久| 欧美成人三级在线播放| 成人性生交大片免费看中文视频| 精品亚洲aⅴ在线观看| 一级二级黄色片| 伊人久久久大香线蕉综合直播| 欧美自拍视频在线| 91国内精品久久久| 成人免费高清在线观看| 亚欧洲精品在线视频免费观看| 国内精品久久久久久野外| 五月婷婷欧美视频| 在线看免费毛片| 日韩超碰人人爽人人做人人添| 神马久久久久久| 国产精品不卡av| 麻豆91精品视频| 久久久久久久久一区| 日本中文字幕伦在线观看| 红桃av永久久久| 99九九精品视频| 欧美猛男做受videos| 欧美成人一二三| 草莓视频18免费观看| 国产成人在线视频网站| 视频一区在线免费观看| 国产美女精品写真福利视频| 5月丁香婷婷综合| 在哪里可以看毛片| 雨宫琴音一区二区在线| 成人国产在线视频| 国产三级在线| 欧美日韩亚洲一区二| 午夜影院免费观看视频| 欧美色图一区| 欧美亚洲一级片| 高清国产mv在线观看| 自拍视频在线观看一区二区| 久久久国产欧美| 亚洲精品3区| 国内免费精品永久在线视频| 国产伦理一区二区| 成人免费在线视频| 日本肉体xxxx裸体xxx免费| 你懂的一区二区三区| 8x海外华人永久免费日韩内陆视频| 99热这里只有精品99| 亚洲欧洲国产专区| 粉色视频免费看| 久久精品不卡| 国产精品久久久久aaaa九色| 九色在线视频蝌蚪| 欧美特黄级在线| 欧美一区二区三区成人精品| 999亚洲国产精| 国产一级特黄a大片99| 欧美78videosex性欧美| 日韩精品在线网站| 黄色一级视频免费| 国产精品一区二区在线观看不卡 | 色综合久久久久综合99| 国产吞精囗交久久久| 免费一区视频| 免费国产在线精品一区二区三区| 美女露胸视频在线观看| 日韩电影网在线| 久久99精品波多结衣一区| 成人aa视频在线观看| 国产不卡一区二区视频| 日韩在线影视| 国产成人极品视频| 成a人v在线播放| 欧美日韩国产片| 亚洲不卡在线播放| 国产高清亚洲一区| 一本久道高清无码视频| 午夜先锋成人动漫在线| 日韩av电影院| 在线免费av电影| 777欧美精品| 免费在线一级片| 久久在线观看免费| 国产视频一区二区视频| 色喇叭免费久久综合网| 3d动漫精品啪啪一区二区三区免费| 天堂8中文在线| 亚洲国产欧美一区二区丝袜黑人| √资源天堂中文在线| 国产欧美日韩在线观看| 97超碰人人看| 一本色道久久综合亚洲精品不| 欧美性大战久久久久| 欧美亚洲综合视频| 欧美日韩国产二区| 欧美日韩免费做爰大片| 欧美日免费三级在线| 久久成人在线观看| 久久精品无码一区二区三区 | 99精品视频在线观看免费| 粉嫩虎白女毛片人体| 亚洲激情中文在线| 精品久久久久久乱码天堂| 99久久亚洲国产日韩美女| 欧美黑人xxxⅹ高潮交| 欧美黄色小说| 欧美一级黄色片| 特黄视频免费看| 亚洲天堂免费看| 右手影院亚洲欧美| 国产毛片精品视频| 国产成人久久777777| 亚洲高清资源在线观看| 明星裸体视频一区二区| 国产免费区一区二区三视频免费 | 中文字幕在线精品| 国产综合无码一区二区色蜜蜜| 色婷婷av一区二区三区gif| 国产日韩欧美在线观看视频| 久久综合九色欧美综合狠狠| 韩国三级丰满少妇高潮| 日韩成人免费在线| 免费一级特黄毛片| 亚洲a一区二区三区| 欧美日韩一区二| 国产成人精品福利| 成人激情在线播放| 成人免费福利| 777777777亚洲妇女| 亚洲国产精品精华素| 最新日韩中文字幕| 国产在线自天天| 亚洲激情第一页| 性中国xxx极品hd| 欧美另类久久久品| 久久这里只有精品9| 欧美日韩国产色视频| 国产午夜小视频| 亚洲日本韩国一区| 国产真人真事毛片视频| 久久精品亚洲麻豆av一区二区| 久久久久亚洲AV成人无码国产| 国产在线精品一区在线观看麻豆| 日本人视频jizz页码69| 久久久蜜桃一区二区人| 鲁一鲁一鲁一鲁一澡| 亚洲国产日本| 日韩黄色片在线| 欧美日本亚洲韩国国产| 二级片在线观看| 91久久电影| 一区二区在线中文字幕电影视频| 菠萝蜜一区二区| 亚洲mv在线看| av亚洲在线观看| 日韩欧美一区二区在线观看| 亚洲调教一区| 欧美亚洲爱爱另类综合| 猛男gaygay欧美视频| 久久久久天天天天| 美女久久99| 欧美精品一区在线| 久久99国产精品视频| 欧美另类一区| 日本一本不卡| 在线观看福利一区| 91精品91| 久草视频这里只有精品| aⅴ色国产欧美| 人妻有码中文字幕| 视频一区二区中文字幕| 中文字幕欧美人妻精品一区| 免费高清成人在线| 视频免费1区二区三区| 国产麻豆精品久久一二三| 台湾佬美性中文| 不卡在线视频中文字幕| 人妻丰满熟妇aⅴ无码| 久久精品这里都是精品| аⅴ天堂中文在线网| 中文字幕综合网| 国产一级片免费观看| 精品成人乱色一区二区| www毛片com| 欧美三级韩国三级日本一级| www.狠狠干| 亚洲国产成人91精品| 狠狠色伊人亚洲综合网站l| 色哟哟网站入口亚洲精品| av片在线观看免费| 538国产精品一区二区免费视频| 校园春色亚洲色图| 成人免费自拍视频| 加勒比色老久久爱综合网| 日本一区二区在线| 欧美一区视频| 2022亚洲天堂| 精品一区二区三区视频 | 亚洲国产成人自拍| 日日噜噜夜夜狠狠久久波多野| 亚洲国产另类av| 亚洲大尺度在线观看| 日韩欧美色综合| 蜜芽tv福利在线视频| 欧美乱人伦中文字幕在线| 亚洲黄色网址| 97超碰人人看人人 | 中文字幕欧美日韩一区二区三区| 黄色在线成人| 校园春色 亚洲色图| 成人免费视频免费观看| 日韩影视一区二区三区| 亚洲伊人伊色伊影伊综合网 | 欧美一级二级三级蜜桃| 欧洲视频在线免费观看| 欧美大尺度激情区在线播放| 日韩免费电影| 岛国一区二区三区高清视频| 日韩av有码| 欧美亚洲国产成人| 国产一区二区0| 亚洲图片第一页| 欧美视频在线视频| 日本高清视频www| 精品国内自产拍在线观看| 中文在线免费视频| av一区二区三区四区电影| 国产精品国产一区| 日韩中文字幕免费在线| 99久久免费精品| 日韩成人毛片视频| 欧美日韩激情在线| 国产午夜在线观看| 91成人性视频| 久久久免费毛片| 少妇久久久久久被弄到高潮| 美国欧美日韩国产在线播放| 我和岳m愉情xxxⅹ视频| 亚洲成人自拍偷拍| 亚洲黄色在线播放| 久久久精品久久久久| 欧美爱爱视频| 先锋影音一区二区三区| 久久福利一区| 少妇大叫太粗太大爽一区二区| 亚洲一区二区欧美激情| a毛片在线免费观看| 久久亚洲精品小早川怜子66| yiren22亚洲综合| 日韩精品在在线一区二区中文| 国产欧美综合一区二区三区| 成人区人妻精品一区二| 亚洲一区二区三区爽爽爽爽爽 | 波多视频一区| 精品亚洲欧美日韩| 国产精品日本| 黄色正能量网站| 91福利在线导航| 福利在线午夜| 国产精品视频一区国模私拍| 不卡av一区二区| 污污视频网站在线| 亚洲免费av观看| 亚洲黄色在线播放| 久久久久久久久中文字幕| 国产精品x8x8一区二区| 成人免费观看cn| 91老师国产黑色丝袜在线| www.国产com| 在线日韩第一页| 欧美aaa级| 99久久久精品视频| 99在线精品视频| 无码人妻久久一区二区三区不卡| 国产午夜精品一区二区三区| 国产精品伊人| 激情图片qvod| 成人高清伦理免费影院在线观看| 日韩欧美三级在线观看| 亚洲美腿欧美激情另类| 黄色精品视频| 干日本少妇视频| 成人久久久精品乱码一区二区三区| 日韩三级小视频| 亚洲天堂av在线播放| 久久青草免费| 久久精品无码中文字幕| 久久精品夜色噜噜亚洲aⅴ| 91麻豆成人精品国产| 九九热这里只有精品6| 欧美激情极品| 五月婷婷狠狠操| 亚洲最大成人综合| 飘雪影视在线观看免费观看| 国产精品女视频| 国产精品vip| 亚洲天堂岛国片| 日韩视频一区在线观看| 亚洲欧美韩国| 最新av网址在线观看| 91偷拍与自偷拍精品| 在线观看xxxx| 性色av一区二区三区红粉影视| 欧美日韩激情| 色悠悠在线视频| 欧洲国内综合视频| 岛国毛片av在线| 亚洲一区二区三区精品在线观看| 成人一区二区在线观看| 欧美性猛交xxxx乱大交hd| 欧美大片免费观看在线观看网站推荐| 免费一区二区三区视频导航| 久久久久久久久久久影视| 在线看国产一区二区| 91色在线看|