Ferramentas do usuário

Ferramentas do site


espec:configuracao_de_rede_em_unix

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
espec:configuracao_de_rede_em_unix [2012/03/09 18:52]
maziero [Interfaces de rede]
espec:configuracao_de_rede_em_unix [2012/03/09 18:54] (atual)
maziero [Status da atividade de rede]
Linha 1: Linha 1:
 +====== Configuração de rede ======
 +
 +O sistema UNIX usa como protocolo nativo o TCP/IP (esta família de protocolos foi criada para a interconexão de máquinas UNIX). Desta forma, os conceitos de redes TCP/IP são aplicáveis às redes UNIX sem esforço. Neste módulo veremos como ajustar as configurações básicas de rede em uma máquina Linux.
 +
 +===== Interfaces de rede =====
 +
 +Cada máquina possui uma ou mais interfaces de rede, geralmente no padrão //​ethernet//,​ com endereços IP associados que as identificam para o protocolo IP. Além disso, cada interface de rede também possui um endereço físico (MAC) que a identifica na rede local na camada de enlace.
 +
 +A relação das interfaces de rede físicas presentes no sistema (ativas e inativas) pode ser obtida através do comando ''​ifconfig -a'':​
 +
 +<​code>​
 +host:~> ifconfig -a
 +eth0      Link encap:​Ethernet ​ Endereço de HW 84:​2b:​2b:​7a:​c2:​07  ​
 +          inet end.: 200.134.10.120 ​ Bcast:​200.134.10.255 ​ Masc:​255.255.255.0
 +          endereço inet6: fe80::​862b:​2bff:​fe7a:​c207/​64 Escopo:Link
 +          UP BROADCAST RUNNING MULTICAST ​ MTU:​1500 ​ Métrica:1
 +          pacotes RX:1561589 erros:0 descartados:​0 excesso:0 quadro:0
 +          Pacotes TX:726651 erros:0 descartados:​0 excesso:0 portadora:0
 +          colisões:0 txqueuelen:​1000 ​
 +          RX bytes:​2232242561 (2.2 GB) TX bytes:​64919270 (64.9 MB)
 +          IRQ:42 Endereço de E/​S:​0x4000 ​
 +
 +lo        Link encap:​Loopback Local  ​
 +          inet end.: 127.0.0.1 ​ Masc:​255.0.0.0
 +          endereço inet6: ::1/128 Escopo:​Máquina
 +          UP LOOPBACK RUNNING ​ MTU:​16436 ​ Métrica:1
 +          pacotes RX:4950 erros:0 descartados:​0 excesso:0 quadro:0
 +          Pacotes TX:4950 erros:0 descartados:​0 excesso:0 portadora:0
 +          colisões:0 txqueuelen:​0 ​
 +          RX bytes:​839090 (839.0 KB) TX bytes:​839090 (839.0 KB)
 +
 +vboxnet0 ​ Link encap:​Ethernet ​ Endereço de HW 0a:​00:​27:​00:​00:​00  ​
 +          BROADCAST MULTICAST ​ MTU:​1500 ​ Métrica:1
 +          pacotes RX:0 erros:0 descartados:​0 excesso:0 quadro:0
 +          Pacotes TX:0 erros:0 descartados:​0 excesso:0 portadora:0
 +          colisões:0 txqueuelen:​1000 ​
 +          RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
 +
 +virbr0 ​   Link encap:​Ethernet ​ Endereço de HW 82:​66:​a0:​7f:​25:​48  ​
 +          inet end.: 192.168.122.1 ​ Bcast:​192.168.122.255 ​ Masc:​255.255.255.0
 +          endereço inet6: fe80::​8066:​a0ff:​fe7f:​2548/​64 Escopo:Link
 +          UP BROADCAST RUNNING MULTICAST ​ MTU:​1500 ​ Métrica:1
 +          pacotes RX:0 erros:0 descartados:​0 excesso:0 quadro:0
 +          Pacotes TX:725 erros:0 descartados:​0 excesso:0 portadora:0
 +          colisões:0 txqueuelen:​0 ​
 +          RX bytes:0 (0.0 B) TX bytes:​101310 (101.3 KB)
 +</​code>​
 +
 +Informação similar também pode ser ou nas mensagens de inicialização (//boot//) do sistema, visualizadas nos arquivos de log (''/​var/​log/​messages''​) ou através do comando ''​dmesg''​. Eis um trecho das mensagens de inicialização que indicam as interfaces de rede disponíveis em um sistema típico:
 +
 +<​code>​
 +...
 +Intel(R) PRO/100 Network Driver - version 2.3.38-k1
 +eth0: Intel(R) PRO/100 Network Connection
 +e100: eth0 NIC Link is Up 100 Mbps Half duplex
 +Intel(R) PRO/1000 Network Driver - version 5.2.30.1-k1
 +eth1: Intel(R) PRO/1000 Network Connection
 +e1000: eth1 NIC Link is Up 100 Mbps Full Duplex
 +...
 +</​code>​
 +
 +As informações sobre as interfaces de rede ativas podem ser visualizadas através do comando ''​ifconfig''​. Eis um exemplo de saída desse comando:
 +
 +<​code>​
 +host:~> ifconfig
 +eth0      Link encap:​Ethernet ​ Endereço de HW 84:​2b:​2b:​7a:​c2:​07  ​
 +          inet end.: 200.134.10.120 ​ Bcast:​200.134.10.255 ​ Masc:​255.255.255.0
 +          endereço inet6: fe80::​862b:​2bff:​fe7a:​c207/​64 Escopo:Link
 +          UP BROADCAST RUNNING MULTICAST ​ MTU:​1500 ​ Métrica:1
 +          pacotes RX:1561644 erros:0 descartados:​0 excesso:0 quadro:0
 +          Pacotes TX:726702 erros:0 descartados:​0 excesso:0 portadora:0
 +          colisões:0 txqueuelen:​1000 ​
 +          RX bytes:​2232247900 (2.2 GB) TX bytes:​64949454 (64.9 MB)
 +          IRQ:42 Endereço de E/​S:​0x4000 ​
 +
 +lo        Link encap:​Loopback Local  ​
 +          inet end.: 127.0.0.1 ​ Masc:​255.0.0.0
 +          endereço inet6: ::1/128 Escopo:​Máquina
 +          UP LOOPBACK RUNNING ​ MTU:​16436 ​ Métrica:1
 +          pacotes RX:4952 erros:0 descartados:​0 excesso:0 quadro:0
 +          Pacotes TX:4952 erros:0 descartados:​0 excesso:0 portadora:0
 +          colisões:0 txqueuelen:​0 ​
 +          RX bytes:​839287 (839.2 KB) TX bytes:​839287 (839.2 KB)
 +
 +virbr0 ​   Link encap:​Ethernet ​ Endereço de HW 82:​66:​a0:​7f:​25:​48  ​
 +          inet end.: 192.168.122.1 ​ Bcast:​192.168.122.255 ​ Masc:​255.255.255.0
 +          endereço inet6: fe80::​8066:​a0ff:​fe7f:​2548/​64 Escopo:Link
 +          UP BROADCAST RUNNING MULTICAST ​ MTU:​1500 ​ Métrica:1
 +          pacotes RX:0 erros:0 descartados:​0 excesso:0 quadro:0
 +          Pacotes TX:728 erros:0 descartados:​0 excesso:0 portadora:0
 +          colisões:0 txqueuelen:​0 ​
 +          RX bytes:0 (0.0 B) TX bytes:​101662 (101.6 KB)
 +</​code>​
 +
 +A interface ''​lo''​ indica o dispositivo virtual chamado //​loopback//,​ que permite ao host acessar seus próprios serviços TCP/IP. O endereço IP dessa interface é sempre 127.0.0.1, com máscara 255.0.0.0. Por ser um dispositivo virtual, ele não possui endereço físico (MAC). Na maioria dos dispositivos e sistemas essa interface é definida na configuração default do sistema, por isso não é necessário configurá-la.
 +
 +Além de listar as interfaces ativas, o comando ''​ifconfig''​ pode ser usado para ligar/​desligar/​configurar uma determinada interface, ou para definir novas interfaces de rede na máquina. A sintaxe básica desse comando é a seguinte:
 +
 +<​code>​
 +ifconfig <​interface>​ [<​ip-address>​]
 +                     ​[netmask <​mask>​]
 +                     ​[broadcast <​bcast-address>​]
 +                     ​[up|down]
 +</​code>​
 +
 +Eis alguns exemplos de uso:
 +
 +Para desativar a interface ''​eth0''​ (primeira interface //​ethernet//​):​
 +
 +<​code>​
 +ifconfig eth0 down
 +</​code>​
 +
 +Para ativar a interface ''​eth0''​ com uma configuração pré-definida (default do sistema):
 +
 +<​code>​
 +ifconfig eth0 up
 +</​code>​
 +
 +Para ativar a interface ''​eth0''​ com uma configuração específica:​
 +
 +<​code>​
 +ifconfig eth0 10.0.0.17 netmask 255.0.0.0 up
 +</​code>​
 +
 +Para associar um segundo endereço IP (virtual) à interface ''​eth0'':​
 +
 +<​code>​
 +ifconfig eth0:1 66.193.175.173 netmask 255.255.254.0
 +</​code>​
 +
 +===== Configuração de rotas =====
 +
 +A tabela de roteamento indica quais as rotas ativas em uma máquina. Ela pode ser obtida através do comando ''​route''​. Eis uma saída típica desse comando:
 +
 +<​code>​
 +host:~> route
 +Tabela de Roteamento IP do Kernel
 +Destino ​        ​Roteador ​       MáscaraGen. ​   Opções Métrica Ref   Uso Iface
 +200.134.10.0 ​   *               ​255.255.255.0 ​  ​U ​    ​1 ​     0        0 eth0
 +192.168.122.0 ​  ​* ​              ​255.255.255.0 ​  ​U ​    ​0 ​     0        0 virbr0
 +link-local ​     *               ​255.255.0.0 ​    ​U ​    ​1000 ​  ​0 ​       0 eth0
 +default ​        ​metcalfe.dainf. 0.0.0.0 ​        ​UG ​   0      0        0 eth0
 +
 +host:~> route -n
 +Tabela de Roteamento IP do Kernel
 +Destino ​        ​Roteador ​       MáscaraGen. ​   Opções Métrica Ref   Uso Iface
 +200.134.10.0 ​   0.0.0.0 ​        ​255.255.255.0 ​  ​U ​    ​1 ​     0        0 eth0
 +192.168.122.0 ​  ​0.0.0.0 ​        ​255.255.255.0 ​  ​U ​    ​0 ​     0        0 virbr0
 +169.254.0.0 ​    ​0.0.0.0 ​        ​255.255.0.0 ​    ​U ​    ​1000 ​  ​0 ​       0 eth0
 +0.0.0.0 ​        ​200.134.10.254 ​ 0.0.0.0 ​        ​UG ​   0      0        0 eth0
 +</​code>​
 +
 +A tabela acima indica que:
 +
 +  * A rede 200.17.98.0 pode ser acessada através da interface ethernet ''​eth0''​.
 +  * O //gateway// default é o dispositivo ''​router.pucpr.br''​
 +
 +O comando ''​route''​ também é usado para configurar as rotas usadas pelo sistema. Sua sintaxe básica de uso é a seguinte:
 +
 +<​code>​
 +route [-v] add [-net|-host] Alvo
 +      [netmask Nm]
 +      [gw Gw]
 +      [metric N]
 +      [mss M]
 +      [window W]
 +      [irtt I]
 +      [reject] [mod] [dyn] [reinstate]
 +      [[dev] If]
 +</​code>​
 +
 +ou
 +
 +<​code>​
 +route [-v] del [-net|-host] Alvo
 +      [gw Gw]
 +      [netmask Nm]
 +      [metric N]
 +      [[dev] If]
 +</​code>​
 +
 +Eis alguns exemplos de uso desse comando:
 +
 +Para adicionar a rota de //​loopback//​ (com máscara default 255.0.0.0 e dispositivo ''​lo''​):​
 +
 +<​code>​
 +route add -net 127.0.0.0
 +</​code>​
 +
 +Para adicionar/​remover uma rota para a rede 192.120.10.0 através do dispositivo ''​eth0'':​
 +
 +<​code>​
 +route add -net 192.120.10.0 netmask 255.255.255.0 dev eth0
 +
 +route del -net 192.120.10.0 netmask 255.255.255.0 dev eth0
 +</​code>​
 +
 +Para adicionar/​remover uma rota default usando ''​router02''​ como //​gateway//:​
 +
 +<​code>​
 +route add default gw router02
 +
 +route del default gw router02
 +</​code>​
 +
 +Para adicionar uma rota para o host 10.0.0.125 através do dispositivo ''​eth0'':​
 +
 +<​code>​
 +route add -host 10.0.0.125 dev eth0
 +</​code>​
 +
 +Para adicionar uma rota para a rede 200.192.112.0 através do dispositivo ''​eth1'':​
 +
 +<​code>​
 +route add -net 200.192.112.0 netmask 255.255.255.0 dev eth1
 +</​code>​
 +
 +Além de rotear seus próprios pacotes, um host pode também rotear pacotes recebidos em outras interfaces, agindo portanto como //gateway// para outras redes. Essa função é denominada "IP forwarding"​.
 +
 +Para verificar se o "IP forwarding"​ está ativado em uma máquina:
 +
 +<​code>​
 +cat /​proc/​sys/​net/​ipv4/​ip_forward
 +</​code>​
 +
 +Para ativar ou desativar o IP forwarding:
 +
 +<​code>​
 +echo 1 > /​proc/​sys/​net/​ipv4/​ip_forward
 +
 +echo 0 > /​proc/​sys/​net/​ipv4/​ip_forward
 +</​code>​
 +
 +===== Resolução de endereços físicos =====
 +
 +Os endereços físicos (da camada de enlace) são resolvidos (associados a endereços IP) através do protocolo ARP - //Address Resolution Protocol//. O comando ''​arp''​ permite visualizar o cache de endereços ARP na máquina local. Eis um exemplo de uso:
 +
 +<​code>​
 +host:~> arp
 +
 +maziero@laphroaig:​~$ arp
 +Endereço ​                ​TipoHW ​ EndereçoHW ​         Flags Máscara ​ Iface
 +mccarthy.dainf.ct.utfpr ​ ether   ​08:​00:​20:​a3:​de:​a3 ​  ​C ​             eth0
 +dainf.ct.utfpr.edu.br ​   ether   ​00:​1c:​c0:​39:​71:​ae ​  ​C ​             eth0
 +metcalfe.dainf.ct.utfpr ​ ether   ​00:​08:​54:​b3:​75:​79 ​  ​C ​             eth0
 +</​code>​
 +
 +===== Status da atividade de rede =====
 +
 +A comunicação em TCP/IP pode ocorrer através de serviços com ou sem conexão, providos respectivamente por TCP e UDP. Cada serviço é identificado por uma porta, na qual um processo tem um //socket// aberto para receber solicitações. Os principais serviços TCP/UDP estão listados no arquivo ''/​etc/​services'',​ do qual apresentamos uma pequena parte:
 +
 +<​code>​
 +# service ​      ​port/​protocol ​  ​aliases ​        ​description
 +
 +netstat ​        ​15/​tcp
 +qotd            17/​tcp ​         quote
 +msp             ​18/​tcp ​                         # message send protocol
 +msp             ​18/​udp ​                         # message send protocol
 +chargen ​        ​19/​tcp ​         ttytst source
 +chargen ​        ​19/​udp ​         ttytst source
 +ftp-data ​       20/tcp
 +ftp             ​21/​tcp
 +fsp             ​21/​udp ​         fspd
 +ssh             ​22/​tcp ​                         # SSH Remote Login Protocol
 +ssh             ​22/​udp ​                         # SSH Remote Login Protocol
 +telnet ​         23/tcp
 +smtp            25/​tcp ​         mail
 +time            37/​tcp ​         timeserver
 +...
 +</​code>​
 +
 +Os processos que respondem pelos serviços são normalmente chamados //​daemons//,​ e são executados em //​background//​ (segundo plano). Vários deles, sobretudos os que gerenciam serviços mais importantes,​ são lançados pelos scripts de inicialização do sistema, contidos no diretório ''/​etc/​rc.d'',​ cuja estrutura é definida a seguir:
 +
 +<​code>​
 +:
 +|
 +|-- rc.d
 +|   |-- init.d ​ scripts de inicialização de serviços
 +:   |-- rc0.d   ​scripts a executar ao entrar no run-level 0
 +    |-- rc1.d   idem, 1
 +    |-- rc2.d   idem, 2
 +    |-- rc3.d   idem, 3
 +    |-- rc4.d   idem, 4
 +    |-- rc5.d   idem, 5
 +    `-- rc6.d   idem, 6
 +</​code>​
 +
 +O comando ''​netstat''​ permite obter uma série de informações sobre os serviços de rede em uma máquina UNIX. Suas principais opções são:
 +
 +  * ''​-r''​ : informações de roteamento (similar ao comando ''​route''​)
 +  * ''​-i''​ : informações sobre interfaces (similar ao comando ''​ifconfig''​)
 +  * ''​-a''​ : indica também as portas TCP e UDP abertas no host)
 +  * ''​-p''​ : indica quais os processos associados a portas de rede abertas
 +  * ''​-g''​ : informações sobre grupos multicast conhecidos no host
 +  * ''​-n''​ : saída numérica (sem converter IPs e números de porta em seus nomes respectivos)
 +
 +A operação default mostra as conexões e //sockets// ativos, como vemos na listagem a seguir:
 +
 +<​code>​
 +host:~> netstat -n
 +Conexões Internet Ativas (sem os servidores)
 +Proto Recv-Q Send-Q Endereço Local          Endereço Remoto ​        ​Estado ​     ​
 +tcp        0      0 200.134.10.120:​55769 ​   74.125.234.103:​80 ​      ​ESTABELECIDA
 +tcp       ​38 ​     0 200.134.10.120:​39320 ​   199.47.218.160:​443 ​     ESPERANDO_FECHAR
 +tcp        0      0 200.134.10.120:​37098 ​   199.47.217.149:​80 ​      ​ESTABELECIDA
 +tcp        0      0 200.134.10.120:​44811 ​   38.104.86.204:​443 ​      ​ESTABELECIDA
 +tcp        0      0 200.134.10.120:​55458 ​   200.134.10.1:​80 ​        ​TIME_WAIT  ​
 +tcp        0      0 127.0.0.1:​34668 ​        ​127.0.0.1:​40751 ​        ​ESTABELECIDA
 +tcp        0      0 127.0.0.1:​40751 ​        ​127.0.0.1:​34668 ​        ​ESTABELECIDA
 +tcp       ​38 ​     0 200.134.10.120:​45837 ​   23.21.220.122:​443 ​      ​ESPERANDO_FECHAR
 +tcp        0      0 200.134.10.120:​45950 ​   74.125.47.125:​443 ​      ​ESTABELECIDA
 +tcp        0      0 200.134.10.120:​38835 ​   157.55.56.142:​40042 ​    ​ESTABELECIDA
 +tcp        0      0 200.134.10.120:​58365 ​   38.104.86.203:​443 ​      ​ESTABELECIDA
 +tcp       ​38 ​     0 200.134.10.120:​44763 ​   199.47.217.177:​443 ​     ESPERANDO_FECHAR
 +tcp        0      0 200.134.10.120:​55457 ​   200.134.10.1:​80 ​        ​TIME_WAIT  ​
 +
 +Domain sockets UNIX ativos (sem os servidores)
 +Proto RefCnt Flags       ​Type ​      ​State ​        ​I-Node ​  ​Caminho
 +unix  2      [ ]         ​DGRAM ​                   6534     ​@/​org/​kernel/​udev/​udevd
 +unix  2      [ ]         ​DGRAM ​                   11123    @/​org/​freedesktop/​hal/​udev_event
 +unix  2      [ ]         ​DGRAM ​                   8753     @
 +unix  21     [ ]         ​DGRAM ​                   7929     /​dev/​log
 +unix  3      [ ]         ​STREAM ​    ​CONECTADO ​    ​600248 ​  
 +unix  3      [ ]         ​STREAM ​    ​CONECTADO ​    ​600247 ​  
 +unix  3      [ ]         ​STREAM ​    ​CONECTADO ​    ​600211 ​  ​@/​tmp/​dbus-D0ZmiXx0PC
 +...
 +</​code>​
 +
 +O comando ''​netstat''​ possui uma série de opções úteis para verificar o status corrente das operações de rede. Consulte a pagina de manual do comando para maiores informações.
  
espec/configuracao_de_rede_em_unix.txt · Última modificação: 2012/03/09 18:54 por maziero