quinta-feira, 8 de maio de 2025

UFCD 0773 - Configurando controladores de rede

 




Configurando controladores de rede


O Cisco Packet Tracer suporta uma versão simplificada do dispositivo Network Controller.

Visão geral

Os dispositivos do controlador de rede (NC) fornecem um meio de gerenciar, monitorar e configurar dispositivos de rede suportados por meio de uma interface gráfica de usuário e APIs.

Cadê?

O controlador de rede pode ser encontrado na categoria Dispositivos finais na paleta de dispositivos, conforme mostrado abaixo:

Configuração básica

Em um nível básico, você pode configurar as Configurações Globais e as Configurações de Interface de um Controlador de Rede da mesma forma que faria em um PC comum. Além disso, os controladores podem ser acessados ​​de fora do Packet Tracer via APIs HTTP REST. Esse recurso é chamado de Acesso ao Mundo Real. Seu uso e configuração serão explicados em detalhes nas seções a seguir.

Conectando-o

O uso do Controlador de Rede em uma rede é normalmente feito por meio de sua interface web, acessível a partir de um navegador web em um PC conectado ao controlador. Abaixo, mostramos uma maneira simples de conectar um PC ao dispositivo NC. Existem duas interfaces Ethernet físicas no controlador. Em uma configuração típica, uma interface será usada para acesso e gerenciamento do NC, enquanto a outra interface serve para o controlador se conectar e controlar a rede gerenciada.

Os usuários são incentivados a explorar os diversos recursos do NC explorando este e outros arquivos de exemplo relacionados, que fazem parte da instalação do aplicativo Cisco Packet Tracer. Alguns dos principais recursos e interações com o NC são documentados com mais detalhes abaixo.


Configuração e gerenciamento usando interface web


Em um caso de uso básico, no entanto, os usuários gostariam de acessar e gerenciar seus controladores de rede usando uma interface web. Para acessar essa interface, abra o navegador web em um PC conectado ao controlador e navegue até o endereço IP do controlador na URL inserida no navegador. A conectividade básica de rede deve estar presente previamente.

Configuração inicial

Para acessar e gerenciar Controladores de Rede usando a interface web, é necessário que o usuário tenha uma conta de usuário de nível "administrador" no NC. Ao acessar a interface web do NC pela primeira vez, você será solicitado a realizar uma configuração inicial criando uma conta, conforme apresentado a seguir.

Use Nome de usuário , Senha , Confirmar senha para inserir os atributos da sua conta e clique em CONFIGURAR para criar a nova conta.

A maioria das amostras de rede NC enviadas com PT usam o nome de usuário "admin" e a senha "cisco" como a principal conta de usuário administrador para seus controladores de rede.

Painel e navegação básica

Após criar esta conta de usuário inicial, o acesso ao NC no futuro apresentará uma tela de login para obter acesso ao restante da interface de gerenciamento do controlador, que começa com uma visualização do Painel mostrada abaixo

Clicando no botão Menu do Painel

abre um menu a partir do qual você pode acessar várias funções de gerenciamento e monitoramento do Network Controller

Da mesma forma, clicando no nome do usuário, admin no caso, abaixo

abre um menu de onde os administradores do NC podem executar o Gerenciamento de Usuários e Logout.

Cada um dos painéis de informações no Painel possui um ícone que permite acesso direto à seção correspondente da interface de gerenciamento do Controlador de Rede. Isso pode ser usado como alternativa ao botão de menu do painel descrito acima.


Provisionamento

Nesta seção, você pode adicionar dispositivos ao controlador, descobrir novos dispositivos na rede e criar credenciais globais para acessá-los. Para acessar esses recursos, selecione "Provisionamento" no menu principal do Painel, conforme mostrado abaixo.


Descoberta

Para ver o status dos processos de descoberta de dispositivos existentes, selecione Descoberta na barra de navegação.


Você pode criar um novo processo de descoberta clicando no botão . No painel da interface do usuário que se abre, você poderá configurar um novo processo de descoberta com base no CDP ou no intervalo de endereços IP .


Garantia

Nesta seção, você pode considerar os dispositivos de rede, a integridade da rede, visualizar a topologia da rede e executar rastreamentos de caminho entre hosts na rede. Para acessar esses recursos, selecione Garantia no menu principal do Painel, conforme mostrado abaixo.

Isso levará você a uma visualização que mostra a integridade geral da rede.


Anfitriões

Clicar em HOSTS na barra de navegação exibe a lista de todos os hosts de rede dos quais o controlador está "ciente".


Topologia

Da mesma forma, TOPOLOGIA na barra de navegação mostrará todos os dispositivos gerenciados e suas conexões.

Para ver informações sobre um dispositivo específico, clique no ícone desse dispositivo e isso abrirá o painel de informações do dispositivo à direita da visualização gráfica da topologia acima. As informações mostradas acima são para o dispositivo denominado R3 .



Rastreamento de caminho

RASTREAMENTO DE CAMINHO - permite rastrear caminhos de tráfego entre interfaces de sua escolha. A visualização abaixo mostra a tela inicial onde você pode adicionar novos rastreamentos de caminho clicando em 

Depois de clicar no caminho criado, os resultados desse rastreamento de caminho são exibidos da seguinte forma


Devido a limitações no PT, nem todas as rotas e interfaces de um rastreamento de caminho serão conhecidas.


Política

Para configurar as definições de política, use o item Política no menu do painel principal


Qualidade de Serviço

Aqui está um exemplo de configuração de QoS, usando esta interface

A seção Configurações de Rede permitirá a configuração de configurações globais para cada dispositivo gerenciado, garantindo que todos os dispositivos usem os mesmos valores. Por exemplo, DNS, NTP e diversas outras configurações podem ser aplicadas globalmente a todos os dispositivos gerenciados.

Consulte seu currículo para saber a relação entre escopos e políticas de QoS e várias outras configurações específicas de tecnologia.


Documentação da API

Vários recursos e informações disponíveis em dispositivos Network Controller podem ser acessados ​​programaticamente por meio de uma extensa API REST via HTTP. A documentação geral da API pode ser acessada no menu do painel NC, através do item de menu "API Docs" , conforme mostrado acima. Esta ajuda também fornece conteúdo completo idêntico à referida documentação da API .

Para descrever brevemente a interface de documentação, consulte as marcações numéricas na imagem acima. Os itens numerados são descritos abaixo.

  1. Categoria de API. Os exemplos acima incluem TICKETS, ASSURANCE e FLOW ANALYSIS. Cada categoria lista as operações de API incluídas. Por exemplo, a categoria TICKETS possui apenas duas operações: addTicket e deleteTicket .
  2. Nome da operação , seguido de uma breve descrição de sua função.
  3. Método HTTP usado para acessar esta função. No caso acima, a API addTicket deve ser acessada via HTTP POST.
  4. URL base usada para realizar esta operação. Acima: /ticket
  5. Exemplo de curl . Isso é útil para fazer experimentos rápidos com as APIs usando esta popular ferramenta de acesso HTTP. Observe o formato {IP}:{PORTA}.
    Na maioria dos casos simples, suas URLs terão o seguinte formato: http://localhost:{PORTA}/{URL BASE DA API}.
    Exemplos concretos do uso dessas URLs para acessar funções NC são fornecidos nas seções a seguir.
  6. Parâmetros. Este segmento descreverá os parâmetros, se houver, que podem ser fornecidos para a operação da API em questão. No exemplo acima, os parâmetros para esta requisição HTTP POST precisarão ser fornecidos como um documento JSON no corpo da requisição HTTP. O esquema JSON é fornecido abaixo. Como você pode ver, para obter um ticket, a entrada pode ser semelhante a esta:
    {
        "nome de usuário": "admin99",
        "senha": "d0ntsayit~75"
    }
    
    Observação! O nome do parâmetro user só é útil nos casos em que esta API é usada por meio de uma interface funcional, que pode ser gerada por ferramentas como o Swagger. Nesse caso, user será o nome de um parâmetro recebido pela função addTicket . A discussão deste caso está fora do escopo deste documento.
  7. Respostas: Sucesso.
    Este segmento geralmente descreve respostas bem-sucedidas de uma determinada operação. Respostas bem-sucedidas retornarão JSON de acordo com seu esquema documentado.
    No caso do getTicket acima, os dados JSON retornados pela resposta 200 bem-sucedida corresponderão ao esquema mostrado acima. Aqui está um exemplo de tal resposta.
    {
        "resposta": {
            "tempo limite inativo": 900,
            "serviceTicket": "NC-5-9b777a75c7bf4bea9317-nbi",
            "tempo limite da sessão": 3600
        },
        "versão": "1.0"
    }
  8. Respostas: Outras.
    Este segmento geralmente descreve respostas que não retornam dados ou retornam erros. Aqui está um exemplo de um erro 401 para a operação getTicket acima, que seria recebido ao especificar um nome de usuário inexistente nos parâmetros da solicitação.
    {
        "resposta": {
            "detalhe": "Credenciais inválidas",
            "errorCode": "TICKET_BAD_USER",
            "message": "Conta de usuário não encontrada. Crie uma conta de usuário antes de solicitar um tíquete."
        },
        "versão": "1.0"
    }
    

Exemplo: Script Python na aba Programação

Uma maneira de acessar o Controlador de Rede a partir de um dispositivo PC PT é usar a aba Programação. Aqui está um exemplo de um programa em Python que pode ser encontrado em um arquivo de exemplo chamado programming.pkt.
de http importar *
do tempo importar *
importar json

securityUrl = "http://10.1.1.2/api/v1/ticket"
securityData = json.dumps({"nome de usuário": "teste","senha": "teste"})
securityHeader = json.dumps({"content-type": "application/json"})

getUrl = "http://10.1.1.2/api/v1/inventory/network-device/count"

postUrl = "http://10.1.1.2/api/v1/flow-análise"
postData = json.dumps({ "IP de origem": "10.1.1.1", "IP de destino": "10.1.1.1" })

def onHTTPDone(status, dados):
	print("status: " + str(status))
	print("dados: " + dados)

def gotToken(status, dados):
	print("status: " + str(status))
	print("dados: " + dados)
	resultado = json.loads(dados)
	print("token: " + resultado["resposta"]["serviceTicket"])
	http1 = HTTPClient()
	http1.onDone(onHTTPDone)
	http1.open(obterUrl);
	
	http2 = HTTPClient()
	http2.onDone(onHTTPDone)
	postHeader = {}
	postHeader['content-type'] = 'aplicativo/json'
	postHeader['x-auth-token'] = resultado["resposta"]["serviceTicket"]
	http2.postWithHeader(postUrl, postData, json.dumps(postHeader));
	
def principal():
	http = HTTPClient()
	http.onDone(obteveToken)
	http.postWithHeader(urldesegurança, dadosdesegurança, cabeçalhodesegurança)
	

	# não deixe acabar
	enquanto Verdadeiro:
		dormir(3600)

se __nome__ == "__principal__":
	principal()


Exemplo: Script Python na aba de programação usando o módulo 'requests'

Uma maneira popular de interagir com APIs da web em Python é usar um módulo de requisições . A aba PT Programming Tab fornece este módulo como um módulo integrado. O arquivo de exemplo programming_with_python_requests.pkt fornece um exemplo, mostrado abaixo.
de http importar *
do tempo importar *
importar json
solicitações de importação


getUrl = "http://10.1.1.2/api/v1/inventory/network-device/count"

postUrl = "http://10.1.1.2/api/v1/flow-análise"

securityUrlReq = "http://10.1.1.2/api/v1/ticket"
securityDataReq = {"nome de usuário": "teste","senha": "teste"}
securityHeaderReq = {"tipo de conteúdo": "aplicativo/json"}
postDataReq = { "sourceIP": "10.1.1.1", "destIP": "10.1.1.1" }

def principal():
    print( "Conseguindo uma multa ..." )    
    r = requests.post(securityUrlReq, dados=json.dumps(securityDataReq), cabeçalhos=securityHeaderReq, tempo limite=30)
    imprimir(r.status_code)
    resultado = r.json()
    print( resultado )
    ticket = resultado["resposta"]["serviceTicket"]
    print("bilhete: " + bilhete)
    
    print( "Acesso sem ingresso ..." )    
    r = solicitações.obter(getUrl)
    imprimir("OK: %s"%(r.ok,) )
    imprimir(r.texto)
    
    print( "Acesso usando um ticket ..." )    
    postHeader = { 'x-auth-token' : tíquete }
    r = requests.post(postUrl, json=postDataReq, cabeçalhos=postHeader);
    imprimir(r.status_code)
    imprimir(r.json())


    # não deixe acabar
    enquanto Verdadeiro:
        dormir(3600)
		
se __nome__ == "__principal__":
    principal()


Acesso ao mundo real

Conforme mencionado brevemente no início desta página, os usuários também podem acessar os Controladores de Rede via API HTTP REST usando ferramentas reais como curl ou programas escritos em uma linguagem de programação de sua escolha . Para isso, use a opção "Acesso Habilitado" para iniciar/parar o servidor HTTP. Use a caixa de edição "Porta HTTP" para definir a porta do servidor. Observe que os números de porta permitidos variam de 1024 a 65535. O Status do Servidor fornece o status atual do servidor.

Quando Habilitar acesso externo para API REST do controlador de rede estiver desabilitado em Preferências, as configurações neste painel de configuração se tornarão somente leitura .


Desde que a porta HTTP do mundo real na rede esteja habilitada e o servidor esteja escutando em uma porta PORT, é possível acessar a API REST do controlador de rede usando a seguinte URL base:
http://localhost:PORT/api/v1

Para as configurações acima, por exemplo, a URL para adicionar um tíquete será:
http://localhost:58000/api/v1/ticket

Observação: Por motivos de segurança, os controladores de rede do Packet Tracer só permitirão acesso HTTP do seu PC real a partir do host local. Conexões remotas serão recusadas.


Exemplo: Usando curl

Para simplificar os experimentos com acesso real ao NC, primeiro carregue um arquivo de exemplo netcon.pkt e habilite a porta de acesso real no controlador de rede. Assumimos abaixo que a porta é 58000, mas você precisará usar o valor que habilitou se for diferente. Agora, acesse uma CLI ou aplicativo de terminal no sistema operacional do seu host e digite o seguinte no prompt:
curl -X post localhost:58000/api/v1/ticket -H "tipo de conteúdo: aplicativo/json" --data "{\"nome de usuário\":\"admin\",\"senha\":\"cisco\"}"
e você deve conseguir obter uma resposta JSON semelhante a
... estatísticas de curl ...
{
    "resposta": {
        "tempo limite inativo": 900,
        "serviceTicket": "NC-34-de50f79c8dab4bb4b478-nbi",
        "tempo limite da sessão": 3600
    },
    "versão": "1.0"
}

Usando scripts Python

O exemplo acima, usando o módulo de requisições do Python dentro da aba de programação, pode ser usado como modelo para uso em um cenário de acesso real. Para que isso funcione, você precisaria alterar todas as URLs usadas naquele exemplo para o estilo de URL mostrado no exemplo curl acima. Isso é deixado como um exercício para o usuário.


Nenhum comentário:

Postar um comentário