大規模な環境で新しいVLANを簡単に展開する


20

ネットワーク上のすべてのスイッチ(またはデバイスのサブセット)にVLANを追加する必要性をどのように処理しますか?現在、毎週約6個の新しいVLANを追加していますが、ネットワークの成長に伴い、これは非常に面倒で危険な作業になります。

回答:


17

これは、デバイスのリスト(devicelist.txtというファイルの各行に1つ)にtelnetして、いくつかのコマンドを構成するためのPerlの本当に基本的なスクリプトテンプレートです。あなたが何をしているのかに応じて、それは良いスタートを提供するはずです。

  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

12

いくつかの選択肢があると思います。

  1. 手動で。ほとんどの時間がかかります。最も安全ですか?構成を行うものに依存します。
  2. Kiwi CattoolsやRancidなどのツールを使用します。はるかに簡単ですが、VLANが既に存在するか、命名構造を台無しにする可能性があるかどうかを確認するには、何らかのロジックが必要になります。たぶん大したことじゃない?
  3. スクリプトを!Perl、Python、Rubyなどの経験のある言語を使用してください。ビルドには時間がかかりますが、一度実行すると、スクリプトを他の構成タスクに再利用できます。それはカスタマイズ可能ですが、あなたが快適なコーディングであるかどうかに依存します。
  4. SNMPを使用します。これを試したことはありません。デバイスでRWが必要になりますが、ネットワークデバイスでRWを実行するのはあまり好きではありません。

スクリプト化されている例はありますか?また、私はRancidは単に修正するためではなく、読むためだけのものだと思いましたか?
SimonJGreen

2
Pythonでしばらく前に複数のデバイスに対してコマンドを実行するツールを作成しました。引数として2つのCSVファイルを取ります。1つはコマンド、もう1つはホストです。matthewstone.net/2013/03/easyexpectで見つけることができます 。また、EasyExpectの子であるZeroCLIと呼ばれるはるかに大規模なツールを開発しています。まだ完了していませんが、完全を期すためにここに配置します。github.com/mstone7699/ZeroCLI
bigmstone

1
Rancidは取得用ですが、cloginが付属しており、デバイスへのログインを自動化するためにそれを使用できます。また、入力するコマンドを置くことができるファイルを引数として受け取ります。
ダニエルディブ


11

現在直面している課題は、混合環境に移行することです。シスコからのジュニパーに向かっていると言っていますか?純粋なシスコ環境では、パスワードを使用したVTP v3が4k VLANを超えてサポートします。ジュニパーネットワークスでは、GVRPに相当します

Shane Madden、SolarWinds、HP OpenViewなどで言及されたPuppetなど、何らかの形態の集中管理を使用できる場合がありますが、管理するスクリプトはまだ2つあります。

現時点では、あるベンダーから別のベンダーに移行する際に、できる限りシンプル(KISS)に保つようにします。適切なハードウェアでVTPとGVRPを使用するのがおそらく方法であり、他のソリューションに潜在的なコストを追加したり、別の新しいものを管理する複雑さを追加したりしません。


7

VTPがあなたの答えかもしれません。他の「自動化された」ツールと同様、リスクもありますが、適切な計画を立てることでそれらを軽減できます。また、その仕組みを理解するために読んでおく必要があります。または、うっかり自分の問題を作成できることを確認してください(これも自動化ツールと同様です)。

VTPバージョン3をお勧めします。これは、潜在的な問題のいくつかから保護するのに役立ち、追加の利点を提供します。

選択した検索エンジンで「vtp version 3 configuration」を検索することにより、数百のドキュメントを簡単に見つけることができます。


残念ながら、先ほどVTPで200のVLAN制限に達しました。また、ジュニパーへの移行を開始しました。
SimonJGreen

200 VLAN VTPの制限に達しているプラ​​ットフォームは何ですか?
ヨセフガンズバーグ

1
VTP 200 VLANの制限について聞いたことがありません。VTPを介して200以上のVLANを管理しています。私はあなたが何を意味するのかをもっと聞きたいです。VTPバージョン1および2は、ISLで指定されたVLAN 1-1001のみを使用するように制限されていますが、VTPバージョン3はdot1Q 4095になります。スイッチがサポートできるローカルVLANの数には制限がありますが、できませんタンペアレントモードでもローカルでこれに違反します。
YLearn

1
VTPを使用すると、簡単にデータセンターbreakeし、非常に危険である
月-フィリップ・

@ Jan-Philipp、「危険だ」と言うのではなく、声明を説明してください。 なぜ危険なのですか、IYO?
pboin

7

SolarwindのNetwork Configuration Managerは、IOSデバイスおよびその他のデバイスでスクリプトを実行できます。

また、夜間の構成バックアップ、変更レポート、構成監査なども実行します。彼らの価格設定は恐ろしいものではありませんが、彼らはOrion Network Performance MonitorとNCMを統合しているので、NCMを個別に実行できるかどうかはわかりません。


NCMはまだスタンドアロン製品として提供されていますが、新しいリリースごとにNPMとの統合が進んでいると思います。大規模な環境を使用している場合、NCMはバックアップと構成変更のレポートのためだけに価値があります。
ハリジス

6

コアが折りたたまれているようです。あれは正しいですか?

新しいVLANの追加に基づいて多くの変更を処理する1つの方法は、L3境界をアクセスに近づけることです。事前にいくつかの作業が必要ですが、設計が適切に計画され、考え出された場合、新しいVLANを1から3のデバイスタスクに追加する必要があります(L3がディストリビューションレイヤーまたはアクセスレイヤーで停止するかどうかによって異なります)。

リンクが失われた場合の収束の高速化など、他の多くの利点もあります。


3

net-scpおよびnet-ssh gemでrubyを使用して、ネットワーク機器のタスクを自動化します。コマンドを実行するための非常に短いスクリプトです(完成品ではなく抜粋):

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クライアントです。

secrureCRT

1.異なるタブですべてのデバイスに接続する2.表示する3. [チャットウィンドウ]オプションをチェックする4.ウィンドウを右クリックする-> [すべてのタブにチャットを送信する]をチェックする


-1

NOC、NOC Projectを使用できます。これは、ISP用のスケーラブルで高性能なオープンソースOSSシステムです。ネットワーク全体にVLANを簡単に追加できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.