从 Cisco Switch Dot1Q Trunk 中意外删除了允许的 VLAN

网络工程 思科 cisco催化剂 VLAN cisco 命令 点1q
2021-07-26 14:02:48

我正在向两个 Cisco Catalyst 交换机(3750 的)之间的现有中继端口添加一个新的 VLAN。在添加新 VLAN 的过程中,似乎我已经删除了中继上现有的允许 VLAN...这怎么可能?

现有中继端口配置:

SW-LAB-1#show run int g1/0/49
Building configuration...

Current configuration : 255 bytes
!
interface GigabitEthernet1/0/49
 description SW-LAB-2 G1/0/48
 switchport trunk encapsulation dot1q
 switchport trunk native vlan 10
 switchport trunk allowed vlan 10,20
 switchport mode trunk
 switchport nonegotiate
 ip dhcp snooping trust
end

我使用以下语法也允许 VLAN 30:

SW-LAB-1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
SW-LAB-1(config)#interface g1/0/49
SW-LAB-1(config-if)#switchport trunk allow vlan 30

但是现在,我在 g1/0/49 上运行的配置缺少 VLAN 10 和 20!

<SNIP>
switchport trunk allowed vlan 30
</SNIP>

我错过了什么?

4个回答

您需要使用以下命令将 VLAN 30 添加到 Cisco Catalyst 交换机上的现有 Dot1Q 中继:

switchport trunk allowed vlan add 30

否则 IOS 只会认为您正在尝试覆盖现有配置,并且会意外删除一组允许的 VLAN。

类似地,您可以使用“remove”代替“add”来仅删除一个 VLAN。请参阅下面的整个语法。(它实际上与 Cisco Nexus OS 或 IOS 中的语法相同,仅供参考。)

SW-FOO(config-if)#switchport trunk allowed vlan ?
  WORD    VLAN IDs of the allowed VLANs when this port is in trunking mode
  add     add VLANs to the current list
  all     all VLANs
  except  all VLANs except the following
  none    no VLANs
  remove  remove VLANs from the current list

另一种选择是将所有允许的 VLAN 放入命令中,如下所示:

switchport trunk allowed vlan 10,20,30

此选项更耗时,但也有效。

要将 VLAN 添加到中继,您必须使用以下语法:

switchport trunk allowed vlan add 30

要从中继中删除 VLAN,您需要使用以下remove语法:

switchport trunk allowed vlan remove 30

当您不使用添加/删除时,您是在告诉端口配置新的 VLAN。

这是一个常见的错误。如果您的平台支持它,您可以使用Cisco Embedded Event Manager来禁止这种有害语法:

event manager applet forbid-vlan-trunk
 event cli pattern "switchport trunk allowed vlan\s+[0-9]" skip yes sync no
 action 1.0 syslog msg "switchport trunk allowed vlan MUST be configured via add/remove"

就像之前的答案中所述,“添加/删除/无”是您(唯一的)朋友...

switchport trunk allowed vlan add 30

正如 ytti 所提到的,我建议在 TACACS 中删除这样的危险命令,您不能在不添加/删除/无的情况下执行“switchport trunk allowed vlan X”。

为什么我添加这个答案是因为布雷特的第二个建议

switchport trunk allowed vlan 10,20,30

真是个坏主意

假设您使用 vlan 900 进行管理(顺便说一句愚蠢的想法,您会明白为什么)

显示运行的端口配置:

interface Gi1/0/1
 ...
 switchport trunk allowed vlan 1,2,5,51,101,235,245,247
 switchport trunk allowed vlan add 507,539,900,1058,2677
 ...

请注意,cisco 使用 2 行以便于准备和复制/粘贴,第二行带有“添加”...为什么不呢?

现在,假设我想添加 vlan 30 ...

第一个解决方案:

 switchport trunk allowed vlan add 30

伟大的!它的工作,让我们现在喝啤酒。

第二种解决方案:

 switchport trunk allowed vlan 1,2,5,30,51,101,235,245,247

还有……嗯……嘿?跆拳道!!!我无法粘贴命令的第二部分

 switchport trunk allowed vlan add 507,539,900,1058,2677

不幸的是,交换机上不再配置 vlan 900,交换机无法访问,因为它用于管理。

所以 :

  • 始终使用添加/删除/无
  • 使用小的 Vlan ID 进行管理(<10)

简短回答:有两种指定 vlan 的模式:一种显式设置(覆盖)列表 [这是您使用的那个],另一种添加或删除指定的 vlan。

(每个供应商的做法都不一样,所以请谨慎行事。)