一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)02

 和合德 2023-08-06 發(fā)布于江蘇

簡(jiǎn)單概述

通過linux的虛擬網(wǎng)絡(luò)隔離,來模擬熟悉交換機(jī),路由器,網(wǎng)卡,網(wǎng)橋等物理設(shè)備間的關(guān)系和區(qū)別。
以下幾個(gè)概念:

  • network namespace:實(shí)現(xiàn)網(wǎng)絡(luò)虛擬化的重要功能,它能創(chuàng)建多個(gè)隔離的網(wǎng)絡(luò)空間,它們有獨(dú)自的網(wǎng)絡(luò)棧信息。不管是虛擬機(jī)還是容器,運(yùn)行的時(shí)候仿佛自己就在獨(dú)立的網(wǎng)絡(luò)中。
  • veth:VETH(Virtual Ethernet )是Linux提供的另外一種特殊的網(wǎng)絡(luò)設(shè)備,中文稱為虛擬網(wǎng)卡接口。它總是成對(duì)出現(xiàn),要?jiǎng)?chuàng)建就創(chuàng)建一個(gè)pair。一個(gè)Pair中的veth就像一個(gè)網(wǎng)絡(luò)線纜的兩個(gè)端點(diǎn),數(shù)據(jù)從一個(gè)端點(diǎn)進(jìn)入,必然從另外一個(gè)端點(diǎn)流出。每個(gè)veth都可以被賦予IP地址,并參與三層網(wǎng)絡(luò)路由過程,可以實(shí)現(xiàn)不同netns之間網(wǎng)絡(luò)通信。
  • 物理網(wǎng)卡是服務(wù)器上實(shí)際的網(wǎng)絡(luò)接口設(shè)備:物理網(wǎng)卡指的是服務(wù)器上實(shí)際的網(wǎng)絡(luò)接口設(shè)備,通過ip link可查看設(shè)備,其中eth0一般是第一個(gè)網(wǎng)卡,ethn表示第n個(gè),通過ip address查看ip地址。
liaomin@DESKTOP-FSEDE3P:~$ ip link
16: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 group default qlen 1
    link/ether 78:24:af:33:df:11
20: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 group default qlen 1
    link/ether 7a:15:df:c5:e6:d5
1: lo: <LOOPBACK,UP> mtu 1500 group default qlen 1
    link/loopback 00:00:00:00:00:00
  • 網(wǎng)橋:是一種虛擬設(shè)備,可以將 Linux 內(nèi)部多個(gè)網(wǎng)絡(luò)接口連接起來,一個(gè)網(wǎng)絡(luò)接口接收到網(wǎng)絡(luò)數(shù)據(jù)包后,會(huì)復(fù)制到其他網(wǎng)絡(luò)接口中,Bridge 是二層設(shè)備,僅用來處理二層的通訊。Bridge 使用 MAC 地址表來決定怎么轉(zhuǎn)發(fā)幀(Frame)。Bridge 會(huì)從 host 之間的通訊數(shù)據(jù)包中學(xué)習(xí) MAC 地址。
    在這里插入圖片描述
    如上圖所示,當(dāng)網(wǎng)絡(luò)接口A接收到數(shù)據(jù)包后,網(wǎng)橋 會(huì)將數(shù)據(jù)包復(fù)制并且發(fā)送給連接到 網(wǎng)橋 的其他網(wǎng)絡(luò)接口(如上圖中的網(wǎng)卡B和網(wǎng)卡C)。

  • 子網(wǎng)卡:子網(wǎng)卡在這里并不是實(shí)際上的網(wǎng)絡(luò)接口設(shè)備,但是可以作為網(wǎng)絡(luò)接口在系統(tǒng)中出現(xiàn),如eth0:1、eth1:2這種網(wǎng)絡(luò)接口。它們必須要依賴于物理網(wǎng)卡,雖然可以與物理網(wǎng)卡的網(wǎng)絡(luò)接口同時(shí)在系統(tǒng)中存在并使用不同的IP地址,而且也擁有它們自己的網(wǎng)絡(luò)接口配置文件。但是當(dāng)所依賴的物理網(wǎng)卡不啟用時(shí)(Down狀態(tài))這些子網(wǎng)卡也將一同不能工作,可通過ipvlan或者ifconfig來創(chuàng)建。

  • 路由(Routing):路由是指從一個(gè)設(shè)備(一般指路由器)的接口上接收到數(shù)據(jù)包,依據(jù)設(shè)備所既定的某些規(guī)則,將數(shù)據(jù)包轉(zhuǎn)發(fā)到其它接口的 “過程”。路由工作在 OSI 參考模型第三層——網(wǎng)絡(luò)層的數(shù)據(jù)包轉(zhuǎn)發(fā)設(shè)備。路由器通過轉(zhuǎn)發(fā)數(shù)據(jù)包來實(shí)現(xiàn)網(wǎng)絡(luò)互連,正常情況下,路由器不會(huì)修改數(shù)據(jù)包的源地址和目標(biāo)地址,只是路由器啟用NAT功能后,會(huì)將IP地址和TCP端口綁定重新定義一個(gè)出口IP地址和新的端口號(hào)(端口號(hào)可能不變,也可能變,家用路由器上網(wǎng)源地址的端口號(hào)是要變的)。

  • 網(wǎng)關(guān):一般是路由器的ip地址,比如需要訪問另外一個(gè)網(wǎng)絡(luò)的ip時(shí),可以先將數(shù)據(jù)包丟給路由器,路由器,可以將包轉(zhuǎn)換到另外的網(wǎng)卡或者通過nat轉(zhuǎn)換后在發(fā)送到另外網(wǎng)卡,linux本身有個(gè)ip_forward功能可以在網(wǎng)卡間轉(zhuǎn)發(fā)數(shù)據(jù)包(路由器功能),只是沒有nat功能而已,可以通過iptables來實(shí)現(xiàn)nat功能。

環(huán)境模擬

在這里插入圖片描述

研究這個(gè)可以直接使用自己的window,安裝個(gè)虛擬機(jī)安裝個(gè)ubuntu然后在ubuntu系統(tǒng)中使用ip命令隔離網(wǎng)絡(luò)來研究網(wǎng)絡(luò)概念。

  1. window主機(jī)有本地連接(ip地址:192.168.20.48)網(wǎng)關(guān)是192.168.20.1。
  2. window主機(jī)安裝了hyer-v虛擬機(jī),帶有一個(gè)defaultswitch網(wǎng)關(guān),我這里ip地址是172.168.111.1/24
  3. 在hyver-v虛擬機(jī)上有一臺(tái)ubuntu虛擬機(jī),網(wǎng)卡為:172.168.111.2

network ns

網(wǎng)絡(luò)虛擬化

network namespace 是實(shí)現(xiàn)網(wǎng)絡(luò)虛擬化的重要功能,它能創(chuàng)建多個(gè)隔離的網(wǎng)絡(luò)空間,它們有獨(dú)自的網(wǎng)絡(luò)棧信息。不管是虛擬機(jī)還是容器,運(yùn)行的時(shí)候仿佛自己就在獨(dú)立的網(wǎng)絡(luò)中。這篇文章介紹 network namespace 的基本概念和用法,network namespace 是 linux 內(nèi)核提供的功能,這篇文章借助 ip 命令來完成各種操作。ip 命令來自于 iproute2 安裝包,一般系統(tǒng)會(huì)默認(rèn)安裝。

ip 命令管理的功能很多, 和 network namespace 有關(guān)的操作都是在子命令 ip netns 下進(jìn)行的,可以通過 ip netns help` 查看所有操作的幫助信息。

默認(rèn)情況下,使用 ip netns 是沒有網(wǎng)絡(luò) namespace 的,所以 ip netns ls(簡(jiǎn)寫ip net) 命令看不到任何輸出。

[root@localhost ~]# ip netns help
Usage: ip netns list
       ip netns add NAME
       ip netns delete NAME
       ip netns identify PID
       ip netns pids NAME
       ip netns exec NAME cmd ...
       ip netns monitor
[root@localhost ~]# ip netns ls

創(chuàng)建 network namespace 也非常簡(jiǎn)單,直接使用 ip netns add 后面跟著要?jiǎng)?chuàng)建的 namespace 名稱。如果相同名字的 namespace 已經(jīng)存在,命令會(huì)報(bào) Cannot create namespace 的錯(cuò)誤。

[root@localhost ~]# ip netns add net1
[root@localhost ~]# ip netns ls
net1

ip netns 命令創(chuàng)建的 network namespace 會(huì)出現(xiàn)在 /var/run/netns/ 目錄下,如果需要管理其他不是 ip netns 創(chuàng)建的 network namespace,只要在這個(gè)目錄下創(chuàng)建一個(gè)指向?qū)?yīng) network namespace 文件的鏈接就行
有了自己創(chuàng)建的 network namespace,我們還需要看看它里面有哪些東西。對(duì)于每個(gè) network namespace 來說,它會(huì)有自己獨(dú)立的網(wǎng)卡、路由表、ARP 表、iptables 等和網(wǎng)絡(luò)相關(guān)的資源。ip 命令提供了 ip netns exec 子命令可以在對(duì)應(yīng)的 network namespace 中執(zhí)行命令,比如我們要看一下這個(gè) network namespace 中有哪些網(wǎng)卡。更棒的是,要執(zhí)行的可以是任何命令,不只是和網(wǎng)絡(luò)相關(guān)的(當(dāng)然,和網(wǎng)絡(luò)無關(guān)命令執(zhí)行的結(jié)果和在外部執(zhí)行沒有區(qū)別)。比如下面例子中,執(zhí)行 bash 命令了之后,后面所有的命令都是在這個(gè) network namespace 中執(zhí)行的,好處是不用每次執(zhí)行命令都要把 ip netns exec NAME 補(bǔ)全,缺點(diǎn)是你無法清楚知道自己當(dāng)前所在的 shell,容易混淆。

[root@localhost ~]# ip netns exec net1 ip addr
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
[root@localhost ~]# ip netns exec net1 bash
[root@localhost ~]# ip addr
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
[root@localhost ~]# exit
exit

每個(gè) namespace 在創(chuàng)建的時(shí)候會(huì)自動(dòng)創(chuàng)建一個(gè) lo 的 interface,它的作用和 linux 系統(tǒng)中默認(rèn)看到的 lo 一樣,都是為了實(shí)現(xiàn) loopback 通信。如果希望 lo 能工作,不要忘記啟用它:

[root@localhost ~]# ip netns exec net1 ip link set lo up

默認(rèn)情況下,network namespace 是不能和主機(jī)網(wǎng)絡(luò),或者其他 network namespace 通信的。

網(wǎng)絡(luò)間通訊

虛擬網(wǎng)卡

veth pair
虛擬網(wǎng)絡(luò)互通

有了不同 network namespace 之后,也就有了網(wǎng)絡(luò)的隔離,但是如果它們之間沒有辦法通信,也沒有實(shí)際用處。要把兩個(gè)網(wǎng)絡(luò)連接起來,linux 提供了 veth pair ??梢园?veth pair 當(dāng)做是雙向的 pipe(管道),從一個(gè)方向發(fā)送的網(wǎng)絡(luò)數(shù)據(jù),可以直接被另外一端接收到;或者也可以想象成兩個(gè) namespace 直接通過一個(gè)特殊的虛擬網(wǎng)卡連接起來,可以直接通信。
使用上面提到的方法,我們?cè)賱?chuàng)建另外一個(gè) network namespace,這里我們使用 net1 和 net2 兩個(gè)名字。

ip net add net1 && ip net add net2

在這里插入圖片描述

我們可以使用 ip link add type veth 來創(chuàng)建一對(duì) veth pair 出來,需要記住的是 veth pair 無法單獨(dú)存在,刪除其中一個(gè)(ip link delete veth0),另一個(gè)也會(huì)自動(dòng)消失。
通過命令創(chuàng)建的veth默認(rèn)是掛載在宿主機(jī)上,創(chuàng)建兩對(duì)veth,一個(gè)用于在net1和net2間連接,另外一個(gè)用于net1和宿主機(jī)進(jìn)行連接

root@liaomin-Virtual-Machine:/home/liaomin# ip link add veth0 type veth peer name veth1 && ip link add veth2 type veth peer name veth3
root@liaomin-Virtual-Machine:/home/liaomin# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:15:5d:04:11:01 brd ff:ff:ff:ff:ff:ff
7: veth1@veth0: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 2a:1d:9f:9e:9f:23 brd ff:ff:ff:ff:ff:ff
8: veth0@veth1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 62:79:b5:a4:4a:ff brd ff:ff:ff:ff:ff:ff
9: veth3@veth2: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 2a:92:b7:67:0f:13 brd ff:ff:ff:ff:ff:ff
10: veth2@veth3: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 9a:9d:09:4a:72:c9 brd ff:ff:ff:ff:ff:ff

注意 默認(rèn)veth網(wǎng)卡是down模式,需要啟動(dòng)
將網(wǎng)卡添加到對(duì)應(yīng)網(wǎng)絡(luò)中。

ip link set veth0 netns net1 && ip link set veth1 netns net2 && ip link set veth2 netns net1 

檢驗(yàn)下 宿主機(jī)只有veth3

root@liaomin-Virtual-Machine:/home/liaomin# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:15:5d:04:11:01 brd ff:ff:ff:ff:ff:ff
9: veth3@if10: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 2a:92:b7:67:0f:13 brd ff:ff:ff:ff:ff:ff link-netns net1

net1下 有veth0和veth2

root@liaomin-Virtual-Machine:/home/liaomin# ip net exec net1 ip link
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
8: veth0@if7: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 62:79:b5:a4:4a:ff brd ff:ff:ff:ff:ff:ff link-netns net2
10: veth2@if9: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 9a:9d:09:4a:72:c9 brd ff:ff:ff:ff:ff:ff link-netnsid 0

net2下有veth1

root@liaomin-Virtual-Machine:/home/liaomin# ip net exec net2 ip link
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
7: veth1@if8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 2a:1d:9f:9e:9f:23 brd ff:ff:ff:ff:ff:ff link-netns net1

分別設(shè)置ip和啟動(dòng)網(wǎng)卡

ip net exec net1 ip addr add 192.167.2.1/24 dev veth0  && ip net exec net1 ip link set veth0 up &&
ip net exec net2 ip addr add 192.167.2.2/24 dev veth1  && ip net exec net2 ip link set veth1 up &&
ip net exec net1 ip addr add 192.167.3.1/24 dev veth2  && ip net exec net1 ip link set veth2 up &&
ip addr add 192.167.3.2/24 dev veth3 &&  ip link set veth3 up

檢驗(yàn)ip地址

root@liaomin-Virtual-Machine:/home/liaomin# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:04:11:01 brd ff:ff:ff:ff:ff:ff
    inet 172.168.111.2/24 brd 172.168.111.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5efd:a114:2485:3e10/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
9: veth3@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 2a:92:b7:67:0f:13 brd ff:ff:ff:ff:ff:ff link-netns net1
    inet 192.167.3.2/24 scope global veth3
       valid_lft forever preferred_lft forever
    inet6 fe80::2892:b7ff:fe67:f13/64 scope link 
       valid_lft forever preferred_lft forever

net1下

root@liaomin-Virtual-Machine:/home/liaomin# ip net exec net1 ip addr
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
8: veth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 62:79:b5:a4:4a:ff brd ff:ff:ff:ff:ff:ff link-netns net2
    inet 192.167.2.1/24 scope global veth0
       valid_lft forever preferred_lft forever
    inet6 fe80::6079:b5ff:fea4:4aff/64 scope link 
       valid_lft forever preferred_lft forever
10: veth2@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 9a:9d:09:4a:72:c9 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.167.3.1/24 scope global veth2
       valid_lft forever preferred_lft forever
    inet6 fe80::989d:9ff:fe4a:72c9/64 scope link 
       valid_lft forever preferred_lft forever

測(cè)試網(wǎng)絡(luò)情況

  1. 宿主機(jī)ping veth2(通)和veth1(不通)
root@liaomin-Virtual-Machine:/home/liaomin# ping 192.167.3.1
PING 192.167.3.1 (192.167.3.1) 56(84) bytes of data.
64 比特,來自 192.167.3.1: icmp_seq=1 ttl=64 時(shí)間=0.047 毫秒
64 比特,來自 192.167.3.1: icmp_seq=2 ttl=64 時(shí)間=0.032 毫秒
^C
--- 192.167.3.1 ping 統(tǒng)計(jì) ---
已發(fā)送 2 個(gè)包, 已接收 2 個(gè)包, 0% 包丟失, 耗時(shí) 1018 毫秒
rtt min/avg/max/mdev = 0.032/0.039/0.047/0.007 ms
root@liaomin-Virtual-Machine:/home/liaomin# ping 192.167.2.1
PING 192.167.2.1 (192.167.2.1) 56(84) bytes of data.
^C
--- 192.167.2.1 ping 統(tǒng)計(jì) ---
已發(fā)送 2 個(gè)包, 已接收 0 個(gè)包, 100% 包丟失, 耗時(shí) 1019 毫秒
  1. 在net1中訪問宿主機(jī)veth3網(wǎng)卡(通)和eth0網(wǎng)卡(不通),以及net2 veth1網(wǎng)卡(通)
root@liaomin-Virtual-Machine:/home/liaomin# ip net exec net1 ping 192.167.2.2
PING 192.167.2.2 (192.167.2.2) 56(84) bytes of data.
64 比特,來自 192.167.2.2: icmp_seq=1 ttl=64 時(shí)間=0.042 毫秒
64 比特,來自 192.167.2.2: icmp_seq=2 ttl=64 時(shí)間=0.038 毫秒
^C
--- 192.167.2.2 ping 統(tǒng)計(jì) ---
已發(fā)送 2 個(gè)包, 已接收 2 個(gè)包, 0% 包丟失, 耗時(shí) 1008 毫秒
rtt min/avg/max/mdev = 0.038/0.040/0.042/0.002 ms
root@liaomin-Virtual-Machine:/home/liaomin# ip net exec net1 ping 192.167.3.2
PING 192.167.3.2 (192.167.3.2) 56(84) bytes of data.
64 比特,來自 192.167.3.2: icmp_seq=1 ttl=64 時(shí)間=0.020 毫秒
64 比特,來自 192.167.3.2: icmp_seq=2 ttl=64 時(shí)間=0.044 毫秒
^C
--- 192.167.3.2 ping 統(tǒng)計(jì) ---
已發(fā)送 2 個(gè)包, 已接收 2 個(gè)包, 0% 包丟失, 耗時(shí) 1024 毫秒
rtt min/avg/max/mdev = 0.020/0.032/0.044/0.012 ms
root@liaomin-Virtual-Machine:/home/liaomin# ip net exec net1 ping 172.168.111.2
ping: connect: 網(wǎng)絡(luò)不可達(dá)

結(jié)論:
在這里插入圖片描述

  1. 只有veth對(duì)對(duì)應(yīng)的ip才能互通,net1和net2有veth0和veth1能訪問192.167.2.0/24互通,但是都不能訪問宿主機(jī)的eth0網(wǎng)卡。
  2. net1和宿主機(jī)間只能通過veth2和veth3訪問192.167.3.0/24互通,其他網(wǎng)卡ip不能互通。
ip互通(路由)

實(shí)現(xiàn)不同網(wǎng)絡(luò)間不同網(wǎng)段ip可以互通,可以路由轉(zhuǎn)發(fā)的功能實(shí)現(xiàn)所有ip互通,這里可以學(xué)習(xí)下路由的相關(guān)知識(shí)。
其實(shí)linux系統(tǒng)本身就是一個(gè)路由器,同一個(gè)主機(jī)多個(gè)網(wǎng)卡間進(jìn)行數(shù)據(jù)包的轉(zhuǎn)發(fā),可通過系統(tǒng)參數(shù)net.ipv4.ip_forward控制,默認(rèn)為0表示關(guān)閉。

net1網(wǎng)絡(luò)veth0接受到一個(gè)目的ip是192.167.3.1的報(bào)文,因?yàn)槭窃趦?nèi)部網(wǎng)絡(luò),添加路由后可直接訪問,如果訪問的是3.2另一個(gè)主機(jī)的地址,需要通過veth2中轉(zhuǎn)發(fā)出,ip_forward=0則丟棄不會(huì)轉(zhuǎn)發(fā),=0則轉(zhuǎn)發(fā)到veth2網(wǎng)卡,丟到其他主機(jī)。
同時(shí)要主機(jī)跨主機(jī)間數(shù)據(jù)包中轉(zhuǎn),需要雙向路由,不然數(shù)據(jù)過去了是回不來的。

打開ip_foward
在運(yùn)行時(shí)修改(重啟后失效)

sysctl -w net.ipv4.ip_forward=1

永久生效
vi /etc/sysctl.conf
修改或新增sysctl -w net.ipv4.ip_forward=1
執(zhí)行命令加載文件生效

sysctl -p

宿主機(jī)訪問net1所有ip
當(dāng)前狀況下veth2ip:192.167.3.1通,veth0:192.167.2.1不通
宿主機(jī)因?yàn)槟茉L問192.167.3.1,添加路由,訪問192.167.2.0/24通過網(wǎng)關(guān)192.167.3.1,經(jīng)過網(wǎng)卡veth3

via網(wǎng)關(guān)指定的ip 一定要是可以訪問的才能指定。

ip route add 192.167.2.0/24 via 192.167.3.1 dev veth3

查看路由

root@liaomin-Virtual-Machine:/home/liaomin# ip route add 192.167.2.0/24 via 192.167.3.1 dev veth3
root@liaomin-Virtual-Machine:/home/liaomin# ip route
default via 172.168.111.1 dev eth0 proto static metric 100 
169.254.0.0/16 dev eth0 scope link metric 1000 
172.168.111.0/24 dev eth0 proto kernel scope link src 172.168.111.2 metric 100 
192.167.2.0/24 via 192.167.3.1 dev veth3 
192.167.3.0/24 dev veth3 proto kernel scope link src 192.167.3.2

加上路由后,宿主機(jī)兩個(gè)ip都通

root@liaomin-Virtual-Machine:/home/liaomin# ping 192.167.2.1
PING 192.167.2.1 (192.167.2.1) 56(84) bytes of data.
64 比特,來自 192.167.2.1: icmp_seq=1 ttl=64 時(shí)間=0.028 毫秒
64 比特,來自 192.167.2.1: icmp_seq=2 ttl=64 時(shí)間=0.033 毫秒
^C
--- 192.167.2.1 ping 統(tǒng)計(jì) ---
已發(fā)送 2 個(gè)包, 已接收 2 個(gè)包, 0% 包丟失, 耗時(shí) 1027 毫秒
rtt min/avg/max/mdev = 0.028/0.030/0.033/0.002 ms
root@liaomin-Virtual-Machine:/home/liaomin# ping 192.167.3.1
PING 192.167.3.1 (192.167.3.1) 56(84) bytes of data.
64 比特,來自 192.167.3.1: icmp_seq=1 ttl=64 時(shí)間=0.019 毫秒
64 比特,來自 192.167.3.1: icmp_seq=2 ttl=64 時(shí)間=0.029 毫秒

關(guān)閉ip_foward測(cè)試下,依然能通說明,說明主機(jī)內(nèi)部網(wǎng)絡(luò)中轉(zhuǎn)是和ip_forward無關(guān)

宿主機(jī)通過net1訪問net2ip
還是前面的路由,先打開ip_forward。宿主機(jī)嘗試ping 192.167.2.2,明顯不通
但是在net1網(wǎng)絡(luò)中是可以通192.167.2.2,因?yàn)橛衯eth
嘗試在net2中抓包,發(fā)現(xiàn)只有request沒有reply

root@liaomin-Virtual-Machine:/home/liaomin# ip net exec net2 tcpdump -nn -i veth1 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on veth1, link-type EN10MB (Ethernet), capture size 262144 bytes
^C10:59:38.879329 IP 192.167.3.2 > 192.167.2.2: ICMP echo request, id 25, seq 1, length 64
10:59:39.888796 IP 192.167.3.2 > 192.167.2.2: ICMP echo request, id 25, seq 2, length 64
10:59:40.912715 IP 192.167.3.2 > 192.167.2.2: ICMP echo request, id 25, seq 3, length 64
10:59:41.936728 IP 192.167.3.2 > 192.167.2.2: ICMP echo request, id 25, seq 4, length 64
10:59:42.960757 IP 192.167.3.2 > 192.167.2.2: ICMP echo request, id 25, seq 5, length 64

說明來自宿主機(jī)192.167.3.2的包已經(jīng)到了,但是宿主機(jī)因?yàn)榻邮懿坏交貞?yīng)。
關(guān)閉ip_forward(注意是net1是中轉(zhuǎn)的,要關(guān)他),在嘗試抓包

ip net exec net1 sysctl -w net.ipv4.ip_forward=0  
root@liaomin-Virtual-Machine:/home/liaomin# ip net exec net1 sysctl -a | grep ip_forward      
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0

發(fā)現(xiàn)無法抓取到包,證明了ip_forward功能

root@liaomin-Virtual-Machine:/home/liaomin# ip net exec net2 tcpdump -nn -i veth1 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on veth1, link-type EN10MB (Ethernet), capture size 262144 bytes
^C
0 packets captured
0 packets received by filter
0 packets dropped by kernel

添加net2回程路由

root@liaomin-Virtual-Machine:/home/liaomin# ip net exec net2 ip route add 192.167.3.0/24 via 192.167.2.1 dev veth1 
root@liaomin-Virtual-Machine:/home/liaomin# ping 192.167.2.2
PING 192.167.2.2 (192.167.2.2) 56(84) bytes of data.
64 比特,來自 192.167.2.2: icmp_seq=1 ttl=63 時(shí)間=0.062 毫秒
64 比特,來自 192.167.2.2: icmp_seq=2 ttl=63 時(shí)間=0.043 毫秒

net2抓包,可以看到replay

root@liaomin-Virtual-Machine:/home/liaomin# ip net exec net2 tcpdump -nn -i veth1 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on veth1, link-type EN10MB (Ethernet), capture size 262144 bytes
^C11:12:40.738563 IP 192.167.3.2 > 192.167.2.2: ICMP echo request, id 38, seq 1, length 64
11:12:40.738603 IP 192.167.2.2 > 192.167.3.2: ICMP echo reply, id 38, seq 1, length 64
11:12:41.744679 IP 192.167.3.2 > 192.167.2.2: ICMP echo request, id 38, seq 2, length 64
11:12:41.744714 IP 192.167.2.2 > 192.167.3.2: ICMP echo reply, id 38, seq 2, length 64
11:12:42.768699 IP 192.167.3.2 > 192.167.2.2: ICMP echo request, id 38, seq 3, length 64
11:12:42.768732 IP 192.167.2.2 > 192.167.3.2: ICMP echo reply, id 38, seq 3, length 64
11:12:43.792688 IP 192.167.3.2 > 192.167.2.2: ICMP echo request, id 38, seq 4, length 64
11:12:43.792722 IP 192.167.2.2 > 192.167.3.2: ICMP echo reply, id 38, seq 4, length 64

window主機(jī)訪問net2所有ip
在這里插入圖片描述

window下添加路由訪問192.167.2.0/24和192.167.3.0/24設(shè)置網(wǎng)關(guān)為eth0ip 172.168.111.2,注意linux宿主機(jī)打開ip_forward

管理員權(quán)限執(zhí)行
route add 192.167.3.0 mask 255.255.255.0 172.168.111.2
route add 192.167.2.0 mask 255.255.255.0 172.168.111.2

此時(shí)ping 192.167.3.2能通,但是3.1不通,數(shù)據(jù)包在net1可以抓到,因?yàn)闆]有配置回程路由說以無法訪問,數(shù)據(jù)包原地址為172.168.111.1,

root@liaomin-Virtual-Machine:/home/liaomin# ip net exec net1 tcpdump -nn -i veth2  icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on veth2, link-type EN10MB (Ethernet), capture size 262144 bytes
^C15:28:10.774530 IP 172.168.111.1 > 192.167.3.1: ICMP echo request, id 1, seq 141, length 40

在net1上添加回程路由

ip net exec net1 ip route add 172.168.111.0/24 via 192.167.3.2 dev veth2

window上在ping,正常通了

root@liaomin-Virtual-Machine:/home/liaomin# ip net exec net1 tcpdump -nn -i veth2  icmp                                            
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on veth2, link-type EN10MB (Ethernet), capture size 262144 bytes
^C15:32:26.718218 IP 172.168.111.1 > 192.167.3.1: ICMP echo request, id 1, seq 142, length 40
15:32:26.718261 IP 192.167.3.1 > 172.168.111.1: ICMP echo reply, id 1, seq 142, length 40
15:32:27.720527 IP 172.168.111.1 > 192.167.3.1: ICMP echo request, id 1, seq 143, length 40
15:32:27.720564 IP 192.167.3.1 > 172.168.111.1: ICMP echo reply, id 1, seq 143, length 40
15:32:28.722827 IP 172.168.111.1 > 192.167.3.1: ICMP echo request, id 1, seq 144, length 40
15:32:28.722867 IP 192.167.3.1 > 172.168.111.1: ICMP echo reply, id 1, seq 144, length 40

因?yàn)?92.167.3.2通了,回程知道如何走,192.167.2.1自然也就通了
此時(shí)ping 192.167.2.2 自然不通,因?yàn)閿?shù)據(jù)包到了net2,沒有返程路由
net2執(zhí)行,自然也就通了

ip net exec net2 ip route add 172.168.111.0/24 via 192.167.2.1 dev veth1

net2主機(jī)訪問window所有ip
主要在net1和net2中添加20.0/24路由策略即可

ip net exec net1 ip route add 192.168.20.0/24 via 192.167.3.2 dev veth2
ip net exec net2 ip route add 192.168.20.0/24 via 192.167.2.1 dev veth1 
root@liaomin-Virtual-Machine:/home/liaomin# ip net exec net2 ping 192.168.20.48                                    
PING 192.168.20.48 (192.168.20.48) 56(84) bytes of data.
64 比特,來自 192.168.20.48: icmp_seq=1 ttl=125 時(shí)間=0.295 毫秒
64 比特,來自 192.168.20.48: icmp_seq=2 ttl=125 時(shí)間=2.09 毫秒

net1和net2可上網(wǎng)
指定默認(rèn)的設(shè)備修改網(wǎng)關(guān)為window主機(jī)的網(wǎng)關(guān)。

一定要保證網(wǎng)關(guān)地址是可以ping通后在添加默認(rèn)網(wǎng)關(guān)路由

ip net exec net1 ip route add default dev veth2  #注意這里不能先指定網(wǎng)關(guān),否則會(huì)報(bào)錯(cuò)
ip net exec net1 ip route change default via 192.168.20.1 
root@liaomin-Virtual-Machine:/home/liaomin# ping www.baidu.com
PING www.a.shifen.com (163.177.151.110) 56(84) bytes of data.
64 比特,來自 163.177.151.110 (163.177.151.110): icmp_seq=1 ttl=54 時(shí)間=8.90 毫秒
64 比特,來自 163.177.151.110 (163.177.151.110): icmp_seq=2 ttl=54 時(shí)間=9.02 毫秒
64 比特,來自 163.177.151.110 (163.177.151.110): icmp_seq=3 ttl=54 時(shí)間=14.0 毫秒
64 比特,來自 163.177.151.110 (163.177.151.110): icmp_seq=4 ttl=54 時(shí)間=9.24 毫秒
64 比特,來自 163.177.151.110 (163.177.151.110): icmp_seq=5 ttl=54 時(shí)間=9.14 毫秒
ipvlan

IPVlan 是從一個(gè)主機(jī)接口虛擬出多個(gè)虛擬網(wǎng)絡(luò)接口。一個(gè)重要的區(qū)別就是所有的虛擬接口都有相同的 macv 地址,而擁有不同的 ip 地址。因?yàn)樗械奶摂M接口要共享 mac 地址。

ipvlan插件下,容器不能跟Host網(wǎng)絡(luò)通信,

通過ip命令提供的網(wǎng)絡(luò)隔離能力在同一個(gè)物理主機(jī)下創(chuàng)建兩個(gè)虛擬網(wǎng)絡(luò)net1和net2,創(chuàng)建兩個(gè)網(wǎng)卡ipvlan1和ipvlan2,將ipvlan1綁定到net1指定ip為192.168.11.1/24,將ipvlan2綁定到net2指定ip為192.168.12.1/24,我這里宿主機(jī)的網(wǎng)卡eth0,ip為172.17.203.237
在這里插入圖片描述

cat <<EOF | bash
#存在添加兩個(gè)網(wǎng)絡(luò)net1和net2直接刪除
((ip netns ls | grep net1 >/dev/null) && ip netns delete net1) && ((ip netns ls | grep net2 >/dev/null) && ip netns delete net2)
#新增網(wǎng)絡(luò)net1和net2
ip netns add net1 && ip netns add net2
# 新增ipvlan1虛擬網(wǎng)卡和ipvalan2虛擬網(wǎng)卡掛載到物理網(wǎng)卡eth0是ipvlan類型,模式是l3
ip link add ipvlan1 link eth0 type ipvlan mode l3 && ip link add ipvlan2 link eth0 type ipvlan mode l3
#將ipvlan1加入到網(wǎng)絡(luò)net1中,ipvlan2加入到網(wǎng)絡(luò)net2中。
ip link set netns net1 ipvlan1 && ip link set netns net2 ipvlan2
#分表設(shè)置ipvlan1和ipvlan2的ip地址和網(wǎng)卡設(shè)備
ip netns exec  net1 ip addr add 192.168.11.1/24 dev ipvlan1 && ip netns exec  net2 ip addr add 192.168.12.1/24 dev ipvlan2
#啟動(dòng)lo和ipvlan網(wǎng)卡設(shè)備。
ip netns exec  net1 ip link set lo up && ip netns exec  net2 ip link set lo up
ip netns exec  net1 ip link set ipvlan1 up && ip netns exec  net2 ip link set ipvlan2 up
#分別設(shè)置各自網(wǎng)絡(luò)環(huán)境的默認(rèn)路由網(wǎng)卡設(shè)備是ipvlan1和ipvlan2,設(shè)置了該路由策略后,net1和net2互通(注意兩個(gè)都需要設(shè)置)
ip netns exec net1 ip route add default dev ipvlan1 && ip netns exec net2 ip route add default dev ipvlan2
EOF

查看連個(gè)ipvlan的物理地址(發(fā)現(xiàn)ipvlan1和2物理地址都是00:15:5d:04:11:01和物理機(jī)物理地址相同)

root@liaomin-Virtual-Machine:/home/liaomin# ip link #查看物理主機(jī)網(wǎng)絡(luò)
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
   link/ether 00:15:5d:04:11:01 brd ff:ff:ff:ff:ff:ff 
root@liaomin-Virtual-Machine:/home/liaomin# ip netns exec net1 ip link #查看net1網(wǎng)絡(luò)
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
32: ipvlan1@if2: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether 00:15:5d:04:11:01 brd ff:ff:ff:ff:ff:ff link-netnsid 0
root@liaomin-Virtual-Machine:/home/liaomin# ip netns exec net2 ip link  #查看net2網(wǎng)絡(luò)
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
33: ipvlan2@if2: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether 00:15:5d:04:11:01 brd ff:ff:ff:ff:ff:ff link-netnsid 0
macvlan

每個(gè)網(wǎng)卡一個(gè)單獨(dú)的mac地址,功能和ipvlan類似

# 創(chuàng)建兩個(gè) macvlan 子接口
ip link add link eth0 dev mac1 type macvlan mode bridge
ip link add link eth0 dev mac2 type macvlan mode bridge

# 創(chuàng)建兩個(gè) namespace
ip netns add net3
ip netns add net4

# 將兩個(gè)子接口分別掛到兩個(gè) namespace 中
ip link set mac1 netns net3
ip link set mac2 netns net4

# 配置 IP 并啟用
ip netns exec net3 ip a a 192.166.56.122/24 dev mac1
ip netns exec net3 ip l s mac1 up

ip netns exec net4 ip a a 192.166.56.123/24 dev mac2 #等價(jià)于ip add addr
ip netns exec net4 ip l s mac2 up   # ip l s等價(jià)于 ip link set 

可以查看到兩個(gè)物理地址都不一樣,和宿主機(jī)也不同

root@liaomin-Virtual-Machine:/home/liaomin# ip net exec net3 ip addr
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
11: mac1@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether b6:e4:e5:e6:70:1f brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.166.56.122/24 scope global mac1
       valid_lft forever preferred_lft forever
    inet6 fe80::b4e4:e5ff:fee6:701f/64 scope link 
       valid_lft forever preferred_lft forever
root@liaomin-Virtual-Machine:/home/liaomin# ip net exec net4 ip addr 
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
12: mac2@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether e2:f8:76:3e:36:16 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.166.56.123/24 scope global mac2
       valid_lft forever preferred_lft forever
    inet6 fe80::e0f8:76ff:fe3e:3616/64 scope link 
       valid_lft forever preferred_lft forever

根據(jù) macvlan 子接口之間的通信模式,macvlan 有四種網(wǎng)絡(luò)模式:

  1. private 模式:同一主接口下的子接口之間彼此隔離,不能通信。即使從外部的物理交換機(jī)導(dǎo)流,也會(huì)被無情地丟掉。
  2. vepa(virtual ethernet port aggregator) 模式:這種模式下,子接口之間的通信流量需要導(dǎo)到外部支持 802.1Qbg/VPEA 功能的交換機(jī)上(可以是物理的或者虛擬的),經(jīng)由外部交換機(jī)轉(zhuǎn)發(fā),再繞回來。
    注:802.1Qbg/VPEA 功能簡(jiǎn)單說就是交換機(jī)要支持 發(fā)夾(hairpin) 功能,也就是數(shù)據(jù)包從一個(gè)接口上收上來之后還能再扔回去。
  3. bridge 模式:模擬的是 Linux bridge 的功能,但比 bridge 要好的一點(diǎn)是每個(gè)接口的 MAC 地址是已知的,不用學(xué)習(xí)。所以,這種模式下,子接口之間就是直接可以通信的。
  4. passthru 模式:只允許單個(gè)子接口連接主接口,且必須設(shè)置成混雜模式,一般用于子接口橋接和創(chuàng)建 VLAN 子接口的場(chǎng)景

網(wǎng)橋

雖然 veth pair 可以實(shí)現(xiàn)兩個(gè) network namespace 之間的通信,但是當(dāng)多個(gè) namespace 需要通信的時(shí)候,就無能為力了。
講到多個(gè)網(wǎng)絡(luò)設(shè)備通信,我們首先想到的交換機(jī)和路由器。因?yàn)檫@里要考慮的只是同個(gè)網(wǎng)絡(luò),所以只用到交換機(jī)的功能。linux 當(dāng)然也提供了虛擬交換機(jī)的功能,我們還是用 ip 命令來完成所有的操作。

NOTE:和 bridge 有關(guān)的操作也可以使用命令 brctl,這個(gè)命令來自 bridge-utils 這個(gè)包,讀者可以根據(jù)自己的發(fā)行版進(jìn)行安裝,使用方法請(qǐng)查閱 man 頁面或者相關(guān)文檔。

安裝bridge-utils

apt install bridge-utils -y

查看所有網(wǎng)橋:

root@liaomin-Virtual-Machine:/home/liaomin# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000000000000       no

首先我們來創(chuàng)建需要的 bridge,簡(jiǎn)單起見名字就叫做 br0。

[root@localhost ~]# ip link add br0 type bridge
[root@localhost ~]# ip link set dev br0 up

在這里插入圖片描述

創(chuàng)建兩個(gè)網(wǎng)絡(luò)net7和net8 分別創(chuàng)建veth0-1和veth2-3分表掛載網(wǎng)橋,實(shí)現(xiàn)不同網(wǎng)絡(luò)間互通

ip net add net7 && ip net add net8
#新增veth10和veth11 設(shè)置ip和啟動(dòng)
ip link add veth10 type veth peer name veth11 && ip link set dev veth10 netns net7 && ip net exec net7 ip addr add 192.177.1.3/24 dev veth10 && ip net exec net7 ip link set dev veth10 up
# 將veth11添加到網(wǎng)橋
ip link set dev veth11 master br0 && ip link set dev veth11 up
#新增veth12和veth13 設(shè)置ip和啟動(dòng)
ip link add veth12 type veth peer name veth13 && ip link set dev veth12 netns net8 && ip net exec net8 ip addr add 192.177.1.4/24 dev veth12 && ip net exec net8 ip link set dev veth12 up
# 將veth11添加到網(wǎng)橋
ip link set dev veth13 master br0 && ip link set dev veth13 up

可以通過 bridge 命令(也是 iproute2 包自帶的命令)來查看 bridge 管理的 link 信息:

root@liaomin-Virtual-Machine:/home/liaomin# bridge link
14: veth11@if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 2 
16: veth13@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 2 

最后通過 ping 命令來測(cè)試網(wǎng)絡(luò)的連通性:

root@liaomin-Virtual-Machine:/home/liaomin# ping 192.177.1.4
PING 192.177.1.4 (192.177.1.4) 56(84) bytes of data.
64 比特,來自 192.177.1.4: icmp_seq=1 ttl=49 時(shí)間=157 毫秒
64 比特,來自 192.177.1.4: icmp_seq=2 ttl=49 時(shí)間=158 毫秒
已發(fā)送 2 個(gè)包, 已接收 2 個(gè)包, 0% 包丟失, 耗時(shí) 1002 毫秒
rtt min/avg/max/mdev = 157.421/157.685/157.950/0.264 ms
root@liaomin-Virtual-Machine:/home/liaomin# ping 192.177.1.3
PING 192.177.1.3 (192.177.1.3) 56(84) bytes of data.
64 比特,來自 192.177.1.3: icmp_seq=1 ttl=49 時(shí)間=159 毫秒
64 比特,來自 192.177.1.3: icmp_seq=2 ttl=49 時(shí)間=158 毫秒
root@liaomin-Virtual-Machine:/home/liaomin# ip net exec net8 ping 192.177.1.3
PING 192.177.1.3 (192.177.1.3) 56(84) bytes of data.
64 比特,來自 192.177.1.3: icmp_seq=1 ttl=64 時(shí)間=0.055 毫秒

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产又猛又大又长又粗| 日本不卡一区视频欧美| 日韩在线免费看中文字幕| 精品久久综合日本欧美| 蜜臀人妻一区二区三区| 三级高清有码在线观看| 麻豆视传媒短视频在线看| 亚洲一区二区三在线播放| 亚洲国产性生活高潮免费视频| 深夜少妇一区二区三区| 少妇丰满a一区二区三区| 亚洲精品成人午夜久久| 日韩黄色一级片免费收看| 欧美国产极品一区二区| 日韩免费成人福利在线| 高清欧美大片免费在线观看| 国产精品日韩精品最新| 国产在线一区中文字幕| 在线免费观看黄色美女| 人妻巨大乳一二三区麻豆| 久久久精品日韩欧美丰满| 亚洲精品一区三区三区| 亚洲一区二区三区有码| 日本不卡在线视频你懂的| 久久久精品区二区三区| 中文字幕人妻一区二区免费 | 91福利视频日本免费看看| 中文字幕有码视频熟女| 日韩不卡一区二区三区色图| 国产精品国产亚洲看不卡| 一区二区三区人妻在线| 日本女优一色一伦一区二区三区| 欧美日韩国产自拍亚洲| 午夜精品黄片在线播放| 清纯少妇被捅到高潮免费观看| 91日韩欧美在线视频| 中文字幕在线五月婷婷| 日韩欧美国产精品中文字幕| 丁香六月啪啪激情综合区| 国产精品不卡一区二区三区四区 | 伊人久久青草地综合婷婷|