如果要使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虚拟网卡

Centos下安装并设置nginx开机自启动

一.在centos环境下安装下载并安装nginx,由于nginx需要依赖一些环境才能安装,主要依赖g++.gcc.openssl-devel.pcre-devel和zlib-devel这些环境,首先得 ...

(9)centos下防火墙firewalld设置

学习apache安装的时候需要打开80端口,由于centos 7版本以后默认使用firewalld后,网上关于iptables的设置方法已经不管用了,想着反正iptable也不会用,索性直接搬官方文档 ...

Centos下普通用户设置sudo权限

若执行sudo命令的用户没有sodu权限,则会报以下错误 violet is not in the sudoers file.This incident will be reported 若想让vio ...

Centos 下使用VLAN+Bridge 搭建KVM基础网络环境

一.使用环境介绍 宿主机上同时运行多网段虚拟机,为了解决宿主机网卡资源紧张问题,采用如下网络模式:(本实验vlan 105:192.168.5.x    vlan108:192.168.8.x) 二. ...

Centos下防火墙的设置

service iptables status可以查看到iptables服务的当前状态.但是即使服务运行了,防火墙也不一定起作用,你还得看防火墙规则的设置 iptables -L在此说一下关于启动和关 ...

CentOS下KVM网卡设置成网桥时获取镜像端口的流量

首先,网桥配置好之后就能实现一个简单的交换机,而交换机的特点就是MAC地址学习,那么KVM的网卡设置成网桥之后,也就是相当于连接到了交换机上. 此时如果要实现在二层交换机或三层交换机做端口镜像,并把这 ...

CentOS 7 下,如何设置DNS服务器

在CentOS 7下,手工设置 /etc/resolv.conf 里的DNS,过了一会,发现被系统重新覆盖或者清除了.和CentOS 6下的设置DNS方法不同,有几种方式: 1.使用全新的命令行工具 ...

CentOS下安装MYSQL8.X并设置忽略大小写

安装 在官网上下载:mysql80-community-release-el7-2.noarch.rpm.安装方式与5.7基本相同.详细安装过程见:CentOS下安装mysql5.7和mysql8.x ...

CentOS下安装hadoop

CentOS下安装hadoop 用户配置 添加用户 adduser hadoop passwd hadoop 权限配置 chmod u+w /etc/sudoers vi /etc/sudoers 在 ...

随机推荐

NuGet控制台有几个常用命令

NuGet控制台有几个常用命令 Get-Package 获取当前项目已经安装的类库 Install-Package 安装指定类库,命令格式如下:Install-Package 类库ID,如Instal ...

[C语言入门笔记]循环与运算符

循环与运算符 什么是循环? 循环就是一个不停工作的东西,可以反复的实现一个功能,这个才是计算机的重点.计算机可以重复的做一件事情,这样子可以省很多事情 循环的种类有哪些? While Do while ...

Windows桌面共享中一些常见的抓屏技术

1. BitBlt 我想做Windows开发应该都知道这个API, 它能实现DC间的内容拷贝, 如果我们把源DC指定成Monitor DC或是桌面DC, 它就能实现抓屏功能. 对于通过这种方式的抓屏, ...

PHP值传递和引用传递的区别

PHP值传递和引用传递的区别.什么时候传值什么时候传引用 (1)按值传递:函数范围内对值的任何改变在函数外部都会被忽略 (2)按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改 (3)优 ...

Leetcode-121 Best Time to Buy and Sell Stock

#121   Best Time to Buy and Sell Stock Say you have an array for which the ith element is the price ...

DB层面上的设计 分库分表 读写分离 集群化 负载均衡

第1章  引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的 互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造成了极大的 ...

UTF8 与 UTF16 编码

Unicode 的发展,英文好的直接去 unicode.org 上去看吧,不好的可以移步到这里 看dengyunze的总结:

C# devExpress BandedGridView属性 备忘

BandedGridView属性备忘 StringBuilder sb = new StringBuilder(); DevExpress.XtraGrid.Views.BandedGrid.Band ...

ARPU值分析

每用户平均收入(“ARPU)它由一个消费群体消费总额除以群体总人数得到. 活跃付费账户(“APA”) 平均同时在线玩家人数(“ACU”) 最高同时在线玩家人数(“PCU”)同时在线玩家数最高峰. 千人 ...

linux设置网口物理地址吗,centos下网口vlan设置相关推荐

  1. RHEL/CentOS下的VLAN设置

    http://www.yolinux.com/TUTORIALS/LinuxTutorialNetworking.html 留个脚印,有空再把实作过程记录下来. 转载于:https://blog.51 ...

  2. linux防火墙添加udp 123,centos下的ntp的安装和配置 (注意 防火牆的udp 123要打開,不然會不能用)...

    centos下的ntp的安装和配置安装 yum install ntp 配置文件 /etc/ntp.conf restrict default kod nomodify notrap nopeer n ...

  3. linux nginx rpm 安装配置,Centos下安装nginx rpm包

    1 在nginx官方网站下载一个rpm包,下载地址是:http://nginx.org/en/download.html wget http://nginx.org/packages/centos/6 ...

  4. linux 双网卡主备,CentOS下双网卡主备模式配置

    CentOS下双网卡主备模式配置 1简述 通过双网卡设置主备模式,实现当一块网卡宕掉时,另外一块网卡可以自动顶替宕掉的网卡工作,保障网络正常访问. 2实现 2.1.查看网卡信息 执行ifconfig ...

  5. linux防火墙的复规则,Centos下iptables防火墙规则编辑方法 - YangJunwei

    今天整理一下Centos下iptables防火墙规则的保存.清除等编辑方法. 如已经安装,请跳过. $ yum install iptables 二.查看 iptables 防火墙已有规则 以下四种方 ...

  6. linux查看固态硬盘寿命,CentOS下查看 ssd 寿命

    CentOS下查看 ssd 寿命 安装必要的软件yum install -y MegaCli Lib_Utils 得到 device id/opt/MegaRAID/MegaCli/MegaCli64 ...

  7. linux yum安装 rpmbuild,Redhat/Centos下rpmbuild命令从spec文件或者tar包建立rpm

    rpmbuild是用来指示转换的源码不定编译成二进制文件的包. 二.Redhat/Centos下rpmbuild命令目录 /usr/src/redhat --BUILD #编译之前,如解压包后存放的路 ...

  8. linux里临时设置hbase参数,在centos下配置hbase环境并简单使用hbase shell

    操作系统版本:centos7 jdk版本:jdk-8u151-linux-x64.rpm hbase版本:hbase-1.2.6 以单机模式安装运行 配置centos为静态IP 配置静态ip vi / ...

  9. linux怎么退出telnet端口,CentOS下怎么退出telnet

    在调试一个网络程序时遇到问题,服务启动了,客户端却连接不上:首先就想到了用telnet连接看看: 命令和Windows下一样,telnet IP 端口号 [plain] view plaincopy ...

最新文章

  1. SAP HUM针对HU做货物移动后生成的物料凭证何处看相关的HU信息?
  2. java 解压缩 工具类_Java实现的zip压缩及解压缩工具类示例
  3. 有关“双重检查锁定失效”的说明
  4. MySQL事物(详解并发问题和隔离级别)(小白也能懂哦)
  5. 如果用中文编程....那么... (如果..那么...这搭配很完整吧)
  6. python在路径里添加变量_想学Python?那就先从头开始吧!
  7. php的工作模式CGI,FastCGI,PHP-CGI与PHP-FPM(转)
  8. 阈值和阀值的区别_基于双阈值设定的图像识别产品策略
  9. MRF,马尔科夫随机场
  10. ASP.NET乱码解决方案
  11. 灯具类产品各国EMC认证标准大全
  12. python爬虫微信_python 微信爬虫
  13. Ubuntu 安装包安装搜狗输入法
  14. html调取android手机录音并保存,html5网页录音插件Recorder
  15. 巨美国际教您如何开好网店?
  16. 将ipa文件安装到手机的最简单方法和将ipa发布到appstore的方法
  17. 深度精简版xp 安装并使用iis【转】
  18. FaceNet使用简介
  19. 二、Linux镜像软件的安装
  20. 你是在独立思考,还是在被洗脑?

热门文章

  1. arm+fpga架构优势,米尔MYC-JX8MMA7新品发布!
  2. 短视频创作者私域运营
  3. 【vim】VIM复制含有关键字的所有行
  4. 苹果公司创始人乔布斯生平简介
  5. JAVA项目同时上传多个文件和多个内容
  6. 自动称重管理软件适应市场的瞬息变幻
  7. 马化腾豪掷千金,张一鸣爱而不得:这家美国公司要独立上市了
  8. (11)打鸡儿教你Vue.js
  9. XBOX360新手扫盲
  10. 双十一最完整记录!阿里、京东全部都有