zoukankan      html  css  js  c++  java
  • centos下网口vlan设置

    如果要使vlan之间进行通信,我们通常会使用三层交换机或者路由器子接口模式来做。Linux上关于VLAN与Cisco交换机中继连接,也是可以实现其互相之间的通信的。

    环境:RHEL 5.2 最小化安装,物理网卡eth1,作为VLAN交换机连接的Trunk口连接到2960的GigabitEthernet0/1。而另外一张物理网卡eth0作为上行口,连接其他网络。
          Cisco 2960,启用VLAN,VLAN的网段规划入下:
           VLAN 1:fa0/1 - fa0/6 192.168.1.0/24
           VLAN 2:fa0/7 - fa0/12 192.168.2.0/24
           VLAN 3:fa0/13 - fa0/18 192.168.3.0/24
           VLAN 4:fa0/19 - fa0/24 192.168.4.0/24
    由于2960支持的802.1q trunk协议对于本征vlan 1 的数据流是不会增加vlan标记的,以及交换机的配置过程,具体可以见本站点其他关于交换机配置介绍
    可以用 Show interfaces trunk命令查看本征vlan 规划:对于本征vlan我们不增加子接口,直接在物理网卡eth1上绑定IP即可,其他vlan都使用vconfig创建子接口即可。

    一.首先要确认Linux系统内核是否已经支持VLAN功能:
    当前使用内核以及操作系统版本:
    [root@happyboy ~]# # lsmod |grep 8021q         //查看系统内核是否支持802.1q协议
    8021q                  18633 0 
    [root@happyboy ~]# lspci       //确认网卡驱动是否已经正常加载

    一般来说RH9以后的Linux发行版本,诸如RHEL4、RHEL5、CentOS4、CentOS5都已经默认支持了VLAN的功能。

    二.物理网卡、子网卡、虚拟VLAN网卡的关系:
    1.物理网卡:物理网卡这里指的是服务器上实际的网络接口设备,这里我服务器上双网卡,在系统中看到的2个物理网卡分别对应是eth0和eth1这两个网络接口。

    2.子网卡:子网卡在这里并不是实际上的网络接口设备,但是可以作为网络接口在系统中出现,如eth0:1、eth1:2这种网络接口。它们必须要依赖于物理网卡,虽然可以与物理网卡的网络接口同时在系统中存在并使用不同的IP地址,而且也拥有它们自己的网络接口配置文件。但是当所依赖的物理网卡不启用时(Down状态)这些子网卡也将一同不能工作。

    3.虚拟VLAN网卡:这些虚拟VLAN网卡也不是实际上的网络接口设备,也可以作为网络接口在系统中出现,但是与子网卡不同的是,他们没有自己的配置文件。他们只是通过将物理网加入不同的VLAN而生成的VLAN虚拟网卡。如果将一个物理网卡添加到多个VLAN当中去的话,就会有多个VLAN虚拟网卡出现,他们的信息以及相关的VLAN信息都是保存在/proc/net/vlan/config这个临时文件中的,而没有独自的配置文件。它们的网络接口名是eth0.1、eth1.2这种名字。

    注意:当需要启用VLAN虚拟网卡工作的时候,关联的物理网卡网络接口上必须没有IP地址的配置信息,并且,这些主物理网卡的子网卡也必须不能被启用和必须不能有IP地址配置信息。这个在网上看到的结论根据我的实际测试结果来看是不准确的,物理网卡本身可以绑定IP,并且给本征vlan提供通信网关的功能,但必须是在802.1q下。

    三.规划网络:
    1.VLAN的划分:
    Cisco交换机2960上交换机配置不在赘述。
    RHEL 5.2默认内核支持VLAN,并且默认只支持802.1q的中继封装。我们需要对连接Cisco交换机2960的中继接口的eth1进行配置,在上面已经说明,对于vlan1本征vlan直接用物理eth1即可。另外,由于网络当中要使用3个VLAN,因此,中继网卡eth1也必须要添加虚拟网卡以及IP地址。规划如下:
           eth1:192.168.1.1/24
           eth1.2:192.168.2.1/24
           eth1.3:192.168.3.1/24
           eth1.4:192.168.4.1/24       

    2.Linux网关转发部分:
    VLAN功能网卡eth1上除其本身外,将被划分成3个VLAN虚拟网卡,通过中继网卡eth1与Cisco交换机2950的VLAN中继端口连接,另外一个物理网卡eth0作为上行网络接口。而Linux服务器将在eth1与eth0之间做流量转发,这样VLAN与VLAN之间也实现了数据流的转发,如果不希望VLAN之间转发的话,可以通过iptables来进行设定,这里就不再展开iptables了。

    四.在Linux配置VLAN Trunk:
    由于在Linux上eth1要被设定为Trunk与Cisco交换机2960中继连接,因此,网络中有几个VLAN的话,那么中继网卡上也必须要加入多个VLAN才能支持到(本征vlan不需要添加,属于本征vlan的端口设置IP同该物理网卡网段,并将网关指向eth1即可,关于eth0和eth1的配置,可以直接编辑配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0和ifcfg-eth1,或用setup来配置等文本图形工具配置)。
    1.将eth1添加到VLAN 2中:
    [root@happyboy net]# vconfig add eth1 2
    WARNING: Could not open /proc/net/vlan/config. Maybe you need to load the 8021q module, or maybe you are not using PROCFS??
    Added VLAN with VID == 2 to IF -:eth1:-
    第一次添加VLAN虚拟网卡的时候就一定会出现上面的那句提示,原因是因为默认下/proc/net/vlan/config这个专门用来保存VLAN信息的文件是没有的。由于第一次添加VLAN网卡,那么这个文件也会被自动建立起来。另外,在/proc/目录下面的文件都是系统的临时文件,因此重新启动后必定丢失休息,所以在配置并测试VLAN成功后,可以将一些相关命令添加到rc.local这个启动脚本当中去了。在执行该命令之前可以先到/proc/net/目录查看下,并不存在vlan文件夹,执行后会创建一个vlan文件夹,并生成config配置文件,以及对应的虚拟vlan网卡配置文件eth1.2等
    后面的一句
    Added VLAN with VID == 2 to IF -:eth1:-
    这里表示已经将eth1网卡添加到了VLAN 2中,并且它在VLAN中的虚拟网卡是eth1.2。

    2.同样将eth1添加到VLAN 3、4中:
    [root@happyboy ~]# vconfig add eth1 3
    Added VLAN with VID == 3 to IF -:eth1:-
    [root@happyboy ~]# vconfig add eth1 4
    Added VLAN with VID == 4 to IF -:eth1:-

    4.检查添加的VLAN虚拟网卡信息:
    [root@happyboy ~]# cat /proc/net/vlan/config 
    --------------------------------------------------
    VLAN Dev name    | VLAN ID
    Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
    eth1.2         | 2 |      eth1
    eth1.3         | 3 |      eth1
    eth1.4         | 4 |      eth1
    虚拟网卡       VLANID   归属的主网卡
    --------------------------------------------------
    可以看到所有的VLAN虚拟网卡以及它们所归属的主物理网卡。

    五.为VLAN虚拟网卡设定IP地址并且进行启用:
    [root@happyboy ~]# ifconfig eth1.2 192.168.2.1 up
    [root@happyboy ~]# ifconfig eth1.3 192.168.3.1 up
    [root@happyboy ~]# ifconfig eth1.4 192.168.4.1 up

    六.确认Linux系统下的所有网络接口配置:
    1.重新启动网络服务
    [root@happyboy ~]# service network restart
    --------------------------------------------------
    Shutting down interface eth0:                            [ OK ]
    Shutting down interface eth1:                            [ OK ]
    Shutting down loopback interface:                        [ OK ]
    Bringing up loopback interface:                          [ OK ]
    Bringing up interface eth0:                              [ OK ]
    Bringing up interface eth1:                              [ OK ]
    --------------------------------------------------

    2.检查Linux系统下的所有网络接口信息:
    [root@happyboy ~]# ifconfig |more
    到这里已经基本上将VLAN的主要配置完成了。

    七.简单测试:
    测试从各个vlan 之间的连通性,可以直接在属于各个vlan的交换机端口上连接一台PC,设置其属于对应网段IP,并将网关指向到对应vlan虚拟网卡的IP,会发现与网关之间的通信正常,但是vlan之间无法通信,那时因为linux默认不会转发数据,具体介绍可以参考
    http://www.happyboy.net.cn/article.asp?id=19,直接修改ip_forward值为1即可使vlan之间正常通信

    后续可以:配置iptables进行NAT各个网络接口间转发;配置iptables来限制指定VLAN之间的转发以实现安全性以及优化处理。

    在上面说过,这些配置信息是写到系统临时文件的,系统重启将会导致配置丢失,我们可以在/etc/rc.local中增加以下语句即可

    vconfig add eth1 2
    vconfig add eth1 3
    vconfig add eth1 4
    ifconfig eth1.2 192.168.2.1 up
    ifconfig eth1.3 192.168.3.1 up
    ifconfig eth1.4 192.168.4.1 up
    echo '1' > /proc/sys/net/ipv4/ip_forward

    Vconfig命令的简要说明:
    vconfig - VLAN 802.1q 配置程序。
    说明
           Vconfig程序能够建立VLAN虚拟网卡并且与远程的VLAN设备对接,但是前提是内核首先必须支持VLAN功能。VLAN虚拟网卡是以太网卡上虚拟出来的、为了能够在一个物理网络上支持VLAN虚拟网络的虚拟网卡。

    选项
    add 物理网卡 VLAN-ID号
    在指定的物理网卡上虚拟出指定VLAN号的VLAN虚拟网卡。VLAN虚拟网卡名将记录在/proc/net/vlan/config文件中。
    rem VLAN虚拟网卡
    删除指定的VLAN虚拟网卡,如果不清楚VLAN虚拟网卡名的话可以到/proc/net/vlan/config文件中查看VLAN虚拟网卡名。

    相关文件
           /proc/net/vlan/config
           /proc/net/vlan/VLAN虚拟网卡

  • 相关阅读:
    hdu 1028 Ignatius and the Princess III (n的划分)
    CodeForces
    poj 3254 Corn Fields (状压DP入门)
    HYSBZ 1040 骑士 (基环外向树DP)
    PAT 1071 Speech Patterns (25)
    PAT 1077 Kuchiguse (20)
    PAT 1043 Is It a Binary Search Tree (25)
    PAT 1053 Path of Equal Weight (30)
    c++ 常用标准库
    常见数学问题
  • 原文地址:https://www.cnblogs.com/gaohong/p/4655080.html
Copyright © 2011-2022 走看看