在大型环境中轻松部署新的VLAN


20

人们如何处理将VLAN添加到其网络(甚至设备的子集)上的所有交换机的需求?目前,我们每周要添加大约6个新的VLAN,随着网络的发展,这已成为一项非常繁琐且危险的任务。

Answers:


17

这是Perl中一个非常基本的脚本模板,用于远程登录到设备列表(在名为devicelist.txt的文件中的每一行上)并配置一些命令。根据实际操作,应该提供一个良好的开端。

  use Net::Telnet::Cisco;

    # read in a list of devices
    my @devicelist;
    open(DATA, "<devicelist.txt") || die "Can't open file!";
    while (<DATA>) {
            chomp;
            push( @devicelist, $_);
    }

    # loop through the devices
    foreach $hostname (@devicelist)
    {
            # telnet to device
            my $cs = Net::Telnet::Cisco->new(Host => $hostname);

            # login, go enable, disable paging, go into config mode
            $cs->login( "username", "password" );
            $cs->enable( "enable_password" );
            $cs->cmd( 'terminal length 0' );
            $cs->cmd( 'config t' );

            # configure the device
            $cs->cmd( 'vlan 100, 200, 300' );
            $cs->cmd( 'interface Ethernet0' );
            $cs->cmd( ' switchport access vlan 100' );

            # exit config mode and write the config
            $cs->cmd( 'end' );
            $cs->cmd( 'wr mem' );

            # close the connection
            $cs->close;
    }

以下是有关Net :: Telnet :: Cisco的更多详细信息。


4
我唯一的警告是一个很明显的警告。这使用telnet,并以纯文本形式在网络上发送密码。建议使用SSH。
bigmstone 2013年

12

我会说您有两种选择:

  1. 手动。需要大多数时间。最安全?取决于一个做配置。
  2. 使用Kiwi Cattools或Rancid等工具。容易得多,但是您需要某种逻辑来检查VLAN是否已经存在,否则可能会破坏命名结构。也许没什么大不了的?
  3. 编写脚本!使用Perl,Python,Ruby或任何您有经验的语言。构建它需要一些时间,但是一旦完成,您就可以将脚本重用于其他配置任务。这将是可自定义的,但这取决于您是否喜欢编码。
  4. 使用SNMP。从来没有尝试过。在设备上需要使用RW,我真的不喜欢在网络设备上运行RW。

您是否有编写脚本的示例?我还以为兰西德只是为了阅读,而不是修改?
SimonJGreen

2
我早在Python中构建了一个工具,可以针对多个设备运行命令。它需要两个CSV文件作为参数。一个带有命令,一个带有主机。可以在matthewstone.net/2013/03/easyexpect上找到。 我还在研究一个更大的工具,它是EasyExpect的子代,称为ZeroCLI。尚未完成,但请放在此处以求完整。github.com/mstone7699/ZeroCLI
bigmstone 2013年

1
Rancid是用于检索的,但它也附带了clogin,您可以使用它来自动登录设备。它还将文件作为参数,您可以在其中放置应输入的命令。
丹尼尔·迪伯


11

您现在面临的挑战是您将进入混合环境。您提到您假设我从思科迈向瞻博网络吗?在纯Cisco环境中,带密码的VTP v3将成为支持4k vlan的方式。在瞻博网络世界中,相当于GVRP

您可能可以使用某种形式的集中管理,例如Shane Madden,SolarWinds和HP OpenView等提到的Puppet,但是您仍然需要管理两个脚本。

当您从一个供应商过渡到另一个供应商时,我现在将尽量保持简单(KISS)。在适当的硬件上使用VTP和GVRP可能是可行的方法,不会增加其他解决方案的潜在成本或管理新事物的复杂性。


7

VTP可能就是您的答案。像任何“自动化”工具一样,它具有风险,但是您可以通过适当的规划来减轻风险。您还应该阅读一些内容,以确保您了解其工作原理,或者无意中造成了自己的问题(同样,就像任何自动化工具一样)。

我建议使用VTP版本3,因为它可以帮助避免某些潜在的问题并提供其他好处。

通过在您选择的搜索引擎中搜索“ vtp版本3配置”,您可以轻松找到数百个文档。


不幸的是,不久前我们达到了VTP的200 VLAN限制。我们也已经开始转移到瞻博网络。
西蒙·格林(SimonJGreen)

您在哪个平台上达到200 VLAN VTP限制?
优素福·冈斯堡

1
我从未听说过VTP 200 VLAN的限制,而通过VTP,我们已经超过200个VLAN。我很想听听您的意思。VTP版本1和2仅限于使用ISL指定的VLAN 1-1001,但是VTP版本3达到dot1Q4095。交换机可以支持的本地VLAN数量是有限的,但是您不能即使在透明模式下也要在本地违反此规定。
YLearn

1
使用VTP很有风险,很容易破坏您的数据中心
Jan-Philipp

@ Jan-Philipp,请您解释一下您的说法,而不仅仅是说“有风险”? 为什么会有风险,IYO?
pboin

7

Solarwind的网络配置管理器可以在IOS设备和其他一些设备中运行脚本。

它还执行每晚配置备份,更改报告和配置审核之类的操作。他们的定价并不可怕,但是他们正在将NCM与Orion Network Performance Monitor合并,我不确定您是否可以再单独运行NCM。


我相信NCM仍将作为独立产品提供,但随着每个新版本的发布,它都越来越与NPM集成在一起。如果您的环境很大,那么NCM仅适合于备份和配置更改报告。
harrijs

6

听起来您的核心已经崩溃。那是对的吗?

一种基于添加新VLAN来处理太多更改的方法是将L3边界移到更靠近访问的位置。它需要先做一些工作,但是如果您的设计计划周密,并且经过深思熟虑,它应该使添加新VLAN成为一到三个设备任务(取决于L3是在分发层还是在访问层停止)。

您还可以从中获得许多其他好处,包括在丢失链接的情况下加快收敛速度​​。


3

我将ruby与net-scp和net-ssh gem一起使用,以通过我们的网络设备自动执行任务。这是一个很短的脚本来执行命令(摘录,而不是成品):

begin
    Net::SSH.start(fqdn, username, :password => loginPassword) do |session|
        output = ""

        channel = session.open_channel do |ch|
            ch.send_channel_request "shell"
            ch.on_data do |ch, data|
                output += data
            end

            ch.send_data "conf t\n\r"
            #Some tasks here
            ch.send_data "exit\n\r" #Exit config mode
            ch.send_data "exit\n\r" #Exit device

        end

        # Wait for everything to complete
        channel.wait
    end
rescue Exception=>e
    errorOutput = fqdn + ": " + e.to_s
    puts errorOutput
    puts output
    return device
end
return output

请记住,您应该有一个空白的loginPassword变量。如果为空,它将使用您的RSA公钥进行登录(在HP ProCurve和Cisco 15.X平台上受支持)。

使用git之类的东西和一些简短的脚本,您可以组织所有设备配置以及不同的更改以及进行更改的人员(假设您的工程师提取配置并在工作完成后提交)。

同样,它应该不言而喻,但以防万一,在生产设备上运行之前,务必在实验室中测试脚本化的工作。特别是在执行命令和更改配置时。测试,测试,测试。


0

如果您对网络设备使用相同的构造函数(例如Cisco),则SecureCRT是您的最佳选择。它是一个SSH客户端,可让您在销售时在多个终端上发送命令:

安全CRT

进行设置:1.连接到不同选项卡中的所有设备2.转到视图3.选中“聊天窗口”选项4.右键单击窗口->选中“将聊天发送到所有选项卡”


-1

可以使用NOC,NOC Project,它是ISP的可扩展,高性能和开源OSS系统。您可以轻松地在整个网络中添加VLAN。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.