linux网卡的vlan怎么配置

发布时间:2021-08-25 16:53:53 作者:chen
来源:亿速云 阅读:341
# Linux网卡的VLAN配置指南

## 1. VLAN技术概述

### 1.1 VLAN基本概念

VLAN(Virtual Local Area Network,虚拟局域网)是一种将物理网络在逻辑上划分为多个独立广播域的技术。通过VLAN,管理员可以在单一物理网络基础设施上创建多个逻辑网络,每个VLAN就像是一个独立的物理网络。

VLAN的主要特点包括:
- **广播控制**:VLAN限制了广播域的范围,减少不必要的网络流量
- **安全性增强**:不同VLAN间的通信需要经过路由,提供了额外的安全层
- **灵活管理**:可根据部门、功能或应用逻辑划分网络,而不受物理位置限制
- **资源优化**:更有效地利用网络带宽和资源

### 1.2 VLAN的工作原理

VLAN通过在标准以太网帧中添加4字节的VLAN标签(802.1Q标签)来实现。这个标签包含以下关键信息:
- **TPID(Tag Protocol Identifier)**:固定值0x8100,标识这是一个802.1Q帧
- **PCP(Priority Code Point)**:3位,用于服务质量(QoS)优先级
- **DEI(Drop Eligible Indicator)**:1位,标识在拥塞时可丢弃的帧
- **VID(VLAN Identifier)**:12位,VLAN ID,范围1-4094

### 1.3 VLAN的类型

1. **基于端口的VLAN(Port-based VLAN)**:
   - 最常见的VLAN类型
   - 根据交换机端口划分VLAN成员
   - 配置简单但灵活性较低

2. **基于协议的VLAN(Protocol-based VLAN)**:
   - 根据网络层协议(如IPv4、IPv6、IPX等)划分VLAN
   - 适用于多协议环境

3. **基于MAC地址的VLAN(MAC-based VLAN)**:
   - 根据源MAC地址划分VLAN
   - 设备移动时VLAN成员身份保持不变

4. **基于子网的VLAN(Subnet-based VLAN)**:
   - 根据IP子网划分VLAN
   - 需要三层交换机支持

## 2. Linux VLAN配置准备

### 2.1 硬件要求

在Linux系统上配置VLAN需要满足以下硬件条件:

1. **网络接口卡支持**:
   - 大多数现代网卡都支持VLAN
   - 某些老旧或低端网卡可能缺乏硬件VLAN支持
   - 推荐使用Intel、Broadcom等品牌的服务器级网卡

2. **交换机配置**:
   - 连接Linux主机的交换机端口需配置为Trunk模式
   - 确保交换机支持802.1Q VLAN协议
   - 示例交换机配置(以Cisco为例):
     ```cisco
     interface GigabitEthernet0/1
      switchport mode trunk
      switchport trunk allowed vlan 10,20,30
     ```

### 2.2 软件要求

1. **内核支持**:
   - 需要内核包含802.1Q VLAN模块
   - 检查内核配置:
     ```bash
     zgrep VLAN /proc/config.gz
     ```
   - 应有`CONFIG_VLAN_8021Q=y`或`CONFIG_VLAN_8021Q=m`

2. **必要工具**:
   - iproute2工具集(ip命令)
   - vconfig工具(较旧系统)
   - network-scripts(RHEL/CentOS 7及之前版本)
   - netplan(Ubuntu 18.04+)
   - NetworkManager(可选)

3. **驱动检查**:
   ```bash
   ethtool -i eth0 | grep driver
   lsmod | grep 8021q
   modprobe 8021q  # 如果模块未加载

3. 临时VLAN配置方法

3.1 使用ip命令配置VLAN

iproute2工具包中的ip命令是现代Linux系统配置网络的推荐方式。以下是使用ip命令配置VLAN的详细步骤:

  1. 创建VLAN接口

    ip link add link eth0 name eth0.10 type vlan id 10
    
    • eth0:物理接口名
    • eth0.10:创建的VLAN接口名
    • 10:VLAN ID
  2. 启用VLAN接口

    ip link set dev eth0.10 up
    
  3. 分配IP地址

    ip addr add 192.168.10.2/24 dev eth0.10
    
  4. 验证配置

    ip -d link show eth0.10
    

    输出应包含类似信息:

    4: eth0.10@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
      link/ether 00:1c:42:aa:bb:cc brd ff:ff:ff:ff:ff:ff
      vlan protocol 802.1Q id 10 <REORDER_HDR> 
    
  5. 删除VLAN接口

    ip link delete eth0.10
    

3.2 使用vconfig工具(传统方法)

在较旧的Linux系统中,可以使用vconfig工具配置VLAN:

  1. 安装vconfig(如未安装):

    apt install vlan  # Debian/Ubuntu
    yum install vconfig  # RHEL/CentOS
    
  2. 创建VLAN接口

    vconfig add eth0 10
    
  3. 启用VLAN接口

    ifconfig eth0.10 up
    
  4. 分配IP地址

    ifconfig eth0.10 192.168.10.2 netmask 255.255.255.0
    
  5. 删除VLAN接口

    vconfig rem eth0.10
    

4. 永久VLAN配置方法

4.1 RHEL/CentOS 7及之前版本

在RHEL/CentOS 7及更早版本中,可以使用network-scripts配置文件:

  1. 创建VLAN配置文件

    vi /etc/sysconfig/network-scripts/ifcfg-eth0.10
    
  2. 配置文件内容

    DEVICE=eth0.10
    BOOTPROTO=none
    ONBOOT=yes
    IPADDR=192.168.10.2
    NETMASK=255.255.255.0
    VLAN=yes
    PHYSDEV=eth0
    
  3. 重启网络服务

    systemctl restart network
    

4.2 RHEL/CentOS 8+和Fedora

在较新版本中,推荐使用NetworkManager和keyfile格式:

  1. 创建VLAN连接

    nmcli con add type vlan con-name eth0.10 ifname eth0.10 dev eth0 id 10
    nmcli con modify eth0.10 ipv4.addresses 192.168.10.2/24
    nmcli con modify eth0.10 ipv4.method manual
    nmcli con up eth0.10
    
  2. 验证配置

    nmcli con show eth0.10
    

4.3 Debian/Ubuntu系统

在Debian/Ubuntu系统中,可以配置/etc/network/interfaces:

  1. 编辑网络配置文件

    vi /etc/network/interfaces
    
  2. 添加VLAN配置

    auto eth0.10
    iface eth0.10 inet static
       address 192.168.10.2
       netmask 255.255.255.0
       vlan-raw-device eth0
    
  3. 应用配置

    ifup eth0.10
    

4.4 使用netplan(Ubuntu 18.04+)

  1. 创建或编辑netplan配置文件

    vi /etc/netplan/01-netcfg.yaml
    
  2. 示例配置

    network:
     version: 2
     renderer: networkd
     ethernets:
       eth0:
         dhcp4: no
     vlans:
       eth0.10:
         id: 10
         link: eth0
         addresses: [192.168.10.2/24]
         routes:
           - to: 0.0.0.0/0
             via: 192.168.10.1
         nameservers:
           addresses: [8.8.8.8, 8.8.4.4]
    
  3. 应用配置

    netplan apply
    

5. 高级VLAN配置

5.1 多个VLAN配置

在单个物理接口上配置多个VLAN:

# VLAN 10
ip link add link eth0 name eth0.10 type vlan id 10
ip addr add 192.168.10.2/24 dev eth0.10
ip link set eth0.10 up

# VLAN 20
ip link add link eth0 name eth0.20 type vlan id 20
ip addr add 192.168.20.2/24 dev eth0.20
ip link set eth0.20 up

5.2 VLAN与网桥结合

创建包含VLAN接口的网桥:

# 创建VLAN接口
ip link add link eth0 name eth0.100 type vlan id 100
ip link set eth0.100 up

# 创建网桥
ip link add name br100 type bridge
ip link set br100 up

# 将VLAN接口加入网桥
ip link set eth0.100 master br100

# 给网桥分配IP
ip addr add 192.168.100.2/24 dev br100

5.3 VLAN QoS配置

设置VLAN优先级(PCP):

ip link add link eth0 name eth0.10 type vlan id 10 egress-qos-map 0:1 1:2 2:3 3:4 4:5 5:6 6:7 7:0

这会将COS优先级0映射到VLAN优先级1,依此类推。

5.4 VLAN过滤

在某些场景下可能需要过滤特定VLAN:

# 只允许VLAN 10和20通过
ip link set eth0 type vlan_filtering on
bridge vlan add vid 10 dev eth0
bridge vlan add vid 20 dev eth0

6. 常见问题排查

6.1 VLAN接口无法通信

  1. 检查物理接口状态

    ip link show eth0
    

    确保物理接口处于UP状态

  2. 验证VLAN标签

    tcpdump -i eth0 -nn -e vlan
    

    查看是否收到带VLAN标签的帧

  3. 检查交换机配置

    • 确认交换机端口配置为trunk模式
    • 确认允许的VLAN列表包含配置的VLAN ID

6.2 VLAN接口创建失败

  1. 检查内核支持

    lsmod | grep 8021q
    

    如果无输出,加载模块:

    modprobe 8021q
    
  2. 验证网卡驱动支持

    ethtool -k eth0 | grep vlan
    

    查看是否支持”tx-vlan-offload”和”rx-vlan-offload”

6.3 性能问题

  1. 启用硬件加速

    ethtool -K eth0 tx-vlan-offload on
    ethtool -K eth0 rx-vlan-offload on
    
  2. 检查CPU使用率

    top -p $(pgrep ksoftirqd)
    

    高softirq可能表明VLAN处理未硬件加速

7. 安全注意事项

  1. VLAN跳跃攻击防护

    • 禁用交换机上的动态trunk协商(DTP)
    • 将未使用的端口分配到黑hole VLAN
  2. 私有VLAN配置

    bridge vlan add vid 100 dev eth0 pvid
    bridge vlan add vid 100 dev eth0 untagged
    
  3. 防火墙规则

    iptables -A INPUT -i eth0.10 -s 192.168.10.0/24 -j ACCEPT
    iptables -A INPUT -i eth0.10 -j DROP
    

8. 实际应用案例

8.1 服务器多租户隔离

在云环境中,使用VLAN实现租户网络隔离:

物理服务器:
  - eth0 (Trunk端口)
    |- eth0.100 (租户A)
    |- eth0.200 (租户B)
    |- eth0.300 (管理网络)

8.2 虚拟化环境网络配置

KVM虚拟机的VLAN配置示例:

<interface type='bridge'>
  <mac address='52:54:00:4d:77:d6'/>
  <source bridge='br100'/>
  <vlan>
    <tag id='100'/>
  </vlan>
  <model type='virtio'/>
</interface>

8.3 容器网络隔离

Docker中使用VLAN网络:

docker network create --driver macvlan \
  --subnet=192.168.10.0/24 \
  --gateway=192.168.10.1 \
  -o parent=eth0.100 \
  vlan100_net

9. 未来发展趋势

  1. VLAN与VXLAN的结合

    • 在大规模云环境中结合使用传统VLAN和overlay VXLAN
    • 实现更灵活的多租户网络隔离
  2. EVPN-VXLAN

    • 新兴的数据中心网络技术
    • 提供类似VLAN的二层隔离,但规模扩展到16百万个网络
  3. 基于P4的可编程VLAN处理

    • 使用P4等语言灵活定义VLAN处理逻辑
    • 实现更智能的网络流量管理

10. 总结

Linux系统中的VLAN配置提供了灵活的网络分段能力,从简单的临时配置到复杂的永久部署,Linux提供了多种工具和方法来满足不同需求。掌握VLAN配置技术对于构建安全、高效的网络环境至关重要。随着网络技术的发展,VLAN仍将继续在各种网络环境中发挥重要作用,特别是在需要网络隔离和流量管理的场景中。

通过本文介绍的各种配置方法和最佳实践,读者应能够在Linux系统上熟练配置和管理VLAN网络,解决常见的VLAN相关问题,并根据实际需求设计合理的VLAN网络架构。 “`

这篇文章提供了完整的Linux VLAN配置指南,涵盖了从基础概念到高级配置的各个方面,包括: 1. VLAN技术背景和原理 2. 不同Linux发行版的配置方法 3. 临时和永久配置方式 4. 高级应用场景和故障排查 5. 安全注意事项和未来趋势

文章结构清晰,内容详实,适合从初学者到高级管理员的不同读者群体。

推荐阅读:
  1. linux网卡配置
  2. Linux中双网卡的配置

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux

上一篇:怎么在solaris10下部署samba

下一篇:mysql共享表空间的扩容、收缩和迁移

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》