文章目录本篇摘要一.Docker 网络原理`虚拟网卡之tun/tap`虚拟网卡之tun/tap基础指令模拟实战了解虚拟网卡之tun/tap虚拟网卡之VethVeth实战之验证不同namespace之间正常通信veth和网络命名空间常见指令虚拟交换机(linux bridge)虚拟网卡之多veth基于网桥的通信实战常见网桥操作指令网络原理组网虚拟组网之VLAN与VXLAN虚拟组网之**MACVLAN**虚拟组网之IPVALN二.本篇小结本篇摘要本文深度解析Linux虚拟网络设备(Tun/Tap、Veth、Bridge)工作原理,实战演示网络命名空间隔离通信,并深入剖析VLAN、VXLAN、Macvlan、IPVLAN四大虚拟组网技术的核心机制与应用场景。一.Docker 网络原理虚拟网卡之tun/tap本质是虚拟设备:tun和tap是纯软件模拟的网络接口卡,并非物理硬件。它们像真实网卡一样可以配置IP、路由流量,但流量仅在主机内部流转。如:A程序通过eth0访问外面;必须通过tun0借助b程序进行访问。两者操作层级不同:tap:操作二层数据包,模拟的是以太网设备,处理以太网帧(Ethernet frames)。tun:操作三层数据包,模拟的是网络层设备,处理IP报文。核心目的与工作模式:其核心目的是让用户态程序(如VPN)能够接管并处理网络流量。数据包从协议栈发出后,不是直接送往物理网卡,而是通过字符设备(如/dev/net/tun)交给用户进程处理,处理完后再由该程序发回协议栈。典型应用:主要用于VPN等场景。如下图所示,VPN程序通过tun设备接收原始数据包,进行加密、封装等操作后,再通过物理网卡(eth0)发送出去,从而实现隧道通信。主要性能缺点:使用tun/tap设备,数据包需要两次经过操作系统内核的网络协议栈,这会带来一定的性能开销。正是为了改善这个性能问题,才引入了veth(虚拟以太网设备) pair等其他虚拟网络方案。虚拟网卡之tun/tap基础指令添加虚拟网卡使用ip tuntap add命令创建。创建 tap:ip tuntap add dev [名称] mode tap创建 tun:ip tuntap add dev [名称] mode tun删除虚拟网卡使用ip tuntap del命令移除。删除 tap:ip tuntap del dev [名称] mode tap删除 tun:ip tuntap del dev [名称] mode tun激活网卡创建后的网卡默认处于“DOWN”状态,需使用ip link set [名称] up命令之后才能进行网络通信。配置IP地址使用ip addr add命令为已激活的虚拟网卡分配IP地址和子网掩码。例如:ip addr add 10.5.0.1/24 dev tun0为tun0网卡配置IP10.5.0.1,子网掩码255.255.255.0。查看命令帮助若忘记完整命令语法,可通过ip tuntap help快速查看关于tuntap子命令的使用说明和参数选项。模拟实战了解虚拟网卡之tun/tap添加不同层的tap tun两个虚拟网卡。查看本机网络设备无法发现;因为还需要主动激活(ifconfig -a可以查看所有的包括未激活)。手动激活后发现对应ip 掩码等都是0;还需要分配。成功添加。对应网卡有ip;蒙骗过ping命令了;故能ping通。取消激活;对应ifconfig看不到了。然后移除这个tun的虚拟网卡。虚拟网卡之Veth本质与形态veth 不是一个单独的设备,而是成对出现的虚拟设备对(veth pair)。它可以被形象地理解为一根虚拟的网线,两端各连接着一个虚拟网卡。核心用途主要用于连接两个隔离的网络命名空间(Network Namespace),实现它们之间的直接通信。数据从一端输入,会从另一端原封不动地流出。性能优势与 tun/tap 设备相比,veth 通信不需要多次经过主机的网络协议栈,因此数据传输的性能更好、开销更低。主要限制veth 是点对点的连接,只能连接两个命名空间。如果需要连接三个或更多的命名空间到一个网络中,不能只靠 veth,需要引入虚拟网桥(virtual switch)来实现。Veth实战之验证不同namespace之间正常通信这里我们知道:veth是两根虚拟“网线”,总是一对一起创建(共生共死);数据从一端进,立马从另一端出,像一根管道;专门用来连通隔离环境(如Docker容器、网络命名空间);它是Docker容器网络的基础,让容器能与外界通信。veth和网络命名空间常见指令创建 veth pair使用命令:ip link add <veth名> type veth peer name <对端名>;这是一次性创建一对虚拟网卡的命令,一根“网线”两端同时生成。删除 veth使用命令:ip link delete <veth名>删除指定名称的 veth 设备,其配对的对端设备也会被自动删除。查看 veth使用命令:ip link show会列出所有的网络接口,其中包括已创建的 veth 设备,可以通过名称识别(通常名为vethXXX)。创建网络命名空间 (netns)使用命令:ip netns add <命名空间名>创建一个全新的、隔离的网络环境(命名空间)(添加网卡去对应命名空间如:ip link set veth11 netns ns1)。删除网络命名空间使用命令:ip netns del <命名空间名>删除指定的网络命名空间。在命名空间中执行命令使用命令:ip netns exec <命名空间名> <命令>;这是关键命令,用于在指定的隔离网络环境内执行任何命令(如bash、ip addr等),从而配置或查看该环境内的网络状态。查看所有命名空间使用命令:ip netns list列出当前系统上所有已创建的网络命名空间。实战测试:将这两个不同网络命名空间下的虚拟网卡试下ping通。首先构建两个veth类型的虚拟网卡对。发现出现了两个对应网络接口。创建两个网络隔离命名空间;分别把veth1和veth2加进去。ip link show 可以看到对应的联通的虚拟网卡veth对。可以ifconfig看到对应的这对网卡正常。给对应命名空间的网卡分配ip。查看每个网络命名空间的虚拟网卡的ip地址;以及可以看到与这个虚拟网卡veth连接的另一端veth(也就是pair对的另一端)所在的的网络命名空间等。这里在对应的网络命名空间进行互相pingpair另一端的veth虚拟网卡ip;发现可以ping通;故跨命名空间完成通信。删除对应的命名空间;然后再用ip link delete删除对应虚拟网卡设备。但是这样的网络拓扑存在一个弊端,随着网络设备的增多,网络连线的复杂度将成倍增长(保证每个设备之间都能通信);如:因此可以引用Linux Bridge(网桥)技术来解决。虚拟交换机(linux bridge)Linux Bridge是一个虚拟交换机,主要工作在二层(数据链路层),功能类似于现实生活中的家用路由器或交换机,用于连接多个设备,让它们之间能够通信。单纯用veth pair直连两个网络命名空间(netns),就像用一根网线直连两台电脑,只能点对点通信。无法实现一台设备与网络中众多其他设备通信的需求。Bridge 就是为了解决这个“多对多”互联的问题。如何工作?无论是物理网卡(如 eth0)还是虚拟网卡(如 veth、tap),都可以绑定(接入)到 Linux Bridge 上。所有接入的设备就像都接入了同一个交换机,彼此之间可以方便地通信。比如:它的角色就像家庭网络中的Wi-Fi路由器。手机、电脑等设备只要连接到同一个路由器上,就能相互通信并上网。Linux Bridge 在容器网络中扮演的就是这个“中央交换机”的角色。一句话:Linux Bridge 是一个虚拟交换机,把多个网络设备(物理的或虚拟的)连接在一起,组成一个局域网,解决了点对点直连无法实现的多设备通信问题。虚拟网卡之多veth基于网桥的通信实战重温下对应的linux bridge:Linux Bridge就是个虚拟交换机;把多个虚拟网卡(或物理网卡)连在一起,让它们能互相通信,就像家用路由器连多台手机电脑一样;使用纯软件实现,能学MAC地址、能二层转发,还能配IP地址;不用它的话,虚拟设备只能一对一通信(像直连两根线);用了它就能多对多联网(像插到同一个路由器上)。常见网桥操作指令安装工具CentOS系统用:yum install -y bridge-utilsUbuntu系统用:apt-get install -y bridge-utils创建网桥命令:brctl addbr <网桥名>作用:新建一个虚拟交换机(网桥)。添加网口命令:brctl addif <网桥名> <设备名>作用:把一块网卡(比如eth0)插到这个虚拟交换机上。查看网桥命令:brctl show作用:显示所有网桥和插在它们上面的网口。启动网桥命令:ip link set <网桥名> up作用:给虚拟交换机通电,开始工作。删除网桥先断电:ip link set <网桥名> down再拆除:brctl delbr <网桥名>(或者用ip link del <网桥名>)一句话:brctl是Linux上管理虚拟交换机的命令行工具,用它来创建、查看、修改和删除网桥。下面基于bridge完成namespace里面网卡通信:实现对应的veth相互间通信。操作流程:开始创建和查看命名空间创建和查看veth pair将veth两端设置到不同的命名空间激活网卡并分配IP地址测试网络连通性如ping创建和启动虚拟网桥bridge为网桥配置IP地址将网卡插入网桥并测试最终连通性结束首先进行下载安转。linux bridge 创建成功。创建对应虚拟网卡veth pair对于网络命名空间。这里可以看到对应的虚拟网卡对创建成功。把对应网卡对的另一端接到网络命名空间内;进行激活+ip地址分配。这里发现激活后自己ping自己,不能ping。进行自己ping本地激活(否则就只能被外面ipping或者 ping出去外面ip)。成功ping通。虚拟网卡-网桥端接入bridge。bridge进行激活+IP地址分配。这里对应网卡的网桥端共用网桥ip;故不需要分配ip;直接激活。不同命名空间通过网桥成功ping通。这里因为另一端在网络命名空间内;ifconfig宿主机看不到;只能看到外面也就是接入网桥的这端。把对应的虚拟网卡的一端删除;自动一对就删除了;然后删除对应命名空间和网桥。成功删除网桥。iptables 规则清理!!!!!慎重操作,不要删除错 id,可能会导致各种网络问题,不影响系统使用也可以不操作(指令:iptables -D FORWARD 13删除防火墙转发规则里的第13条;找到对应的网桥所在的行进行操作)。总结下:这里首先是从对应虚拟网卡发来的通信;首先会传到对应另一端也就是网桥处;然后网桥处识别到信息后推送与它连接的端;自然流到对应的ns那端;ip匹配就收到信息;然后进行答复(也是同理)。网络原理组网虚拟组网之VLAN与VXLAN为什么需要SDN?物理网络:结构固定,改动麻烦。云上应用:需要频繁变动(扩缩容等)。所以需要:一个能灵活变化的虚拟网络(SDN)。SDN是什么?下层(Underlay):真实的物理网络,保证连通。上层(Overlay):在物理网络上虚拟出的逻辑网络,灵活适配应用需求。VLAN是什么?在一台物理交换机上,逻辑划分出多个虚拟的小交换机(广播域)。不同VLAN之间互相隔离,无法直接通信,更安全、更高效。vlan是全局的,所在的虚拟网络层划分出很多valn小组;只有每个组才能互相通信。一句话:SDN(虚拟网络)解决灵活性问题,VLAN(虚拟局域网)解决隔离和安全问题(相对于vxlan是底层)。VLAN 的好处:省带宽:把大网络隔成小间,广播不乱跑(不用物理拓扑;而是软件层操作,限制广播域,有匹配规则)。更安全:不同小间默认不能直接通话,需要“路由器”当翻译(手动划分有数据隔离保护)。很灵活:组团队不看你在哪办公,只看网络配置。VLAN 的不足:数量有限:最多只能分4千多个小间,不够大型云平台用。地址冲突:无法解决不同用户IP/MAC地址一样的问题。压力太大:虚拟机太多,交换机记不住所有地址,影响效率。一句话:VLAN 是个好用的“网络隔断”,但面对巨大的云数据中心,它有点不够用了。因此下面引入vxlan:VXLAN = 超级虚拟局域网解决啥问题?传统VLAN最多只能分4096个,不够云平台用。VXLAN能分1600多万个,足够用。怎么做到的?把二层的网络数据包(Ethernet Frame),套个UDP的壳,变成三层的数据包,在IP网络里传输。就像给一封信(二层数据)套上一个新信封(UDP/IP包头),然后通过邮局(三层网络)寄出去,对方收到后再拆开信封。有啥好处?无视物理位置:只要网络能通,就能把不同地方的设备“拉”到同一个虚拟局域网里。规模超大:轻松支持海量租户和虚拟机。一句话:VXLAN就是用“套壳”的方法,在现有IP网络上构建出规模巨大的虚拟二层网络。(相当于vlan是上层)虚拟组网之MACVLAN是啥?一项网络技术,能让一张物理网卡虚拟出多个“虚拟网卡”,每个都有自己独立的MAC地址(像一个人有多个身份证)。干嘛用?跳过虚拟交换机(Bridge),让容器或虚拟机直接“挂”在物理网卡上通信。左边(传统):容器 -> veth -> 虚拟交换机 -> 物理网卡→ 路径长,性能有损耗。右边(MACVLAN):容器 -> 虚拟网卡 -> 物理网卡→ 路径短,性能高。有啥缺点?很多物理网卡的硬件不支持太多MAC地址。虚拟的网卡一多,性能反而会下降。所以这技术很好,但还没完全普及。一句话:MACVLAN就是给物理网卡办多个“身份证”,让容器能直连它上网,速度更快。但“身份证”办太多可能会卡。因为一块物理网卡需要支持多个ip;因此底层需要受限制;因此引出ipvlan。虚拟组网之IPVALN核心概念:IPVLAN 是一种网络技术,允许一个物理网卡(父接口)虚拟出多个子接口。最大特点(与MACVLAN的区别):所有子接口不拥有独立的MAC地址,而是共享父接口的同一个MAC地址。但每个子接口可以配置自己独立的IP地址。生活比喻:这就像“一个身份证(MAC地址)对应了多个人(子接口/IP地址)”。主要影响与限制:共享MAC地址可能会影响依赖MAC地址的服务,如DHCP。需要配置独立的ClientID来获取IP。由于很多网络设备不支持一个MAC地址对应多个IP(即DHCp协议不支持clientid配置),因此这项技术未能像MACVLAN那样被大规模推广使用。主要价值:在特定场景下,它可以提供一种高效的网络虚拟化方案,避免了使用虚拟交换机(如Linux Bridge)带来的性能开销。二.本篇小结本篇详细介绍了Docker网络的核心原理,包括虚拟网卡tun/tap和veth pair的工作原理与操作指令,以及Linux Bridge虚拟交换机的组网实战。最后探讨了VLAN、VXLAN、MACVLAN和IPVLAN等虚拟组网技术的特点与应用场景,为理解容器网络奠定基础。
文章目录本篇摘要一.Docker 网络原理`虚拟网卡之tun/tap`虚拟网卡之tun/tap基础指令模拟实战了解虚拟网卡之tun/tap虚拟网卡之VethVeth实战之验证不同namespace之间正常通信veth和网络命名空间常见指令虚拟交换机(linux bridge)虚拟网卡之多veth基于网桥的通信实战常见网桥操作指令网络原理组网虚拟组网之VLAN与VXLAN虚拟组网之**MACVLAN**虚拟组网之IPVALN二.本篇小结本篇摘要本文深度解析Linux虚拟网络设备(Tun/Tap、Veth、Bridge)工作原理,实战演示网络命名空间隔离通信,并深入剖析VLAN、VXLAN、Macvlan、IPVLAN四大虚拟组网技术的核心机制与应用场景。一.Docker 网络原理虚拟网卡之tun/tap本质是虚拟设备:tun和tap是纯软件模拟的网络接口卡,并非物理硬件。它们像真实网卡一样可以配置IP、路由流量,但流量仅在主机内部流转。如:A程序通过eth0访问外面;必须通过tun0借助b程序进行访问。两者操作层级不同:tap:操作二层数据包,模拟的是以太网设备,处理以太网帧(Ethernet frames)。tun:操作三层数据包,模拟的是网络层设备,处理IP报文。核心目的与工作模式:其核心目的是让用户态程序(如VPN)能够接管并处理网络流量。数据包从协议栈发出后,不是直接送往物理网卡,而是通过字符设备(如/dev/net/tun)交给用户进程处理,处理完后再由该程序发回协议栈。典型应用:主要用于VPN等场景。如下图所示,VPN程序通过tun设备接收原始数据包,进行加密、封装等操作后,再通过物理网卡(eth0)发送出去,从而实现隧道通信。主要性能缺点:使用tun/tap设备,数据包需要两次经过操作系统内核的网络协议栈,这会带来一定的性能开销。正是为了改善这个性能问题,才引入了veth(虚拟以太网设备) pair等其他虚拟网络方案。虚拟网卡之tun/tap基础指令添加虚拟网卡使用ip tuntap add命令创建。创建 tap:ip tuntap add dev [名称] mode tap创建 tun:ip tuntap add dev [名称] mode tun删除虚拟网卡使用ip tuntap del命令移除。删除 tap:ip tuntap del dev [名称] mode tap删除 tun:ip tuntap del dev [名称] mode tun激活网卡创建后的网卡默认处于“DOWN”状态,需使用ip link set [名称] up命令之后才能进行网络通信。配置IP地址使用ip addr add命令为已激活的虚拟网卡分配IP地址和子网掩码。例如:ip addr add 10.5.0.1/24 dev tun0为tun0网卡配置IP10.5.0.1,子网掩码255.255.255.0。查看命令帮助若忘记完整命令语法,可通过ip tuntap help快速查看关于tuntap子命令的使用说明和参数选项。模拟实战了解虚拟网卡之tun/tap添加不同层的tap tun两个虚拟网卡。查看本机网络设备无法发现;因为还需要主动激活(ifconfig -a可以查看所有的包括未激活)。手动激活后发现对应ip 掩码等都是0;还需要分配。成功添加。对应网卡有ip;蒙骗过ping命令了;故能ping通。取消激活;对应ifconfig看不到了。然后移除这个tun的虚拟网卡。虚拟网卡之Veth本质与形态veth 不是一个单独的设备,而是成对出现的虚拟设备对(veth pair)。它可以被形象地理解为一根虚拟的网线,两端各连接着一个虚拟网卡。核心用途主要用于连接两个隔离的网络命名空间(Network Namespace),实现它们之间的直接通信。数据从一端输入,会从另一端原封不动地流出。性能优势与 tun/tap 设备相比,veth 通信不需要多次经过主机的网络协议栈,因此数据传输的性能更好、开销更低。主要限制veth 是点对点的连接,只能连接两个命名空间。如果需要连接三个或更多的命名空间到一个网络中,不能只靠 veth,需要引入虚拟网桥(virtual switch)来实现。Veth实战之验证不同namespace之间正常通信这里我们知道:veth是两根虚拟“网线”,总是一对一起创建(共生共死);数据从一端进,立马从另一端出,像一根管道;专门用来连通隔离环境(如Docker容器、网络命名空间);它是Docker容器网络的基础,让容器能与外界通信。veth和网络命名空间常见指令创建 veth pair使用命令:ip link add <veth名> type veth peer name <对端名>;这是一次性创建一对虚拟网卡的命令,一根“网线”两端同时生成。删除 veth使用命令:ip link delete <veth名>删除指定名称的 veth 设备,其配对的对端设备也会被自动删除。查看 veth使用命令:ip link show会列出所有的网络接口,其中包括已创建的 veth 设备,可以通过名称识别(通常名为vethXXX)。创建网络命名空间 (netns)使用命令:ip netns add <命名空间名>创建一个全新的、隔离的网络环境(命名空间)(添加网卡去对应命名空间如:ip link set veth11 netns ns1)。删除网络命名空间使用命令:ip netns del <命名空间名>删除指定的网络命名空间。在命名空间中执行命令使用命令:ip netns exec <命名空间名> <命令>;这是关键命令,用于在指定的隔离网络环境内执行任何命令(如bash、ip addr等),从而配置或查看该环境内的网络状态。查看所有命名空间使用命令:ip netns list列出当前系统上所有已创建的网络命名空间。实战测试:将这两个不同网络命名空间下的虚拟网卡试下ping通。首先构建两个veth类型的虚拟网卡对。发现出现了两个对应网络接口。创建两个网络隔离命名空间;分别把veth1和veth2加进去。ip link show 可以看到对应的联通的虚拟网卡veth对。可以ifconfig看到对应的这对网卡正常。给对应命名空间的网卡分配ip。查看每个网络命名空间的虚拟网卡的ip地址;以及可以看到与这个虚拟网卡veth连接的另一端veth(也就是pair对的另一端)所在的的网络命名空间等。这里在对应的网络命名空间进行互相pingpair另一端的veth虚拟网卡ip;发现可以ping通;故跨命名空间完成通信。删除对应的命名空间;然后再用ip link delete删除对应虚拟网卡设备。但是这样的网络拓扑存在一个弊端,随着网络设备的增多,网络连线的复杂度将成倍增长(保证每个设备之间都能通信);如:因此可以引用Linux Bridge(网桥)技术来解决。虚拟交换机(linux bridge)Linux Bridge是一个虚拟交换机,主要工作在二层(数据链路层),功能类似于现实生活中的家用路由器或交换机,用于连接多个设备,让它们之间能够通信。单纯用veth pair直连两个网络命名空间(netns),就像用一根网线直连两台电脑,只能点对点通信。无法实现一台设备与网络中众多其他设备通信的需求。Bridge 就是为了解决这个“多对多”互联的问题。如何工作?无论是物理网卡(如 eth0)还是虚拟网卡(如 veth、tap),都可以绑定(接入)到 Linux Bridge 上。所有接入的设备就像都接入了同一个交换机,彼此之间可以方便地通信。比如:它的角色就像家庭网络中的Wi-Fi路由器。手机、电脑等设备只要连接到同一个路由器上,就能相互通信并上网。Linux Bridge 在容器网络中扮演的就是这个“中央交换机”的角色。一句话:Linux Bridge 是一个虚拟交换机,把多个网络设备(物理的或虚拟的)连接在一起,组成一个局域网,解决了点对点直连无法实现的多设备通信问题。虚拟网卡之多veth基于网桥的通信实战重温下对应的linux bridge:Linux Bridge就是个虚拟交换机;把多个虚拟网卡(或物理网卡)连在一起,让它们能互相通信,就像家用路由器连多台手机电脑一样;使用纯软件实现,能学MAC地址、能二层转发,还能配IP地址;不用它的话,虚拟设备只能一对一通信(像直连两根线);用了它就能多对多联网(像插到同一个路由器上)。常见网桥操作指令安装工具CentOS系统用:yum install -y bridge-utilsUbuntu系统用:apt-get install -y bridge-utils创建网桥命令:brctl addbr <网桥名>作用:新建一个虚拟交换机(网桥)。添加网口命令:brctl addif <网桥名> <设备名>作用:把一块网卡(比如eth0)插到这个虚拟交换机上。查看网桥命令:brctl show作用:显示所有网桥和插在它们上面的网口。启动网桥命令:ip link set <网桥名> up作用:给虚拟交换机通电,开始工作。删除网桥先断电:ip link set <网桥名> down再拆除:brctl delbr <网桥名>(或者用ip link del <网桥名>)一句话:brctl是Linux上管理虚拟交换机的命令行工具,用它来创建、查看、修改和删除网桥。下面基于bridge完成namespace里面网卡通信:实现对应的veth相互间通信。操作流程:开始创建和查看命名空间创建和查看veth pair将veth两端设置到不同的命名空间激活网卡并分配IP地址测试网络连通性如ping创建和启动虚拟网桥bridge为网桥配置IP地址将网卡插入网桥并测试最终连通性结束首先进行下载安转。linux bridge 创建成功。创建对应虚拟网卡veth pair对于网络命名空间。这里可以看到对应的虚拟网卡对创建成功。把对应网卡对的另一端接到网络命名空间内;进行激活+ip地址分配。这里发现激活后自己ping自己,不能ping。进行自己ping本地激活(否则就只能被外面ipping或者 ping出去外面ip)。成功ping通。虚拟网卡-网桥端接入bridge。bridge进行激活+IP地址分配。这里对应网卡的网桥端共用网桥ip;故不需要分配ip;直接激活。不同命名空间通过网桥成功ping通。这里因为另一端在网络命名空间内;ifconfig宿主机看不到;只能看到外面也就是接入网桥的这端。把对应的虚拟网卡的一端删除;自动一对就删除了;然后删除对应命名空间和网桥。成功删除网桥。iptables 规则清理!!!!!慎重操作,不要删除错 id,可能会导致各种网络问题,不影响系统使用也可以不操作(指令:iptables -D FORWARD 13删除防火墙转发规则里的第13条;找到对应的网桥所在的行进行操作)。总结下:这里首先是从对应虚拟网卡发来的通信;首先会传到对应另一端也就是网桥处;然后网桥处识别到信息后推送与它连接的端;自然流到对应的ns那端;ip匹配就收到信息;然后进行答复(也是同理)。网络原理组网虚拟组网之VLAN与VXLAN为什么需要SDN?物理网络:结构固定,改动麻烦。云上应用:需要频繁变动(扩缩容等)。所以需要:一个能灵活变化的虚拟网络(SDN)。SDN是什么?下层(Underlay):真实的物理网络,保证连通。上层(Overlay):在物理网络上虚拟出的逻辑网络,灵活适配应用需求。VLAN是什么?在一台物理交换机上,逻辑划分出多个虚拟的小交换机(广播域)。不同VLAN之间互相隔离,无法直接通信,更安全、更高效。vlan是全局的,所在的虚拟网络层划分出很多valn小组;只有每个组才能互相通信。一句话:SDN(虚拟网络)解决灵活性问题,VLAN(虚拟局域网)解决隔离和安全问题(相对于vxlan是底层)。VLAN 的好处:省带宽:把大网络隔成小间,广播不乱跑(不用物理拓扑;而是软件层操作,限制广播域,有匹配规则)。更安全:不同小间默认不能直接通话,需要“路由器”当翻译(手动划分有数据隔离保护)。很灵活:组团队不看你在哪办公,只看网络配置。VLAN 的不足:数量有限:最多只能分4千多个小间,不够大型云平台用。地址冲突:无法解决不同用户IP/MAC地址一样的问题。压力太大:虚拟机太多,交换机记不住所有地址,影响效率。一句话:VLAN 是个好用的“网络隔断”,但面对巨大的云数据中心,它有点不够用了。因此下面引入vxlan:VXLAN = 超级虚拟局域网解决啥问题?传统VLAN最多只能分4096个,不够云平台用。VXLAN能分1600多万个,足够用。怎么做到的?把二层的网络数据包(Ethernet Frame),套个UDP的壳,变成三层的数据包,在IP网络里传输。就像给一封信(二层数据)套上一个新信封(UDP/IP包头),然后通过邮局(三层网络)寄出去,对方收到后再拆开信封。有啥好处?无视物理位置:只要网络能通,就能把不同地方的设备“拉”到同一个虚拟局域网里。规模超大:轻松支持海量租户和虚拟机。一句话:VXLAN就是用“套壳”的方法,在现有IP网络上构建出规模巨大的虚拟二层网络。(相当于vlan是上层)虚拟组网之MACVLAN是啥?一项网络技术,能让一张物理网卡虚拟出多个“虚拟网卡”,每个都有自己独立的MAC地址(像一个人有多个身份证)。干嘛用?跳过虚拟交换机(Bridge),让容器或虚拟机直接“挂”在物理网卡上通信。左边(传统):容器 -> veth -> 虚拟交换机 -> 物理网卡→ 路径长,性能有损耗。右边(MACVLAN):容器 -> 虚拟网卡 -> 物理网卡→ 路径短,性能高。有啥缺点?很多物理网卡的硬件不支持太多MAC地址。虚拟的网卡一多,性能反而会下降。所以这技术很好,但还没完全普及。一句话:MACVLAN就是给物理网卡办多个“身份证”,让容器能直连它上网,速度更快。但“身份证”办太多可能会卡。因为一块物理网卡需要支持多个ip;因此底层需要受限制;因此引出ipvlan。虚拟组网之IPVALN核心概念:IPVLAN 是一种网络技术,允许一个物理网卡(父接口)虚拟出多个子接口。最大特点(与MACVLAN的区别):所有子接口不拥有独立的MAC地址,而是共享父接口的同一个MAC地址。但每个子接口可以配置自己独立的IP地址。生活比喻:这就像“一个身份证(MAC地址)对应了多个人(子接口/IP地址)”。主要影响与限制:共享MAC地址可能会影响依赖MAC地址的服务,如DHCP。需要配置独立的ClientID来获取IP。由于很多网络设备不支持一个MAC地址对应多个IP(即DHCp协议不支持clientid配置),因此这项技术未能像MACVLAN那样被大规模推广使用。主要价值:在特定场景下,它可以提供一种高效的网络虚拟化方案,避免了使用虚拟交换机(如Linux Bridge)带来的性能开销。二.本篇小结本篇详细介绍了Docker网络的核心原理,包括虚拟网卡tun/tap和veth pair的工作原理与操作指令,以及Linux Bridge虚拟交换机的组网实战。最后探讨了VLAN、VXLAN、MACVLAN和IPVLAN等虚拟组网技术的特点与应用场景,为理解容器网络奠定基础。