Administração de Redes Linux - II

Preview:

DESCRIPTION

Curso sobre administração de redes usando Linux - Parte I

Citation preview

Pós­gradaduaçã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ós­gradaduaçã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) Multi­user mode, sem NFS ou serviços avançados de rede

3) Full multi­user 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[S0­6].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[S0­6].d

BIOS

Inicialização do sistema

Parte do menu.lsttitle      Ubuntu 8.04, kernel 2.6.24­19­genericroot     (hd0,0)kernel /vmlinuz­2.6.24­19­generic root=UUID=<id> ro initrd   /initrd.img­2.6.24­19­generic 

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[S0­6].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 0­6 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[S0­6].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[S0­6].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[S0­6].d

BIOS

Inicialização do sistema

Obviamente, é chato colocar serviços para rodar em um runlevel manualmente, apesar de possível

O comando update­rc.d ajuda muito neste processo. Basta criar o script no init.d e acertar o runlevel:

touch /etc/init.d/meusrv

update­rc.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:

update­rc.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 sysv­rc­conf (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) control­alt­delete power­status­change starting, started stopping, stopped

Inicialização do sistema no Ubuntu:Upstart

rcS rc­default rc2 tty1

stopped runlevel 2 stoppedstartup

control­alt­delete

control­alt­delete

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ós­gradaduaçã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 ­rw­r­­­­­: Um determinado grupo pode ler o arquivo, mas só o 

dono modifica ­rw­r­­r­­: Qualquer um pode ler o arquivo, mas só o dono 

modifica ­rw­rw­r­­: Qualquer um pode ler o arquivo, mas só o dono ou 

alguém do grupo pode modificar ­rwxrwxr­x: Qualquer um pode ler e executar o arquivo, mas só o 

dono ou alguém do grupo pode modificar ­rwxr­xr­­: 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 drwxr­xr­x: 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

drwx­­x­­x: 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 a­x <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 g­s: 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ós­gradaduaçã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ós­gradaduaçã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 3­8 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  *  *  1­5  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. Execute­o 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ós­gradaduaçã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 auto­negociaçã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 pre­up, pos­up, pre­down e pos­down.

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 bridge­utils 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 removendo­se as intrefaces (delif) e depois removendo­se 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/getting­started.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/by­sa/2.0/legalcode

© Copyright 2008Marcelo Barros

marcelobarrosalmeida@gmail.comCorreções, sugestões e 

traduções são bem vindas!

Recommended