Existe uma boa maneira de configurar programaticamente VLANs em um switch gerenciado?

5

Minha situação é que minha empresa fabrica um produto que (atualmente) exige que o usuário configure uma dúzia ou mais de VLANs em um switch gerenciado dedicado ao uso exclusivo com nosso produto.

Atualmente, o modo como funciona é o seguinte: o usuário insere suas preferências de configuração do sistema em uma GUI proprietária (baseada em Qt) que fornecemos, e quando ele faz a interface gráfica gera um "relatório de configuração da VLAN" indicando quais VLANs precisam ser configurados e quais portas Ethernet devem ser membros de quais VLANs. O usuário é então responsável por usar a interface da Web do comutador para inserir manualmente essas configurações no comutador.

Esse "tipo de" funciona, mas exigir que o usuário insira todos esses dados é tedioso e propenso a erros, portanto, gostaríamos de automatizar de alguma forma o processo: ou seja, ter nosso programa conectado ao switch gerenciado diretamente e diga ao switch quais VLANs devem ser configuradas e quais portas atribuir a elas.

Qual é a melhor maneira de fazer isso? Isso é algo que pode ser feito usando o SNMP ? Se sim, onde procuro para começar a implementar essa função? (Sou bastante experiente com programação básica de TCP / IP, mas não sei por onde começar com o SNMP.)

    
por Jeremy Friesner 12.08.2011 / 01:29

8 respostas

2

RFC2674 pode ajudar. Esta seria uma implementação não trivial, mas menos específica do fornecedor do que outras soluções possíveis. Ele define o Q-BRIDGE-MIB que permite a alteração de VLANs via SNMP.

    
por 12.08.2011 / 09:14
14

EDIT: Voltei a essa pergunta para corrigir uma situação ruim. Para os futuros leitores, a idéia de um sistema que precisa de 12 VLANs é altamente provável de ser o sinal de algo terrivelmente errado. Além disso, a noção de configurar automaticamente o equipamento de rede de um cliente para criar essas VLANs tem uma probabilidade ainda maior de ser a Coisa Errada.

Graças às habilidades de investigação de Tom O'Connor, descobriu-se que o produto com o qual o autor da pergunta está lidando pode ter uma razão melhor para fazer isso do que a maioria. Eu enfatizo a incerteza na situação porque, independentemente do cenário, acredito que o conceito geral ainda tem graves falhas fundamentais. Estou disposto a estar errado.

Mais uma vez, deixo uma nota para os futuros leitores: se você quiser fazer isso, suponha que esteja fazendo a Coisa Errada. Peça conselhos aos outros. Outros que comprovam sabem mais do que você sobre o tópico de gerenciamento de rede e seu cenário. Somente crie programaticamente uma dúzia de VLANs se você e vários outros profissionais (de preferência aqueles que não estão vinculados profissional ou emocionalmente ao projeto) concordam que é a melhor coisa a fazer.

Tendo dito o acima, minha resposta original pegou no autor do post e deveria ter sido menos informal. Por minha parte no assédio eu ofereço desculpas diretas a Jeremy Friesner, a comunidade ServerFault como um todo e aceito irregularidades. Isso não tornou a comunidade boa luz.

O restante do post é deixado em sua ignobilidade pelo que vale a pena.

My situation is that my company makes a product that (currently) requires the user to set up a dozen or so VLANs on a managed switch, before the product can be used.

Além do fato de que eu simplesmente vomitei na boca um pouco ...

My question is, what is the best way to do this?

Acho que você já fez o melhor que pode. Você precisaria fazer algum tipo de script que possa falar com os dispositivos de rede mais comuns por meio de seu próprio método preferido. Por exemplo: de alguma forma, fazer um script que converse com dispositivos Cisco por SSH ou por um cabo serial e configure as VLANs e esteja ciente das configurações e números de VLAN de seus clientes e etc. O script seria um script muito complexo e, mesmo assim, ainda provavelmente precisa ser orientado por assistente para garantir que as opções corretas sejam selecionadas. Isso significa muito tempo, muito esforço e muitos casos especiais para levar em consideração. Na minha opinião, você fez o melhor possível para fornecer ao cliente um esquema de configuração. Cabe a eles para lidar com como é colocado em prática.

Se o seu produto precisar de uma dúzia de VLANs (Madness! SPARTA! ), seus clientes não precisarão ser manuseados para fazer todos eles. Na verdade, eu acho que eles querem para se certificar de que as VLANs são adaptadas para seus próprios sistemas e não vomitadas com um script.

    
por 12.08.2011 / 01:37
5

Agora que superei minha raiva inicial e confusão com o pensamento de algo que você realmente pagaria por isso cria "dúzias de VLANs" e quer automagicamente destruir configurar meus switches ...

Seria muito, muito mais prudente, apenas gerar alguma documentação ou um diagrama de rede com base nos valores enviados pelo cliente e nos requisitos do seu produto. Dessa forma, esse cliente pode avaliar quais alterações reais precisam ser feitas e planejar adequadamente.

Criar VLANs a qualquer momento em um ambiente de produção é uma coisa extremamente ruim de se querer automatizar por um terceiro que não tenha conhecimento profundo do ambiente.

Mesmo se o seu código fosse à prova de balas (e com a miríade de versões, fornecedores e opções, acho uma tarefa impossível), você poderia invadir completamente a rede de alguém inadvertidamente se o usuário fosse inexperiente ou talvez subestimasse o impacto de uma mudança na rede.

    
por 12.08.2011 / 01:56
4

Isso vai variar entre os switches, mas anos atrás, quando eu estava regularmente configurando 10s de switches do zero em uma base semanal, eu escrevi tudo em Perl com Net::Telnet::Cisco . Nos dias de hoje, eu provavelmente iria com algo como Net :: SSH :: Perl .

Qualquer coisa que você acabaria digitando no console, você pode criar um script.

    
por 12.08.2011 / 01:38
4

Supondo que você esteja usando um switch Cisco Catalyst (que, francamente, você deveria ser) Então, há duas opções em que posso pensar.

1) Use o Net :: Telnet :: Cisco para informar ao switch para descarregar a configuração para um servidor tftp, pegar de lá, analisar com algo ( augeas vem à mente), em seguida, faça uma cópia nova com tftp.

2) Este documento parece fazer o que você quer. "Adicionar uma VLAN a um switch Cisco Catalyst com SNMP"

Não estou dizendo que é uma boa ideia, mas certamente é possível

Se eu fosse desafiado a fazer algo semelhante com um switch baseado na Web, você provavelmente me encontraria com Fiddler2 procurando nas requisições HTTP, então fazendo algo sujo com o httplib do Python.

    
por 12.08.2011 / 09:30
3

Existe uma maneira de fazer isso, mas depende do tipo de switch. Se é um dispositivo Cisco, você deve ser capaz de criar uma configuração de modelo padrão e apenas deixá-los colá-lo nela. Caso contrário, você poderia fazê-lo via SNMP, mas os OIDs poderiam mudar de fornecedor para fornecedor.

Sem saber o modelo do comutador que está sendo usado, é realmente difícil responder adequadamente.

    
por 12.08.2011 / 01:38
2

Eu não posso imaginar qual é o seu produto que requer uma dúzia de VLANs diferentes ou como isso é cabeado fisicamente, mas parece-me que isso grita pelo uso de algum tipo de marcação de VLAN, como 802.1Q.

    
por 12.08.2011 / 01:43
-3

Se você vender os switches e vender o produto, pode ficar com um fornecedor (digamos, cisco) e escrever algo em esperar ou como Jeff e outros sugeriram.

Mas, novamente, as VLANs são perigosas e espero que a rede do cliente seja de fato estudada antes da implantação.

    
por 12.08.2011 / 04:28

Tags