Gerência de Redes (diário 2011-2)

De MediaWiki do Campus São José
Revisão de 17h25min de 17 de outubro de 2011 por Etorresini (discussão | contribs) (→‎17/10)
Ir para navegação Ir para pesquisar

Endereço encurtadi: 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.

Revisão e Integração das Disciplinas

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].

<graphviz>

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.

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.

A proposta de rede, 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>

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
      • Firewall
        • Arquivo 1
        • Arquivo 2
        • Arquivo 3
        • ...
      • Servidor-DMZ
        • Arquivo 1
        • Arquivo 2
        • Arquivo 3
        • ...
      • Servidor-LAN
        • Arquivo 1
        • Arquivo 2
        • Arquivo 3
        • ...
    • Filial
      • lab.conf
      • Servidor
        • Arquivo 1
        • Arquivo 2
        • Arquivo 3
        • ...

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 o próprio NetKit.

Tipo Serviço Porta Executável Configuração
Facilitadores Cron - /usr/sbin/cron /etc/crontab
Syslog 514/UDP /usr/sbin/rsyslogd /etc/rsyslog.conf
NTP 123/UDP /usr/sbin/ntpd /etc/ntp.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.

<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

Termo também emprestado do mundo Windows, significam os serviços responsáveis por armazenar eventos importantes do sistema, como por exemplo detecção de novo hardware USB ou tentativa frustrada de autenticação de usuário.

<graphviz> digraph Serviços {

 Cron [shape=Mrecord]
 Syslog [shape=Mrecord]
 Syslog -> Cron

} </graphviz>


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á possuem agendamente de reciclagem dos logs mais antigos e rotação dos arquivos: a aplicação logrotate.

(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.

<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 o pool 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 IP
  • Máscara de sub-rede
  • Endereço de broadcasting
  • Rota-padrão
  • Servidor(es) DNS

Com o IPv6, esse serviço pode ser usado como opcional para configuração.

<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>

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 fornecerá IPs para até 100 clientes:

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; 
}

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

  1. RITCHIE, D. M. e THOMPSON, K. The UNIX Time-Sharing System. The Bell System Technical Journal. no. 57 parte 2. 1978.
  2. NEMETH, E. et al. UNIX and Linux System Administration Handbook. 4 ed. 2010. ISBN 0131480057.
  3. CHACO, S. Pro Git. Apress. 2009.



Voltar para página principal da disciplina