Gerência de Redes (diário 2011-2)
Endereço encurtado: http://bit.ly/ger20112
Planejamento
01/08
Discussão e montagem coletiva do plano de ensino deste semestre.
05/08
Visão histórica dos sistemas operacionais, linguagens de programação e redes de computadores.
Projeto da Disciplina
A proposta de implementação de rede e seus serviços, até o final do semestre, é esta:
<graphviz> graph Projeto {
rankdir=LR Internet [shape=circle] Servidor_F [label=Servidor,shape=Mrecord] Firewall_M [label=Firewall,shape=Mrecord] Servidor_DMZ [label=Servidor,shape=Mrecord] Servidor_LAN [label=Servidor,shape=Mrecord] Switch_F [label=Switch,shape=record] Switch_LAN [label=Switch,shape=record] Cliente1_F [label="Cliente 1",shape=plaintext] Cliente2_F [label="Cliente 2",shape=plaintext] Cliente1_LAN [label="Cliente 1",shape=plaintext] Cliente2_LAN [label="Cliente 2",shape=plaintext] Cliente3_LAN [label="Cliente 3",shape=plaintext] Internet -- Servidor_F Internet -- Firewall_M subgraph clusterFilial { label=Filial Servidor_F -- Switch_F Switch_F -- Cliente1_F Switch_F -- Cliente2_F } subgraph clusterMatriz { label=Matriz subgraph clusterDMZ { label=DMZ Firewall_M -- Servidor_DMZ } subgraph clusterLAN { label=LAN Firewall_M -- Switch_LAN Switch_LAN -- Servidor_LAN Switch_LAN -- Cliente1_LAN Switch_LAN -- Cliente2_LAN Switch_LAN -- Cliente3_LAN } }
} </graphviz>
Método de trabalho
Este wiki será utilizado como diário de bordo das aulas ministradas, com referências a diversos documentos (livros e publicados na Internet, dando preferência a esse último).
Em relação à parte prática da disciplina, em que envolve a configuração dos sistemas operacionais e serviços agregados, será disponibilizado um repositório com os arquivos de configuração vistos em aula disponível para consulta:
git clone https://tele.sj.ifsc.edu.br/projetos/ger-etorresini/
Além disso, será também construída, ao longo da disciplina, uma tabela-resumo dos serviços de rede estudados.
Revisão e Integração da Disciplina no Curso
Sistema Operacional
08/08
Paralisação das atividades docentes.
12/08
Aula de sistemas operacionais baseados em UNIX, em particular GNU/Linux. Revisão dos conceitos originários do UNIX[1] e que podem ser utilizados na administração de sistemas até hoje, como por exemplo no Linux[2].
graph SO {
Usuário "Memória principal" "Dispositivo(s) de armazenamento" subgraph clusterSO { label="S.O." Usuários [shape=plaintext] Processos [shape=plaintext] Dados [shape=plaintext] Kernel [shape=circle] } Usuário -- Usuários [label=Interação,fontcolor=red,color=red] "Memória principal" -- Processos [label=Processamento,fontcolor=red,color=red] "Dispositivo(s) de armazenamento" -- Dados [label="Sistema(s) de arquivos",fontcolor=red,color=red] Usuários -- Processos [color=lightgray] Processos -- Dados [color=lightgray] Kernel -- Usuários [color=blue] Kernel -- Processos [color=blue,fontcolor=blue,label="Chamadas de sistema"] Kernel -- Dados [color=blue]
}
</graphviz>15/08
Visão do início do sistema (initialization) em PC, do POST à seleção do nível de execução.
Software básico
19/08
Do código-fonte, passando pela compilação e código final, ao empacotamento. Como exemplo, foi utilizado o Asterisk para compreensão do processo de compilação de software (bibliotecas, dependências, ativação de funcionalidades e outros). No Ubuntu 10.04 - já de posse do código no diretório corrente - foram necessários os comandos para uma instalação básica:
aptitude update
aptitude install buid-essential
aptitude install libxml2-dev
aptitude install libsqlite3-dev
aptitude install libncurses-dev
./configure
make
make install
make samples
asterisk -c
Nota-se, nos comandos acima, os comandos aptitude para instalar via pacote as bibliotecas necessárias a compilação.
Rede
22/08
26/08
Não haverá aula devido a greve dos servidores públicos federais.
Controle de versão
29/09
Utilizado o material publicado para a disciplina de TCC I, uma vez que vários alunos fazem as duas matérias neste semestre.
NetKit
03/10
Apresentação dos alunos sobre o NetKit, o qual será utilizado como ferramenta de apoio, junto ao controle de versão, para o projeto da disciplina.
Em relação ao NetKit, trabalharemos com uma versão oficial congelada para uso neste semestre de 2011-2, onde haverá três níveis de arquivo:
- Configuração da rede: o arquivo lab.conf define os componentes da rede. Baixa taxa de modificação.
- Modelo do sistema de arquivos: arquivo modelo a ser usado por toda máquina do cenário. Sem qualquer modificação ao longo do projeto.
- Configuração dos computadores: cada máquina terá, além do modelo, arquivos adicionais de configuração dos serviços prestados (DHCP, DNS, HTTP e outros). Alta taxa de modificação.
Como serão duas redes distintas, unidas pela "nuvem Internet", haverá dois diretórios com os arquivos mutáveis: configuração da rede (arquivo lab.conf) e configuração das máquinas correspondentes.
- Diretório raiz
- Matriz
- lab.conf
- Firewall0
- Arquivo 1
- Arquivo 2
- Arquivo 3
- ...
- DMZ_Servidor0
- Arquivo 1
- Arquivo 2
- Arquivo 3
- ...
- LAN_Servidor0
- Arquivo 1
- Arquivo 2
- Arquivo 3
- ...
- Filial
- lab.conf
- Servidor0
- Arquivo 1
- Arquivo 2
- Arquivo 3
- ...
- Matriz
Assim, poderemos controlar a versão de todos os arquivos mutáveis do projeto: configuração da rede e dos computadores. Para fazer isso, é preciso preparar o ambiente. A sequência dos passos está descrita no blog de Tele, a qual explicamos abaixo para o usuário etorresini:
cd $HOME
wget http://tele.sj.ifsc.edu.br/arquivos/publicos/.gitconfig
vi .gitconfig
wget http://tele.sj.ifsc.edu.br/arquivos/publicos/.netrc
vi .netrc
git clone https://tele.sj.ifsc.edu.br/projetos/ger-etorresini
cd ger-etorresini
mkdir Matriz
vi Matriz/lab.conf
git add Matriz/lab.conf
mkdir Filial
vi Filial/lab.conf
git add Filial/lab.conf
git commit -a -m "Arquivos de configuração do NetKit: redes Matriz e Filial."
git push origin master
Esse processo, acima descrito, deve ser executado apenas na primeira vez. Nas demais ocasiões, é interessante sincronizar a base remota com a local (pull), editar o(s) arquivo(s), registrar a versão localmente (commit) e sincronizar a base local com a remota (push). Segue o exemplo abaixo:
cd $HOME/ger-etorresini
git pull
vi <nome do arquivo>
vi <nome do outro arquivo>
...
git add <arquivo novo, se houver>
git add <outro arquivo novo, se houver>
git commit -a -m "<mensagem do commit>"
git push
O professor acompanhará as atividades pela interface Web comum a todos os projetos. Os alunos poderão utilizar ferramentas CLI ou gráficas para ler os repositórios local e remoto(s), bem como material de apoio disponível na Internet [3].
Serviços
A tabela abaixo se refere a sistemas baseados em Debian, como Ubuntu e NetKit.
Tipo | Serviço | RFC | Porta | Executável | Configuração |
Facilitadores | Cron | /usr/sbin/cron | /etc/crontab | ||
Syslog | 5424 | 514/UDP | /usr/sbin/rsyslogd | /etc/rsyslog.conf | |
NTP | 5905 | 123/UDP | /usr/sbin/ntpd | /etc/ntp.conf | |
DHCP | 2131 | 67/UDP | /usr/sbin/dhcpd | /etc/dhcp3/dhcpd.conf | |
Diretórios | DNS | 53/UDP | /usr/sbin/named | /etc/bind/named.conf |
Facilitadores
07/10
Vistos os serviços locais de sistema operacional cron e syslog, que tratam do agendamento de tarefas e registro de eventos respectivamente.
Cron
Esse termo, comumente usado nos sistemas Windows, serve para abranger todos os serviços que programam a execução de aplicações em horários predefinidos, permitindo inclusive executá-los periodicamente. Nos sistemas baseados em UNIX (homenagem a Dennis Ritchie), essa tarefa fica a cargo do serviço cron.
Esse serviço não possui dependências, embora seja fortemente recomendado o uso de hora certa para o sistema.
<graphviz> digraph Serviços {
Cron [shape=Mrecord]
} </graphviz>
O cron possui arquivos de configuração para:
- Sistema: /etc/crontab, que pode incluir outros arquivos.
- Usuário: armazenado em /var/spool/cron/crontabs/<usuário>, porém com edição facilitada pelo aplicativo crontab.
Syslog
São os serviços responsáveis por registrar eventos importantes do sistema, como por exemplo detecção de novo hardware USB ou autenticação de usuário.
O serviço syslog, da família UNIX, organiza os registros, ou logs, segundo a sua origem (facility) e gravidade (priority). Assim, todo log será identificado com a hora da ação, facility e priority. De acordo com o arquivo de configuração do serviço, tal log será guardado em um ou mais arquivos - geralmente em /var/log. Contudo, não é possível guardar indefinidamente os logs por questão de espaço em disco, assim os sistemas já agendam reciclagem periódica dos logs mais antigos e rotação dos nomes dos arquivos: a aplicação logrotate.
<graphviz> digraph Serviços {
Cron [shape=Mrecord] Syslog [shape=Mrecord]
Syslog -> Cron
} </graphviz>
O serviço pode operar tanto localmente, o caso mais comum, como em rede. Assim, é possível convergir todos os logs de uma rede, por exemplo, em um único servidor. Isso é possível porque informações como nome/IP da máquina e timestamp fazem parte de cada registro.
E lembre-se: ler log é uma arte...
10/10
NTP
Ambos os serviços mencionados na aula anterior dependem fortemente do sistema operando com a hora certa. O histórico protocolo NTP permite a sincronização da hora dos sistemas em rede. No brasil, está disponível um pool de servidores: pool.ntp.br - parte de um esforço global.
<graphviz> digraph Serviços {
Cron [shape=Mrecord] Syslog [shape=Mrecord] NTP [shape=Mrecord]
Syslog -> Cron Cron -> NTP Syslog -> NTP
} </graphviz>
A instalação e configuração do serviço é bastante simples (baseado no guia do NTP.br):
apt-get install ntp
E adicionar os servidores brasileiro, mantendo apenas essa linha (e removendo as demais):
server pool.ntp.br
e reiniciar o serviço:
/etc/init.d/ntp restart
Obs.: por questões de S.O., o serviço não alterará o relógio quando a diferença for maior que 128ms. Assim, nesses casos é preciso um ajuste diferenciado:
/etc/init.d/ntp stop
ntpd -q -g
/etc/init.d/ntp start
DHCP
O serviço DHCP é um grande facilitador para atribuir endereço de rede às máquinas de mesma rede local. Descendente do BOOTP, cuja função era iniciar sistemas operacionais completos remotamente, o DHCP é mais utilizado para automatizar a configuração de rede, em especial:
- Endereço de rede
- Máscara de sub-rede
- Endereço de broadcasting
- Rota(s)-padrão
- Servidor(es) DNS
- Servidor(es) de hora certa na rede local
Com o IPv6, esse serviço pode ser usado como opcional para configuração.
A implementação utilizada para a disciplina será a da ISC, cuja configuração é bastante facilitada. No exemplo a seguir (arquivo /etc/dhcp3/dhcpd.conf), o serviço DHCP em Servidor0 fornecerá IPs para até 100 clientes da rede local LAN no nosso cenário de estudo:
authoritative; ddns-update-style none; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.199; option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; option routers 192.168.1.1; option dns-name-servers 208.67.222.222 8.8.8.8; default-lease-time 14400; max-lease-time 14400; }
A nova rede de dependências de serviços fica assim:
<graphviz> digraph Serviços {
Cron [shape=Mrecord] Syslog [shape=Mrecord] NTP [shape=Mrecord] DHCP [shape=Mrecord]
Syslog -> Cron Cron -> NTP Syslog -> NTP DHCP -> NTP DHCP -> Syslog
} </graphviz>
Diretórios e Bancos de Dados
14/10
DNS
<graphviz> digraph Serviços {
Cron [shape=Mrecord] Syslog [shape=Mrecord] NTP [shape=Mrecord] DHCP [shape=Mrecord] DNS [shape=Mrecord]
Syslog -> Cron Cron -> NTP Syslog -> NTP DHCP -> NTP DHCP -> Syslog DNS -> DHCP DNS -> NTP
} </graphviz>
17/10
A partir de hoje, o repositório do professor está disponível para consulta (somente-leitura).
Compartilhamento
Comunicação
Gerência
29/08 02/09 05/09 09/09 12/09 16/09 19/09 23/09 26/09 30/09
03/10 07/10 10/10 14/10 17/10 21/10 24/10 31/10 04/11 07/11 11/11
18/11
21/11 25/11 28/11 02/12 05/12 09/12 12/12 16/12 19/12
Referências
- ↑ RITCHIE, D. M. e THOMPSON, K. The UNIX Time-Sharing System. The Bell System Technical Journal. no. 57 parte 2. 1978.
- ↑ NEMETH, E. et al. UNIX and Linux System Administration Handbook. 4 ed. 2010. ISBN 0131480057.
- ↑ CHACO, S. Pro Git. Apress. 2009.