Namespaces de rede Linux são um recurso do kernel Linux que nos permite isolar ambientes de rede por meio da virtualização. Por exemplo, usando namespaces de rede, você pode criar interfaces de rede separadas e tabelas de roteamento que são isoladas do restante do sistema e operar de forma independente.
Para entender os espaços para nome com facilidade, vale a pena dizer que o Linux Namespaces é a base de tecnologias de contêineres como Docker ou Kubernetes.
Por enquanto, o Linux inclui 6 tipos de namespaces: PID, NET, UTS, MNT, IPC e Usuário. Este tutorial concentra -se em namespaces de rede Linux.
Se você comandar LSNs, ele exibirá todos os espaços de nome existentes em seu sistema, como mostrado na imagem abaixo.
lsns
Observação: O espaço para nome usado para este tutorial é chamado Linuxhint; Substitua -o pelo seu nome de namespace.
Adicionando um espaço para nome de rede Linux:
Gerenciando namespaces de rede é feito usando o comando ip netns seguido pelas opções adequadas.
Para criar um espaço para nome de rede no Linux, você precisa executar o comando IP seguido pela opção NETNS (namespace de rede), a opção Adicionar e o novo nome de namespace, conforme mostrado na captura de tela a seguir. Em seguida, o comando ip netns pode ser executado para mostrar apenas os namespaces de rede existentes. Lembre -se de substituir Linuxhint pelo nome do seu espaço para nome.
NETNS IP Adicionar Linuxhint
NETNS IP
Como você pode ver, um novo espaço para nome foi criado chamado Linuxhint.
Namespaces de rede têm suas próprias interfaces, tabelas de roteamento, interface de loopback, regras iptables, etc. Você precisa criar esses recursos para o seu espaço de nome.
Criando interface de loopback para o espaço para nome:
Para executar comandos em um espaço de nome de rede, a sintaxe é o seguinte.
IP Netns Exec
Por padrão, a interface de loopback está baixa. Você precisa executar o seguinte comando; Conforme explicado anteriormente, o comando abaixo executa o link IP Definir lo -up no espaço de nome escolhido.
IP Netns Exec Linuxhint IP Link Set Dev Lo Up
Você pode verificar se sua interface de loopback foi adicionada corretamente executando o seguinte comando:
IP NETNS EXEC Linuxhint Endereço IP
Você também pode pingar a interface de loopback de namespace para testá -lo, como mostrado abaixo.
IP Netns Exec Linuxhint Ping 127.0.0.1
Adicionando interfaces de rede ao seu espaço para nome:
Você pode associar uma placa de rede de hardware ao seu espaço para nome ou adicionar dispositivos de rede virtual. Ao adicionar interfaces de rede virtual, você pode permitir a conectividade entre diferentes espaços para nome. Os dispositivos de rede virtual são nomeados Veth (dispositivo Ethernet virtual).
Para criar um dispositivo Ethernet de rede virtual, execute o seguinte comando, onde o ENP2S0 é o novo dispositivo e o V-Peer1 seu nome arbitrário, substitua-o pelo seu.
Link IP Adicionar V-Enp2s0 Tipo Veth Nome de Peer V-ETH0
Agora atribua o dispositivo virtual ao seu espaço para nome, executando o comando abaixo.
Conjunto de link IP V-ETH0 NETNS Linuxhint
Atribua um endereço IP ao novo dispositivo de rede, como mostrado abaixo.
ip -n linuxhint addr add 10.0.1.0/24 Dev V-ETH0
Por padrão, o dispositivo de rede está inativo; você precisa configurá -lo. Para definir seu dispositivo de rede virtual, execute o seguinte comando.
IP -N Linuxhint Link Set V -ETH0 UP
Como você pode ver na captura de tela abaixo, o dispositivo virtual foi adicionado corretamente.
IP Netns Exec linuxhint sudo ifconfig
O exemplo abaixo mostra como atribuir uma placa de rede física ao seu espaço para nome de rede. Nesse caso, a placa de rede física é o ENP2S0.
Conjunto de link IP dev enp2s0 netns linuxhint
Como você pode ver executando o exemplo abaixo, a placa de rede foi adicionada corretamente. Você pode atribuir um endereço IP usando os mesmos comandos explicados anteriormente.
IP Netns Exec linuxhint sudo ifconfig
Como explicado anteriormente, cada espaço de nome tem sua própria tabela de rota, IP e muito mais, incluindo suas próprias regras de firewall. Adicionar regras de firewall ao seu espaço para nome é simples; Basta executar os comandos após o IP Netns Exec Linuxhint, como mostrado abaixo. O exemplo abaixo listará políticas iptables se existentes.
IP Netns Exec linuxhint sudo iptables -l
O exemplo a seguir mostra o mesmo, mas usando o UFW (firewall não complicado) em vez de iptables. Nesse caso, o firewall é relatado como desativado.
IP Netns Exec linuxhint sudo ufw status
Removendo um espaço para nome de rede Linux:
Remover namespaces de rede é bem simples, como ao adicioná -los.
Para remover um espaço para nome, execute o comando abaixo, substitua Linuxhint pelo seu espaço para nome.
IP Netns del Linuxhint
Como você pode ver, depois de executar o IP Netns, nenhum espaço para nome de rede foi mostrado; foi removido com sucesso.
Conclusão:
Namespaces Linux são um método formidável para isolar processos, sistemas de arquivos, redes e mais. Essa funcionalidade nos permite executar instâncias de forma independente. Isso é extremamente útil para fins de segurança. Os namespaces são recipientes cujo conteúdo é totalmente isolado do restante do sistema, inclusive de outros namespaces. Dessa forma, podemos executar serviços diferentes em diferentes contêineres. Se um espaço para nome for comprometido sob um ataque, o restante do sistema permanece seguro. Usando namespaces Linux, você pode oferecer a vários clientes seu ambiente; Esse recurso também é ótimo para fins de teste ou para executar software cuja origem é suspeita; No caso de executar um código malicioso, apenas seu espaço para nome será afetado, deixando seu dispositivo seguro.
Espero que este tutorial sobre namespaces Linux tenha sido útil. Continue seguindo o Linux Dint para mais dicas e tutoriais do Linux.