Nesse artigo vamos estudar os principais comandos utilizados para verificar e configurar Redes Linux, os quais também podem ser cobrados na certificação LPIC-1.
Só para você saber, esse artigo eu fiz com base no curso do Portal da DlteC do Brasil chamado: “Fundamentos de Redes para Linux“.
Agora chega de conversa e vamos começar a estudar pelo comando ifconfig, o qual creio que se você está estudando ou já utilizou Redes Linux já deva ter utilizado em algum momento da sua vida, correto?
Comando Ifconfig
O comando ifconfig, quando utilizado sem quaisquer opções, exibe as interfaces de rede instaladas no sistema ATIVAS , bem como as configurações (IPs, máscara, etc) atribuídas a cada uma delas:
root@curso9:~# ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu 1500
inet 192.168.0.108netmask 255.255.255.0broadcast 192.168.0.255
inet6 fe80::8a18:d1bc:c455:3b3dprefixlen 64 scopeid 0x20<link>
ether 08:00:27:5f:3c:cbtxqueuelen 1000 (Ethernet)
RX packets 202 bytes 39297 (39.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 132 bytes 16993 (16.9 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu 1500
inet 192.168.0.106 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::1084:cbad:7948:5702 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:86:27:b7 txqueuelen 1000 (Ethernet)
RX packets 217 bytes 41520 (41.5 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 131 bytes 12717 (12.7 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Loopback Local)
RX packets 97 bytes 7804 (7.8 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 97 bytes 7804 (7.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Observe na saída anterior que, nesse momento, existem duas interfaces de rede disponíveis: enp0s3 e enp0s8 (a interface de loopback – utilizada para testes locais (127.0.0.1) – é identificada como lo).
O endereço IP de cada interface é identificado como inet (seja “puro” – referente ao IPv4 – ou inet6, para o IPv6).
Além disso, note a presença de outras informações úteis como o endereço de broadcast (broadcast), a máscara de rede (netmask) e o endereço MAC (ether) – este último, identifica de forma inequívoca uma determinada placa de rede.
Note ainda a presença das palavras UP e RUNNING em cada uma das interfaces – indicando que a placa encontra-se em pleno funcionamento.
Caso o comando seja rodado com a opção -a, mesmo aquelas interfaces inativas instaladas na máquina serão exibidas.
Guarde isso! O comando ifconfig também consegue exibir informações específicas sobre uma determinada interface, bastando ser informada junto ao comando:
root@curso9:~# ifconfig enp0s3
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu 1500
inet 192.168.0.108 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::8a18:d1bc:c455:3b3d prefixlen 64 scopeid 0x20<link>
ether 08:00:27:5f:3c:cb txqueuelen 1000 (Ethernet)
RX packets 202 bytes 39297 (39.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 132 bytes 16993 (16.9 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Caso seja necessário deixar uma determinada interface de rede inativa, ou seja, para “derrubar” uma placa de rede, o comando ifconfig também poderá ser utilizado – bastando, para isso, informar a instrução down ao comando:
root@curso9:~# ifconfig enp0s3 down
root@curso9:~# ifconfig enp0s3
enp0s3: flags=4098<BROADCAST,MULTICAST>mtu 1500
ether 08:00:27:5f:3c:cb txqueuelen 1000 (Ethernet)
RX packets 577 bytes 499765 (499.7 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 944 bytes 87052 (87.0 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Note que, agora, a interface enp0s3 já apresenta o “UP”, indicando que a interface encontra-se desativada.
Nesse momento, podemos inclusive definir um IP específico à interface enp0s3, informando a seguinte instrução:
root@curso9:~# ifconfig enp0s3 192.168.0.98 up
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu 1500
inet 192.168.0.98 netmask 255.255.255.0 broadcast 192.168.0.255
ether 08:00:27:5f:3c:cb txqueuelen 1000 (Ethernet)
RX packets 719 bytes 524024 (524.0 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 959 bytes 88523 (88.5 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Note que, por padrão, o sistema “pega” o endereço informado e já configura a máscara de rede (a padrão, baseada no endereço informado) e o endereço de broadcast.
Caso não seja a intenção do administrador que isso seja aplicado, basta “derrubar” novamente a interface e informar o seguinte comando:
root@curso9:~# ifconfig enp0s3 down
root@curso9:~# ifconfig enp0s3 192.168.0.98 netmask 255.255.255.192 up
root@curso9:~# ifconfig enp0s3
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu 1500
inet 192.168.0.110 netmask 255.255.255.192 broadcast 192.168.0.127
ether 08:00:27:5f:3c:cb txqueuelen 1000 (Ethernet)
RX packets 819 bytes 536699 (536.6 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 985 bytes 90811 (90.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Perceba agora que o sistema já calculou automaticamente o endereço de broadcast correto utilizado pela subrede 192.168.0.64/26, da qual o endereço 192.168.0.127 faz parte.
Note que a outra interface disponível (enp0s8) também poderá possuir o seu próprio endereço IP, independente daquele configurado na interface enp0s3:
root@curso9:~# ifconfig enp0s8 down
root@curso9:~# ifconfig enp0s8 172.16.23.57 up
root@curso9:~# ifconfig enp0s8
enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu 1500
inet 172.16.23.57 netmask 255.255.0.0 broadcast 172.16.255.255
ether 08:00:27:86:27:b7 txqueuelen 1000 (Ethernet)
RX packets 1254 bytes 592075 (592.0 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 218 bytes 22837 (22.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Comando Route
Agora, entenderemos mais o seu funcionamento do comando route.
Esse comando é responsável por exibir e criar configurações relacionadas às rotas configuradas sistema.
Observe o seu comportamento padrão (utilizado junto à opção -n, para que os endereços IP não sejam resolvidos em nomes):
root@curso9:~# route -n
Tabela de Roteamento IP do Kernel
Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface
172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 enp0s8
192.168.0.64 0.0.0.0 255.255.255.192 U 0 0 0 enp0s3
Precisamos aprender a como interpretar essas informações.
Veja que, quando um pacote for destinado à rede 192.168.0.64, este será enviado à interface enp0s3; da mesma forma, quando um pacote for destinado à rede 172.16.0.0, este será enviado à interface enp0s8.
Uma configuração muito comum a ser realizado com o comando route é a definição da rota padrão – ou seja, quando uma determinada rede não for conhecida por uma dada interface, será essa rota padrão que ela enviará os pacotes em questão (ou através da criação de uma rota específca àquela rede).
Não esqueça: a rota padrão é utilizada nos casos de uma interface não “conhecer” a rede do host do destino – sendo assim, ela precisará enviar o pacote para alguém.
Quem será esse alguém? O default gateway (o endereço IP do roteador). Ou seja, todos os pacotes que a interface não souber como enviar diretamente ao destino, ela enviará então ao roteador.
Observe a seguir o processo de criação de uma rota padrão:
root@curso9:~# ifconfig enp0s3 down
root@curso9:~# ifconfig enp0s3 192.168.0.55 up
root@curso9:~# route add default gw 192.168.0.1 dev enp0s3
Como o endereço IP da interface enp0s3 é 192.168.0.110, a instrução dev enp0s3 é opcional – já que, quando não utilizada, o sistema já “entenderá” que o usuário deseja configurar a rota padrão à interface enp0s3 (pois se encontra na mesma faixa de endereços).
root@curso9:~# route -n
Tabela de Roteamento IP do Kernel
Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 enp0s3
172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 enp0s8
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3
Observe que agora a interface enp0s3 possui uma rota padrão (192.168.0.1), presente no campo Roteador.
Dessa forma, todo pacote cujo destino não faça parte da rede 172.16.0.0 (enp0s8) e nem da rede 192.168.0.0 será encaminhado ao default gateway, saindo pela interface enp0s3.
O processo de criação de uma rota específica também segue a mesma lógica – mas não a mesma sintaxe:
root@curso9:~# route add -net 10.10.10.0/24 gw 192.168.0.25
root@curso9:~# route -n
Tabela de Roteamento IP do Kernel
Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 enp0s3
10.10.10.0 192.168.0.25 255.255.255.0 UG 0 0 0 enp0s3
172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 enp0s8
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3
Dessa forma, toda vez que for necessário enviar um pacote à rede 10.10.0.0, este será enviado à máquina 192.168.0.25 através da interface enp0s3 (e esta máquina se preocupará enviar esse pacote até o endereço IP de destino).
Comando Ip
As funcionalidades oferecidas pelos comandos ifconfig e route são também obtidas através do comando ip.
Vamos visualizar o seu comportamento através de exemplos:
root@curso9:~# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP>mtu 65536 qdiscnoqueue 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 qdiscfq_codel state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:5f:3c:cb brdff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdiscfq_codel state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:86:27:b7 brdff:ff:ff:ff:ff:ff
root@curso9:~# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP>mtu 65536 qdiscnoqueue 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 qdiscfq_codel state UP group default qlen 1000
link/ether 08:00:27:5f:3c:cb brdff:ff:ff:ff:ff:ff
inet 192.168.0.55/24 brd 192.168.0.255 scope global enp0s3
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdiscfq_codel state UP group default qlen 1000
link/ether 08:00:27:86:27:b7 brdff:ff:ff:ff:ff:ff
inet 172.16.23.57/16 brd 172.16.255.255 scope global enp0s8
valid_lft forever preferred_lft forever
root@curso9:~# ip route show
default via 192.168.0.1 dev enp0s3
10.10.10.0/24 via 192.168.0.25 dev enp0s3
172.16.0.0/16 dev enp0s8 proto kernel scope link src 172.16.23.57
192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.55
# Desabilitando a interface enp0s3
root@curso9:~# ip addr flush dev enp0s3
root@curso9:~# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP>mtu 65536 qdiscnoqueue 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 qdiscfq_codel state UP group default qlen 1000
link/ether 08:00:27:5f:3c:cb brdff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdiscfq_codel state UP group default qlen 1000
link/ether 08:00:27:86:27:b7 brdff:ff:ff:ff:ff:ff
inet 172.16.23.57/16 brd 172.16.255.255 scope global enp0s8
valid_lft forever preferred_lft forever
Note na saída acima que as informações sobre IP/Máscara/Broadcast não são exibidas para a interface enp0s3. Ela está UP, mas sem configurações de IP.
# Adicionando um IP através do comando ip
root@curso9:~# ip addr add 192.168.0.67/24 dev enp0s3
root@curso9:~# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP>mtu 65536 qdiscnoqueue 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 qdiscfq_codel state UP group default qlen 1000
link/ether 08:00:27:5f:3c:cb brdff:ff:ff:ff:ff:ff
inet 192.168.0.67/24 scope global enp0s3
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdiscfq_codel state UP group default qlen 1000
link/ether 08:00:27:86:27:b7 brdff:ff:ff:ff:ff:ff
inet 172.16.23.57/16 brd 172.16.255.255 scope global enp0s8
valid_lft forever preferred_lft forever
Por padrão, o comando ip não configura qualquer endereço de broadcast. Por isso, é preciso especificar ao comando o endereço desejado:
root@curso9:~# ip addr flush dev enp0s3
root@curso9:~# ip addr add 192.168.0.67/24 brd + dev enp0s3
root@curso9:~# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP>mtu 65536 qdiscnoqueue 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 qdiscfq_codel state UP group default qlen 1000
link/ether 08:00:27:5f:3c:cb brdff:ff:ff:ff:ff:ff
inet 192.168.0.67/24 brd 192.168.0.255 scope global enp0s3
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdiscfq_codel state UP group default qlen 1000
link/ether 08:00:27:86:27:b7 brdff:ff:ff:ff:ff:ff
inet 172.16.23.57/16 brd 172.16.255.255 scope global enp0s8
valid_lft forever preferred_lft forever
O comando ip possui diversas outras possibilidades e modos de configuração. Por isso, é muito recomendado que você tenha acesso ao seu manual (man ip).
Caso seja necessário fazer com que uma determinada interface “pegue” um IP a partir de um servidor DHCP, podemos utilizar o comando dhclient:
root@curso9:~# ip addr flush dev enp0s3
root@curso9:~# dhclient enp0s3
root@curso9:~# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP>mtu 65536 qdiscnoqueue 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 qdiscfq_codel state UP group default qlen 1000
link/ether 08:00:27:5f:3c:cb brdff:ff:ff:ff:ff:ff
inet 192.168.0.108/24 brd 192.168.0.255 scope global enp0s3
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdiscfq_codel state UP group default qlen 1000
link/ether 08:00:27:86:27:b7 brdff:ff:ff:ff:ff:ff
inet 172.16.23.57/16 brd 172.16.255.255 scope global enp0s8
valid_lft forever preferred_lft forever
É super importante mencionarmos uma coisa: todas essas configurações serão perdidas quando a máquina for reiniciada (tudo se encontra em memória).
Para que tais procedimentos se tornem permanentes, é necessário envolver arquivos de configuração.
Sendo assim, tais comandos se tornam muito úteis para realizar testes diversos (derrubar interfaces, estabelecer rotas de testes, etc.).
Com isso terminamos mais um artigo e como sempre você pode dar sua sugestão, crítica ou até mesmo deixar um elogio no campo de comentários abaixo!
Obrigado e até a próxima!
One Response
Massa