PJI11103-2015-2
PJI11103-2015-2
Diário de aula de PJI - 2015-2 - Prof. Simara Sonaglio
Dados Importantes
Professor: Simara Sonaglio
Email: simara.sonaglio@ifsc.edu.br
Atendimento paralelo: terças e quintas das 18 às 19 horas. Local: Lab. Redes II.
- Avaliação
- Avaliações individuais em cada etapa do projeto com conceito numérico: A, B, C e D. Conceito mínimo necessário em cada avaliação: C.
- Avaliação baseada no projeto. Avaliação individual com acesso ao servidor da equipe e com questões relativas aos serviços e configurações do mesmo.
- Um ou mais conceitos D implica na realização da reavaliação: uma única avaliação a ser realizada no último dia de aula.
IMPORTANTE: o direito de recuperar uma avaliação em que se faltou somente existe mediante justificativa reconhecida pela coordenação. Assim, deve-se protocolar a justificativa no prazo de 48 horas, contando da data e horário da avaliação e aguardar o parecer da coordenação.
AVALIAÇÕES
Avaliação 1 | 142002047-1 | 142002006-4 | 142003381-6 | 142001234-7 | 141000804-5 | 142003354-9 | 142001326-2 | 142006774-5 |
---|---|---|---|---|---|---|---|---|
Prova 1 | 9,75 | 5,5 | 10 | 7,75 | 9 | 10 | 8,25 | 9,75 |
Lista | 10 | 10 | 10 | 9 | 10 | 10 | 10 | 10 |
Média Av 1 | 9,8 | 6,4 | 10 | 8 | 9,2 | 10 | 8,6 | 9,8 |
Conceito Av1 | A | C | A | B | A | A | B | A |
Plano de Ensino
Diário de aulas
IPs e sub-domínios DNSs destinados às respectivas equipes:
- 200.135.37.121 - prji1.sj.ifsc.edu.br
- 200.135.37.122 - prji2.sj.ifsc.edu.br
- 200.135.37.123 - prji3.sj.ifsc.edu.br
Aula 1 - 06/10/15: Apresentação da disciplina |
---|
|
Aula 1 - 06/10/15: Revisão dos comandos básicos |
---|
Objetivo: Revisão dos comandos básicos, familiarização e fixação do conteúdo. Material Auxiliar (Comandos básicos 01) (Comandos básicos 02 ) ( Slides Aula Introdução ao Linux Tulio.)
Editor VI Objetivo: Familiarização com o editor e ser capaz de executar comandos simples, porém úteis para manipulação de arquivos.
|
Aula 2 - 08/10/15: Formatação, instalação e início da configuração do servidor principal |
---|
O objetivo inicial é instalar e configurar basicamente o sistema operacional na máquina que atuará como principal servidor da rede. Instalando o sistema operacionalAs etapas básicas consistem em:
|
Aula 3 - 13/10/15: Criação de usuários e grupos e permissionamento de arquivos |
---|
Criação de contas de usuários e de grupos, e seu uso para conferir permissões de acesso a arquivos, diretórios e recursos do sistema operacional. Apostila, páginas 61 a 65. Slides Aula Tulio: Slides Aula Usuários, Grupos e Permissões Usuários e gruposUm usuário Linux é uma entidade que possui uma identificação no sistema onde os principais parâmetros são: login, senha, e número de identificação. Estas informações permitem ao Linux controlar como o acesso é garantido aos usuários e o que eles podem fazer depois de obter a permissão de acesso. Um grupo é um conjunto de usuários. Cada grupo também possui identificação única no sistema, um nome e um número. O administradores de sistemas normalmente fazem controle de acesso por meio dos grupos. Um usuário no Linux (e no Unix em geral) é definido pelo seguinte conjunto de informações:
As contas de usuários, que contêm as informações acima, podem ficar armazenadas em diferentes bases de dados (chamadas de bases de dados de usuários). Dentre elas, a mais simples é composta pelo arquivo /etc/passwd: root:x:0:0:root:/root:/bin/bash sshd:x:71:65:SSH daemon:/var/lib/sshd:/bin/false suse-ncc:x:105:107:Novell Customer Center User:/var/lib/YaST2/suse-ncc-fakehome:/bin/bash wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash news:x:9:13:News system:/etc/news:/bin/bash uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash roberto:x:1001:100:Roberto de Matos:/data1/roberto:/bin/bash Acima um exemplo de arquivo /etc/passwd Cada linha desse arquivo define uma conta de usuário no seguinte formato: nome de usuário:senha:UID:GID:Nome completo:Diretório inicial:Shell O campo senha em /etc/passwd pode assumir os valores:
O arquivo /etc/shadow armazena exclusivamente as informações relativas a senha e validade da conta. Nele cada conta possui as seguintes informações:
Um exemplo do arquivo /etc/shadow segue abaixo: root:$2a$05$8IZNUuFTMoA3xv5grggWa.oBUBfvrE4MfgRDTlUI1zWDXGOHi9dzG:13922:::::: suse-ncc:!:13922:0:99999:7::: uucp:*:13922:::::: wwwrun:*:13922:::::: roberto:$1$meoaWjv3$NUhmMHVdnxjmyyRNlli5M1:14222:0:99999:7::: Exercício: quando a senha do usuário roberto irá expirar ? Um grupo é um conjunto de usuários definido da seguinte forma:
Assim como as contas de usuários, os grupos ficam armazenados em bases de dados de usuários, sendo o arquivo /etc/group a mais simples delas: root:x:0: trusted:x:42: tty:x:5: utmp:x:22: uucp:x:14: video:x:33:roberto www:x:8:roberto users:x:100: radiusd:!:108: vboxusers:!:1000: Os membros de um grupo são os usuários que o têm como grupo primário (especificado na conta do usuário em /etc/passwd), ou que aparecem listados em /etc/group. Gerenciamento de usuários e gruposPara gerenciar usuários e grupos podem-se editar diretamente os arquivos /etc/passwd, /etc/shadow e /etc/group, porém existem utilitários que facilitam essa tarefa:
Esses utilitários usam os arquivos /etc/login.defs e /etc/default/useradd para obter seus parâmetros padrão. O /etc/adduser.conf tem o mesmo intuito mas é seta exclusivamente os parâmetros do comando adduser. O arquivo /etc/login.defs contém uma série de diretivas e padrões que serão utilizados na criação das próximas contas de usuários. Seu principal conteúdo é: MAIL_DIR dir # Diretório de e-mail PASS_MAX_DAYS 99999 #Número de dias até que a senha expire PASS_MIN_DAYS 0 #Número mínimo de dias entre duas trocas senha PASS_MIN_LEN 5 #Número mínimo de caracteres para composição da senha PASS_WARN_AGE 7 #Número de dias para notificação da expiração da senha UID_MIN 500 #Número mínimo para UID UID_MAX 60000 #Número máximo para UID GID_MIN 500 #Número mínimo para GID GID_MAX 60000 #Número máximo para GID CREATE_HOME yes #Criar ou não o diretório home Como o login.defs o arquivo /etc/default/useradd contém padrões para criação de contas. Seu principal conteúdo é: GROUP=100 #GID primário para os usuários criados HOME=/home #Diretório a partir do qual serão criados os “homes” INACTIVE=-1 #Quantos dias após a expiração da senha a conta é desativada EXPIRE=AAAA/MM/DD #Dia da expiração da conta SHEL=/bin/bash #Shell atribuído ao usuário. SKEL=/etc/skel #Arquivos e diretórios padrão para os novos usuários. GROUPS=video,dialout CREATE_MAIL_SPOOL=no O /etc/adduser.conf também possui uma série de padrões que funcionam especificamente para o comando adduser: DSHELL=/bin/bash #Shell atribuído ao usuário. DHOME=/home #Diretório a partir do qual serão criados os “homes” SKEL=/etc/skel #Arquivos e diretórios padrão para os novos usuários. FIRST_UID=1000 #Número mínimo para UID LAST_UID=29999 #Número máximo para UID FIRST_GID=1000 #Número mínimo para GID LAST_GID=29999 #Número máximo para GID QUOTAUSER="" #Se o sistema de cotas estiver funcional, pode atribuir quota ao usuário criado. AtividadeEsta parte da atividade cada aluno executa individualmente em sua máquina, fazendo uso da devida máquina virtual (PRJ3).
PermissionamentoHá uma maneira de restringir o acesso aos arquivos e diretórios para que somente determinados usuários possam acessá-los. A cada arquivo e diretório é associado um conjunto de permissões. Essas permissões determinam quais usuários podem ler, e escrever (alterar) um arquivo e, no caso de ser um arquivo executável, quais usuários podem executá-lo. Se um usuário tem permissão de execução para um diretório, significa que ele pode realizar buscas dentro daquele diretório, e não executá-lo como se fosse um programa. Quando um usuário cria um arquivo ou um diretório, o LINUX determina que ele é o proprietário (owner) daquele arquivo ou diretório. O esquema de permissões do LINUX permite que o proprietário determine quem tem acesso e em que modalidade eles poderão acessar os arquivos e diretórios que ele criou. O super-usuário (root), entretanto, tem acesso a qualquer arquivo ou diretório do sistema de arquivos. O conjunto de permissões é dividido em três classes: proprietário, grupo e usuários. Um grupo pode conter pessoas do mesmo departamento ou quem está trabalhando junto em um projeto. Os usuários que pertencem ao mesmo grupo recebem o mesmo número do grupo (também chamado de Group Id ou GID). Este número é armazenado no arquivo /etc/passwd junto com outras informações de identificação sobre cada usuário. O arquivo /etc/group contém informações de controle sobre todos os grupos do sistema. Assim, pode -se dar permissões de acesso diferentes para cada uma destas três classes. Quando se executa ls -l em um diretório qualquer, os arquivos são exibidos de maneira semelhante a seguinte: > ls -l total 403196 drwxr-xr-x 4 odilson admin 4096 Abr 2 14:48 BrOffice_2.1_Intalacao_Windows/ -rw-r--r-- 1 luizp admin 113811828 Out 31 21:28 broffice.org.2.0.4.rpm.tar.bz2 -rw-r--r-- 1 root root 117324614 Dez 27 14:47 broffice.org.2.1.0.rpm.tar.bz2 -rw-r--r-- 1 luizp admin 90390186 Out 31 22:04 BrOo_2.0.4_Win32Intel_install_pt-BR.exe -rw-r--r-- 1 root root 91327615 Jan 5 21:27 BrOo_2.1.0_070105_Win32Intel_install_pt-BR.exe > As colunas que aparecem na listagem são:
O esquema de permissões está dividido em 10 colunas, que indicam se o arquivo é um diretório ou não (coluna 1), e o modo de acesso permitido para o proprietário (colunas 2, 3 e 4), para o grupo (colunas 5, 6 e 7) e para os demais usuários (colunas 8, 9 e 10). Existem três modos distintos de permissão de acesso: leitura (read), escrita (write) e execução (execute). A cada classe de usuários você pode atribuir um conjunto diferente de permissões de acesso. Por exemplo, atribuir permissão de acesso irrestrito (de leitura, escrita e execução) para você mesmo, apenas de leitura para seus colegas, que estão no mesmo grupo que você, e nenhum acesso aos demais usuários. A permissão de execução somente se aplica a arquivos que podem ser executados, obviamente, como programas já compilados ou script shell. Os valores válidos para cada uma das colunas são os seguintes:
A permissão de acesso a um diretório tem outras considerações. As permissões de um diretório podem afetar a disposição final das permissões de um arquivo. Por exemplo, se o diretório dá permissão de gravação a todos os usuários, os arquivos dentro do diretório podem ser removidos, mesmo que esses arquivos não tenham permissão de leitura, gravação ou execução para o usuário. Quando a permissão de execução é definida para um diretório, ela permite que se pesquise ou liste o conteúdo do diretório. A modificação das permissões de acesso a arquivos e diretórios pode ser feita usando-se os utilitários:
Há também o utilitário umask, que define as permissões default para os novos arquivos e diretórios que um usuário criar. Esse utilitário define uma máscara (em octal) usada para indicar que permissões devem ser removidas. Exemplos:
|
Aula 4 - 15/10/15: Permissionamento de arquivos |
---|
Atividade
|
Aula 5 - 20/10/15: SSH |
---|
Ver capítulo 33 da apostila. Gabarito do roteiro Gabarito. Habilitando acesso remoto com SSHEm informática, o Secure Shell ou SSH é, simultaneamente, um programa de computador e um protocolo de rede que permite a conexão com outro computador na rede, de forma a executar comandos de uma máquina remota. Possui as mesmas funcionalidades do TELNET, com a vantagem da conexão entre o cliente e o servidor ser criptografada, ou seja, mais segura. O SSH faz parte da suíte de protocolos TCP/IP que torna segura a administração remota de um servidor Linux/Unix. O scp (Secure Copy) é uma maneira segura de fazer cópias de arquivos e diretórios usando o protocolo SSH. AtividadeAtividade individual, cada aluno em sua máquina virtual (PRJ)
vi /etc/hosts.allow sshd: 192.168.X.X vi /etc/hosts.deny sshd: ALL |
Aula 6 - 22/10/15: Configurações no servidor |
---|
Configuração básica da interface de rede do servidorVer capítulo 22 da apostila.
|
Aula 7 - 27/10/15: Interfaces de rede e rotas estáticas |
---|
Apostila, capítulo 22. Para adicionarmos uma máquina à rede é obrigatória a configuração de no mínimo os seguintes parâmetros: endereço ip, máscara de rede. Com estes dois parâmetros a máquina já se comunica com outras máquinas da rede local. Para uma configuração completa é necessário configurarmos ainda o nome de máquina, o servidor de nomes (DNS) e o roteador padrão (default gateway). Todos estes parâmetros de rede podem ser configurados estaticamente ou por meio de um servidor DHCP (dinamicamente). No caso de servidores de rede é praticamente obrigatório, para alguns serviços é obrigatório, que a configuração seja estática. Para a maioria dos clientes a configuração clássica é como cliente DHCP. Nesta aula iremos nos concentrar na configuração estática de rede. Interface de rede é qualquer dispositivo (físico ou lógico) capaz de transmitir e receber datagramas IP. Interfaces de rede ethernet são o exemplo mais comum, mas há também interfaces PPP (seriais), interfaces tipo túnel e interfaces loopback. De forma geral, essas interfaces podem ser configuradas com um endereço IP e uma máscara de rede, e serem ativadas ou desabilitadas. Em sistemas operacionais Unix a configuração de interfaces de rede se faz com o programa ifconfig: Para mostrar todas as interfaces: root@gerencia:~> ifconfig -a
dsl0 Link encap:Point-to-Point Protocol
inet addr:189.30.70.200 P-t-P:200.138.242.254 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:34260226 errors:0 dropped:0 overruns:0 frame:0
TX packets:37195398 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:19484812547 (18582.1 Mb) TX bytes:10848608575 (10346.0 Mb)
eth1 Link encap:Ethernet HWaddr 00:19:D1:7D:C9:A9
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:37283974 errors:0 dropped:0 overruns:0 frame:0
TX packets:42055625 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:20939614658 (19969.5 Mb) TX bytes:18284980569 (17437.9 Mb)
Interrupt:16 Base address:0xc000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:273050 errors:0 dropped:0 overruns:0 frame:0
TX packets:273050 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:21564572 (20.5 Mb) TX bytes:21564572 (20.5 Mb)
root@gerencia:~>
Para configurar uma interface de rede (que fica automaticamente ativada): root@gerencia:~> ifconfig eth1 192.168.1.100 netmask 255.255.255.0
Os scripts ifup e ifdown servem para ativar ou parar interfaces específicas, fazendo todas as operações necessárias para isto: # Desativam e ativam todas as interfaces de rede
ifdown -a && ifup -a
Ao se configurar uma interface de rede, cria-se uma rota automática para a subrede diretamente acessível via aquela interface. Isto se chama roteamento mínimo. root@gerencia:~> ifconfig eth1 192.168.10.0 netmask 255.255.0.0
root@gerencia:~> netstat -rn (ou: route -n)
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
root@gerencia:~>
Pode-se associar mais de um endereço a uma mesma interface de rede. Isto se chama IP alias: root@gerencia:~> ifconfig eth1:0 192.168.1.110 netmask 255.255.255.0
root@gerencia:~> ifconfig eth1:1 192.168.2.100 netmask 255.255.255.0
root@gerencia:~> ifconfig -a
eth1 Link encap:Ethernet HWaddr 00:19:D1:7D:C9:A9
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:37295731 errors:0 dropped:0 overruns:0 frame:0
TX packets:42068558 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:20942258027 (19972.0 Mb) TX bytes:18294794452 (17447.2 Mb)
Interrupt:16 Base address:0xc000
eth1:0 Link encap:Ethernet HWaddr 00:19:D1:7D:C9:A9
inet addr:192.168.1.110 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:16 Base address:0xc000
eth1:1 Link encap:Ethernet HWaddr 00:19:D1:7D:C9:A9
inet addr:192.168.2.100 Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:16 Base address:0xc000
root@gerencia:~>
Configuração no bootTodo sistema operacional possui alguma forma de configurar suas interfaces de rede, para que sejam automaticamente ativadas no boot com seus endereços IP. Por exemplo, em sistemas Linux Ubuntu (descrito em maiores detalhes em seu manual online). A configuração de rede se concentra no arquivo /etc/network/interfaces: # This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo eth1
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0
# a interface ethernet eth1
iface eth1 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.254
dns-nameservers 200.135.37.65
# apelido para eth1
iface eth1:0 inet static
address 192.168.5.100
netmask 255.255.255.0
Para ativar, desativar ou recarregar as configurações de todas as interfaces de rede: # Desativam e ativam todas as interfaces de rede
ifdown -a && ifup -a
Roteadores e Rotas estáticasVer capítulo 23 da apostila. Um roteador, por definição, é um equipamento com no mínimo duas interfaces de rede que encaminha os pacotes oriundos de uma das interfaces à outra, de acordo com regras pré-definidas. No mercado existem roteadores com uma interface ethernet e uma, duas ou três interfaces WAN (Wide Area Network), normalmente utilizados para conexão da rede local com a internet. Existem também ou chamados modem/router que, além de roteadores, são modens e são comumente usados para conexão ADSL. O roteamento é o processo de encaminhar pacotes entre redes conectadas. Para redes baseadas em TCP/IP, o roteamento faz parte do protocolo IP e é usado em combinação com outros serviços de protocolo de rede para fornecer recursos de encaminhamento entre hosts localizados em segmentos de rede diferentes em uma rede maior baseada em TCP/IP. Ele é sem dúvida um dos principais serviços (protocolos) da rede TCP/IP, já que é por meio dele que é possível um pacote originado na Brasil chegar rapidamente ao Japão, por exemplo. Uma máquina Linux, com duas ou mais interfaces de rede, também pode funcionar como um roteador. Esta pode ser uma opção interessante se desejarmos criar sub-redes na instituição e obrigatória na implementação de um firewall transparente. O roteamento estático trabalha com uma tabela que é lida linha-a-linha de tal modo que quando for encontrada uma regra que atenda a "demanda", o sistema pára imediatamente e encaminha a informação por esta regra. Rotas estáticas podem ser adicionadas a uma tabela de roteamento. Nos sistemas operacionais Unix, usa-se o programa route: # adiciona uma rota para a rede 10.0.0.0/24 via o gateway 192.168.1.254
route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.1.254
# adiciona uma rota para a rede 172.18.0.0/16 via a interface PPP pp0
route add -net 172.18.0.0 netmask 255.255.0.0 dev ppp0
# adiciona a rota default via o gateway 192.168.1.254
route add -net default gw 192.168.1.254
# adiciona uma rota para o host 192.168.1.101 via o gateway 192.168.1.253
route add -host 192.168.1.101 gw 192.168.1.253
Para configurar a máquina para repassar pacotes entre as interfaces (rotear) deve-se setar o bit do ip_forward, com o comando: echo 1 > /proc/sys/net/ipv4/ip_forward A tabela de rotas pode ser consultada com o programa netstat: root@gerencia:~> netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.0.0.0 192.168.1.254 255.255.255.0 U 0 0 0 eth1
192.168.1.101 192.168.1.253 255.255.255.0 UH 0 0 0 eth1
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 ppp0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.1.254 0.0.0.0 U 0 0 0 eth1
Rotas podem ser removidas também com route: # remove a rota para 10.0.0.0/24
route delete -net 10.0.0.0 netmask 255.255.255.0
# remove a rota para o host 192.168.1.101
route delete -host 192.168.1.101
Coleta e análise de tráfegoUma ferramenta básica de análise de tráfego de rede faz a coleta das PDUs por interfaces de rede, revelando as informações nelas contidas. Dois programas bastante populares para essa finalidade são:
Outros programas úteis (ou ao menos interessantes):
AtividadeA) Configurar interface de rede
B) Coleta de tráfego
C) Tabelas estáticas de roteamento
|
Aula 8 - 29/10/15: Interfaces de rede e rotas estáticas |
---|
AtividadeA) Configurar interface de rede
B) Coleta de tráfego
C) Tabelas estáticas de roteamento
|
Aula 9 - 03/11/15: NAT e DHCP |
---|
NATA tradução de endereço de rede (NAT - Network Address Translation), proposta pela RFC 1631 em 1994, é uma função de rede criada para contornar o problema da escassez de endereços IP. Com a explosão no crescimento da Internet, e o mau aproveitamento dos endereços IP (agravado pelo endereçamento hierárquico), percebeu-se que o esgotamento de endereços poderia ser logo alcançado a não ser que algumas medidas fossem tomadas. Esse problema somente seria eliminado com a reformulação do protocolo IP, de forma a aumentar o espaço de endereços, que resultou na proposta do IPv6 em 1998. Porém no início dos anos 1990 a preocupação era mais imediata, e pensou-se em uma solução provisória para possibilitar a expansão da rede porém reduzindo-se a pressão por endereços IP. O NAT surgiu assim como uma técnica com intenção de ser usada temporariamente, enquanto soluções definitivas não se consolidassem. Ainda hoje NAT é usado em larga escala, e somente deve ser deixado de lado quando IPv6 for adotado mundialmente (o que deve demorar). NAT parte de um princípio simples: endereços IP podem ser compartilhados por nodos em uma rede. Para isto, usam-se endereços IP ditos não roteáveis (também chamados de inválidos) em uma rede, sendo que um ou mais endereços IP roteáveis (válidos) são usados na interface externa roteador que a liga a Internet. Endereços não roteáveis pertencem às subredes 10.0.0.0/8, 192.168.0.0/16 e 172.16.0.0/12, e correspondem a faixas de endereços que não foram alocados a nenhuma organização e, portanto, não constam das tabelas de roteamento dos roteadores na Internet. A figura abaixo mostra uma visão geral de uma rede em que usa NAT: Para ser possível compartilhar um endereço IP, NAT faz mapeamentos (IP origem, port origem, protocolo transporte) -> (IP do NAT, port do NAT, , protocolo transporte), sendo protocolo de transporte TCP ou UDP. Assim, para cada par (IP origem, port origem TCP ou UDP) o NAT deve associar um par (IP do NAT, port do NAT TCP ou UDP) (que evidentemente deve ser único). Assim, por exemplo, se o roteador ou firewall onde ocorre o NAT possui apenas um endeerço IP roteável, ele é capaz em tese de fazer até 65535 mapeamentos para o TCP (essa é a quantidade de ports que ele pode possui), e o mesmo para o UDP. Na prática é um pouco menos, pois se limitam os ports que podem ser usados para o NAT. Note que o NAT definido dessa forma viola a independência entre camadas, uma vez que o roteamento passa a depender de informação da camada de transporte. NAT no LinuxVer capítulo 35, seção 4, da apostila. O NAT no Linux se configura com iptables. As regras devem ser postas na tabela nat, e aplicadas a chain POSTROUTING, como no seguinte exemplo: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE ;Habilita o NAT
iptables -t nat -L ;Lista as atuais regras da tabela NAT
A regra acima faz com que todo o tráfego originado em 192.168.1.0/24, e que sai pela interface eth0 deve ser mascarado com o endereço IP dessa interface. Esta regra diz o seguinte: todos os pacotes que passarem (POSTROUTING) por esta máquina com origem de 192.168.1.0/24 e sairem pela interface eth0 serão mascarados, ou seja sairão desta máquina com o endereço de origem como sendo da eth0. O alvo MASQUERADE foi criado para ser usado com links dinâmicos (tipicamente discados ou ADSL), pois os mapeamentos se perdem se o link sair do ar. AtividadeD) NAT
|
Aula 10 - 05/11/15: Lista de exercícios |
---|
Entregar em: 10/11/2015 |
Aula 11 - 10/11/15: DNS | ||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Ver capítulo 25 da apostila. DNS (Domain Name System) é uma base de dados distribuída e hierárquica. Nela se armazenam informações para mapear nomes de máquinas da Internet para endereços IP e vice-versa, informação para roteamento de email, e outros dados utilizados por aplicações da Internet. A informação armazenada no DNS é identificada por nomes de domínio que são organizados em uma árvore, de acordo com as divisões administrativas ou organizacionais. Cada nodo dessa árvore, chamado de domínio, possui um rótulo. O nome de domínio de um nodo é a concatenação de todos os rótulos no caminho do nodo até a raiz. Isto é representado como uma string de rótulos listados da direita pra esquerda e separados por pontos (ex: ifsc.edu.br, sj.ifsc.edu.br). Um rótulo precisa ser único somente dentro do domínio pai a que pertence. Por exemplo, um nome de domínio de uma máquina no IFSC pode ser mail.ifsc.edu.br., em que o "." (último) significa o root level domain .br é o domínio do topo da hierarquia (no Brasil feito em [1])ao qual mail.sj.ifsc.edu.br pertence. .ifsc.edu é um subdomínio de .br., e mail o nome da máquina em questão. Por razões administrativas, o espaço de nomes é dividido em áreas chamadas de zonas, cada uma iniciando em um nodo e se estendendo para baixo para os nodos folhas ou nodos onde outras zonas iniciam. Os dados de cada zona são guardados em um servidor de nomes, que responde a consultas sobre uma zona usando o protocolo DNS. Clientes buscam informação no DNS usando uma biblioteca de resolução (resolver library), que envia as consultas para um ou mais servidores de nomes e interpreta as respostas. (tirado do manual do BIND9) Ver também o livro sobre DNS e BIND da O'Reilly. Registros DNSCada rótulo na hierarquia DNS possui um conjunto de informações associadas a si. Essas informações são guardas em registros de diferentes tipos, dependendo de seu significado e propósito. Cada consulta ao DNS retorna assim as informações do registro pedido associado ao rótulo. Por exemplo, para ver o registro de endereço IP associado a www.ifsc.edu.br pode-se executar esse comando (o resultado teve alguns comentários removidos): root@freeman:~$ dig sj.ifsc.edu.br mx
;; QUESTION SECTION:
;sj.ifsc.edu.br. IN MX
;; ANSWER SECTION:
sj.ifsc.edu.br. 3600 IN MX 10 hendrix.sj.ifsc.edu.br.
;; AUTHORITY SECTION:
sj.ifsc.edu.br. 3600 IN NS ns.pop-udesc.rct-sc.br.
sj.ifsc.edu.br. 3600 IN NS ns.pop-ufsc.rct-sc.br.
sj.ifsc.edu.br. 3600 IN NS hendrix.sj.ifsc.edu.br.
;; ADDITIONAL SECTION:
hendrix.sj.ifsc.edu.br. 3600 IN A 200.135.37.65
ns.pop-ufsc.rct-sc.br. 11513 IN A 200.135.15.3
ns.pop-udesc.rct-sc.br. 37206 IN A 200.135.14.1
Cada uma das informações acima mostra um determinado registro e seu conteúdo, como descrito na tabela abaixo:
Obs: TTL (Time To Live) é o tempo de validade (em segundos) da informação retornada do servidor de nomes, e classe é o tipo de endereço (no caso IN equivale a endereços Internet). Os tipos de registros mais comuns são:
Uma zona assim é composta de um conjunto de registros com todas as informações dos domínios nela contidos. O conteúdo de uma zona, contendo o domínio example.com, pode ser visualizado abaixo: $TTL 86400
@ IN SOA ns1.example.com. hostmaster.example.com. (
2002022401 ; serial
10800 ; refresh
15 ; retry
604800 ; expire
10800 ; minimum
)
IN NS ns1.example.com.
IN NS ns2.smokeyjoe.com.
IN MX 10 mail.another.com.
IN TXT "v=spf1 mx -all"
ns1 IN A 192.168.0.1
www IN A 192.168.0.2
ftp IN CNAME www.example.com.
bill IN A 192.168.0.3
fred IN A 192.168.0.4
A primeira linha ($TTL) Indica o tempo que os registros permanecem no cache do DNS sem atualização e é obrigatória, normalmente é dada em segundos, mas pode ser dada em horas, dias, semanas. SOA – é o preâmbulo, o início da configuração da zona de domínio, contém inicialmente o nome da zona (representado por um sinal de @ o que equivale ao nome da zona de domínio ou seja debian.com.br) a diferença de usar o arroba é que ele será repetido automaticamente nas demais linhas caso não seja informado outro nome de zona, depois a sigla IN indicando que se refere a Internet, a sigla SOA indicando que se trata do início do documento, o nome do servidor primário DNS e o e-mail do administrador. Em resumo um registro de recurso é uma tupla (linha) contendo 5 campos, sendo que alguns podem ser omitidos, seguem a seguinte ordem: Domain Name Informa o domínio ao qual o registro se aplica, existem muitos registros para cada domínio, e cada cópia do banco de dados armazena informações sobre vários domínios, esse campo é a chave de pesquisa primária utilizada para atender às consultas Time_to_live indica a estabilidade do registro, é dado em segundos Class caso esteja relacionado a internet seu valor será sempre IN Type informa o tipo de registro, dentre os mais importantes podemos os que aparecem na segunda tabela. Depois há uma série de números, que obrigatoriamente devem ser informados, esses números indicam respectivamente: O número de série da zona de domínio, normalmente iniciando com o ano, seguido do mês, dia e um número sequencial qualquer. Período de refresh para servidores slave. Período de espera até uma nova tentativa de refresh em caso de erro. Período de expiração para servidores slave e TTL default para os RR que não possuem valor especificado. em seguida informamos os nameservers que o servidor de DNS primário irá armazenar, informamos no arquivo em questão o ns1.debian.com.br. e o ns2.debian.com.br. Informamos também um registro do tipo MX (Mail Exchanger) com prioridade 10 (quanto menor o número da prioridade maior será a prioridade dada ao servidor de e-mail no recebimento de e-mails). E por último foram feitas as associações entre nameserver e seus respectivos IP’s. Comando útilComando para recarregar os arquivos de configuração e zonas: rndc reload
AtividadeO objetivo é montar a seguinte estrutura: Vamos configurar e testar um servidor DNS. Para tanto montaremos a estrutura indicada no diagrama, onde cada máquina será um servidor DNS, com um domínio próprio e, ao mesmo tempo, será cliente do servidor DNS da máquina 192.168.2.101. Esta, por sua vez, será servidor: um servidor master do domínio redes.edu.br e servidor escravo, recebendo automaticamente uma cópia das zonas dos servidores masters, de todos os demais domínios criados. Esta, será também a única máquina com servidor DNS com zona reversa. Sendo assim todos os domínios, diretos e reversos, serão visíveis por meio deste servidor.
|
Aula 12 - 12/11/15: Revisão e Lista de exercícios |
---|
Entregar em: 17/11/2015 |
Aula 13 - 17/11/15: Avaliação e Apache |
---|
ApacheVer capítulo 26 da apostila. O servidor Apache (Apache server) é o mais bem sucedido servidor web livre. Foi criado em 1995 por Rob McCool, então funcionário do NCSA (National Center for Supercomputing Applications), Universidade de Illinois. Ele descende diretamente do NCSA httpd, um servidor web criado e mantido por essa organização. Seu nome vem justamente do reaproveitamento do NCSA httpd (e do fator de tê-lo tornado modular) fazendo um trocadilho com a expressão "a patchy httpd (um httpd remendável). Para ter ideia de sua popularidade, em maio de 2010, o Apache serviu aproximadamente 54,68% de todos os sites e mais de 66% dos milhões de sites mais movimentados. O servidor é compatível com o protocolo HTTP versão 1.1. Suas funcionalidades são mantidas através de uma estrutura de módulos, podendo inclusive o usuário escrever seus próprios módulos — utilizando a API do software. É disponibilizado em versões para os sistemas Windows, Novell Netware, OS/2 e diversos outros do padrão POSIX (Unix, GNU/Linux, FreeBSD, etc). Um servidor web é capaz de atender requisições para transferência de documentos. Essas requisições são feitas com o protocolo HTTP (HyperText Transfer Protocol), e se referem a documentos que podem ser de diferentes tipos. Uma requisição HTTP simples é mostrada abaixo: GET / HTTP/1.1 Host: www.ifsc.edu.br
Para o servidor Web, os principais componentes de uma requisição HTTP são o método HTTP a executar e o localizador do documento a ser retornado (chamado de URI - Uniform Resource Indicator). No exemplo acima, a requisição pede o método GET aplicado à URI /. O resultado é composto do status do atendimento, cabeçalhos informativos e o conteúdo da resposta. No exemplo, o status é a primeira linha (HTTP/1.1 200 OK), com os cabeçalhos logo a seguir. Os cabeçalhos terminam ao aparecer uma linha em branco, e em seguida vem o conteúdo (ou corpo) da resposta. Todo documento possui um especificador de tipo de conteúdo, chamado de Internet media Type. O cabeçalho de resposta Content-type indica o media type, para que o cliente HTTP (usualmente um navegador web) saiba como processá-lo. No exemplo acima, o documento retornado é do tipo text/html, o que indica ser um texto HTML. Outros possíveis media types são: text/plain (texto simples), application/pdf (um texto PDF), application/x-gzip (um conteúdo compactado com gzip). Um documento no contexto do servidor web é qualquer conteúdo que pode ser retornado como resposta a uma requisição HTTP. No caso mais simples, um documento corresponde a um arquivo em disco, mas também podem ser gerados dinamicamente. Existem diversas tecnologias para gerar documentos, tais como PHP, JSP, ASP, CGI, Python, Perl, Ruby, e possivelmente outras. Todas se caracterizam por uma linguagem de programação integrada intimamente ao servidor web, obtendo dele informação sobre como gerar o conteúdo da resposta. Atualmente, boa parte dos documentos que compõem um site web são gerados dinamicamente, sendo PHP, JSP e ASP as tecnologias mais usadas. Informações gerais sobre Apache no Ubuntu
Uma configuração básicaO servidor Apache precisa de algumas informações básicas para poder ativar um site:
No exemplo abaixo, define-se um servidor WWW chamado www.prj.edu.br, que atende requisições no ports 8080.
|
Aula 14 - 19/11/15: Apache |
---|
Na arquitetura de redes da Internet, são as aplicações que se comunicam, gerando dados no transmissor e consumindo-os no receptor.
Aplicações são processos que se comunicam através da rede (lembre lá de ICO que processos são programas em execução). Exemplos de aplicações são navegadores web (Firefox, Chrome) e bate-papo (Skype, GTalk). A comunicação pode ser feita de diferentes formas, de acordo com o modelo de comunicação adotado pela aplicação em questão. O modelo de comunicação define o papel de cada participante da comunicação, e por consequência acaba determinando como a comunicação acontece (quem a inicia, quando se transmitem e recebem mensagens). Três modelos conhecidos são:
Cada aplicação usa diretamente os serviços da camada de transporte, e indiretamente os de camadas inferiores. Assim, para uma aplicação é a camada de transporte que envia e recebe suas mensagens. Como visto na aula passada, um serviço importante da camada de transporte é classificar e separar os pacotes recebidos de acordo com a aplicação que deve recebê-los, e para isso se um número chamado de port. O número de port pode ser entendido como um endereçador de aplicações dentro de um mesmo host. Vimos também que a camada de transporte na Internet apresenta dois protocolos, e ambos usam números de port para separar os pacotes de acordo com a comunicação que os contém:
O estudo das aplicações da Internet inicia com WWW, que foi responsável por popularizar a Internet nos anos 90 e ainda é a aplicação mais difundida e acessada. WWW e protocolo HTTPWWW (World Wide Web) é um sistema de documentos em hipermidia que são ligados e acessados na Internet (FONTE: Wikipedia). Tendo início em 1990 como uma aplicação experimental desenvolvida por Tim Berners-Lee, que então trabalhava no CERN, na Suíça, em pouco tempo caiu no gosto de demais usuários e se difundiu. WWW se tornou tão popular que para muitos passou a ser sinônimo de Internet (equivocadamente). Por trás da sua rápida aceitação há um protocolo de aplicação simples e funcional, além claro do modelo de informação em hipermidia que agradou as pessoas. Se o WWW é um sistema de documentoshipermidia online mantido de forma distribuída na Internet, o protocolo HTTP (Hypertext Transfer Protocol) é o protocolo usado para acessá-los. Esse protocolo segue o modelo cliente-servidor, e as comunicações são feitas com mensagens de pedido e resposta. Um cliente (navegador web) envia uma mensagem HTTP de pedido a um servidor web, que a responde com uma mensagem de resposta contendo o conteúdo solicitado. O protocolo HTTP usa o protocolo TCP para transmitir suas mensagens. Mensagens de pedido HTTPMensagens HTTP de pedido possuem a seguinte estrutura: Método URI HTTP/versão_do_protocolo
Cabeçalho1: valor do cabeçalho1
Cabeçalho2: valor do cabeçalho2
Cabeçalho3: valor do cabeçalho3
CabeçalhoN: valor do cabeçalhoN
corpo da mensagem
A primeira linha usa o campo método para indicar o tipo de pedido a ser realizado. O método HTTP pode ser entendido como um comando a ser realizado pelo servidor. Os métodos mais comuns são:
O campo URI (Uniform Resource Indicator) identifica o documento que o servidor deve acessar. Ele se aparenta com um caminho de arquivo (pathname), porém possui algumas extensões para poder enviar informação adicional. Os cabeçalhos servem para complementar o pedido, informando ao servidor mais detalhes sobre o que está sendo requisitado. Por fim, o corpo da mensagem é opcional, podendo conter dados a serem enviados ao servidor quando necessário. Tendo entendido os componentes de um pedido HTTP, segue abaixo um exemplo de uma requisição real (note que ela não possui corpo de mensagem): GET /wiki/ HTTP/1.1
Host: wiki.sj.ifsc.edu.br
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/20.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: wiki2010UserID=614; wiki2010UserName=Msobral; wiki2010Token=4ed97239498a2fc74596b0f0a62331b5; wiki2010_session=f4e6b1hl4ctlkbpe5gc5gkosi4
Connection: keep-alive
If-Modified-Since: Mon, 20 May 2013 00:38:20 GMT
Mensagens de resposta HTTPMensagens HTTP de resposta possuem a seguinte estrutura: HTTP/versão_do_protocolo status info
Cabeçalho1: valor do cabeçalho1
Cabeçalho2: valor do cabeçalho2
Cabeçalho3: valor do cabeçalho3
CabeçalhoN: valor do cabeçalhoN
corpo da mensagem
A linha inicial informa o resultado do atendimento do pedido (se teve sucesso ou não), contendo um código numérico de status seguido de uma breve descrição. Os códigos numéricos e info mais comuns são:
Após a linha inicial há os cabeçalhos, usados da mesma forma que em pedidos HTTP. Por fim, pode haver o corpo da mensagem (opcional). Um exemplo de mensagem de resposta segue abaixo: HTTP/1.1 200 OK
Date: Thu, 23 May 2013 20:43:31 GMT
Server: Apache
Last-Modified: Fri, 10 May 2013 14:09:58 GMT
ETag: "757236-40-4dc5db8df272a"
Accept-Ranges: bytes
Content-Length: 64
Vary: Accept-Encoding
Connection: close
Content-Type: text/plain; charset=UTF-8
Este é um pequeno arquivo de teste, sem informação útil ...
Captura de página somente HTML Captura de página HTML com uma figura Captura de página HTML com duas figuras Atividade ApachePara criar páginas HTML um pouco mais completas você pode ler o tutorial disponível aqui Teste fazer alterações em sua página, como alteração de layout, inserção de tabelas e figuras, etc. Use os exemplos disponibilizados no link acima. Teste com DNSReconfigurar o experimento com DNS feito na Aula 11 e testar o acesso às páginas dos colegas. |
Aula 15 - 24/11/15: Continuação Apache e FTP |
---|
Atividade Apache
FTP
Atividade FTP
|
Aula 16 - 26/11/15: Continuação FTP |
---|
Atividade FTPNa máquina virtual executar os seguintes passos:
|