Rocky Linux 9.2 单网卡多 VLAN 路由配置
1. 需求
当前服务器网络:
eth0
IP:10.1.32.119/24
GW:10.1.32.1
eth0.31
VLAN:31
IP:10.1.31.119/24
GW:10.1.31.1
目标:
10.1.32.119 → 默认走 10.1.32.1 / eth0
10.1.31.119 → 回包固定走 10.1.31.1 / eth0.31
避免外部访问 10.1.31.119 时,回包从 eth0 → 10.1.32.1 返回。
2. 创建 VLAN 31
nmcli con add type vlan \
con-name eth0.31 \
ifname eth0.31 \
dev eth0 \
id 31
配置 IP:
nmcli con mod eth0.31 \
ipv4.method manual \
ipv4.addresses 10.1.31.119/24 \
ipv4.never-default yes \
ipv6.method disabled
启用:
nmcli con up eth0.31
检查:
ip -br addr
ip -d link show eth0.31
3. 方案一:明细静态路由
适用于已知远端网段的情况。
例如:
10.20.0.0/16
10.30.0.0/16
都需要通过 VLAN31:
nmcli con mod eth0.31 \
+ipv4.routes "10.20.0.0/16 10.1.31.1"
nmcli con mod eth0.31 \
+ipv4.routes "10.30.0.0/16 10.1.31.1"
应用:
nmcli con up eth0.31
验证:
ip route get 10.20.1.10
预期:
10.20.1.10 via 10.1.31.1 dev eth0.31 src 10.1.31.119
特点
优点:简单、直观
缺点:需要维护所有远端网段
4. 方案二:独立路由表 + Policy Routing
更适合当前需求。
原则:
source = 10.1.31.119
↓
table 131
↓
default via 10.1.31.1
↓
eth0.31
不需要提前知道远端是什么网段。
4.1 持久化配置
指定独立路由表:
nmcli con mod eth0.31 \
ipv4.route-table 131
添加 VLAN31 默认路由:
nmcli con mod eth0.31 \
+ipv4.routes "0.0.0.0/0 10.1.31.1 table=131"
添加源地址策略:
nmcli con mod eth0.31 \
+ipv4.routing-rules \
"priority 100 from 10.1.31.119/32 table 131"
应用:
nmcli con up eth0.31
以上配置通过 NetworkManager 持久化,服务器重启后不会丢失。
5. 检查配置
查看 NetworkManager 配置:
nmcli -f \
ipv4.addresses,ipv4.gateway,ipv4.routes,ipv4.route-table,ipv4.routing-rules \
con show eth0.31
预期:
ipv4.addresses: 10.1.31.119/24
ipv4.gateway: --
ipv4.route-table: 131
ipv4.routing-rules: priority 100 from 10.1.31.119/32 table 131
查看策略:
ip rule
预期包含:
100: from 10.1.31.119 lookup 131
查看表 131:
ip route show table 131
预期:
default via 10.1.31.1 dev eth0.31
10.1.31.0/24 dev eth0.31 scope link src 10.1.31.119
6. 最终验证
验证 VLAN31 地址:
ip route get 8.8.8.8 from 10.1.31.119
预期:
8.8.8.8 via 10.1.31.1 dev eth0.31 src 10.1.31.119
验证原有地址:
ip route get 8.8.8.8 from 10.1.32.119
预期:
8.8.8.8 via 10.1.32.1 dev eth0 src 10.1.32.119
最终效果:
10.1.31.119 → table 131 → 10.1.31.1 → eth0.31
10.1.32.119 → main table → 10.1.32.1 → eth0
7. 推荐
当前场景推荐使用:
VLAN 子接口
+
独立路由表
+
Source-Based Policy Routing
相比明细路由,不需要维护大量远端子网,更适合后续继续增加 VLAN。