思科和Linux以及Vlans

我似乎对VLAN如何在 Linux上运行有一些基本的误解,我希望这里的好人可以教育我.

演员:一个Cisco 3560,一个VLAN和一个Linux盒子[1].

Cisco  ---------------  Linux
    ge0/1           eth0

思科有一个Vlan 37接口,IP地址为10.40.37.252/24.我想在Linux机器上放置10.40.37.1/24.

当思科解封vlan 37时,一切正常[2]:

# Cisco 
interface Vlan37
    ip address 10.40.37.252/24

interface GigabitEthernet 0/1
    switchport mode access
    switchport access vlan 37

# Linux
ip link set eth0 up
ip addr add 10.40.37.1/24 dev eth0

$ping 10.40.37.252 && echo It works

但是,当我将端口设置为中继并在Linux端分配vlan 37时,它将停止工作:

# Cisco
interface GigabitEthernet 0/1
    switchport trunk encapsulation dot1q
    switchport mode trunk
    ! [3] [4] [7]

# Linux
vconfig add eth0 37
ip link set eth0.37 up
ifconfig eth0 0.0.0.0 up # ensure no address
ip addr add 10.40.37.1/24 dev eth0.37

$ping 10.40.37.252 || echo Why does this not work

我在这里想念的是什么?

编辑:解决方案:

Shane关于mac地址表的问题让我得到了一个解决方案:使用“ip addr”在每个VLAN子接口上设置不同的唯一L2(MAC)地址,它突然起作用.

我没有尝试的另一个可能的解决方案(因为我的硬件太旧)使用“ethtool”来禁用NIC本身的VLAN卸载,并强制内核处理标签.

谢谢谢恩!

编辑:根据评论更多信息:

总体目标是让三个vlan(public,private,oam& p)终止于linux盒子上的三个单独的IP地址,不同的应用程序绑定到本地地址.如果有必要,我可以进一步扩展,但我正在努力保持问题描述和讨论简单,因为在我有三个vlans工作之前,我需要一个工作.

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...