对于VLAN在Linux上的工作方式,我似乎有一些基本的误解,我希望这里的好人可以教育我。
演员:一台Cisco 3560,一个VLAN和一个Linux机器[1]。
Cisco --------------- Linux
ge0/1 eth0
思科具有Vlan 37接口,其IP地址为10.40.37.252/24。我想将10.40.37.1/24放在Linux机器上。
当思科解封装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(公共,私有,OAM&P)终止于Linux机器上的三个单独IP地址,并将不同的应用程序绑定到本地地址。如有必要,我可以进一步扩展,但是我试图使问题描述和讨论保持简单,因为在我可以使用三个VLAN之前,我需要一个正在工作。:)
Antoine- > ifup与ifconfig没什么区别。
Pepoluan- >我假设这就是您想要的。请注意,phy驱动程序缺少引用显然是正常的。[5]
$ lsmod | grep 802
8021q 25545 1 cxgb3
杂工 ->
$ ifconfig eth0
eth0 Link encap: Ethernet HWaddr 00:17:08:92:87:22
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 [...]
TX packets:31932 errors:0 dropped:0 overruns:0 carrier:0
$ ifconfig eth0.37
eth0.37 Link encap: Ethernet HWaddr 00:17:08:92:87:22
UP BROADCAST RUNNING MULTICAST MUT:1500 Metric:1
RX packets: 0 [...]
TX packets:32024 errors:90 dropped:0 overruns:0 carrier:0
$ cat /proc/net/vlan/config
VLAN Dev Name | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.37 | 37 | eth0
Chuck- > wirehark和/或tcpdump没有显示标签,但是由于内核中vlan处理和pcap的处理顺序,这显然是Linux上的正常限制[6]。同样,未标记的VLAN设置为1 [7]。
[1]我在CentOS 5.5和Ubuntu 11.04上都尝试过,并且都存在相同的问题。
[2]请注意,这些配置不是剪切粘贴,因此此处的任何拼写错误都只是我的记性不好。
[3]启用或禁用“非协商”对问题没有影响。
[4]链路上的VLAN 37显示为活动且未修剪,因此“允许”不是问题。
[5] serverfault:在网卡上启用8021q
[6] http://wiki.wireshark.org/CaptureSetup/VLAN#Linux
[7]本机(未标记)VLAN为1。使用“ switchport trunk native vlan 1”手动设置它无效。
lsmod
发布到Linux机器上吗?
ifconfig eth0.37
和/或ifconfig -a
什么样子?
/proc/net/vlan/config
?
sho mac address-table vlan 37
?