domingo, 3 de setembro de 2017

Utilitários de rede em Linux

Alguns utilitários de rede em Linux, com exemplos de uso. Este material pode ser baixado em formato PDF no endereço http://187.7.106.14/emmonks/Utilitarios_Linux_rede.pdf


ifconfig

# Para mostrar todas as interfaces disponíves
ifconfig -a

# Para mostrar informações sobre a interface eth0
ifconfig eth0

# Para configurar um IP na interface eth0
ifconfig eth0 10.0.0.2 netmask 255.255.255.0
ou
ifconfig eth0 10.0.0.2/24

# Trocar o endereço físico da interface eth0
ifconfig eth0 hw ether 00:cc:00:ff:ff:ee

# Para criar um outro IP na interface eth0 (IP alias)
ifconfig eth0:1 10.10.0.2/24

# Para modificar o MTU da interface eth0
ifconfig eth0 mtu 9000

# Para remover um IP da interface eth0
ifconfig eth0 0.0.0.0

# Para desativar a interface eth0
ifconfig eth0 down

# Para desativar um IP alias
ifconfig eth0:1 down

# Para ativar a interface eth0
ifconfig eth0 up

# Para adicionar um endereço IPv6 na interface eth0
ifconfig eth0 inet6 add 2001:0db8:0:200::3/64
# Para remover um endereço IPv6 na interface eth0
ifconfig eth0 inet6 del 2001:0db8:0:200::3/64

ip

# Para listar todas as interfaces
ip link show

# Para ativar a interface eth0
ip link set eth0 up

# Para desativar a interface eth0
ip link set eth0 down

# Para mostrar o endereçamento das interfaces
ip addr show

# Para mostrar o endereçamento da interface eth0
ip addr show dev eth0

# Para mostrar os hosts vizinhos (conectados na mesma rede física que tenham de comunicado como host, tabela ARP)
ip neigh show
ip neigh show dev eth0

# Para adicionar uma entrada na tabela ARP
ip neigh add 192.168.1.1 lladdr 00:cc:00:ff:ff:ee dev eth0

# Para remover uma entrada da tabela ARP
ip neigh del 192.168.1.1 dev eth0

# Para adicionar mais um IP na interface eth0 (similar ao IP alias do ifconfig)
ip addr add 192.168.1.2/24 dev eth0

# Para remover endereços adicionais no eth0
ip addr del 192.168.1.5/24 dev eth0

# Para configurar um endereço IP na interface eth0
ip addr add 1.2.3.4/24 broadcast 1.2.3.255 dev eth0

# Para remover um endereço IP na interface eth0
ip addr del 1.2.3.4/24 broadcast 1.2.3.255 dev eth0

# Para trocar o endereço físico da interface eth0
ip link set dev eth0 down
ip link set dev eth0 address 00:cc:00:ff:ff:ee
ip link set dev eth0 up

# Para modificar o MTU da interface para o valor 1476
ip link set mtu 1476 dev eth0

# Para listar a tabela de roteamento
ip route show

# Para adicionar uma rota padrão
ip route add default via 192.168.1.254

# Para adicionar uma rota estática
ip route add 192.168.1.0/24 dev eth0
ou
ip route add 192.168.8.0/24 via 192.168.254.254

# Para remover uma rota estática
ip route del 192.168.1.0/24 dev eth0
ou
ip route del 192.168.8.0/24 via 192.168.254.254

# Para mostrar os endereços IPv6 de todas as interfaces
ip -6 a

# Para adicionar um endereço IPv6 na interface eth0
ip -6 addr add 2001:0db8:0:200::3/64 dev eth0

# Para remover um endereço IPv6 na interface eth0
ip -6 addr del 2001:0db8:0:200::3/64 dev eth0

# Para adicionar uma rota IPv6 default
ip -6 route add default via 2001:0db8:0:200::1

# Para remover uma rota IPv6 default
ip -6 route del default via 2001:0db8:0:200::1

# Para listar a tabela de roteamento IPv6
ip -6 route show

# Para listar a tabela de vizinhos
ip -6 neigh show

arp

# Para listar a tabela ARP
arp -an

# Para remover uma entrada na tabela ARP
arp -i eth0 -d 192.168.1.1

# Para adicionar uma entrada na tabela ARP de forma estática
arp -s 192.168.1.1 00:cc:00:ff:ff:ee


netstat

# Para mostrar todas as portas TCP e UDP em escuta e o processos responsáveis
netstat -nutlp

# Para listar a tabela de roteamento
netstat -rn
# Para mostrar todas as conexões TCP abertas
netstat -tlnp

# Para mostrar todas as conexões TCP abertas, de forma contínua
netstat -tlnpc

# Para mostrar todas as conexões TCP abertas, modo estendido
netstat -tulpen

# Para listar todas as conexões
netstat -a

# Para listar estatísticas por protocolo
netstat -s

# Para listar estatísticas somente do protocolo UDP
netstat -su

# Para listar estatísticas somente do protocolo TCP
netstat -st

# Para listar estatísticas das interfaces
netstat -i

# Para obter informações sobre os temporizadores das conexões
netstat -o

# Para listar a tabela de roteamento IPv6
netstat -rn -A inet6

route

# Para listar a tabela de roteamento
route

# Para adicionar a rota padrão
route add default gw 192.168.1.1

# Para adicionar uma rota estática
route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
ou
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.254

# Para remover rotas estáticas
route del -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.254

# Para remover a rota padrão
route del default gw 192.168.1.1

# Para adicionar uma rota IPv6 padrão
route -A inet6 add default gw 2001:0db8:0:200::1

# Para remover uma rota IPv6 padrão
route -A inet6 del default gw 2001:0db8:0:200::1

# Para listar a tabela de roteamento IPv6
route -A inet6

ethtool

# Para mostrar informações gerais sobre a interface eth0
ethtool eth0

# Para mostrar informações sobre o módulo do kernel (driver) da interface eth0
ethtool -i eth0

# Para mostrar estatísticas de tráfego da interface eth0
ethtool -S eth0

# Para mostrar informações sobre configurações de TX, RX e auto-negociação
ethtool -a eth0

# Para fazer piscar o led da placa (ajudar na identificação física da placa)
ethtool -p eth0

# Exemplos de uso:
# Para forçar 100Mbit/s na interface eth0
ethtool -s eth0 speed 100

# Para desabilitar a auto-negociação na interface eth0
ethtool -s eth0 autoneg off

# Para forçar o modo full-duplex na interface eth0
ethtool -s eth0 duplex full

# Para ativar a opção Wake-on-LAN na interface eth0
ethtool -s eth0 wol g

dig

# Para descobrir informações sobre um domínio
dig www.senacrs.com.br

# Para descobrir informações sobre um domínio, com saída reduzida
dig www.senacrs.com.br +noall +answer

# Para descobrir informações sobre um domínio, com saída mínima
dig www.senacrs.com.br +short

# Para descobrir informações sobre os servidores de e-mail de um domínio
dig MX senacrs.com.br

# Para descobrir informações sobre os servidores de DNS de um domínio
dig NS senacrs.com.br

# Para receber informações sobre registros de IPv6 de um domínio
dig AAAA senacrs.com.br

# Para receber o maior número de informações sobre um domínio
dig ANY senacrs.com.br

# Para fazer consulta sobre o DNS reversos para determinado IP
dig -x 177.1.214.233

# Para fazer consulta sobre o DNS reversos para determinado IP, com saída reduzida
dig -x 177.1.214.233 +short

# Para descobrir informações sobre um domínio, consultando outro servidor, no exemplo o servidor 8.8.8.8
dig @8.8.8.8 www.senacrs.com.br

# Para realizar uma consulta completa para determinado domínio, passando pelos servidores raiz
dig www.senacrs.com.br +trace

# Para obter informações sobre o SOA (Start of Authority) de um domínio
dig SOA senacrs.com.br

# Para obter informações sobre configurações e validações de SPF de um domínio
dig TXT senacrs.com.br

host

# Para descobrir informações sobre um domínio
host www.senacrs.com.br

# Para descobrir informações sobre um domínio, com saída aumentada
host -v www.senacrs.com.br

# Para descobrir informações sobre os servidores de e-mail de um domínio
host -t MX senacrs.com.br

# Para descobrir informações sobre os servidores de DNS de um domínio
host -t NS senacrs.com.br

# Para descobrir informações sobre o IPv6 de um domínio
host -t AAAA senacrs.com.br

# Para receber o maior número de informações sobre um domínio
host -t ANY senacrs.com.br

# Para fazer consulta sobre o DNS reversos para determinado IP
host 177.1.214.233

# Para descobrir informações sobre um domínio, consultando outro servidor, no exemplo o servidor 8.8.8.8
host www.senacrs.com.br 8.8.8.8

# Para obter informações sobre o SOA (Start of Authority) de um domínio
host -t SOA senacrs.com.br

# Para obter informações sobre configurações e validações de SPF de um domínio
host -t TXT senacrs.com.br

nslookup

# Para descobrir informações sobre um domínio
nslookup www.senacrs.com.br

# Para descobrir informações sobre os servidores de e-mail de um domínio
nslookup -query=MX senacrs.com.br

# Para descobrir informações sobre os servidores de DNS de um domínio
nslookup -query=NS senacrs.com.br

# Para receber o maior número de informações sobre um domínio
nslookup -query=ANY senacrs.com.br

# Para receber informações sobre IPv6 de um domínio
nslookup -query=AAAA senacrs.com.br

# Para fazer consulta sobre o DNS reversos para determinado IP
nslookup 177.1.214.233

# Para descobrir informações sobre um domínio, consultando outro servidor, no exemplo o servidor 8.8.8.8
nslookup www.senacrs.com.br 8.8.8.8

# Para obter informações sobre o SOA (Start of Authority) de um domínio
nslookup -query=SOA senacrs.com.br

# Para obter informações sobre configurações e validações de SPF de um domínio
nslookup -query=TXT senacrs.com.br

ping

# Para realizar teste contínuo
ping www.senacrs.com.br

# Para realizar teste com 20 pacotes
ping -c 20 www.senacrs.com.br

# Para realizar teste com pacotes de 1000 Bytes
ping -s 1000 www.senacrs.com.br

# Para realizar teste com pacotes enviados no intervalo de 0,5 segundos
ping -i 0.5 www.senacrs.com.br

# Para realizar teste com pacotes no modo flood (inundação)
ping -f www.senacrs.com.br

# Para utilizar IPv6
ping6 www.senacrs.com.br

traceroute

# Para realizar testes de rota básico para determinado destino
traceroute www.senacrs.com.br

# Para realizar testes de rota básico para determinado destino, em IPv6
traceroute6 www.senacrs.com.br

# Para realizar testes de rota básico para determinado destino, sem resolução de nomes (DNS)
traceroute -n www.senacrs.com.br

# Para realizar testes de rota básico para determinado destino, com o protocolo ICMP ao invés do UDP padrão
traceroute -I www.senacrs.com.br

iperf

# Para colocar em modo servidor, com o protocolo TCP e a porta padrão 5001
iperf -s

# Para colocar em modo servidor, com o protocolo TCP e a porta padrão 5001, com IPv6
iperf -s -V

# Para executar o cliente, com o protocolo TCP, 10 segundos de teste e a porta padrão 5001
iperf -c IP_Servidor

# Para executar o cliente, com o protocolo TCP, 10 segundos de teste e a porta padrão 5001, com IPv6
iperf –V c IP_Servidor

# Para executar o cliente, com o protocolo TCP, 30 segundos de teste, relatórios a cada 1s e a porta padrão 5001
iperf -c IP_Servidor -i 1 -t 30

# Para colocar em modo servidor, com o protocolo TCP e a porta 15001
iperf -s -p 15001

# Para colocar em modo servidor, com o protocolo UDP e a porta padrão 5001
iperf -s -u

# Para executar o cliente, com o protocolo UDP, 30 segundos de teste, relatórios a cada 1s e a porta 15001
iperf -c IP_Servidor -i 1 -t 30 -u -p 15001

# Para executar o cliente, com o protocolo TCP, 30 segundos de teste, relatórios a cada 1s, a porta padrão 5001 e com 10 conexões em paralelo
iperf -c IP_Servidor -i 1 -t 30 -P 10

arping

# Para enviar requisições ARP para um host vizinho pela interface eth0
arping -I eth0 192.168.1.1

# Para procurar endereços IP duplicados
arping -D -I eth0 192.168.1.1


wget

# Para fazer o download de uma URL
wget http://192.168.200.3/arquivo.iso

# Para fazer o download de uma URL que possua usuário e senha
wget ‐‐http-user=aluno ‐‐http-password=senha http://192.168.200.3/arquivo.iso

# Para fazer o download de uma URL por meio de um proxy
wget -e use_proxy=yes -e http_proxy=192.168.200.253:8080 http://192.168.200.3/arquivo.iso
ou
Exportar as variáveis do shell http_proxy e https_proxy. Exemplo:

export http_proxy="http://192.168.200.253:8080"
export https_proxy="http://192.168.200.253:8080"


ssh e scp

# Para acessar um servidor SSH (192.168.200.3), na porta padrão, com o usuário aluno
ssh aluno@192.168.200.3

# Para acessar um servidor SSH (192.168.200.3), na porta padrão, com o usuário aluno e obter o modo de depuração
ssh -vvvv aluno@192.168.200.3

# Para acessar um servidor SSH (192.168.200.3), na porta 34000, com o usuário aluno
ssh -p34000 aluno@192.168.200.3

# Para acessar um servidor SSH (192.168.200.3), na porta padrão, com o usuário aluno e executar o comando "dig @8.8.8.8 www.senacrs.com.br"
ssh aluno@192.168.200.3 "dig @8.8.8.8 www.senacrs.com.br"

# Para copiar o diretório /opt/arquivos do servidor remoto para o diretório local /var/opt, com a porta padrão e com o usuário aluno, mantendo as permissões dos arquivos e diretórios remotos
scp -p -r aluno@192.168.200.3:/opt/arquivos /var/opt

# Para copiar o diretório local /tmp/relatorio para o servidor remoto no diretório /home/aluno, com a porta 34000 e com o usuário aluno, mantendo as permissões dos arquivos e diretórios locais
scp -P34000 -p -r /tmp/relatorio aluno@192.168.200.3:~



ss

# Para mostrar todas as portas TCP e UDP em escuta e o processos responsáveis
ss -tupl
# Para mostrar todas as conexões TCP abertas
ss -t -a

# Para mostrar todas as conexões TCP abertas
ss -u -a

# Para mostrar todas as conexões TCP abertas, de forma contínua a cada 5s
watch -n 5 "ss -t -a"

# Para listar todas as conexões
ss -an

# Para listar estatísticas por protocolo
ss -sa

# Para obter informações sobre os temporizadores das conexões
ss -o


mtr

# Para realizar testes de forma conínua para determinado endereço
mtr 8.8.8.8

# Para realizar testes de forma conínua para determinado endereço, com IPv6
mtr -6 www.google.com

# Para realizar testes por 10 vezes e gerar um relatório
mtr -r -c 10 8.8.8.8

# Para realizar testes de forma conínua para determinado endereço, sem resolução de nomes (DNS)
mtr -n 8.8.8.8

dhclient

# Para renovar (renew) o IP por DHCP na interface eth0
dhclient eth0

# Para liberar (release) o IP por DHCP na interface eth0
dhclient -r eth0

telnet

# Para fazer uma conexão a porta 80 de um endereço IP
telnet 19.168.200.3 80

Obs.: para cancelar a conexão, utilizar a combinação de teclas CTRL+Ç ('^]')

netcat

# Para criar um servidor, com o protocolo TCP, na porta 8000
nc -l 8000

# Para conectar em um servidor, com o protocolo TCP, na porta 8000
nc 192.168.200.3 8000

# Para criar um servidor, com o protocolo UDP, na porta 8000
nc -u -l 8000

# Para conectar em um servidor, com o protocolo UDP, na porta 8000
nc -u 192.168.200.3 8000

# Para criar um servidor, com o protocolo TCP, na porta 8000, e manter o socket aberto depois da primeira conexão
nc -k -l 8000

# Para transmitir um arquivo do lado do cliente para o lado do servidor
Servidor: nc -l 8000 > /tmp/arquivo.dat
Cliente: nc 192.168.200.3 8000 < arquivo.dat

# Para transmitir um arquivo do lado do servidor para o lado do cliente
Servidor: nc -l 8000 < /tmp/arquivo.dat
Cliente: nc 192.168.200.3 8000 > arquivo.dat



Renomear interface

# Para trocar o nome da interface eth0 para "externo" em tempo de execução
ip link set eth0 down
ip link set eth0 name externo

# Para trocar o nome da interface eth0 para "externo" de forma permanente, editar o arquivo "/etc/udev/rules.d/70-persistent-net.rules" e trocar o nome da interface que corresponde ao endereço MAC:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:1d:86:fd", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:1d:86:fd", ATTR{type}=="1", KERNEL=="eth*", NAME="externo"


Uso de VLANs

# Para ativar o uso de VLANs no Linux, deve ser usado o módulo 8021q. Por exemplo:
modprobe 8021q

# Para criar uma interface virtual deve-se utilizar o comando vconfig. Por exemplo, para criar
a interface eth1.100 com a marcação 100

vconfig add eth1 100

# Para evitar problemas com a filtragem de pacotes, deve-se ativar a flag para tornar o dump
da interface tal como se não houvesse VLANs. Por exemplo:

vconfig set_flag eth1.100 1

# Para remover uma VLAN, usa-se o comando vconfig com o parâmetro rem. Por exemplo,
para remover a interface eth1.100:

vconfig rem eth1.100

# Para definir um endereço IP de uma interface com VLAN, usa-se o comando ifconfig
padrão. Por exemplo, para definir o IP 10.0.0.100 na interface eth1.100:

ifconfig eth1.100 10.0.0.100/24

Interface em Bridge

# Para criar uma bridge de nome br0
ip link add br0 type bridge
ou
brctl addbr br0

# Para adicionar a interface eth0 na bridge br0
brctl addif br0 eth0
ou
ip link set eth0 master br0

# Para mostrar informações sobre a bridge br0
brctl show

# Para mostrar a tabela MAC da bridge br0
brctl showmacs br0

# Para ativar a bridge de nome br0
ip link set up dev br0

# Para desativar a bridge de nome br0
ip link set dev br0 down

# Para remover a interface eth0 de uma bridge de nome br0
# ip link set eth0 nomaster
# ip link set eth0 down

# Para remover uma bridge de nome br0
ip link delete br0 type bridge
ou
brctl delbr br0


# Para configurar a interface bridge na inicialização
# Debian
auto lo br0
iface lo inet loopback
iface eth0 inet manual
iface eth1 inet manual

# Bridge br0
iface br0 inet static
bridge_ports eth0 eth1
address 192.168.200.3
broadcast 192.168.200.255
netmask 255.255.255.0
gateway 192.168.200.1

# Centos
# Arquivo /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
IPADDR=192.168.200.3
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=no
DELAY=0

# Arquivo /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
HWADDR=AA:BB:CC:DD:EE:FF
BOOTPROTO=none
ONBOOT=yes
NM_CONTROLLED=no
BRIDGE=br0

# Arquivo /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
HWADDR=AA:BB:CC:DD:EE:FE
BOOTPROTO=none
ONBOOT=yes
NM_CONTROLLED=no
BRIDGE=br0


Obs.: é necessária a instalação do pacote bridge-utils para o utilitário brctl

Interface em Bonding

# Para definir qual o modo de operação da interface bonding de nome bond0, editar o arquivo
/etc/modprobe.d/bonding.conf

alias bond0 bonding
options bond0 miimon=80 mode=0

Obs.: mode=1 (Active-Passive), mode=0 (Round-Robin)

# Para listar sobre a interface bond0
cat /proc/net/bonding/bond0

# Para criar a interface bond0, com as interfaces físicas eth0 e eth1, no modo round-robin
modprobe bonding
ifenslave bond0 eth0 eth1
ip link set bond0 up

# Para trocar a interface ativa para eth1, no modo de operação Active-Passive
ifenslave -c bond0 eth1

# Para remover a inerface eth0 do bonding
ifenslave -d bond0 eth0


# Ativação da interface bond0 na inicialização

# CentOS
Arquivo /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="none"
ONBOOT="yes"
TYPE="Ethernet"
MASTER=bond0
SLAVE=yes

Arquivo /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
BOOTPROTO="none"
ONBOOT="yes"
TYPE="Ethernet"
MASTER=bond0
SLAVE=yes

Arquivo /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.200.3
PREFIX=24
NETWORK=192.168.200.0
GATEWAY=192.168.200.1


#Debian
Arquivo /etc/network/interfaces

auto bond0

iface bond0 inet static
address 192.168.200.3
netmask 255.255.255.0
network 192.168.200.0
gateway 192.168.200.1
slaves eth0 eth1
bond_mode active-backup
# bond_mode 0 para Round-Robin
bond_miimon 100
bond_downdelay 200
bond_updelay 200


Configurações de interface em arquivos

Debian

Arquivo de configuração: /etc/network/interfaces

# Exemplo de IPv4
auto eth0
iface eth0 inet static
address 192.168.200.3
netmask 255.255.255.0
gateway 192.168.200.254
broadcast 192.168.200.255
dns-nameservers 192.168.200.1 8.8.8.8
dns-search empresa.local

# Exemplo de IPv6
iface eth0 inet6 static
address fc00:0:2010:60::190
netmask 64
gateway fc00:0:2010:60::191


# Exemplo com o uso de VLANs
# Primeira opção: chamar um script para a criação das interfaces marcadas
auto eth1
iface eth1 inet manual
up ifconfig eth1 0.0.0.0 up
up /root/vlans/vlan.sh

# Segunda opção: adicionar as interfaces com a nomeação para uso de VLANs
auto eth0.2
iface eth0.2 inet static
address 192.168.2.1
netmask 255.255.255.0

auto eth0.3
iface eth0.3 inet static
address 192.168.3.1
netmask 255.255.255.0

# IP alias

auto eth0:1
iface eth0:1 inet static
name Ethernet alias LAN card
address 192.168.1.7
netmask 255.255.255.0
broadcast 192.168.1.255
network 192.168.1.0

CentOS

Arquivo(s) de configuração: /etc/sysconfig/network-scripts/ifcfg-eth0

# Exemplo de IPv4 e IPv6
DEVICE="eth0"
BOOTPROTO="static"
BROADCAST="192.168.200.255"
DNS1="8.8.8.8"
GATEWAY="192.168.200.254"
HWADDR="00:50:56:A8:6F:66"
IPADDR="192.168.200.3"
IPV6ADDR="fc00:0:2010:60::116/64"
IPV6INIT="yes"
IPV6_AUTOCONF="no"
NETMASK="255.255.255.0"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="849a1bcf-9d10-4fca-a910-6b0e9af18aba"
IPV6_DEFAULTGW=fc00:0:2010:60::191

# VLAN (um arquivo para cada interface)
#/etc/sysconfig/network-scripts/ifcfg-eth1.192

DEVICE=eth1.192
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.1
PREFIX=24
NETWORK=192.168.1.0
VLAN=yes

# IP alias
#/etc/sysconfig/network-scripts/ifcfg-eth1:0

DEVICE=eth1:0
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.1
PREFIX=24
NETWORK=192.168.1.0
NAME=eth0:0