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

De MediaWiki do Campus São José
Revisão de 13h32min de 6 de novembro de 2011 por Murilo.b (discussão | contribs) (→‎04/11)
Ir para navegação Ir para pesquisar

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

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

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

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

Dica do Prof. Sobral: em cada máquina virtual, há um diretório /hostlab, que é um mapeamento do diretório do laboratório (máquina virtualizadora).

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 1035 53/UDP /usr/sbin/named /etc/bind/named.conf
Compartilhamento HTTP 2616 80/TCP, 443/TCP /usr/sbin/apache2 /etc/apache2/apache2.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:

# Autoridade para responder às requisições em 'broadcast'
authoritative;
#
# Sem DDNS (http://tools.ietf.org/html/rfc2136)
ddns-update-style none;
#
# Rede local
subnet 10.0.0.0 netmask 255.0.0.0 {
  #
  # Endereços para a rede local
  range 10.0.0.100 10.0.0.199;
  option subnet-mask 255.0.0.0;
  option broadcast-address 10.255.255.255;
  #
  # Firewall0
  option routers 10.255.255.254;
  #
  # Servidor0 presta tanto o serviço DHCP como DNS
  option domain-name-servers 10.0.0.1;
  #
  # Tempos de 'aluguel'
  default-lease-time 3600; 
  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

O serviço DNS é provavelmente o mais crítico de Internet, uma vez que provê suporte a praticamente todos os outros. De estrutura hierárquica, inicia pelos servidores raiz e se ramifica em domínios e subdomínios cuja autoridade foi delegada - originalmente em pequena escala se comparada à atual estrutura. No Brasil, essa tarefa fica a cargo do Registro.br.

Em conjunto com o DNS, o serviço WHOIS permite identificar as pessoas e organizações associadas a cada domínio.

Alguns conceitos básicos do sistema:

A rede de dependências dos serviços mostra-se mais complexa. A ligação entre DHCP e DNS é clara, e está explícita no arquivo de configuração daquele serviço.

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

} </graphviz>

17/10

Manutenção do repositório para execução remota do ambiente.

A partir desse serviço, os arquivos de configuração serão publicados apenas no repositório.

21/10

Primeira entrega do semestre: servidor DNS com domínio próprio funcional.

24/10

Configuração do DNS reverso do domínio e integração entre DHCP e DNS.

Compartilhamento

28/10

HTTP

Uma das vantagens da implementação Apache é a sua documentação.

<graphviz> digraph Serviços {

 Cron [shape=Mrecord]
 Syslog [shape=Mrecord]
 NTP [shape=Mrecord]
 DHCP [shape=Mrecord]
 DNS [shape=Mrecord]
 HTTP [shape=Mrecord]
 Syslog -> Cron
 Cron -> NTP
 Syslog -> NTP
 DHCP -> NTP
 DHCP -> Syslog
 DNS -> DHCP
 DNS -> NTP
 DNS -> Syslog
 HTTP -> DNS

} </graphviz>

28/10

Atividade-relâmpago: disponibilizar uma página Web no servidor DMZ para acesso externo e interno (LAN).

<graphviz> digraph HTTP {

 Firewall0
 subgraph clusterLAN
 {
   label=LAN
   LAN_micro0 [shape=Mrecord,label=micro0]
   LAN_Servidor0 [shape=Mrecord,label=Servidor0]
 }
 subgraph clusterDMZ
 {
   label=DMZ
   DMZ_Servidor0 [shape=Mrecord,label="<0>Servidor0|<1>HTTP"]
 }

} </graphviz>

04/11

Aula destinada aos alunos para a realização da seguinte tarefa, colocar acesso a um blog disponível, utilizando o wordpress, juntamente com o MYSQL e o PHP.

No Netkit criou-se uma máquina virtual para os testes, a qual é utilizada para a instalação dos pacotes mysql-server e php5. Os pacotes instalados nesta máquina para testes, instala nas demais máquinas da Matriz.

Na pasta Matriz

#usado para a criação da máquina de testes

vstart vm --append="eth0=tuntap,tapXXX" -W

#vm - nome da máquina, mas poderia ser qualquer nome.
#tapXXX - número de sua tap.

Após isto, a máquina virtual de testes será inciada, a qual por padrão utiliza como fonte de pacotes a Itália, para a alteração para o Brasil. Faça o seguinte:

cd /etc/apt
vi sources.list

Comente a linha com it, e desmarque o br, salve o arquivo.

ifconfig eth0 up
dhclient eth0
apt-get update

Gerência

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