我正在尝试在我们的基于 Debian 的路由器/防火墙(作为 Hyper-V 上的虚拟机存在)、我们的核心交换机(HP Procurve 5406)和通过 WAN 透明局域网服务(TLS)链接连接的远程 HP ProCurve 2610 上设置额外的 VLAN。
让我们从网络边缘开始反向工作:Debian 服务器有一个连接到 eth0 的外部连接。内部接口是 eth1,它直接从我们的 Hyper-V 主机连接到 5406。eth1 连接到的端口设置为 Trk12。2610 连接到 Trk9(它中继了一大堆 VLAN - Trk9 是我们的 TLS 头)。我可以从两个交换机成功 ping 通我的 VLAN 的管理 IP 地址,但我无法从任何一个交换机 ping 通基于 Debian 的路由器和防火墙上新 VLAN 的虚拟接口。现有 VLAN 工作正常。
怎么回事?eth1 连接的端口是中继,现有 VLAN(ID 98)在中继上未标记,新 VLAN(ID 198)已标记。VLAN 198 在 5406 和 2610 上的 Trk9 上已标记。我可以从另一个相应的交换机 ping 另一个交换机的管理 IP(10.100.198.2 和 10.100.198.3)。VLAN 的该支路工作正常 - 但是我无法与 eth1.198 的 10.100.198.1 通信。我觉得我错过了一些基本的东西,但它是什么对我来说仍然是模糊的。我怀疑问题出在 vconfig 创建的 eth1.198 上。它应该传递标记的 VLAN 198 数据包,对吗?但它们似乎无法超越 5406。
现有 VLAN 98 上的通信正常进行。
从 Debian 盒子中:
eth1:
eth1 Link encap:Ethernet HWaddr 00:15:5d:34:5e:03
inet addr:10.100.0.1 Bcast:10.100.255.255 Mask:255.255.0.0
inet6 addr: fe80::215:5dff:fe34:5e03/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:12179786 errors:0 dropped:0 overruns:0 frame:0
TX packets:20210532 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1586498028 (1.4 GiB) TX bytes:26154226278 (24.3 GiB)
Interrupt:9 Base address:0xec00
eth1.198:
eth1.198 Link encap:Ethernet HWaddr 00:15:5d:34:5e:03
inet addr:10.100.198.1 Bcast:10.100.198.255 Mask:255.255.255.0
inet6 addr: fe80::215:5dff:fe34:5e03/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1496 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:72 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:3528 (3.4 KiB)
# 猫/proc/net/vlan/eth1.198:
eth1.198 VID: 198 REORDER_HDR: 0 dev->priv_flags: 1
total frames received 0
total bytes received 0
Broadcast/Multicast Rcvd 0
total frames transmitted 72
total bytes transmitted 3528
total headroom inc 0
total encap on xmit 39
Device: eth1
INGRESS priority mappings: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0
EGRESS priority mappings:
# IP 路由
10.100.198.0/24 dev eth1.198 proto kernel scope link src 10.100.198.1
206.174.64.0/20 dev eth0 proto kernel scope link src 206.174.66.14
10.100.0.0/16 dev eth1 proto kernel scope link src 10.100.0.1
default via 206.174.64.1 dev eth0
# iptables -L -v
Chain INPUT (policy DROP 6875 packets, 637K bytes)
pkts bytes target prot opt in out source destination
41 4320 ACCEPT all -- lo any anywhere anywhere
11481 1560K ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
107 8058 ACCEPT icmp -- any any anywhere anywhere
0 0 ACCEPT tcp -- eth1 any 10.100.0.0/24 anywhere tcp dpt:ssh
701 317K ACCEPT udp -- eth1 any anywhere anywhere udp dpts:bootps:bootpc
Chain FORWARD (policy DROP 1 packets, 40 bytes)
pkts bytes target prot opt in out source destination
156K 25M ACCEPT all -- eth1 any anywhere anywhere
215K 248M ACCEPT all -- eth0 eth1 anywhere anywhere state RELATED,ESTABLISHED
0 0 ACCEPT all -- eth1.198 any anywhere anywhere
0 0 ACCEPT all -- eth0 eth1.198 anywhere anywhere state RELATED,ESTABLISHED
Chain OUTPUT (policy ACCEPT 13048 packets, 1640K bytes)
pkts bytes target prot opt in out source destination
来自 5406:
# 显示 trk12 VLAN 端口详细信息
Status and Counters - VLAN Information - for ports Trk12
VLAN ID Name | Status Voice Jumbo Mode
------- -------------------- + ---------- ----- ----- --------
98 WIFI | Port-based No No Untagged
198 VLAN198 | Port-based No No Tagged
答案1
您的 Linux 机器是 Hyper-V VM,因此我假设是 Hyper-V 的虚拟交换机正在过滤您的标记流量。您可以简单地解决这个问题:使用与 eth1 相同的虚拟网络在 Hyper-V 中为 Debian VM 创建一个新接口,并将 VLAN ID 设置为 198。
(取自social.technet.microsoft.com)
它将作为 eth2 暴露给你的 Debian VM(大概),并且具有未标记帧。如果您想要不同的名称(例如 eth1.198),您应该能够使用以下命令重命名它重命名或 udev。