O sistema UNIX usa como
protocolo nativo o TCP/IP (este protocolo foi criado 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.
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 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:
...
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
...
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:
host:~> ifconfig
eth0
Link encap:Ethernet HWaddr 00:A0:C9:E8:63:AB
inet addr:200.17.98.174 Bcast:200.17.98.255
Mask:255.255.255.0
UP BROADCAST RUNNING
MULTICAST MTU:1500 Metric:1
RX packets:3727007
errors:0 dropped:0 overruns:0 frame:3
TX packets:4869672
errors:0 dropped:0 overruns:0 carrier:0
collisions:679247
txqueuelen:100
Interrupt:10 Base
address:0xb400
lo
Link encap:Local loopback
inet
addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK
RUNNING MTU:3924 Metric:1
RX packets:404950
errors:0 dropped:0 overruns:0 frame:0
TX packets:404950
errors:0 dropped:0 overruns:0 carrier:0
collisions:0
txqueuelen:0
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:
ifconfig <interface> [<ip-address>]
[netmask
<mask>]
[broadcast
<bcast-address>]
[up|down]
Eis alguns exemplos de uso:
ifconfig
eth0 down
ifconfig
eth0 up
ifconfig eth0
10.0.0.17 netmask 255.0.0.0 up
ifconfig eth0:1 66.193.175.173 netmask 255.255.254.0
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:
host:~> route
Kernel IP routing
table
Destination
Gateway
Genmask Flags Metric
Ref Use Iface
200.17.98.0 *
255.255.255.0 U
0 0 0
eth0
127.0.0.0
*
255.0.0.0 U
0 0 0
lo
default router.pucpr.br
0.0.0.0 UG
0 0 0
eth0
A tabela acima indica que:
route [-v] add [-net|-host] Alvo
[netmask Nm]
[gw Gw]
[metric N]
[mss M]
[window W]
[irtt I]
[reject] [mod] [dyn] [reinstate]
[[dev] If]
ou
route [-v] del
[-net|-host] Alvo
[gw Gw]
[netmask Nm]
[metric N]
[[dev] If]
Eis alguns exemplos de uso
desse comando:
route
add -net 127.0.0.0
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
route add default gw
router02
route del default gw
router02
route add -host
10.0.0.125 dev eth0
route add -net 200.192.112.0
netmask 255.255.255.0 dev eth1
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".
cat
/proc/sys/net/ipv4/ip_forward
echo 1 >
/proc/sys/net/ipv4/ip_forward
echo 0 >
/proc/sys/net/ipv4/ip_forward
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:
ppgia:~> arp
Address
HWtype
HWaddress Flags
Mask Iface
200.17.98.68
ether 00:C0:DF:ED:09:0D
C
eth0
200.17.98.242
ether 00:A0:C9:92:DA:BB
C
eth0
200.17.98.189
ether 00:00:F8:7E:07:A2
C
eth0
gramado.ppgia.pucpr.br ether 00:A0:C9:DA:95:65
C
eth0
200.17.98.221
ether 00:A0:C9:E8:68:34
C
eth0
200.17.98.220
ether 00:80:5F:33:28:D3
C
eth0
curitiba.ppgia.pucpr.br ether 00:A0:24:13:52:4C
C
eth0
floripa.ppgia.pucpr.br ether 00:60:08:CB:16:53
C
eth0
200.17.98.142
ether 00:20:35:56:02:86
C
eth0
tokio.ppgia.pucpr.br ether
00:60:08:16:85:B3
C
eth0
200.17.98.225
ether 00:60:08:16:80:00
C
eth0
gaviao.ppgia.pucpr.br ether
00:80:5F:C1:A5:63
C
eth0
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:
#
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
...
Os processos que respondem
pelos serviços são normalmente chamados daemons, e são executados em background.
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.
:
|
|-- 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
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:
host:~>
netstat
Active
Internet connections (w/o servers)
Proto Recv-Q Send-Q Local
Address Foreign
Address State
tcp 0 0
sol.ppgia.pucp:ftp-data 200.17.98.225:1207
TIME_WAIT
tcp 0 0
sol.ppgia.pucpr.br:2287 ns.ifnet.com.br:smtp ESTABLISHED
tcp 0 0
sol.ppgia.pucpr.br:2286 cciespc2.cityu.edu.:www ESTABLISHED
tcp 0 0
sol.ppgia.pucpr.br:3128 omega.ppgia.pucpr:40274 TIME_WAIT
tcp 0 0
sol.ppgia.pucpr.br:2285 cciespc2.cityu.edu.:www ESTABLISHED
tcp 0 0
sol.ppgia.pucpr.br:2284 www.codeforge.com:www ESTABLISHED
tcp 0 0
sol.ppgia.pucpr.br:3128 omega.ppgia.pucpr:40273 TIME_WAIT
tcp 0 0
sol.ppgia.pucpr.br:3128 omega.ppgia.pucpr:40267 TIME_WAIT
...
Active UNIX domain
sockets (w/o servers)
Proto RefCnt Flags
Type
State I-Node Path
unix 1 [
]
STREAM CONNECTED 323876
@00003a52
unix 1 [
]
STREAM CONNECTED 328255
/dev/log
unix 1 [
]
STREAM CONNECTED
600 /dev/log
...
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.
Exercícios
1. Configuração de interfaces
ping e ssh. Para
tornar sua configuração permanente, coloque os comandos necessários no
final do arquivo /etc/rc.d/rc.local da
máquina virtual.
2. Status de rede
3. Roteamento
Ultima Alteração: 26/04/2005 – Prof. Marcos Aurelio Pchek
Laureano
Material original criado pelo Prof. Carlos Maziero