# 如何在CentOS/RHEL系統中使用帶VLAN標記的以太網卡
## 1. VLAN技術概述
### 1.1 什么是VLAN
虛擬局域網(VLAN, Virtual Local Area Network)是一種將物理網絡劃分為多個邏輯網絡的技術。通過802.1Q協議標準,可以在單個物理網絡接口上配置多個虛擬接口,每個虛擬接口對應不同的VLAN ID(1-4094)。
### 1.2 VLAN的主要優勢
- **網絡分段**:隔離廣播域,提高網絡安全性
- **資源優化**:更靈活地分配網絡資源
- **管理簡化**:基于邏輯而非物理拓撲進行網絡管理
- **成本效益**:減少硬件需求,充分利用現有基礎設施
## 2. 準備工作
### 2.1 硬件要求
- 支持802.1Q VLAN標記的網卡
- 支持VLAN的交換機(需預先配置好VLAN)
### 2.2 軟件要求
- CentOS/RHEL 7或更高版本
- root或sudo權限
- 網絡管理工具(NetworkManager或傳統network服務)
### 2.3 檢查網卡支持情況
```bash
# 檢查是否加載了8021q模塊
lsmod | grep 8021q
# 若無輸出,則手動加載
sudo modprobe 8021q
# 永久生效(CentOS/RHEL 7+)
echo "8021q" | sudo tee /etc/modules-load.d/vlan.conf
# 基本語法
sudo nmcli connection add type vlan con-name <連接名稱> ifname <接口名稱>.<VLAN ID> dev <物理接口> id <VLAN ID>
# 實際示例(創建VLAN ID為100的接口)
sudo nmcli connection add type vlan con-name vlan100 ifname eth0.100 dev eth0 id 100
# 靜態IP配置
sudo nmcli connection modify vlan100 ipv4.addresses 192.168.100.10/24
sudo nmcli connection modify vlan100 ipv4.gateway 192.168.100.1
sudo nmcli connection modify vlan100 ipv4.dns "8.8.8.8 8.8.4.4"
sudo nmcli connection modify vlan100 ipv4.method manual
# DHCP配置
sudo nmcli connection modify vlan100 ipv4.method auto
sudo nmcli connection up vlan100
# 創建VLAN接口配置文件
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0.100
文件內容示例:
DEVICE=eth0.100
BOOTPROTO=static
IPADDR=192.168.100.10
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
ONBOOT=yes
VLAN=yes
PHYSDEV=eth0
sudo systemctl restart network
# 添加VLAN接口
sudo ip link add link eth0 name eth0.100 type vlan id 100
# 啟用接口
sudo ip link set dev eth0.100 up
# 分配IP地址
sudo ip addr add 192.168.100.10/24 dev eth0.100
# 添加默認路由
sudo ip route add default via 192.168.100.1 dev eth0.100
ip -d link show eth0.100
# 應看到類似以下輸出:
# 4: eth0.100@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
# link/ether 00:0c:29:xx:xx:xx brd ff:ff:ff:ff:ff:ff promiscuity 0
# vlan protocol 802.1Q id 100 <REORDER_HDR>
ping 192.168.100.1
ip route show
重復第3節步驟,為不同VLAN ID創建多個接口:
# 示例:添加VLAN 200
sudo nmcli connection add type vlan con-name vlan200 ifname eth0.200 dev eth0 id 200
sudo nmcli connection modify vlan200 ipv4.addresses 192.168.200.10/24
sudo nmcli connection modify vlan200 ipv4.method manual
sudo nmcli connection up vlan200
如果使用網卡綁定(bonding),需要先配置bonding接口:
# 創建bond0接口
sudo nmcli connection add type bond con-name bond0 ifname bond0 mode active-backup
# 添加從屬接口
sudo nmcli connection add type bond-slave ifname eth0 master bond0
sudo nmcli connection add type bond-slave ifname eth1 master bond0
# 創建VLAN接口
sudo nmcli connection add type vlan con-name bond0.100 ifname bond0.100 dev bond0 id 100
確保防火墻允許VLAN接口的流量:
# 對于firewalld
sudo firewall-cmd --permanent --zone=public --add-interface=eth0.100
sudo firewall-cmd --reload
# 或針對特定服務
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload
ip link show eth0
nmcli connection show
lsmod | grep 8021q
nmcli connection show vlan100 | grep autoconnect
# 查看內核VLAN信息
cat /proc/net/vlan/config
# 詳細網絡接口信息
ethtool -i eth0
# 檢查網絡流量
tcpdump -i eth0 -nn -e vlan
# 查看NetworkManager日志
journalctl -u NetworkManager -f
對于高性能場景,考慮: - 使用支持VLAN硬件卸載的網卡 - 啟用GRO/GSO功能:
ethtool -K eth0 gro on
ethtool -K eth0 gso on
如果使用Jumbo幀,確保整個網絡路徑支持:
ip link set dev eth0.100 mtu 9000
對于多隊列網卡,優化IRQ分配:
# 查看當前設置
ethtool -l eth0
# 設置隊列數(需網卡支持)
ethtool -L eth0 combined 8
示例playbook片段:
- name: Configure VLAN
hosts: servers
tasks:
- name: Ensure 8021q module is loaded
modprobe:
name: 8021q
state: present
- name: Create VLAN interface
nmcli:
type: vlan
conn_name: "vlan{{ vlan_id }}"
ifname: "{{ interface }}.{{ vlan_id }}"
dev: "{{ interface }}"
vlanid: "{{ vlan_id }}"
ip4: "{{ ip_address }}"
gw4: "{{ gateway }}"
state: present
創建配置文件/etc/systemd/network/eth0.100.netdev
:
[NetDev]
Name=eth0.100
Kind=vlan
[VLAN]
Id=100
創建網絡配置/etc/systemd/network/eth0.100.network
:
[Match]
Name=eth0.100
[Network]
Address=192.168.100.10/24
Gateway=192.168.100.1
在CentOS/RHEL系統上配置VLAN標記接口是一個相對簡單的過程,但需要注意以下幾點:
通過合理規劃VLAN架構,可以顯著提高企業網絡的靈活性、安全性和管理效率。對于復雜環境,建議結合網絡文檔詳細記錄VLAN分配和使用情況。 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。