Linux 系统下实践 VLAN

作者: 伍工 | 来源:发表于2019-02-26 11:14 被阅读11次

本文首发于我的公众号 CloudDeveloper(ID: cloud_dev),专注于干货分享,努力打造干货平台,后台回复「1024」获得技术大礼包一份,欢迎大家关注,二维码文末可以扫。

01 准备环境

环境:ubuntu 16.04 环境(物理 or 虚拟)

确认 CPU 是否支持虚拟化:

# egrep -o '(vmx|svm)' /proc/cpuinfo
# vmx

如果不支持,开启 KVM 嵌套虚拟化之后再重启。

1.1 安装 KVM 环境

sudo apt-get install -y qemu-kvm qemu-system libvirt-bin virt-manager bridge-utils vlan

1.2 安装 Ubuntu 图形化界面

sudo apt-get install -y xinit gdm kubuntu-desktop

02 创建 KVM 虚拟机

使用 virt-manager 创建 KVM 虚拟机,方法比较简单,由于篇幅有限,大家可以查阅相关资料自行了解。

创建完之后用 virsh list --all 查看创建的 VM:

Id    Name                           State
----------------------------------------------------
 -     kvm1                           shut off
 -     kvm2                           shut off
 -     kvm3                           shut off

我们的实验拓扑如下:

image

图中创建了 2 个 Linux Bridge:brvlan1 和 brvlan2,宿主机的物理网卡 eth0 抽象出两个虚拟设备 eth0.1 和 eth0.2,也就是两个 VLAN 设备,它们分别定义了两个 VLAN:VLAN1 和 VLAN2。挂接到两个 Bridge 上的网络设备自动加入到相应的 VLAN 中。VLAN1 接两个 VM,VLAN 接一个 VM。

实验的目的是要验证属于同一个 VLAN1 中 VM1 和 VM2 能 ping 通,而属于不同 VLAN 中的 VM ping 不通。

03 实验开始

3.1 配置 VLAN

编辑 /etc/network/interfaces,加入两个 Bridge 和两个 VLAN 设备的配置,如下:

# The primary network interface
auto ens33
iface ens33 inet dhcp

auto ens33.1
iface ens33.1 inet manual
        vlan-raw-device ens33

auto brvlan1
iface brvlan1 inet manual
        bridge_stp off
        bridge_waitport 0
        bridge_fd 0
        bridge_ports ens33.1

auto ens33.2
iface ens33.2 inet manual
        vlan-raw-device ens33

auto brvlan2
iface brvlan2 inet manual
        bridge_stp off
        bridge_waitport 0
        bridge_fd 0
        bridge_ports ens33.2

注意,这里务必和自己电脑的接口名称统一,比如我这里叫 ens33,就配 ens33.1 和 ens33.2 的 VLAN 设备,当然你也可以改成 eth0 的形式。

重启宿主机,ifconfig 查看网络接口:

image

brctl show 查看当前 Linux Bridge 的配置,ens33.1 和 ens33.2 分别挂载 brvlan1 和 brvlan2 上了。

# brctl show
bridge name bridge id       STP enabled interfaces
brvlan1     8000.000c298c57e8   no      ens33.1
brvlan2     8000.000c298c57e8   no      ens33.2
virbr0      8000.000000000000   yes

3.2 配置 VM

我们先配置 VM1,启动 virt-manager,在图形界面中将 VM1 的虚拟网卡挂到 brvlan1 上:

image

同样的方式配置 VM2 和 VM3,VM2 也配到 brvlan1 上,VM3 配到 brvlan2 上。

3.3 查看 VM 配置

virsh start xxx 启动 3 个 VM:

# virsh start kvm1
# virsh start kvm2
# virsh start kvm3

再通过 brctl show 查看 Bridge,这时发现 brvlan1 下接了 vnet0 和 vnet1,brvlan2 下接了 vnet2:

# brctl show
bridge name bridge id       STP enabled interfaces
brvlan1     8000.000c298c57e8   no      ens33.1
                            vnet0
                            vnet1
brvlan2     8000.000c298c57e8   no      ens33.2
                            vnet2
virbr0      8000.000000000000   yes

通过 virsh domiflist xxx 确认这就是 VM 的虚拟网卡:

# virsh domiflist kvm1
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet0      bridge     brvlan1    rtl8139     52:54:00:b3:dd:3a

# virsh domiflist kvm2
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet1      bridge     brvlan1    rtl8139     52:54:00:b7:4f:ef

# virsh domiflist kvm3
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet2      bridge     brvlan2    rtl8139     52:54:00:d8:b8:2a

04 验证

为了验证相同 VLAN 之间的连通性和不同 VLAN 之间的隔离性,我们为 3 个 VM 都配置同一网段的 IP。

使用 virt-manager 进入 VM console 控制面。

配置 VM1 的 IP:

ifconfig eth0 192.168.100.10 netmask 255.255.255.0

配置 VM2 的 IP:

ifconfig eth0 192.168.100.20 netmask 255.255.255.0

配置 VM3 的 IP:

ifconfig eth0 192.168.100.30 netmask 255.255.255.0

使用 VM1 ping VM2 能 ping 通,VM2 ping VM3 不能 ping 通。

image

验证完毕。

大家如果有兴趣,可以抓个包看看,在发送 ping 包之前,需要知道对方的 MAC 地址,所以会先在网络中广播 ARP 包。ARP 是二层协议,VLAN 的作用就是隔离二层的广播域,ARP 包自然就不能在不同 VLAN 中流通,所以在相同 VLAN 中,通信双方能够拿到对方的 MAC 地址,也就能 ping 通,不同 VLAN 反之。


我的公众号 CloudDeveloper(ID: cloud_dev),后台回复「1024」获得技术大礼包一份,分享的内容包括但不限于云计算虚拟化、容器、OpenStack、K8S、雾计算、网络、工具、SDN、OVS、DPDK、Linux、Go、Python、C/C++编程技术等内容,欢迎大家关注。

image

相关文章

  • Linux 系统下实践 VLAN

    本文首发于我的公众号 CloudDeveloper(ID: cloud_dev),专注于干货分享,努力打造干货平台...

  • vconfig 命令

    vconfig 命令允许您在启用 vlan 的内核的 Linux 上创建和删除 vlan 设备。vlan 设备是一...

  • linux VLAN设置

    一.首先要确认Linux系统内核是否已经支持VLAN功能: 当前使用内核以及操作系统版本: cat /etc/re...

  • 攻防交换机配置(h3c华三交换机)

    进入系统配置模式,划分VLAN sysvlan 100 to 105dis vlan 为VLAN100配置IP地址...

  • linux:vconfig配置vlan子接口

    1.安装vlan(vconfig)和加载8021q模块 2.使用linux vconfig命令配置vlan 在et...

  • day16预习笔记

    Linux系统定时任务Cron(d)服务应用实践 什么是Cron(d): Cron是Linux系统中以后台进程模式...

  • centos下vlan配置

    centos下vlan配置 安装依赖包 查看核心是否提供VLAN 功能 查看/proc/net/vlan目录是否存...

  • day16 课后笔记

    Linux系统权限知识及应用实践 Linux基础权限 是9个字符。 [root@oldbiyedu~]# ls -...

  • 关闭和重启Linux系统

    Linux教程 关闭和重启Linux系统 在Linux系统下,常用的关闭/重启系统的命令有shutdown hat...

  • Shell简介

    为了能对shell能够有整体的认识,我们有必要先简单介绍下Linux系统 。 Linux系统 Linux 系统主要...

网友评论

    本文标题:Linux 系统下实践 VLAN

    本文链接:https://www.haomeiwen.com/subject/rwtayqtx.html