Простое развертывание новых VLAN в большой среде

20

Как люди справляются с необходимостью добавления VLAN ко всем коммутаторам в своей сети (или даже к подмножеству устройств)? В настоящее время мы добавляем около 6 новых VLAN в неделю, и по мере роста сети это становится очень громоздкой и рискованной задачей.

SimonJGreen
источник

Ответы:

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.
бигмстоун
12

Я бы сказал, у вас есть несколько вариантов:

  1. Вручную. Занимает больше всего времени Safest? Зависит от того, кто делает конфиг.
  2. Используйте какой-нибудь инструмент, такой как Kiwi Cattools или Rancid и т. Д. Гораздо проще, но вам понадобится какая-то логика, чтобы проверить, существует ли VLAN, или вы можете испортить структуру имен. Может быть, не так уж много?
  3. Сценарий это! Используйте Perl, Python, Ruby или любой другой язык, с которым у вас есть опыт работы. На его сборку уходит некоторое время, но после этого вы можете повторно использовать скрипт для других задач настройки. Это можно настроить, но это зависит от того, насколько вам удобно кодирование.
  4. Используйте SNMP. Никогда не пробовал это. Потребуется RW на устройствах, и мне не очень нравится запускать RW на моих сетевых устройствах.
Даниэль Диб
источник
Есть ли у вас примеры того, как это делается по сценарию? Кроме того, я думал, что Rancid только для чтения, а не изменения?
SimonJGreen
2
Некоторое время назад в Python я создал инструмент для запуска команд с несколькими устройствами с ожидаемым ожиданием. Он принимает два CSV-файла в качестве аргументов. Один с командами, один с хозяевами. Можно найти по адресу matthewstone.net/2013/03/easyexpect. Я также работаю над гораздо более масштабным инструментом, дочерним компонентом EasyExpect, который называется ZeroCLI. Пока не сделано, но выложу здесь для полноты. github.com/mstone7699/ZeroCLI
bigmstone
1
Rancid предназначен для извлечения, но также поставляется с clogin, и вы можете использовать его для автоматизации входа на устройства. Он также принимает файл в качестве аргумента, где вы можете поместить команды, которые должны быть введены.
Даниэль Диб
11

Возможно, стоит обратить внимание на программное обеспечение для управления конфигурацией - управление сетевыми устройствами Puppet может легко добавить vlans к многочисленным устройствам Cisco (если вы используете Cisco).

Шейн Мэдден
источник
2
Можжевельник также начал марионеточный агент ( github.com/Juniper/puppet-netdev-stdlib-junos )
январь-Филипп
11

Проблема, с которой вы сейчас сталкиваетесь, заключается в том, что вы попадаете в смешанную среду. Вы упомянули, что движетесь в сторону Juniper от Cisco? В чистой среде Cisco VTP v3 с паролями был бы подходящим вариантом и поддерживает более 4 тыс. VLAN. В мире можжевельника эквивалентом будет GVRP .

Возможно, вы сможете использовать некоторые формы централизованного управления, такие как Puppet, как было упомянуто Шейном Мэдденом, SolarWinds , HP OpenView и т. Д., Но у вас все равно останется два сценария для управления.

Я бы постарался сделать все как можно более простым ( KISS ), пока вы переходите от одного поставщика к другому. Использование VTP и GVRP на соответствующем оборудовании, вероятно, является подходящим способом и не добавляет потенциальных затрат для других решений или сложности управления другой новой вещью.

Питер
источник
7

Возможно, VTP - ваш ответ. Как и любой «автоматизированный» инструмент, он имеет свои риски, но вы можете уменьшить их при правильном планировании. Вы также должны немного почитать, чтобы убедиться, что вы понимаете, как это работает, или вы можете непреднамеренно создавать свои собственные проблемы (опять же, как и любой автоматизированный инструмент).

Я бы порекомендовал VTP версии 3, так как это помогает защитить от некоторых потенциальных проблем и дает дополнительные преимущества.

Вы можете легко найти сотни документов, выполнив поиск «конфигурация vtp версии 3» в выбранной вами поисковой системе.

YLearn
источник
К сожалению, мы недавно достигли предела 200 VLAN для VTP. Мы также начали переходить на Можжевельник.
SimonJGreen
С какой платформой вы устанавливаете ограничение 200 VLAN VTP?
Йосеф Гансбург
1
Я никогда не слышал о пределе VLAN 200 VLAN, и мы работаем над 200 VLAN через VTP. Я определенно хотел бы услышать больше о том, что вы имеете в виду. VTP версии 1 и 2 ограничены использованием только VLAN 1-1001, как указано в ISL, но версия VTP 3 поднимается до dot1Q 4095. Существует ограничение на количество локальных VLAN, которые может поддерживать коммутатор, но вы не можете нарушать это локально даже в прозрачном режиме.
YLearn
1
использование VTP довольно рискованно, легко взломать ваш датацентр
Jan-Philipp
@ Ян-Филипп, объясни, пожалуйста, свое заявление, вместо того, чтобы просто сказать "это рискованно"? Почему это рискованно, IYO?
pboin
7

SolarWind «s Network Configuration Manager можно запускать сценарии в устройствах IOS и некоторых других.

Это также делает вещи как ночные резервные копии конфигурации, отчеты об изменениях и аудиты конфигурации. Их цены не так уж и ужасны, но они объединяют NCM со своим монитором производительности сети Orion, и я не уверен, что вы сможете запускать NCM отдельно.

Дэйв Нунан
источник
Я считаю, что NCM все еще предлагается как самостоятельный продукт, но он становится все более интегрированным с NPM с каждым новым выпуском. Если у вас большая среда, NCM стоит своего веса только для резервного копирования и отчетов об изменениях конфигурации.
Harrijs
6

Похоже, у вас свернуто ядро. Это верно?

Один из способов справиться со слишком многими изменениями, основанными на добавлении новых сетей VLAN, - это приблизить границу L3 к доступу. Требуется некоторая предварительная работа, но если ваш дизайн хорошо спланирован и продуман, необходимо добавить новые VLAN с задачей устройства от одного до трех (в зависимости от того, останавливается ли L3 на уровнях распределения или доступа).

Вы также получаете множество других преимуществ, включая более быструю конвергенцию в случае потери ссылки.

Джонатан Дэвис
источник
3

Я использую ruby ​​с гемами net-scp и net-ssh для автоматизации задач с нашим сетевым оборудованием. Это довольно короткий скрипт для выполнения команд (отрывок, а не готовый продукт):

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 и несколько коротких сценариев, вы можете организовать все конфигурации вашего оборудования с помощью различий изменений и того, кто их внес (при условии, что ваши инженеры извлекают конфигурации и фиксируют их после завершения работы).

Кроме того, само собой разумеется, но на всякий случай всегда проверяйте работу в сценариях в лаборатории перед запуском на производственном оборудовании. Особенно при выполнении команд и изменении конфигурации. Тест, тест, тест.

some_guy_long_gone
источник
0

если вы используете тот же конструктор (например, Cisco) для сетевых устройств, SecureCRT - ваш лучший выбор. это SSH-клиент, который дает вам возможность отправлять команды на несколько терминалов во время продажи:

secrureCRT

чтобы настроить это: 1. подключиться ко всем вашим устройствам на разных вкладках 2. перейти к просмотру 3. проверить опцию «окно чата» 4. щелкнуть правой кнопкой мыши на окне -> проверить «отправить чат на все вкладки»

Снейк Эрнандес
источник
-1

Использование может использовать NOC, NOC Project это масштабируемая, высокопроизводительная и открытая система OSS для ISP. Вы можете легко добавить VLAN через всю сеть.

t3mp
источник