Post on 19-May-2015
description
Pósgradaduação em redes de computadores
Administração de redes Unix/Linux
Marcelo Barros de Almeidamarcelobarrosalmeida@gmail.com
Aula 02: Sumário
Inicialização do sistema
Direitos e permissões
Administrando grupos e usuários
Gerenciado processos
Configuração de rede Básica Avançada
Pósgradaduação em redes de computadores
Inicialização do sistema
Inicialização do sistema
Inspirada no Unix System V e adotada por várias distros Linux
Define níveis de execução (podem variar dependendo da distro):0) Halt (desligamento seguro)
1) Single user mode
2) Multiuser mode, sem NFS ou serviços avançados de rede
3) Full multiuser mode, com todos os serviços
4) Não definido
5) Como no 3 e mais o X11
6) Restart
Boot Loader
linuxrc
kernel+initrd
init
rootfs
rc
inittab
Sistema operando
rc[S06].d
BIOS
Inicialização do sistema
BIOS (Basic Input Output System)
Inicializa o hardware do sistema e carrega os primeiros 512 bytes do disco (MBR, Master Boot Record)
O boot loader é então executado (atualmente o GRUB)
O GRUB lê e executa a inicialização de partida
/boot/grub/menu.lst
Boot Loader
linuxrc
kernel+initrd
init
rootfs
rc
inittab
Sistema operando
rc[S06].d
BIOS
Inicialização do sistema
Parte do menu.lsttitle Ubuntu 8.04, kernel 2.6.2419genericroot (hd0,0)kernel /vmlinuz2.6.2419generic root=UUID=<id> ro initrd /initrd.img2.6.2419generic
O grup é informado sobre o kernel a usar, a partição principal (/) e o initrd (Initial RAM Disk)
O initrd é montado em memória e permite inicializações mais exóticas, detecção de hardware, carregamento de drivers, etc
O script /linuxrc, dentro do initrd, é quem roda neste momento
Boot Loader
linuxrc
kernel+initrd
init
rootfs
rc
inittab
Sistema operando
rc[S06].d
BIOS
Inicialização do sistema
No final do linuxrc, é executado o programa init. O init lê as instruções de partida do /etc/inittab, onde também é definido o nível de execução (runlevel, de 06 e S).
Formato do inittab: id:runlevels:action:process
Exemplos:id:2:initdefault:si::sysinit:/etc/init.d/rcSl2:2:wait:/etc/rc.d/rc 2ca::ctrlaltdel:/sbin/shutdown -r now1:2345:respawn:/sbin/getty 38400 tty1
Boot Loader
linuxrc
kernel+initrd
init
rootfs
rc
inittab
Sistema operando
rc[S06].d
BIOS
Inicialização do sistema
A linha do sysinit é executada (rcS)
Com o runlevel definido (initdefault), vários scripts são executados
Cada runlevel tem seu diretório:
/etc/rc<r>.d/ (ex: /etc/rc2.d/)
Todos os scripts ficam em init.d:
/etc/init.d/script [start|stop|restart]
Links simbólicos são criados do diretório de runlevel para o initd./etc/rc<r>.d/[S|K]<nn>script /etc/init.d/script→
Boot Loader
linuxrc
kernel+initrd
init
rootfs
rc
inittab
Sistema operando
rc[S06].d
BIOS
Inicialização do sistema
Dentro do diretório de runlevel, é usada a seguinte notação para o arquivo:[S|K]<nn>script
S (start): executar o script neste nível K (kill): parar o script neste nível nn: número que indica a ordem deve ser
executado o script
Ao final, o sistema estará em operação e completamente inicializado
Boot Loader
linuxrc
kernel+initrd
init
rootfs
rc
inittab
Sistema operando
rc[S06].d
BIOS
Inicialização do sistema
Obviamente, é chato colocar serviços para rodar em um runlevel manualmente, apesar de possível
O comando updaterc.d ajuda muito neste processo. Basta criar o script no init.d e acertar o runlevel:
touch /etc/init.d/meusrv
updaterc.d meusrv start 40 1 2 3 4 5 6 . stop 50 0 6 .$ sudo touch /etc/init.d/meusrv$ sudo update-rc.d meusrv start 40 1 2 3 4 5 6 . stop 50 0 6 . Adding system startup for /etc/init.d/meusrv ... /etc/rc0.d/K50meusrv -> ../init.d/meusrv /etc/rc6.d/K50meusrv -> ../init.d/meusrv /etc/rc1.d/S40meusrv -> ../init.d/meusrv /etc/rc2.d/S40meusrv -> ../init.d/meusrv /etc/rc3.d/S40meusrv -> ../init.d/meusrv /etc/rc4.d/S40meusrv -> ../init.d/meusrv /etc/rc5.d/S40meusrv -> ../init.d/meusrv /etc/rc6.d/S40meusrv -> ../init.d/meusrv
Inicialização do sistema
Também é simples remover serviços:
updaterc.d f meusrv remove
rm /etc/init.d/meusrv
$ sudo update-rc.d -f meusrv remove Removing any system startup links for /etc/init.d/meusrv ... /etc/rc0.d/K50meusrv /etc/rc1.d/S40meusrv /etc/rc2.d/S40meusrv /etc/rc3.d/S40meusrv /etc/rc4.d/S40meusrv /etc/rc5.d/S40meusrv /etc/rc6.d/K50meusrv /etc/rc6.d/S40meusrv$ sudo rm /etc/init.d/meusrv
Inicialização do sistema
Outro utilitário que merece destaque e com GUI, é o sysvrcconf (rcconf no Debian)
Inicialização do sistema
Alguns comandos úteis: runlevel: mostra o nível de execução anterior e atual telinit: muda o nível de execução do sistema
telinit 6 restart o sistema→ init: também permite mudar o nível de execução atual
14
Pausa para o exercício
Usando o script a seguir, determine que ele seja executado nos runlevels 2 e 3 somente, de forma automática.#!/bin/sh# Servico de teste
case "$1" instart)
echo "Iniciando o servico meusrv ...";;
stop)echo "Parando o servico meusrv ..."
;;restart)
echo "Re-iniciando o servico meusrv ..." ;;*)
echo "Sintaxe: $0 {start|stop|restart}" exit 1 ;;esacexit 0
Inicialização do sistema no Ubuntu:Upstart
O init é antigo e existem projetos mais recentes: Initng: Debian/Ubuntu SMF (Service Management Facility): Solaris Launchd: Mac OS BootScripts: GoboLinux Upstart: Ubuntu/Fedora/Suse
Inicialização do sistema no Ubuntu:Upstart
Mais flexível e baseado em eventos. Permite um melhor tratamento de mudanças (hardware, sistemas de arquivo, etc) e possibilita inicialização concorrente.
Não existem mais runlevels, eles são emulados na lógica do upstart por motivos de compatibilidade.
No fundo, o upstart é uma máquina de estados, onde os estados executam tarefas/serviços (jobs) e as transições são feitas por eventos (events). Os eventos podem ser gerados pelo Upstart, jobs ou por comandos.
Com o upstart, é possível uma análise completa do boot através do bootchart.
Inicialização do sistema no Ubuntu:Upstart
Jobs: Ficam em /etc/event.d/, sendo arquivos texto com uma
sequência de instâncias (stanzas). Podem ser do tipo tarefa ou serviço:
Tarefa: executa alguma coisa e fica em estado de espera ao terminar
Serviço: ficam sempre em execução a menos que terminados manualmente
O Job deve conter uma instância exec ou script, dizendo o que será feito no job
Inicialização do sistema no Ubuntu:Upstart
Eventos: Podem ser gerados pelos jobs, pelo upstart ou mesmo
manualmente. Alguns eventos do Upstart:
startup shutdown stalled (quando não existem mais processos rodando) controlaltdelete powerstatuschange starting, started stopping, stopped
Inicialização do sistema no Ubuntu:Upstart
rcS rcdefault rc2 tty1
stopped runlevel 2 stoppedstartup
controlaltdelete
controlaltdelete
logd
Emulação dos runlevels dentro do upstart
upstart
Inicialização do sistema no Ubuntu:Upstart
# rcS - runlevel compatibility
start on startupstop on runlevelconsole outputscript
runlevel --set S >/dev/null || true
PREVLEVEL=NRUNLEVEL=Sexport PREVLEVEL RUNLEVEL
exec /etc/init.d/rcSend script
# rc2 - runlevel 2 compatibility
start on runlevel 2stop on runlevel [!2]console outputscript
set $(runlevel --set 2 || true)if [ "$1" != "unknown" ]; then PREVLEVEL=$1 RUNLEVEL=$2 export PREVLEVEL RUNLEVELfiexec /etc/init.d/rc 2
end script
# rc - runlevel compatibility
start on stopped rcSscript
runlevel --reboot || trueif grep -q -w -- "-s\|single\|S" /proc/cmdline; then telinit Selif [ -r /etc/inittab ]; then RL="$(sed -n -e "/^id:[0-9]*:initdefault:/{s/^id://;s/:.*//;p}" /etc/inittab || true)" if [ -n "$RL" ]; then
telinit $RL else
telinit 2 fielse telinit 2fi
end script
Inicialização do sistema no Ubuntu:Upstart
initctl emit meuevt startinitctl emit meuevt stop
inictl start meusrvinitctl stop meusrv
start meusrvstop meusrv
initctl list
# /etc/event.d/meusrv#start on meuevt startstop on meuevt stopconsole output
scriptrm /tmp/log.txtwhile /bin/true;do
echo "Running meusrv" >> /tmp/log.txt
sleep 1done
end script
Comandos úteis: initctl: controla jobs e emite sinais start/stop: controlam jobs
22
Pausa para o exercício
Coloque o script abaixo dentro da estrutura do upstart. Tente alterálo para que seja inicializado somente dentro do runlevel 2.
Tente instalar o bootchart e analise sua inicialização.# /etc/event.d/meusrv#start on meuevt startstop on meuevt stopconsole outputscript
echo "Running meusrv" > /tmp/log.txtwhile /bin/true;do
date >> /tmp/log.txtsleep 1
doneend script
23
Pósgradaduação em redes de computadores
Direitos e permissões
24
Direitos e permissões
O acesso a arquivos/diretórios é dividido em 3 conjuntos de direitos:
Dono: direitos relacionados a quem criou o arquivo. Grupo: direitos relacionados a um grupo de usuários que pode
ter acesso ao arquivo. Outros: direitos relacionados aos usuários que não são donos ou
não estão em grupos relacionados ao arquivo.
Cada conjunto de direitos possui 3 atributos: r (read): direitos de ler (se for arquivo) ou listar conteúdo (se
diretório) w (write): direitos de modificar/apagar x (execution): direitos de executar (se for arquivo) ou de acessar
(se for diretório)
25
Direitos e permissões
$ ls -l
-rw-r--r-- 1 marcelo marcelo 0 2008-06-22 16:49 arquivodrwxr-xr-x 2 marcelo marcelo 4096 2008-06-22 16:49 diretoriolrwxrwxrwx 1 marcelo marcelo 7 2008-06-22 16:49 link -> arquivo
Arquivos (), diretórios (d) ou links (l)
rw: direitos do dono (leitura,modificação, mas não é executável)
r: direitos do grupo (leitura somente, não é executável)
r: direitos dos outros (leitura somente, não é executável)
dono (UID: user ID)
grupo (GID: group ID)
26
Direitos e permissões
Exemplos de direitos de acesso para um arquivo: rw: Arquivo com direitos de acesso exclusivos para o dono rwr: Um determinado grupo pode ler o arquivo, mas só o
dono modifica rwrr: Qualquer um pode ler o arquivo, mas só o dono
modifica rwrwr: Qualquer um pode ler o arquivo, mas só o dono ou
alguém do grupo pode modificar rwxrwxrx: Qualquer um pode ler e executar o arquivo, mas só o
dono ou alguém do grupo pode modificar rwxrxr: O grupo pode ler e executar, o dono pode,
adicionalmente, modificar. O resto apenas pode ver o conteúdo
27
Direitos e permissões
Exemplos de direitos de acesso para um diretório: drwx: Somente o dono pode modificar e entrar no diretório drwxrxrx: O dono tem amplos poderes sobre o diretório,
enquanto o grupo e o resto apenas podem entrar no diretório e listar o seu conteúdo
drwxxx: O dono tem amplos poderes sobre o diretório, enquanto o grupo e o resto apenas podem entrar no diretório
drwxrwx: Grupo e dono com amplos direitos no diretórios
O root tem amplos poderes de acesso, independente dos direitos configurados
28
Direitos e permissões especiais
Além das permissões já vistas existem ainda um conjunto avançado de permissões especiais. Elas devem ser usadas com cuidado para não gerar falhas de segurança.
SUID bit (s): Permite que quem executa o arquivo tenha direitos iguais ao dono do arquivo, durante a execução. Útil para programas como passwd.
SGID bit (s): Permite que quem executa o arquivo tenha direitos iguais ao groupo do arquivo, durante a execução. Se diretório, força que arquivos criados dentro desse diretório tenham o mesmo grupo do diretório pai. Útil em diretórios compartilhados por um grupo.
Stick bit (t): Garante que só quem criou o arquivo possa removêlo. Importante para diretórios compartilhados como /tmp.
29
Mudando direitos e permissões com chmodusando a forma relativa
chmod [a|u|g|o][+||=][r|w|x|s|t] arquivo/diretório
chmod [alvo][operação][direitos] arquivo/diretório Alvos:
u: user, g: group, o: others, a: all Operações:
+: adiciona direitos, : remove direitos, =: adiciona direitos, sem mesclar com os direitos já existente para o alvo
Direitos: r: read, w: write, x:execution, s: set user/group ID, t: stick
30
Mudando direitos e permissões com chmodusando a forma relativa
Exemplos chmod g+r <arq>: adiciona direitos de leitura a todos do grupo chmod ug+x <dir>: adiciona direitos de acesso ao dono e grupo chmod ax <arq>: retira todos os direitos de execução chmod ug=rw <arq>: configura dono e grupo para somente ler e
modificar. Não toca nos direitos dos outros chmod +t <dir>: liga o stick bit chmod u+s: liga o bit de SUID chmod gs: desliga o bit de SGID
31
Mudando direitos e permissões com chmodusando a forma absoluta
Outra forma de usar o chmod é com da notação octal, especificando diretamente os direitos através de 4 números octais relacionados aos quatro conjuntos:
chmod 1755 <dir>: 1 0+0+1, somente stick bit no grupo especial→ 7 4+2+1, read, write e execution para dono→ 5 4+0+1, read e execution para grupo→ 5 4+0+1, read e execution para outros→
4 2 1 4 2 1 4 2 1 4 2 1
u g t r w x r w x r w x
especiais dono grupo outros
32
Pausa para o exercício
Experimente o chmod em suas formas absolutas e relativas. Use o ls la para que todos os arquivos sejam mostrados e a listagem fique completa.
33
Pósgradaduação em redes de computadores
Administrando grupos e usuários
34
Grupos e usuários:Arquivos e diretórios relevantes
/etc/passwd: armazena informações sobre os usuários, como shell usado, local da conta, etc.
/etc/group: lista grupos existentes e que usuários fazem parte dele.
/etc/shadow: armazena as senhas dos usuários, encriptada
/etc/skel: esqueleto para contas de usuários
/etc/issue: mensagem exibida na tela de login no terminal (issue.net para logins remotos)
/etc/motd: mensagem exibida após o login
/etc/profile: definições de ambiente para todos os usuários
/etc/default/useradd: definições padrões para criação de usuários (se usado o useradd)
/etc/adduser.conf: definições padrões para o adduser
35
Grupos e usuários:Principais comandos
useradd: adiciona contas de usuário
usermod: modifica parâmetros da conta do usuário
userdel: remove a conta do usuário
passwd: ajusta o password para um usuário
chown: troca o dono de um arquivo/diretório
Para interação no terminal, use os comandos <operação>user:
adduser deluser
36
Grupos e usuários:Principais comandos
groupadd: cria um novo grupo
groupdel: apaga um group
groupmod: modifica um group
groups: imprime em quais grupos um usuário está
chgrp: troca o grupo de um arquivo/diretório
Também existem os equivalentes interativos: addgroup delgroup
37
Grupos e usuários:Exemplos de utilização
Cria o usuário mateus, gerando a sua conta em /home/mateus:
sudo useradd m mateus
Cria um grupo kid e modifica o usuário mateus para que ele faça parte do grupo:
sudo groupadd kid sudo usermod G kid mateus
Remove o usuário mateus, inclusive apagando toda a sua conta:
sudo userdel r mateus
38
Pausa para o exercício
Experimente os comandos relacionados a usuários e grupos, criando, apagando e modificando contas. Verifique como as contas são criadas no /home e tembém experimente alterar os padrões de criação de contas. Altere também donos e grupos com chown e chgrp.
39
Pósgradaduação em redes de computadores
Gerenciado processos
40
Gerenciando processos
Em sistemas Linux, todas as atividades são executadas por processos
Cada processo possui características como prioridade, status, dono, PID (Process ID), tempo de execução, percentagem de uso de CPU, memória alocada, etc:
Prioridades: de 20 (menor) a 19 (maior) Running, sleeping, stopped, zombie PID: número único que identifica o processo
O kernel tenta fazer um escalonamento justo dos processos, geralmente dividindo o tempo da CPU entre os vários processos de mesma prioridade de forma igual
41
Gerenciando processos
Um processo pode ser executado de fundo (background) ou não (foreground):
Adicionar ”&” na linha de comando manda o processo para background
Comandos do bash como bg, fg e jobs lidam com isso diretamente
Ctrl+Z permite enviar um processo para backgound
Todo processo tem uma entrada padrão, uma saída padrão e uma saída de erro. Em geral:
STDIN: entrada padrão STDOUT: saída padrão STDERR: saída de erro
42
Gerenciando processos
Um processo pode receber uma espécie interrupção de software conhecida como ”sinal” em Unix.
Cada sinal tem um número que o identifica e isto pode variar de Unix para Unix.
Alguns sinais (número entre parênteses): SIGTERM (15): sinaliza a terminação do processo KILL (9): força a terminação do processo HUP (1): Hang up, geralmente usado para reiniciar um processo
43
Gerenciando processos:Comandos importantes
ps: permite listar os processos da máquina (ps aux)
top: permite um acompanhamento dinâmico dos processos (pressione 'h' para detalhes de uso)
pstree: mostra a árvore de processos
kill: permite enviar sinais para um processo usando o seu PID
killall: envia sinais para um processo usando o seu nome
pkill envia sinais usando características diversas do processo
nice e renice: permite trocar a prioridade do processo
pgrep: permite pesquisar na lista de processos por características diversas
nohup: inicia um processo que não irá terminar ao ser feito o logout no terminal
44
Gerenciando processos:Exemplos
Lista todos os processos em execução: ps aux
Envia o sinal de termino forçado para todos os processos chamado make:
killall s 9 make
Pede ao smb para reler o seu arquivo de configuração: kill HUP smb
Executa um comando com nohup, permitindo o logout: nohup <meu_script> &
Mostra os processos do usuário mateus: ps u mateus
45
Agendamento de processos com cron
Tarefas podem ser agendadas e executadas periodicamente pelo processo ”cron”
Formas de agendamento: Definir um ação e o momento da sua execução, seguindo as
regras do cron, no arquivo /etc/crontab Definir o seu próprio arquivo cron dentro de /etc/cron.d/ Colocar um script dentro dos diretórios com escalonamento pré
definidos (não precisa seguir a notação do cron): /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly
46
Agendamento de processos com cron:Formato do arquivo crontab
Cada linha é um registro composto de sete campos que especificam quando um evento deve ocorrer:
Minutos: de 0 a 59, onde '*' significa todos minutos e '*/10' significa a cada 10 minutos
Horas: de 0 a 23, onde 38 significa que deve acontecer o evento toda hora entre 3 a 8 horas
Dia do mês: de 1 a 31, onde 3,4 significa apenas os meses março e abril
Mês: de 1 a 12 Dia da semana: de 0 a 7, começando e terminando no domingo Usuário Comando a ser executado
47
Agendamento de processos com cron:Formato do arquivo crontab
Exemplos: Todo dia as 07:30:
30 7 * * * root ps aux >> /var/log/ps.txt Dia sim, dia não, as 10:15
15 10 */2 * * root ps aux >> /var/log/ps.txt De segunda à sexta, de duas em duas horas:
0 */2 * * 15 root ps aux >> /var/log/ps.txt
48
Agendamento de processos com cron:Dicas finais
Use ”crontab e” para adicionar eventos
No /etc/profile, configure o editor padrão: export VISUAL=vim
Se não quiser usar a notação do crontab, basta criar um script dentro dos diretórios com escalonamento prédefinidos:
/etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly
49
Agendamento de processos com cron:Dicas finais
Usuários comuns também podem usar o cron. Para isso, alguns arquivos devem ser definidos:
/etc/cron.allow: crie este arquivo e liste os usuários que podem usar o cron, ou ...
/etc/cron.deny: crie este arquivo e liste os usuários que não podem usar o cron
/var/spool/crontab será o local onde as entradas dos usuários serão criadas
50
Agendamento de processos de única vez
Para eventos não regulares, o escalonamento pode ser feito com o comando ”at” e do processo atd:
Define o momento com at Digite os comandos, um por linha Finalize com Ctrl+D
atrm pode remover um comando da fila
atq mostra a fila de comandos escalonados
/etc/at.allow e /etc/at.deny dever ser configurados para que usuários comuns possam usar o at
$ at 22:30at> echo "done" at> Ctrl-djob 3 at Fri Jun 27 22:30:00 2008
51
Pausa para o exercício
Liste os processos no servidos com ps e também com top. Explore o help do top (pressione ”h”).
Crie um arquivo com com o script 1. Executeo algumas vezes, jogando o processo para background (&). Depois, remova os processos com kill e killall.
Usando o cront para agendar execuções periódicas do script 2.
#!/bin/bash# script 1while /bin/true;do
date >> /tmp/log.txtsleep 1
done
#!/bin/bash# script 2date >> /tmp/log2.txt
52
Pósgradaduação em redes de computadores
Configuração de rede
53
Configuração básica de rede
Interfaces de rede geralmente começam com eth<n>, n sempre começando com zero
Alias (apelidos), permitem que vários IPs sejam associados a uma mesma interface física (endereços virtuais). Eles são da forma eth<n>:<m>, ambos começando com zero
Bridges geralmente são br<n>
Exemplos: eth0, eth1, eth1:0, eth1:1, br2, br0
54
Configuração básica de rede:ifconfig
A configuração manual pode ser feita com ifconfig, presente em várias distribuições Linux:
ifconfig eth0 10.0.0.10 netmask 255.255.255.0 up ifconfig eth0 down ifconfig eth0 up ifconfig (sem parâmetros, mostra a configuração atual)
A criação de alias também é simples, bastando definir novos indexes ao final (a interface eth0 já deve estar configurada):
ifconfig eth0 172.16.0.1 netmask 255.255.255.0 up ifconfig eth0:0 172.17.0.1 netmask 255.255.255.0 up ifconfig eth0:1 172.18.0.1 netmask 255.255.255.0 up
55
Configuração básica de rede:ifconfig
Alguns detalhes da saída do ifconfig:
eth0 Link encap:Ethernet Endereço de HW 00:0e:35:ba:d0:0f inet end.: 10.0.0.100 Bcast:10.0.0.255 Masc:255.255.255.0 endereço inet6: fe80::20e:35ff:feba:d00f/64 Escopo:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1 pacotes RX:15825 erros:0 descartados:0 excesso:0 quadro:0 Pacotes TX:10577 erros:0 descartados:0 excesso:0 portadora:0 colisões:0 txqueuelen:1000 RX bytes:11462155 (10.9 MB) TX bytes:1052682 (1.0 MB) IRQ:5 Endereço de E/S:0xa000 Memória:fcffe000-fcffefff
MACIP, broadcast e máscara
Estatísticas de rede
Endereço IPv6
Interface
56
Pausa para o exercício
Experimente mudar a sua configuração de rede através do ifconfig. Depois tente obter a configuração de rede de um servidor DHCP.
57
Configuração básica de rede:DHCP
O DHCP pode ser configurado como cliente através do utilitário dhclient:
dhclient <interface>
58
Configuração básica de rede:Roteamento estático
Para funcionamento completo, algumas rotas são necessárias. O comando route permite adicionar rotas estáticas, configurar o default gateway, etc.
Exemplos: Definindo o gateway default via interface eth0:
route add default gw 10.0.0.1 dev eth0 Criando uma rota para uma rede através de um gateway:
route add net 10.1.1.0 netmask 255.255.255.0 gw 192.168.1.254 dev eth0
Adicionando uma rota direta para um host pela interface eth0: route add host 172.16.0.2 dev eth0
A opção del é similar mas permite remoter rotas
59
Configuração básica de rede:Roteamento estático
Para a figura abaixo, as rotas seriam:
route add net 127.0.0.0 netmask 255.0.0.0 dev lo
route add net 192.168.10.0 netmask 255.255.255.0 dev eth0
route add net 200.210.50.128 netmask 255.255.255.192 dev eth1
route add default gw 200.210.50.129 dev eth0
eth0 eth1
60
Pausa para o exercício
Crie o roteamento e a configuração de rede para que a topologia abaixo funcione adequadamente.
61
Configuração básica de rede:DNS
O DNS é configurado dentro do arquivo /etc/resolv.conf, onde os servidores de DNS podem ser listados e o nome do domínio padrão.
Use nameserver para listar um DNS Use domain para especificar o nome padrão do domínio
# conteúdo do /etc/resolv.conf
nameserver 10.0.1.1nameserver 10.0.1.2domain baraodemaua.br
62
Configuração básica de rede:DNS
Hosts e redes podem ser listados manualmente, através dos seguintes arquivos:
/etc/hosts /etc/networks
O uso é desencorajado, no entanto.
Além, disso, altere a ordem de busca no /etc/nsswitch.conf:
# parte do conteúdo do /etc/nsswitch.conf
hosts: files dnsnetworks: files
Primeiro procure resolver usando o
arquivo hosts, depois tente o DNS
63
Configuração básica de rede:Placa de rede
O programa ethtool é usada para configurar parâmetros da placa de rede. Isto pode ser interessante caso a autonegociação esteja falhando:
ethtool s eth0 speed 10 duplex half ethtool s eth0 autoneg off ethtool s eth0 speed 100 duplex full
Detalhes do driver podem ser obtidos com a opção ”i”: ethtool i eth0
64
Configuração básica de rede:Ferramentas auxiliares
ping: testa a conexão
traceroute, tracepath: mostra a rota do pacote
O nestat permite avaliar os serviços de rede em execução: netstat ltn: portas TCP (t) em estado de espera de conexão (l),
sem esperar resolução de nome (n) netstat lun: idem, mas para UDP (u) netstat platune: um bom conjunto de informações, mostrando
portas em espera, conexões abertas, etc netstat i: informações sobre as interfaces de rede netstat s: estatísticas de rede por protocolo
ifdown e ifup: permitem ligar/desligar uma interface
65
Configuração básica de rede:Persistindo a configuração
A configuração de rede pode ser toda feita dentro do arquivo /etc/network/interfaces, que é lida e executada na partida pelo script /etc/init.d/networking
Exemplo:# The loopback network interfaceauto loiface lo inet loopback
# The primary network interfaceauto eth0iface eth0 inet static address 192.168.1.33 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.254 # dns-* options are implemented resolvconf, if installed dns-nameservers 193.79.237.39
66
Configuração básica de rede:Persistindo a configuração
Outro exemplo, agora com DHCP e IP fixo. Note que: auto: lista interfaces que sobem automaticamente na partida iface: descreve a interface (eth0, eth1), falando que será usado
IPv4 (inet, para IPv6 use inet6) com DHCP para eth0 e IP fixo (static) para eth1
# The loopback network interfaceauto loiface lo inet loopback
# The primary network interfaceauto eth0iface eth0 inet dhcp
# The secondary network interfaceauto eth1iface eth1 inet static
address 10.0.1.1netmask 255.255.255.0
67
Configuração básica de rede:Persistindo a configuração
Existem várias opções interessantes na configuração, como preup, posup, predown e posdown.
Consulte o ”man interfaces” para maiores detalhes
# The loopback network interfaceauto loiface lo inet loopback
# The primary network interfaceauto eth0iface eth0 inet static
address 10.0.0.1netmask 255.255.255.0post-up /etc/init.d/vlan startpre-down /etc/init.d/vlan stop
Execute após subir a interface
Execute antes de desligar interface
68
Configuração avançada de rede:Bridges
Bridges são equipamentos de camada 2 (enlace) que permitem a interligação de segmentos de uma mesma rede. A bridge pode evitar tráfegos desnecessários uma vez que opera na camada de enlace e também pode ser interessante para gerar configurações adicionais de segurança sem que outra subrede tenha que ser criada.
Para o sistema, as várias placas da bridge podem ser encaradas como apenas uma, representando a união de todas as outras.
LAN A LAN A
Bridge
69
Configuração avançada de rede:Bridges
Instalar o pacote bridgeutils e criar a bridge: brctl addbr br0
Adicionar interfaces para a bridge: brctl addif br0 eth0; brctl addif br0 eth1 ; ...
Sendo necessário, configure um IP para a bridge: ifconfig br0 10.1.2.3 netmask 255.255.255.0
A bridge pode ser desfeita removendose as intrefaces (delif) e depois removendose a própria bridge (delbr)
brctl delif br0 eth0 ; brctl delif br0 eth1 ; ... brctl delbr br0
70
Configuração avançada de rede:VLAN
As VLANs ou, LANs virtuais, através de uma modificação no quadro ethernet e de dispositivos de camada de enlace especiais (switches com VLAN), permitem um melhor gerenciamento do domínio de colisão/broadcast e também maior segurança.
71
Configuração avançada de rede:VLAN
As VLANs são criadas como interfaces virtuais eth<n>:<m> onde <m> é o número do ID da VLAN:
vconfig eth0 10 (criar a interface virtual eth0:10) vconfig eth0 20 (criar a interface virtual eth0:20)
Configure IPs para cada interface criada ifconfig eth0:10 10.10.0.1 netmask 255.255.255.0 ifconfig eth0:20 10.20.0.1 netmask 255.255.255.0
A VLAN pode ser desfeita através do comando rem: vconfig rem eth0:10 vconfig rem eth0:20
72
Configuração de rede:Outros arquivos relacionados
/etc/services: lista de portas conhecidas
/proc/sys/net/ipv4/ip_forward: coloque ”1” dentro deste arquivo para permitir o roteamento entre placas. O arquivo /etc/sysctrl.conf permite automatizar isso.
73
Links úteis
http://www.freesoftwaremagazine.com/articles/installation_seq_linux
http://www.comptechdoc.org/os/linux/startupman/linux_suinit.html
http://upstart.ubuntu.com/gettingstarted.html
http://en.wikipedia.org/wiki/Upstart
http://www.bootchart.org/
http://www.linux.com/feature/125977
http://upstart.ubuntu.com/wiki/Stanzas
http://www.linuxabordo.com.br/wiki/index.php?title=VLAN
74
Dúvidas, comentários, sugestões ?
Imagem: cena do filme Madagascar, da DreamWorks
75
Direitos de cópia
Créditos ShareAlike 2.0Você é livre para
copiar, distribuir, apresentar e executar trabalhosfazer trabalhos derivadosfazer uso comercial deste trabalho
Sob as seguintes condiçõesCréditos. Você deve dar crédito ao autor original.Compartilhe do mesmo modo. Se você alterar, mudar, ou realizar trabalhos usando este como base,você deve redistribuir o trabalhos resultante sob uma licença idêntica a esta.
Para qualquer reuso ou distribuição você deve deixar claro os termos de licença deste trabalho.Qualquer uma destas condições podem ser abandonadas se você obtiver uma permissão do detentor dos direitos autorais.
Faça uso justo e o direitos dos outros não serão afetados de forma alguma pelas restrições acima.
Texto da licença: http://creativecommons.org/licenses/bysa/2.0/legalcode
© Copyright 2008Marcelo Barros
marcelobarrosalmeida@gmail.comCorreções, sugestões e
traduções são bem vindas!