Моя ситуация такова, что моя компания производит продукт, который (в настоящее время) требует, чтобы пользователь установил около дюжины виртуальных локальных сетей на управляемом коммутаторе, предназначенном для исключительного использования с нашим продуктом.
В настоящее время это работает следующим образом: пользователь вводит свои настройки конфигурации системы в собственный (на основе Qt) графический интерфейс, который мы предоставляем, и когда он это делает, графический интерфейс выводит «отчет о конфигурации VLAN», указывающий, какие VLAN должны быть. настроить и какие порты Ethernet должны входить в какие сети VLAN. Затем пользователь отвечает за использование веб-интерфейса коммутатора для ручного ввода этих параметров в коммутатор.
Этот «своего рода» работает, но требовать от пользователя ввода всех этих данных утомительно и чревато ошибками, поэтому мы хотели бы каким-то образом автоматизировать процесс: то есть, чтобы наша программа напрямую подключилась к управляемому коммутатору и сообщила коммутатор, какие VLAN настраивать и какие порты им назначать.
Как лучше всего это сделать? Это то, что можно сделать с помощью SNMP? Если да, то где мне начать реализацию такой функции? (У меня довольно большой опыт базового программирования TCP / IP, но я не знаю, с чего начать с SNMP.)
РЕДАКТИРОВАТЬ: Я вернулся к этому вопросу, чтобы исправить плохую ситуацию. Для будущих читателей идея системы, которая потребности 12 VLAN - это очень вероятно, это признак чего-то ужасного. Более того, идея автоматической настройки сетевого оборудования клиента для создания этих виртуальных локальных сетей с еще большей вероятностью может оказаться неправильной.
Благодаря исследовательским навыкам Тома О'Коннора было обнаружено, что продукт, с которым имеет дело автор вопроса может есть причина сделать это лучше, чем у большинства. Я подчеркиваю неопределенность ситуации, потому что, независимо от сценария, я считаю, что общая концепция все еще имеет серьезные фундаментальные недостатки. Я готов ошибаться.
Я снова оставляю замечание будущим читателям: если вы хотите сделать это, предположите, что вы делаете Не то, что нужно. Спросите совета у других. Другие, кто достоверно знают больше, чем вы, о теме управления сетью и вашем сценарии. Программно создавайте дюжину виртуальных локальных сетей только в том случае, если вы и несколько других профессионалов (желательно тех, кто не связан эмоционально или напрямую профессионально с проектом) согласны с тем, что это лучший способ сделать это.
Сказав вышесказанное, мой первоначальный ответ был выбран в отношении автора сообщения и должен был быть менее неформальным. Со своей стороны в преследовании я приношу прямые извинения Джереми Фриснеру, сообществу ServerFault в целом, и принимаю проступки. Это не представило общину в хорошем свете.
Остальная часть сообщения оставлена в незнании того, чего стоит.
Моя ситуация такова, что моя компания производит продукт, который (в настоящее время) требует, чтобы пользователь установил около дюжины виртуальных локальных сетей на управляемом коммутаторе, прежде чем продукт можно будет использовать.
Помимо того, что меня просто немного вырвало во рту ...
У меня вопрос, как лучше всего это сделать?
Я думаю, ты уже сделал все, что мог. Вам нужно будет создать какой-то сценарий, который может общаться с наиболее распространенными сетевыми устройствами с помощью их собственного предпочтительного метода. Например: каким-то образом создать сценарий, который общается с устройствами Cisco через SSH или последовательный кабель и настраивает сети VLAN, учитывает собственные конфигурации ваших клиентов, номера VLAN и т. Д. Сценарий будет очень сложным сценарием и даже в этом случае все равно будет вероятно, потребуется помощь мастера, чтобы убедиться, что выбраны правильные параметры. Это означает, что вам потребуется много времени, много усилий и множество особых случаев. На мой взгляд, вы постарались дать клиенту схему конфигурации. Они сами решают, как это поставить.
Если вашему продукту нужен десяток VLAN (безумие! СПАРТА!), то ваших клиентов не нужно держать в руках, создавая их всех. На самом деле, я бы подумал, что они хотеть чтобы убедиться, что сети VLAN адаптированы к их собственным системам, а не вырваны сценарием.
Теперь, когда я преодолел свой первоначальный гнев и замешательство при мысли о том, за что вы действительно заплатите, что создает «десятки VLAN» и хочет автоматически уничтожить настроить мои переключатели ...
Было бы намного, намного разумнее просто создать некоторую документацию или схему сети на основе значений, представленных заказчиком, и требований вашего продукта. Таким образом, указанный клиент может оценить, какие реальные изменения необходимо внести, и спланировать их соответствующим образом.
Создание виртуальных локальных сетей в производственной среде - крайне плохая вещь, которую нужно автоматизировать сторонней организацией, не имеющей глубоких знаний об этой среде.
Даже если ваш код был пуленепробиваемым (и с множеством версий, поставщиков и опций, я думаю, что это невыполнимая задача), вы можете случайно полностью заблокировать чью-то сеть, если пользователь неопытен или, возможно, недооценивает влияние изменения на сеть.
Это будет зависеть от коммутаторов, но много лет назад, когда я регулярно настраивал 10 коммутаторов с нуля на еженедельной основе, я написал все это на Perl с помощью Сеть :: Telnet :: Cisco. В наши дни я бы предпочел что-нибудь вроде Сеть :: SSH :: Perl.
Все, что вы в конечном итоге наберете на консоли, вы можете создать скриптом.
Предположим, вы используете коммутатор Cisco Catalyst (что, честно говоря, и должно быть) ... Тогда есть два варианта, о которых я могу думать.
1) Используйте Net :: Telnet :: Cisco, чтобы указать коммутатору сбросить конфигурацию на tftp-сервер, взять ее оттуда, проанализировать с помощью чего-нибудь (Augeas приходит на ум), а затем с помощью tftp верните новую копию.
2) Этот документ кажется, ты делаешь то, что хочешь. «Добавить VLAN к коммутатору Cisco Catalyst с SNMP»
Я не говорю, что это хорошая идея, но это так безусловно возможно
Если бы мне пришлось сделать что-то подобное с веб-коммутатором, вы, вероятно, нашли бы меня с Fiddler2 глядя на HTTP-запросы, а затем делая что-то грязное с httplib Python.
Есть способ сделать это, но это действительно зависит от типа переключателя. Если это устройство Cisco, вы должны иметь возможность создать конфигурацию шаблона по умолчанию и просто позволить им вставить ее в нее. В противном случае вы можете сделать это через SNMP, но идентификаторы OID могут меняться от поставщика к поставщику.
Не зная модель используемого переключателя, действительно сложно ответить правильно.
RFC2674 может помочь. Это будет нетривиальная реализация, но менее специфичная для поставщика, чем другие возможные решения. Он определяет Q-BRIDGE-MIB что позволяет изменять VLAN через SNMP.
Я не могу представить, какой у вас продукт, для которого требуется дюжина различных VLAN или как это физически подключено, но мне кажется, что это требует использования какой-то маркировки VLAN, такой как 802.1Q.
Если вы продаете коммутаторы и продаете продукт, вы можете придерживаться одного поставщика (например, cisco) и написать что-нибудь на ожидать или как предложили Джефф и другие.
Но опять же, VLAN опасны, и я надеюсь, что клиентская сеть действительно изучается перед развертыванием.