我似乎对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工作之前,我需要一个工作.