Introdução
A cada dia que passa torna-se mais e mais comum termos uma rede de computadores presente em nosso ambiente, seja de trabalho, de laser, e mesmo doméstico.
Em qualquer dessas situações a acessibilidade com a Internet é mandatória, no entanto, por vezes certo nível de isolamento torna-se necessário pelos mais diversos motivos: segurança de dados; restrição de acesso a sites indesejados; isolamento de máquinas sensíveis a ataques de hackers; etc.
Para dar sustentação para soluções a essas necessidades algumas máquinas têm de ser equipadas com mais de uma interface de rede, que por sua vez exigirão configurações distintas.
É comum ser necessário uma máquina dessas necessitar de uma interface configurada para utilização de IP fixo e outra de IP dinâmico. Este artigo abordará a configuração de uma máquina com Arch Linux, que supra exatamente esta necessidade, sendo extensível a mesma solução para mais interface na mesma máquina quando necessário.
Configuração
Prévias da Instalação
O Arch Linux admite um utilitário de linha de comando para operações de inspeção e configuração de rede denominado netctl que trabalha conjuntamente ao systemd.
Inicialmente deve ser instalado o pacote do netctl, para tanto utiliza-se o comando mostrado a seguir:
Código 1: Instalação do pacote netctl
$ sudo pacman -S netctl
Listagem 1: Instalação do pacote netctl
$ sudo pacman -S netctl
[sudo] senha para administrator:
resolvendo dependências...
procurando por pacotes conflitantes...
Pacotes (1) netctl-1.18-1
Tamanho total instalado: 0,09 MiB
:: Continuar a instalação? [S/n] s
(1/1) verificando chaves no chaveiro [##################] 100%
(1/1) verificando integridade do pacote [##################] 100%
(1/1) carregando arquivos do pacote [##################] 100%
(1/1) verificando conflitos de arquivo [##################] 100%
(1/1) verificando espaço em disco disponível [##################] 100%
:: Processando alterações do pacote...
(1/1) instalando netctl [##################] 100%
Dependências opcionais para netctl
dialog: for the menu based wifi assistant
dhclient: for DHCP support (or dhcpcd)
dhcpcd: for DHCP support (or dhclient) [instalado]
wpa_supplicant: for wireless networking support [instalado]
ifplugd: for automatic wired connections through netctl-ifplugd
wpa_actiond: for automatic wireless connections through netctl-auto
ppp: for PPP connections
openvswitch: for Open vSwitch connections
:: Executando hooks pós-transação...
(1/2) Reloading system manager configuration...
(2/2) Arming ConditionNeedsUpdate...
Os arquivos de configuração de rede ficam na árvore /etc/netctl, e no subdiretório examples há algo entorno de 20 modelos de arquivos de configuração, cada um para uma categoria de situações possíveis como: conexão ethernet de IP dinâmico, ethernet de IP estático, conexão sem fio com segurança WPA de IP estático etc. Verifique a variedade com o comando mostrado abaixo:
Código 2: Verificando modelo de configuração
$ ls /etc/netcl/examples/
Observe as possibilidades, neste artigo serão utilizados os modelos ethernet-dhcp e ethernet-static na configuração de duas interfaces de rede do sistema.
Listagem 2: Modelos disponíveis em netctl
$ ls /etc/netctl/examples/
bonding macvlan-dhcp tunnel wireless-wep
bridge macvlan-static tuntap wireless-wpa
ethernet-custom mobile_ppp vlan-dhcp wireless-wpa-config
ethernet-dhcp openvswitch vlan-static wireless-wpa-configsection
ethernet-static pppoe wireless-open wireless-wpa-static
A seguir é mandatório determinar os nomes das interfaces de rede disponíveis no sistema. Com o comando a seguir obtém-se uma relação das interfaces reconhecidas presentes.
Código 3: Examinando interface de rede instaladas
$ ip link
E resposta recebe-se um relatório com esta aparência
Listagem 3: Relatório de interfaces de rede
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:e1:48:19 brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:26:74:49 brd ff:ff:ff:ff:ff:ff
Observa-se que as interfaces recebem a nova nomenclatura de interfaces previsíveis[1] no plano de instalação pode/deve ser prevista a aplicação de cada uma das interfaces, conforme exemplificado a seguir
Tabela 1: Plano de instalação e configuração
Interface | Denominação | Tipo | Aplicação |
1 | enp0s3 | IP Fixo | Rede local como servidor |
2 | enp0s8 | IP Dinâmico | Rede externa e/ou Internet |
Desta forma a interface enp0s3 será configurada para operar em IP fixo e a interface enp0s8 para operar em IP dinâmico.
Configuração da Interface com IP Fixo
Tomando por base o modelo de arquivo de configuração para ethernet estático (/etc/netctl/examples/ethernet-static) cria-se em /etc/netctl/ um arquivo para a configuração da interface a ser ajustada, segundo o plano de instalação enp0s3. Constitui boa prática denominar o arquivo com o “nome” da interface. Conteúdo do arquivo enp0s3[2].
Listagem 4: Conteúdo do arquivo de configuração da interface enp0s3
Description='Conexao estatica basica de ethernet'
Interface=enp0s3
Connection=ethernet
IP=static
Address=('192.168.0.9/24')
Gateway=('192.168.0.1')
DNS=('8.8.8.8' '8.8.4.4' '192.168.0.1')
TimeoutUp=10
SkipNoCarrier=yes
Nota: A linha SkipNoCarrier consta para não sinalizar falha caso o cabo não esteja conectado.
O valor da cláusula Interface= é a designação da interface sendo configurada.
Para iniciar automaticamente a interface no momento de boot efetuar o primeiro comando da sequência abaixo, e para iniciar imediatamente a interface efetuar o segundo comando da sequência.
Código 4: Comandos de habilitação e iniciação da interface de rede enp0s3
$ sudo netctl enable enp0s3
$ sudo netctl start enp0s3
Desativação do servilo DHCP cliente
A parada e desabilitação do serviço DHCP se efetua com os comandos abaixo.
Código 5: Sequência de comandos de desativação do serviço cliente DHCP
$ sudo systemctl stop dhcpcd
$ sudo systemctl disable dhcpcd
Configuração da Interface com IP Dinâmico
Tomando por base o modelo de arquivo de configuração para ethernet dinâmico (/etc/netctl/examples/ethernet-dhcp) cria-se em /etc/netctl/ um arquivo para a configuração da interface a ser ajustada, segundo o plano de instalação enp0s8. Constitui boa prática denominar o arquivo com o “nome” da interface. Conteúdo do arquivo enp0s8.
Listagem 5: Conteúdo do arquivo de configuração da interface enp0s8
Description='A basic dhcp ethernet connection'
Interface=enp0s8
Connection=ethernet
IP=dhcp
#DHCPClient=dhcpcd
#DHCPReleaseOnStop=no
## for DHCPv6
#IP6=dhcp
#DHCP6Client=dhclient
## for IPv6 autoconfiguration
#IP6=stateless
SkipNoCarrier=yes
Nota: A linha SkipNoCarrier consta para não sinalizar falha caso o cabo não esteja conectado.
O valor da cláusula Interface= é a designação da interface sendo configurada.
Para iniciar automaticamente a interface no momento de boot efetuar o primeiro comando da sequência abaixo, e para iniciar imediatamente a interface efetuar o segundo comando da sequência.
Código 6: Comandos de habilitação e iniciação da interface de rede enp0s8
$ sudo netctl enable enp0s8
$ sudo netctl start enp0s8
Reiniciar e confirmar configurações
Após cumpridas as etapas referidas acima, reinicie o sistema para comprovar com o comando ip addr que a configuração efetuada é ativada no boot do sistema.
Abaixo o aspecto esperado do relatório do comando.
Listagem 6: Relatório da configuração de interfaces de rede
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:e1:48:19 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.9/24 brd 192.168.0.255 scope global enp0s3
valid_lft forever preferred_lft forever
inet6 2804:14c:113:8052:a00:27ff:fee1:4819/64 scope global dynamic mngtmpaddr
valid_lft 3599sec preferred_lft 3599sec
inet6 fe80::a00:27ff:fee1:4819/64 scope link
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:26:74:49 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.87/24 brd 192.168.0.255 scope global noprefixroute enp0s8
valid_lft forever preferred_lft forever
inet6 2804:14c:113:8052:a00:27ff:fe26:7449/64 scope global dynamic mngtmpaddr
valid_lft 3599sec preferred_lft 3599sec
inet6 fe80::a00:27ff:fe26:7449/64 scope link
valid_lft forever preferred_lft forever
Conclusão
as configurações esplanadas é possível gerir sistemas com inúmeras interfaces de rede, viabilizando a constituição de diversas aplicações que necessitam mais de uma interface de rede na máquina, como firewalls, proxy-servers, gateways, entre tantas outras possibilidades.
Referências
Arch Linux. ArckWiki. Disponível em <https://wiki.archlinux.org/index.php/Main_page>, acesso em 10 de out. de 2018
BRITO, Samuel Henrique Bucke. Nova nomenclatura de Interfaces Previsíveis no Linux. BLOG LabCisco, 2015. Disponível em <http://labcisco.blogspot.com/2015/11/nova-nomenclatura-de-interfaces.html>, acesso em 10 de out. de 2018
GKIOKA, Ioanna; JAHODA, Mirek; HERVES, Jana; et. al. 8.3. UNDERSTANDING THE PREDICTABLE NETWORK INTERFACE DEVICE NAMES. In: Networking Guide. Red Hat Customer Portal. Disponível em <https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec-understanding_the_predictable_network_interface_device_names>, acesso em 11 de out. de 2018
KUMAR, Senthil. How To Configure Static And Dynamic IP Address In Arch Linux. OSTechNix, 2017. Disponível em <https://www.ostechnix.com/configure-static-dynamic-ip-address-arch-linux/>, acesso em 10 de out. de 2018
Notas
[1] Predictable Network Interfaces Names, vide mais informações em https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec-understanding_the_predictable_network_interface_device_names
[2] enp0s3 – onde en corresponde a ethernet, p0 corresponde a pci bus 0, e s3 corresponde a slot 3
Ótimo conteúdo! Obrigado pela colaboração.
Agradeço pelas palavras incentivadoras.