linux nic接口中的VLAN配置

时间:2020-03-21 11:47:31  来源:igfitidea点击:

如今,在交换机中配置多个VLAN是一种规范。
如果我们将Windows计算机用作服务器,大多数时候的NIC卡制造商都会提供一个图形实用程序,用于配置NIC卡的VLAN选项。
但是,Linux机器提供了内置功能,可配置nic卡接口以在流量中发送VLAN信息。

在Linux计算机中配置vlan不是一项轻而易举的任务,它只需要正确的vlan和ip信息就可以在接口配置文件中显示。

在本文中,我们将逐步介绍在Linux机器上配置vlan的步骤。
我们将从一些VLAN基础知识开始,然后转向配置选项。

什么是vlan?

最初,在市场上引入网络交换机时,在其任何端口连接到它的所有设备都是同一网络或者LAN的成员。

这意味着连接到该网络交换机的每个主机都可以访问连接到该交换机的所有其他主机,而中间没有任何网关或者路由器。
换句话说,我们可以说所有连接到该交换机的机器都在一个广播域中。

产生了一种成本有效地隔离广播域的需求,该广播域包括来自不同物理位置的主机。
David David Sincoskie博士提出了一种称为VLAN的解决方案。

从上面的图中可以看到,如果要使一个主机成为多个VLAN的成员,则需要在交换机到主机之间运行多条物理电缆(电缆数=主机所需的VLAN数)。
因为一个VLAN只能使用一个端口。

为了解决上述两个问题,IEEE(Inernet Engineering Task Force)标准化了Internet协议的人们提出了一个称为802.1Q的标准,并称为vlan标记。

什么是VLAN标记?

通过在以太网帧本身中添加VLAN信息来完成VLAN标记。
因此,计算机主机现在将在以太网帧中添加一个添加标志,以供交换机识别,该标志将其发送到适当的端口。

因此,现在,在实施802.1q之后,一个端口和一根电缆就可以承载多个VLAN信息。
因此,将交换机互连在一起,仅一根电缆就足够了。

Linux中的VLAN标记支持实际上是一个内核功能。
我们可以验证内核模块是否已在Linux机器中加载,如下所示。

[root@myvm1 ~]# lsmod | grep 8021
8021q                  22217  0

大多数Linux机器的默认情况下都为vlan标记功能加载了此模块,因此无需担心。

如前所述,通过在帧中添加4字节的VLAN标识符,VLAN信息会包含在以太网帧本身中。
交换机将在需要时剥离或者添加VLAN信息。
因此,添加了VLAN信息的以太网框架如下所示。

因此,我们感兴趣的主题是,如何告诉我们的linux计算机将802.1q vlan信息插入出现的以太网帧中。
为此,我们需要使用vlan id info配置我们的linux nic接口。
这可以通过两种方式完成。

Vconfig命令

如下所示,在Linux机器上使用vconfig命令创建一个vlan接口。

[root@myvm1 ~]# vconfig add eth0 300
Added VLAN with VID == 300 to IF -:eth0:

上面显示的命令创建一个名为eth0.300的网络接口,仅用于验证,然后执行ifconfig。

[root@myvm1 network-scripts]# ifconfig -a
eth0.300  Link encap:Ethernet  HWaddr 00:0C:29:93:A0:52
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

现在,通过以下命令添加所需的VLAN Ip地址。

[root@myvm1]# ifconfig eth0.300 192.168.3.45 netmask 255.255.255.0 broadcast 192.168.3.255 up
[root@myvm1]# ifconfig eth0.300
eth0.300  Link encap:Ethernet  HWaddr 00:0C:29:93:A0:52
          inet addr:192.168.3.45  Bcast:192.168.3.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe93:a052/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:37 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:10581 (10.3 KiB)

我们还可以使用以下命令删除使用vconfig命令创建的接口。

vconfig rem eth0.300

如何使Linux中的VLAN信息永久化?

为此,我们需要像在/etc/sysconfig/network-scripts /目录中的其他接口文件一样其中创建带有vlan ID信息的接口文件。

因此,例如,我们的eth0.300文件将如下所示。

[root@myvm1 network-scripts]# cat ifcfg-eth0.300
DEVICE=eth0.300
BOOTPROTO=static
HWADDR=00:0c:29:93:a0:52
ONBOOT=yes
TYPE=Ethernet
VLAN=yes
NETMASK=255.255.255.0
IPADDR=192.168.3.45

现在,只需重新启动网络,或者使用ifup eth0.300命令打开新接口