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

手工模擬實現 Docker 容器網絡!

網絡 通信技術
我們的開發寫出來的代碼大概率是要運行在容器上的。因此深刻理解容器網絡的工作原理非常的重要。這有這樣將來遇到問題的時候才知道該如何下手處理。

[[435189]]

大家好,我是飛哥!

如今服務器虛擬化技術已經發展到了深水區。現在業界已經有很多公司都遷移到容器上了。我們的開發寫出來的代碼大概率是要運行在容器上的。因此深刻理解容器網絡的工作原理非常的重要。這有這樣將來遇到問題的時候才知道該如何下手處理。

網絡虛擬化,其實用一句話來概括就是用軟件來模擬實現真實的物理網絡連接。比如 Docker 就是用純軟件的方式在宿主機上模擬出來的獨立網絡環境。我們今天來徒手打造一個虛擬網絡,實現在這個網絡里訪問外網資源,同時監聽端口提供對外服務的功能。

看完這一篇后,相信你對 Docker 虛擬網絡能有進一步的理解。好了,我們開始!

一、基礎知識回顧

1.1 veth、bridge 與 namespace

Linux 下的 veth 是一對兒虛擬網卡設備,和我們常見的 lo 很類似。在這兒設備里,從一端發送數據后,內核會尋找該設備的另一半,所以在另外一端就能收到。不過 veth 只能解決一對一通信的問題。詳情參見輕松理解 Docker 網絡虛擬化基礎之 veth 設備!

如果有很多對兒 veth 需要互相通信的話,就需要引入 bridge 這個虛擬交換機。各個 veth 對兒可以把一頭連接在 bridge 的接口上,bridge 可以和交換機一樣在端口之間轉發數據,使得各個端口上的 veth 都可以互相通信。參見

Namespace 解決的是隔離性的問題。每個虛擬網卡設備、進程、socket、路由表等等網絡棧相關的對象默認都是歸屬在 init_net 這個缺省的 namespace 中的。不過我們希望不同的虛擬化環境之間是隔離的,用 Docker 來舉例,那就是不能讓 A 容器用到 B 容器的設備、路由表、socket 等資源,甚至連看一眼都不可以。只有這樣才能保證不同的容器之間復用資源的同時,還不會影響其它容器的正常運行。參見

通過 veth、namespace 和 bridge 我們在一臺 Linux 上就能虛擬多個網絡環境出來。而且它們之間、和宿主機之間都可以互相通信。

但是這三篇文章過后,我們還剩下一個問題沒有解決,那就是虛擬出來的網絡環境和外部網絡的通信。還拿 Docker 容器來舉例,你啟動的容器里的服務肯定是需要訪問外部的數據庫的。還有就是可能需要暴露比如 80 端口對外提供服務。例如在 Docker 中我們通過下面的命令將容器的 80 端口上的 web 服務要能被外網訪問的到。

我們今天的文章主要就是解決這兩個問題的,一是從虛擬網絡中訪問外網,二是在虛擬網絡中提供服務供外網使用。解決它們需要用到路由和 nat 技術。

1.2 路由選擇

Linux 是在發送數據包的時候,會涉及到路由過程。這個發送數據包既包括本機發送數據包,也包括途徑當前機器的數據包的轉發。

先來看本機發送數據包。其中本機發送在25 張圖,一萬字,拆解 Linux 網絡包發送過程這一篇我們討論過。

所謂路由其實很簡單,就是該選擇哪張網卡(虛擬網卡設備也算)將數據寫進去。到底該選擇哪張網卡呢,規則都是在路由表中指定的。Linux 中可以有多張路由表,最重要和常用的是 local 和 main。

local 路由表中統一記錄本地,確切的說是本網絡命名空間中的網卡設備 IP 的路由規則。

  1. #ip route list table local 
  2.  
  3. local 10.143.x.y dev eth0 proto kernel scope host src 10.143.x.y 
  4.  
  5. local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 

其它的路由規則,一般都是在 main 路由表中記錄著的。可以用 ip route list table local 查看,也可以用更簡短的 route -n

再看途徑當前機器的數據包的轉發。除了本機發送以外,轉發也會涉及路由過程。如果 Linux 收到數據包以后發現目的地址并不是本地的地址的話,就可以選擇把這個數據包從自己的某個網卡設備上轉發出去。這個時候和本機發送一樣,也需要讀取路由表。根據路由表的配置來選擇從哪個設備將包轉走。

不過值得注意的是,Linux 上轉發功能默認是關閉的。也就是發現目的地址不是本機 IP 地址默認是將包直接丟棄。需要做一些簡單的配置,然后 Linux 才可以干像路由器一樣的活兒,實現數據包的轉發。

1.3 iptables 與 NAT

Linux 內核網絡棧在運行上基本上是一個純內核態的東西,但為了迎合各種各樣用戶層不同的需求,內核開放了一些口子出來供用戶層來干預。其中 iptables 就是一個非常常用的干預內核行為的工具,它在內核里埋下了五個鉤子入口,這就是俗稱的五鏈。

Linux 在接收數據的時候,在 IP 層進入 ip_rcv 中處理。再執行路由判斷,發現是本機的話就進入 ip_local_deliver 進行本機接收,最后送往 TCP 協議層。在這個過程中,埋了兩個 HOOK,第一個是 PRE_ROUTING。這段代碼會執行到 iptables 中 pre_routing 里的各種表。發現是本地接收后接著又會執行到 LOCAL_IN,這會執行到 iptables 中配置的 input 規則。

在發送數據的時候,查找路由表找到出口設備后,依次通過 __ip_local_out、 ip_output 等函數將包送到設備層。在這兩個函數中分別過了 OUTPUT 和 PREROUTING 開的各種規則。

如果是轉發過程,Linux 收到數據包發現不是本機的包可以通過查找自己的路由表找到合適的設備把它轉發出去。那就先是在 ip_rcv 中將包送到 ip_forward 函數中處理,最后在 ip_output 函數中將包轉發出去。在這個過程中分別過了 PREROUTING、FORWARD 和 POSTROUTING 三個規則。

綜上所述,iptables 里的五個鏈在內核網絡模塊中的位置就可以歸納成如下這幅圖。

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

在 iptables 中,根據實現的功能的不同,又分成了四張表。分別是 raw、mangle、nat 和 filter。其中 nat 表實現我們常說的 NAT(Network AddressTranslation) 功能。其中 nat 又分成 SNAT(Source NAT)和 DNAT(Destination NAT)兩種。

SNAT 解決的是內網地址訪問外部網絡的問題。它是通過在 POSTROUTING 里修改來源 IP 來實現的。

DNAT 解決的是內網的服務要能夠被外部訪問到的問題。它在通過 PREROUTING 修改目標 IP 實現的。

二、 實現虛擬網絡外網通信

基于以上的基礎知識,我們用純手工的方式搭建一個可以和 Docker 類似的虛擬網絡。而且要實現和外網通信的功能。

1. 實驗環境準備

我們先來創建一個虛擬的網絡環境出來,其命名空間為 net1。宿主機的 IP 是 10.162 的網段,可以訪問外部機器。虛擬網絡為其分配 192.168.0 的網段,這個網段是私有的,外部機器無法識別。

這個虛擬網絡的搭建過程如下。先創建一個 netns 出來,命名為 net1。

  1. # ip netns add net1 

創建一個 veth 對兒(veth1 - veth1_p),把其中的一頭 veth1 放在 net1 中,給它配置上 IP,并把它啟動起來。

  1. # ip link add veth1 type veth peer name veth1_p 
  2.  
  3. # ip link set veth1 netns net1 
  4.  
  5. # ip netns exec net1 ip addr add 192.168.0.2/24 dev veth1 # IP 
  6.  
  7. # ip netns exec net1 ip link set veth1 up 

創建一個 bridge,給它也設置上 ip。接下來把 veth 的另外一端 veth1_p 插到 bridge 上面。最后把網橋和 veth1_p 都啟動起來。

  1. # brctl addbr br0 
  2.  
  3. # ip addr add 192.168.0.1/24 dev br0 
  4.  
  5. # ip link set dev veth1_p master br0 
  6.  
  7. # ip link set veth1_p up 
  8.  
  9. # ip link set br0 up 

這樣我們就在 Linux 上創建出了一個虛擬的網絡。創建過程和 聊聊 Linux 上軟件實現的“交換機” - Bridge! 中一樣,只不過今天為了省事,只創建了一個網絡出來,上一篇中創建出來了兩個。

2. 請求外網資源

現在假設我們上面的 net1 這個網絡環境中想訪問外網。這里的外網是指的虛擬網絡宿主機外部的網絡。

我們假設它要訪問的另外一臺機器 IP 是 10.153.*.* ,這個 10.153.*.* 后面兩段由于是我的內部網絡,所以隱藏起來了。你在實驗的過程中,用自己的 IP 代替即可。

我們直接來訪問一下試試

  1. # ip netns exec net1 ping 10.153.*.* 
  2.  
  3. connect: Network is unreachable 

提示網絡不通,這是怎么回事?用這段報錯關鍵字在內核源碼里搜索一下:

  1. //file: arch/parisc/include/uapi/asm/errno.h 
  2. #define ENETUNREACH 229 /* Network is unreachable */ 
  3.  
  4. //file: net/ipv4/ping.c 
  5. static int ping_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, 
  6.    size_t len) 
  7.  ... 
  8.  rt = ip_route_output_flow(net, &fl4, sk); 
  9.  if (IS_ERR(rt)) { 
  10.   err = PTR_ERR(rt); 
  11.   rt = NULL
  12.   if (err == -ENETUNREACH) 
  13.    IP_INC_STATS_BH(net, IPSTATS_MIB_OUTNOROUTES); 
  14.   goto out
  15.  } 
  16.  ... 
  17. out:  
  18.  return err;  

在 ip_route_output_flow 這里的返回值判斷如果是 ENETUNREACH 就退出了。這個宏定義注釋上來看報錯的信息就是 “Network is unreachable”。

這個 ip_route_output_flow 主要是執行路由選路。所以我們推斷可能是路由出問題了,看一下這個命名空間的路由表。

  1. # ip netns exec net1 route -n 
  2. Kernel IP routing table 
  3. Destination     Gateway         Genmask         Flags Metric Ref    Use Iface 
  4. 192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 veth1 

怪不得,原來 net1 這個 namespace 下默認只有 192.168.0.* 這個網段的路由規則。我們 ping 的 IP 是 10.153.*.* ,根據這個路由表里找不到出口。自然就發送失敗了。

我們來給 net 添加上默認路由規則,只要匹配不到其它規則就默認送到 veth1 上,同時指定下一條是它所連接的 bridge(192.168.0.1)。

  1. # ip netns exec net1 route add default gw 192.168.0.1 veth1 

再 ping 一下試試。

  1. # ip netns exec net1 ping 10.153.*.* -c 2 
  2.  
  3. PING 10.153.*.* (10.153.*.*) 56(84) bytes of data. 
  4.  
  5. --- 10.153.*.* ping statistics --- 
  6.  
  7. 2 packets transmitted, 0 received, 100% packet loss, time 999ms 

額好吧,仍然不通。上面路由幫我們把數據包從 veth 正確送到了 bridge 這個網橋上。接下來網橋還需要 bridge 轉發到 eth0 網卡上。所以我們得打開下面這兩個轉發相關的配置

  1. # sysctl net.ipv4.conf.all.forwarding=1 
  2.  
  3. # iptables -P FORWARD ACCEPT 

不過這個時候,還存在一個問題。那就是外部的機器并不認識 192.168.0.* 這個網段的 ip。它們之間都是通過 10.153.*.* 來進行通信的。設想下我們工作中的電腦上沒有外網 IP 的時候是如何正常上網的呢?外部的網絡只認識外網 IP。沒錯,那就是我們上面說的 NAT 技術。

我們這次的需求是實現內部虛擬網絡訪問外網,所以需要使用的是 SNAT。它將 namespace 請求中的 IP(192.168.0.2)換成外部網絡認識的 10.153.*.*,進而達到正常訪問外部網絡的效果。

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

來再 ping 一下試試,歐耶,通了!

  1. # ip netns exec net1 ping 10.153.*.* 
  2.  
  3. PING 10.153.*.* (10.153.*.*) 56(84) bytes of data. 
  4.  
  5. 64 bytes from 10.153.*.*: icmp_seq=1 ttl=57 time=1.70 ms 
  6.  
  7. 64 bytes from 10.153.*.*: icmp_seq=2 ttl=57 time=1.68 ms 

這時候我們可以開啟 tcpdump 抓包查看一下,在 bridge 上抓到的包我們能看到還是原始的源 IP 和 目的 IP。

再到 eth0 上查看的話,源 IP 已經被替換成可和外網通信的 eth0 上的 IP 了。

至此,容器就可以通過宿主機的網卡來訪問外部網絡上的資源了。我們來總結一下這個發送過程

3. 開放容器端口

我們再考慮另外一個需求,那就是把在這個命名空間內的服務提供給外部網絡來使用。

和上面的問題一樣,我們的虛擬網絡環境中 192.168.0.2 這個 IP 外界是不認識它的。只有這個宿主機知道它是誰。所以我們同樣還需要 NAT 功能。

這次我們是要實現外部網絡訪問內部地址,所以需要的是 DNAT 配置。DNAT 和 SNAT 配置中有一個不一樣的地方就是需要明確指定容器中的端口在宿主機上是對應哪個。比如在 docker 的使用中,是通過 -p 來指定端口的對應關系。

  1. # docker run -p 8000:80 ... 

我們通過如下這個命令來配置 DNAT 規則

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

這里表示的是宿主機在路由之前判斷一下如果流量不是來自 br0,并且是訪問 tcp 的 8088 的話,那就轉發到 192.168.0.2:80 。

在 net1 環境中啟動一個 Server

  1. # ip netns exec net1 nc -lp 80 

外部選一個ip,比如 10.143.*.*, telnet 連一下 10.162.*.* 8088 試試,通了!

  1. # telnet 10.162.*.* 8088 
  2.  
  3. Trying 10.162.*.*... 
  4.  
  5. Connected to 10.162.*.*. 
  6.  
  7. Escape character is '^]'

開啟抓包, # tcpdump -i eth0 host 10.143.*.*。可見在請求的時候,目的是宿主機的 IP 的端口。

但數據包到宿主機協議棧以后命中了我們配置的 DNAT 規則,宿主機把它轉發到了 br0 上。在 bridge 上由于沒有那么多的網絡流量包,所以不用過濾直接抓包就行,# tcpdump -i br0。

在 br0 上抓到的目的 IP 和端口是已經替換過的了。

bridge 當然知道 192.168.0.2 是 veth 1。于是,在 veth1 上監聽 80 的服務就能收到來自外界的請求了!我們來總結一下這個接收過程

三、總結

現在業界已經有很多公司都遷移到容器上了。我們的開發寫出來的代碼大概率是要運行在容器上的。因此深刻理解容器網絡的工作原理非常的重要。這有這樣將來遇到問題的時候才知道該如何下手處理。

本文開頭我們先是簡單介紹了 veth、bridge、namespace、路由、iptables 等基礎知識。Veth 實現連接,bridge 實現轉發,namespace 實現隔離,路由表控制發送時的設備選擇,iptables 實現 nat 等功能。

接著基于以上基礎知識,我們采用純手工的方式搭建了一個虛擬網絡環境。

這個虛擬網絡可以訪問外網資源,也可以提供端口服務供外網來調用。這就是 Docker 容器網絡工作的基本原理。

整個實驗我打包寫成一個 Makefile,放到了這里:https://github.com/yanfeizhang/coder-kung-fu/tree/main/tests/network/test07

最后,我們再擴展一下。今天我們討論的問題是 Docker 網絡通信的問題。Docker 容器通過端口映射的方式提供對外服務。外部機器訪問容器服務的時候,仍然需要通過容器的宿主機 IP 來訪問。

在 Kubernets 中,對跨主網絡通信有更高的要求,要不同宿主機之間的容器可以直接互聯互通。所以 Kubernets 的網絡模型也更為復雜。

 

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

2024-08-05 11:14:45

2023-09-15 10:15:43

Docker網絡

2009-12-04 19:18:04

freebsd手工配置網絡

2024-01-15 00:11:04

Docker網絡系統

2024-03-22 09:54:04

Docker網絡驅動容器網絡

2023-10-08 13:47:33

Docker容器

2010-03-05 10:27:29

四級網工模擬試題

2023-10-06 12:11:52

2020-10-26 15:11:50

Docker容器IT

2023-10-10 17:09:19

2018-11-22 10:47:36

Docker數據備份

2016-11-04 09:41:48

容器Docker

2022-03-10 08:24:17

Docker容器SaaS

2017-08-23 08:09:11

UDPDocker容器

2016-10-31 15:33:57

DockerMySQL容器管理

2012-02-02 13:04:50

JavaSpring

2020-07-08 09:36:03

Kubernetes容器開發

2019-07-16 14:44:52

DockerMySQL操作系統

2022-05-24 11:05:51

神經元人工智能計算機

2022-07-18 11:13:07

容器安全Docker
點贊
收藏

51CTO技術棧公眾號

欧美zozo另类异族| 免费国产羞羞网站视频| 91福利在线视频| 2020最新国产精品| 免费成人你懂的| 精品国产一区二区三区四区四| 欧美精品久久久| 中文国语毛片高清视频| 电影在线观看一区| 国产在线播放一区二区三区| 亚洲国产欧美一区二区三区久久| 老司机av福利| 亚洲网站免费观看| 精品在线播放| 偷拍日韩校园综合在线| 亚洲一区久久久| youjizz亚洲女人| 午夜不卡影院| 国产一区二区免费看| 久久久日本电影| 可以看的av网址| 日韩精品黄色| 另类小说欧美激情| 在线日韩精品视频| 免费日韩中文字幕| 精彩国产在线| 久久久久久一区二区| 日韩精品欧美国产精品忘忧草 | 中国av一区| 五月天欧美精品| 亚洲最新在线| 国产又大又黄又爽| 97视频热人人精品免费| 欧美日韩美少妇 | 亚洲成人三区| 91精选在线观看| 少妇高潮流白浆| 国产精品一区在线看| 日韩国产精品大片| 在线播放日韩专区| 亚洲午夜久久久久久久久红桃| 性爽视频在线| 性做久久久久久久久| 久久国产精品久久| 9i看片成人免费看片| 欧美人成在线观看ccc36| 日韩欧美在线看| 亚洲高清视频一区| www.蜜臀av| 国产日韩一区二区三区在线| 精品爽片免费看久久| av五月天在线| 91精品国产91久久综合桃花| 国内久久精品| 亚洲韩国青草视频| 丰满少妇中文字幕| 日本伊人久久| 精品美女久久久久久免费| 熟女熟妇伦久久影院毛片一区二区| yourporn在线观看中文站| 精品一区二区三区av| 久久久久在线观看| 免费在线视频一区二区| 免费欧美视频| 亚洲美女性生活视频| 999久久久精品视频| 性国产高清在线观看| 成+人+亚洲+综合天堂| 国产精品99导航| 天海翼在线视频| 国内精品偷拍| 欧美剧情片在线观看| 热99这里只有精品| 精品久久av| 国产精品色婷婷| 动漫一区二区在线| 在线免费观看av片| 精品亚洲porn| 国产成人精品在线| 成人免费一区二区三区| 9久re热视频在线精品| 久久国产一区二区三区| 四虎永久免费影院| 欧美精品尤物在线观看| 精品国产3级a| 国产三级视频网站| 日韩精品一区二区三区免费观影 | 国产成人av在线播放| 波多野结衣网站| 国内自拍视频一区二区三区| 97精品欧美一区二区三区| 日韩一级片在线免费观看| 91视频一区| 久久久噜噜噜久久久| 欧美一区免费看| 99这里有精品| 国产日韩换脸av一区在线观看| 久热这里只有精品6| 国产精品88久久久久久| 国产亚洲成av人片在线观看桃| 奇米777第四色| 亚洲精品在线a| 日韩成人免费视频| 国产黄a三级三级| 99视频一区| 成人亚洲欧美一区二区三区| 久久精品五月天| 国产精品综合视频| 91精品久久久久久久久中文字幕| 国产精品自偷自拍| 91免费视频网| 国产成人av一区二区三区| 欧美在线观看在线观看| 91亚洲男人天堂| 国产有色视频色综合| 性中国古装videossex| 国产麻豆一精品一av一免费 | 精品国产中文字幕第一页| 欧美成人午夜激情在线| 老司机深夜福利网站| 宅男噜噜噜66一区二区| 91视频九色网站| av官网在线观看| 国产精品中文欧美| 视频一区视频二区视频三区高| 国产在线观看精品一区| 亚洲6080在线| 波多野结衣在线免费观看| 国产精品日本一区二区不卡视频| 欧美一区二区三区在线电影| 受虐m奴xxx在线观看| 欧美日韩中文一区二区| 66m—66摸成人免费视频| 精品成人免费视频| 性久久久久久| 国产精品高清网站| 在线免费观看av片| 国产校园另类小说区| 日韩一二三区不卡在线视频| 在线视频91p| 色婷婷久久久亚洲一区二区三区 | 亚洲v.com| 日韩成人性视频| 国产精品16p| 久久久久久亚洲精品杨幂换脸| 国产日韩三区| av影片在线| 欧美视频中文一区二区三区在线观看 | 成人国产精品久久久久久亚洲| 91官网在线| 欧美日韩国产免费一区二区| a级黄色免费视频| 欧美不卡视频| 26uuu久久噜噜噜噜| 中国精品一区二区| 国产成人午夜高潮毛片| 免费看成人午夜电影| 免费黄色网址在线观看| 亚洲高清久久久| 中文字幕第38页| 2023国产精华国产精品| 美日韩精品免费视频| www.av日韩| 亚洲国产精品一区二区www| 精品视频站长推荐| 国产美女一区| 神马影院我不卡| www久久久| 亚洲精品中文字幕有码专区| 亚洲欧美另类在线视频| 国产在线视频不卡二| 成人免费看片视频在线观看| 91久久大香伊蕉在人线| 亚洲影院在线播放| 久久亚洲精精品中文字幕早川悠里| 亚洲一区二区三区精品视频| 国产精品久久久久久久久免费高清| 日韩一区二区精品葵司在线| 黄色aaa视频| 视频一区在线视频| 99国产超薄丝袜足j在线观看 | av成人在线观看| 日韩欧美视频在线| 爱爱的免费视频| 丝袜美腿高跟呻吟高潮一区| 亚洲激情啪啪| 色播一区二区| 欧洲成人在线观看| 丰满少妇在线观看bd| 国产精品毛片高清在线完整版| 视频在线观看免费高清| 欧美va天堂| 久久av二区| 欧美videos粗暴| 欧美激情视频一区二区三区不卡| 一炮成瘾1v1高h| 国产人成一区二区三区影院| 亚洲美免无码中文字幕在线| 国产精品亚洲片在线播放| 久久人人爽人人| 黄色网址在线播放| 日韩一区二区中文字幕| 黄色在线免费观看| 亚洲精品高清视频在线观看| 99sesese| 夜夜嗨av一区二区三区网站四季av| 视频一区二区精品| 精品国产一区二区三区不卡蜜臂| 欧美大奶子在线| 黄色av免费在线观看| 精品成人一区二区| 一区二区三区免费观看视频| 欧美日韩一区二区在线| 极品人妻一区二区三区| 国产一区二区三区观看| 国产精品99久久免费黑人人妻| 午夜日本精品| 一区二区三区四区不卡| 亚洲电影一级片| 国产a一区二区| 嫩呦国产一区二区三区av| 欧美xxxx做受欧美| 国产精品毛片一区二区三区四区| 亚洲福利视频在线| 奇米影视第四色777| 亚洲欧美日韩久久精品| 欧美激情第四页| 日韩精品国产精品| 大陆极品少妇内射aaaaa| 最新亚洲精品| 国产精品日韩欧美一区二区三区| 麻豆mv在线看| 亚洲一区第一页| 天堂91在线| 欧美日韩亚洲高清一区二区| www.av免费| 国产99一区视频免费| 成人免费观看在线| 欧美高清一级片| 国产主播喷水一区二区| 精品裸体bbb| 久久精品国产欧美亚洲人人爽| 国产一级免费在线观看| 亚洲精品自拍偷拍| 欧美一级特黄aaaaaa大片在线观看| 日韩写真欧美这视频| 在线观看视频二区| 欧美日韩国产高清一区二区 | 久久久久网站| 99蜜桃臀久久久欧美精品网站| 国产一区不卡| 欧美激情专区| 国产成人手机高清在线观看网站| 久久资源av| 久久最新网址| 亚洲欧美日韩精品在线| 99精品国产一区二区三区| 日本黄色播放器| 国内一区二区三区| 免费国产a级片| 久久精品官网| 一区二区三区网址| 亚洲区一区二| 亚洲在线播放电影| 国产精品国内免费一区二区三区| 中文字幕一区综合| 欧美亚洲国产日韩| 蜜桃臀一区二区三区| 亚洲日产av中文字幕| 日本日本精品二区免费| 日韩中文字幕视频网| 国产精选一区二区| 精品一区在线| 超碰在线免费观看97| 国产精品啊啊啊| www.com毛片| 欧美激情综合色综合啪啪| 日韩一本精品| 中文字幕午夜精品一区二区三区 | 国产成人精品在线观看| 另类一区二区三区| 国产精品swag| jizzjizz欧美69巨大| 国产人妻互换一区二区| 妖精视频成人观看www| 一道本在线免费视频| 国产aⅴ综合色| 日韩女同一区二区三区| 成人网在线播放| 亚洲精品视频三区| 成+人+亚洲+综合天堂| av永久免费观看| 亚洲品质自拍视频| 中文字幕免费在线观看视频| 欧美三级韩国三级日本三斤 | 国产精品18久久久久久vr| 污污污www精品国产网站| 久久久精品欧美丰满| 黄色录像a级片| 国产v日产∨综合v精品视频| 久久无码人妻精品一区二区三区| 成人免费精品视频| 亚洲欧洲久久久| 久久综合九色综合欧美就去吻| 微拍福利一区二区| 亚洲国产日韩精品| 中文亚洲av片在线观看| 亚洲精品xxxx| 在线观看免费高清完整| 久久久久久中文| 男人天堂亚洲天堂| 久久久久久国产精品久久| 日韩电影网站| 国产精品久久久久久久久久久久久 | 亚洲最新视频在线观看| 国产精品夜夜夜爽阿娇| 午夜a成v人精品| av官网在线观看| 色婷婷av一区二区三区在线观看 | 91好吊色国产欧美日韩在线| 久久精品国产色蜜蜜麻豆| 在线免费播放av| 亚洲综合在线第一页| 一二三区在线播放| 亚洲天堂成人在线视频| 国产精品一级伦理| 高清亚洲成在人网站天堂| 国产美女亚洲精品7777| 亚洲国产精品综合| 视频一区欧美日韩| 亚洲天堂资源在线| 亚洲无人区一区| 亚洲国产成人精品激情在线| 制服丝袜成人动漫| av在线三区| 国产精品国语对白| 影视先锋久久| 粗暴91大变态调教| 久久久蜜桃精品| 日韩在线播放中文字幕| 日韩精品免费在线视频| 伊人色综合一区二区三区影院视频| 国产成人精品日本亚洲| 亚洲精品aaaaa| 欧美成人xxxxx| 91年精品国产| 97人妻一区二区精品视频| 亚洲欧美另类国产| 少妇一区视频| 99视频免费观看| 欧美破处大片在线视频| 美女流白浆视频| 2021国产精品久久精品| 男女视频免费看| 亚洲国产精品一区二区久| eeuss鲁一区二区三区| 国产高清在线一区二区| 亚洲日本黄色| a级在线观看视频| 91国产成人在线| www.com在线观看| 欧美黑人一级爽快片淫片高清| 亚洲开心激情| 无码人妻丰满熟妇区96| 国产日韩精品一区| 在线免费观看日韩视频| 美乳少妇欧美精品| 欧美电影完整版在线观看| 久久久久久香蕉| 国产精品国产三级国产aⅴ入口 | 超碰97人人干| 在线精品观看国产| 国内精品久久久久久久久久久 | 欧美日韩一区在线视频| 日本免费新一区视频| 久久精品aⅴ无码中文字字幕重口| 国产偷v国产偷v亚洲高清| 自拍偷拍福利视频| 欧美成aaa人片免费看| 国产一区二区三区亚洲| 男人的天堂99| 中文字幕一区在线观看视频| 亚洲黄色片视频| 日本道色综合久久影院| 欧美岛国激情| 日韩精品人妻中文字幕有码| 在线视频中文字幕一区二区| a视频在线观看| 成人美女av在线直播| 韩日成人av| 亚洲图片第一页| 欧美精品一区二区三区视频| 欧美韩国亚洲| 日韩成人三级视频| 国产福利一区在线| 久久久久久久久久久影院| 久久精品夜夜夜夜夜久久| 日韩丝袜视频| 免费在线观看的av网站| 最近中文字幕一区二区三区|