Mudanças entre as edições de "PJI2-2017-1"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(196 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 1: Linha 1:
Endereço encurtado: http://bit.ly/pji120171
+
Endereço encurtado: http://bit.ly/pji2-20171
  
 +
Presença: [https://docs.google.com/spreadsheets/d/1--1xbw2q99B9q4SbLRNbuU6BxDaOINRQzROw_wNMUas/edit?usp=sharing Neste link]
  
  
 
__TOC__
 
__TOC__
= Projeto Integrador I: Diário de Aula 2017-1 =  
+
= Projeto Integrador II: Diário de Aula 2017-1 =  
  
 
'''Professores:''' [[Marcelo_Maia_Sobral|Marcelo Maia Sobral]] ([[imagem:Facebook2.png|20px]] [http://www.facebook.com/Marcelo.Sobral.Ifsc Facebook]) e [[Simara]] (''simara.sonaglio@ifsc.edu.br'')
 
'''Professores:''' [[Marcelo_Maia_Sobral|Marcelo Maia Sobral]] ([[imagem:Facebook2.png|20px]] [http://www.facebook.com/Marcelo.Sobral.Ifsc Facebook]) e [[Simara]] (''simara.sonaglio@ifsc.edu.br'')
Linha 21: Linha 22:
 
Introdução e histórico das telecomunicações e da Internet. Uso de serviços e aplicações oferecidos pelas redes de telecomunicações. Conceitos sobre redes de computadores: comutação de pacotes versus comutação de circuitos, redes locais e rede Internet. Instalação de computadores e integração a uma rede local e a Internet. Sistema operacional Linux. Introdução ao sistema telefônico: telefonia fixa e móvel, centrais de comutação, telefonia IP e convergência. Integração de serviços de voz convencionais e VoIP.
 
Introdução e histórico das telecomunicações e da Internet. Uso de serviços e aplicações oferecidos pelas redes de telecomunicações. Conceitos sobre redes de computadores: comutação de pacotes versus comutação de circuitos, redes locais e rede Internet. Instalação de computadores e integração a uma rede local e a Internet. Sistema operacional Linux. Introdução ao sistema telefônico: telefonia fixa e móvel, centrais de comutação, telefonia IP e convergência. Integração de serviços de voz convencionais e VoIP.
  
* [[Curso_Técnico_em_Telecomunicações_-_Projeto_Integrador_I_(PJI1)#Cronograma_das_Atividades|Cronograma]]
+
* [[Curso_Técnico_em_Telecomunicações_-_Projeto_Integrador_II_(PJI2)#Cronograma_das_Atividades|Cronograma]]
  
 
== Bibliografia ==
 
== Bibliografia ==
Linha 44: Linha 45:
 
** [http://www.gliffy.com/ Gliffy: um software online para fazer diagramas]
 
** [http://www.gliffy.com/ Gliffy: um software online para fazer diagramas]
  
== Recursos ==
+
== Alguns textos interessantes ==
 +
* [http://www.techtudo.com.br/artigos/noticia/2012/06/historia-dos-telefones-celulares.html A história dos telefones celulares]
 +
* [http://www.telebrasil.org.br/ Telebrasil (Associação Brasileira de Telecomunicações)]
 +
* [http://www.businessreviewbrasil.com.br/tecnologia/1290/Telecom-no-Brasil:-um-panorama Telecom no Brasil: um panorama]
 +
* [http://www.teleco.com.br/estatis.asp Estatísticas sobre telecomunicações no Brasil]
 +
* [http://www.teleco.com.br/operadoras/grupos.asp Principais grupos de telecomunicações no Brasil]
 +
* [http://www.bndes.gov.br/SiteBNDES/export/sites/default/bndes_pt/Galerias/Arquivos/conhecimento/revista/rev1110.pdf Telecomunicações: O Novo Cenário (BNDES)]
 +
* [http://www.ipea.gov.br/portal/index.php?option=com_content&view=article&id=1378 Desafios e Oportunidades do Setor de Telecomunicações no Brasil (IPEA)]
 +
* [http://www.tecmundo.com.br/netflix/54634-netflix-abocanha-34-trafego-internet-america-norte.htm Netflix abocanha 34% de todo o tráfego da internet na América do Norte]
 +
* [http://www.statista.com/statistics/267183/forecast-for-the-worldwide-voip-traffic/ Tráfego total VoIP na Internet]
 +
* [http://www.avellareduarte.com.br/projeto/conceituacao/conceituacao1/conceituacao14_internetBrasil2014.htm Internet no Brasil 2014 (dados e fontes)]
 +
* [http://www.tecmundo.com.br/internet/51663-internet-como-estao-as-velocidades-nos-principais-paises-infografico-.htm Internet: como estão as velocidades nos principais países ]
 +
* [http://tele.sj.ifsc.edu.br/~msobral/res/palestra-redes.pdf Apresentação sobre redes de computadores]
 +
* [http://kelsocartography.com/blog/?p=2618 O Mundo Submarino da Internet]
 +
* [http://www.rnp.br/servicos/conectividade/rede-ipe Rede Ipê: a Rede Nacional de Pesquisa (RNP)]
 +
* [https://wiki.openwrt.org/toh/raspberry_pi_foundation/raspberry_pi Openwrt no RaspberryPi]
 +
 
 +
== Oportunidades para Técnicos em Telecomunicações ==
  
Existe um computador com Linux no câmpus que pode ser acessado remotamente. Nele se podem realizar atividades e exercícios. O acesso pode ser feito desta forma:
+
* [http://www.catho.com.br/vagas/tecnico-em-telecomunicacoes/ Ofertas de vagas para técnico em Telecom]
 +
* [http://www.sine.com.br/vagas-empregos/tecnico-de-telecomunicacoes Ofertas de vagas para técnico em Telecom no SINE]
 +
* [http://www.catho.com.br/profissoes/tecnico-em-telecomunicacoes/ Salário médio do Técnico em Telecomunicações no Brasil]
 +
 
 +
== Documentários sobre telecomunicações ==
  
# Obtenha um programa cliente SSH:
+
* [http://tele.sj.ifsc.edu.br/~msobral/pji/videos/telecomunicacoes_HC.mp4 História das Telecomunicações]
#* Para qualquer sistema operacional, pode-se usar o Google Chrome (ver [http://wiki.sj.ifsc.edu.br/images/0/08/Tutorial_-_Como_usar_ssh_no_Chrome.pdf este tutorial], mas mude o nome de usuário e endereço do computador, conforme informações mostradas no passo 2).
+
* [https://archive.org/details/Inventos.Telefones.Celulares Inventos: Telefones Celulares (video Discovery)]
#* Para o Windows pode-se usar o [https://the.earth.li/~sgtatham/putty/latest/x86/putty.exe putty] (veja [http://www.hardware.com.br/tutoriais/ssh-iniciantes/pagina3.html este tutorial] .. mas ignore a parte que menciona ''servidor X'' em diante)
+
* Documentário ''É Logo Ali'': [http://tele.sj.ifsc.edu.br/~msobral/pji/videos/logo_ali_1.mp4 parte 1] e [http://tele.sj.ifsc.edu.br/~msobral/pji/videos/logo_ali_2.mp4 parte 2]
#* Para o MacOS-X, Linux, FreeBSD e outros, use o programa [http://manpages.ubuntu.com/manpages/trusty/man1/ssh.1.html ssh] que já está instalado nesses sistemas operacionais.
+
* [http://tele.sj.ifsc.edu.br/~msobral/pji/videos/telecomunicacoes_petrobras.mp4 Video da Petrobras]
# Conecte ao computador do câmpus usando o programa SSH.
 
#* '''Endereço do computador:''' ''prg2.sj.ifsc.edu.br''
 
#* '''Usuário:''' ''aluno''
 
#* '''Senha:''' ''<a ser informada em aula>''
 
#* '''OBS:''' no caso do Linux, MacOS-X e FreeBSD, pode-se usar o programa ''ssh'' da seguinte forma: <syntaxhighlight lang=bash>
 
ssh aluno@prg2.sj.ifsc.edu.br
 
</syntaxhighlight>
 
  
 
== Curiosidades ==
 
== Curiosidades ==
Linha 94: Linha 109:
 
{| border="1"
 
{| border="1"
 
! Nome
 
! Nome
!Projeto 1  
+
!Projeto 1
 
!Projeto 2
 
!Projeto 2
!Projeto 3
 
 
!Conceito  
 
!Conceito  
 
!Conceito<br>após ajuste
 
!Conceito<br>após ajuste
!Faltas
+
|-
|}
+
| 162001443-2 <!--Alisson-->||<center>7</center>||<center>3</center> ||<center>5</center> || <center>5</center>
 +
|-
 +
| 162000955-2 <!-- Ana Paula -->||<center>0*</center> ||<center>0*</center> ||<center>0</center> ||<center>0</center>
 +
|-
 +
| 162001092-5 <!-- Bruno -->|| <center>6</center>||<center>7</center> ||<center>7</center> || <center>7</center>
 +
|-
 +
| 162001005-4<!-- Daniel -->|| <center>7</center>||<center>10</center> ||<center>8</center> ||<center>9</center>
 +
|-
 +
| 162002311-3<!-- Eathan -->|| <center>7</center>||<center>8</center> || <center>7</center>||<center>7</center>
 +
|-
 +
| 162000998-6<!-- Jhorase-->|| <center>7</center>||<center>9</center> ||<center>8</center> ||<center>9</center>
 +
|-
 +
| 162001423-8<!-- Marcelo-->|| <center>7</center>||<center>0*</center> ||<center>3</center> ||<center>3</center>
 +
|-
 +
| 162000795-9<!-- Michel-->|| <center>6</center>||<center>7</center> ||<center>6</center> || <center>6</center>
 +
|-
 +
| 162001012-7<!-- Ricardo-->|| <center>6</center>||<center>8</center> ||<center>7</center> ||<center>7</center>
 +
|-
 +
| 162001704-0<!-- Robson-->|| <center>0*</center>||<center>0*</center> ||<center>0</center> ||<center>0</center>
 +
|-
 +
| 162005091-9<!-- Willian-->|| <center>10</center>||<center>10</center> ||<center>10</center> ||<center>10</center>
 +
|}
  
*'''OBS:''' D* = Indefinido (por ausência à avaliação)
+
*'''OBS:''' 0* = Indefinido (por ausência à avaliação)
*'''OBS 2:''' conceito acompanhado de ''?'' = falta o relatório do projeto
 
  
 
=== Testes ===
 
=== Testes ===
Linha 112: Linha 146:
 
! T2
 
! T2
 
! T3
 
! T3
! T4/PC
+
! T4
 
! T5
 
! T5
 
! T6
 
! T6
 
! T7
 
! T7
! T8
 
!T9
 
!T10
 
!T11
 
 
!Ajuste
 
!Ajuste
 +
|-
 +
| 162001443-2 <!--Alisson-->|| S||S ||S |||S ||S || I|| I|| mantém
 +
|-
 +
| 162000955-2 <!-- Ana Paula -->|| I||I ||I* ||I* ||I* ||I* ||I* || -
 +
|-
 +
| 162001092-5 <!-- Bruno -->||S ||S || S||S || S||I ||I ||mantém
 +
|-
 +
| 162001005-4<!-- Daniel -->|| S||S ||S ||S ||S ||S || S ||+1
 +
|-
 +
| 162002311-3<!-- Eathan -->||I ||I ||S ||S ||S ||I ||I || mantém
 +
|-
 +
| 162000998-6<!-- Jhorase-->||S ||I* || S|| S||S ||S ||S ||+1
 +
|-
 +
| 162001423-8<!-- Marcelo-->|| S||I ||S ||S ||I || I||I || mantém
 +
|-
 +
| 162000795-9<!-- Michel-->||I ||S ||S ||I* || S||I ||S || mantém
 +
|-
 +
| 162001012-7<!-- Ricardo-->||I* ||S || S||S ||I || I|| I||mantém
 +
|-
 +
| 162001704-0<!-- Robson-->|| S||I || S||I* ||I* ||I* ||I* ||-
 +
|-
 +
| 162005091-9<!-- Willian-->||I* ||S || S||S ||S ||S ||S||+1
 
|}
 
|}
  
Linha 131: Linha 183:
 
!Membros
 
!Membros
 
|-
 
|-
|1 || Elizete, Fernando K., Katia
+
|1 ||  
 
|-
 
|-
|2 || Fernando L. Israel, Jeferson
+
|2 ||  
 
|-
 
|-
|3 || Jailson, Jhonnattan, Marcelo
+
|3 ||  
 
|-
 
|-
|4 || Eduardo, Lucas O., Maicom
+
|4 ||  
 
|-
 
|-
|5 || Lucas M., Luiz, Gilmar
+
|5 ||
 
|-
 
|-
 
|6 ||  
 
|6 ||  
Linha 146: Linha 198:
 
|}
 
|}
  
= 23/03: Apresentação da disciplina =
+
= 10/02: Apresentação da disciplina =
  
 
{{Collapse top | Aula 1}}
 
{{Collapse top | Aula 1}}
  
# Apresentação: [[Curso_T%C3%A9cnico_em_Telecomunica%C3%A7%C3%B5es|Página do Curso Técnico em Telecomunicações]]
 
# Apresentação de [[PJI-2016-1#Document.C3.A1rios_sobre_telecomunica.C3.A7.C3.B5es|videos sobre a área de Telecomunicações]]
 
# Breve discussão sobre [[Panorama atual das telecomunicações]], que pode ser complementada com [[PJI-2016-1#Alguns_textos_interessantes|outras informações]]
 
# O perfil do Técnico em Telecomunicações em [[PJI-2016-1#Oportunidades_para_T.C3.A9cnicos_em_Telecomunica.C3.A7.C3.B5es|vagas ofertadas]]
 
# Uma [[PJI-2016-1#Atividade|atividade final]] sobre [[PJI-2016-1#Uma_introdu.C3.A7.C3.A3o_a_comunica.C3.A7.C3.A3o_de_dados|comunicação de dados]]
 
  
== Alguns textos interessantes ==
+
'''Objetivo da aula:''' usar o sistema operacional Linux para visualizar os conteúdos de arquivos
* [http://www.techtudo.com.br/artigos/noticia/2012/06/historia-dos-telefones-celulares.html A história dos telefones celulares]
+
 
* [http://www.telebrasil.org.br/ Telebrasil (Associação Brasileira de Telecomunicações)]
+
 
* [http://www.businessreviewbrasil.com.br/tecnologia/1290/Telecom-no-Brasil:-um-panorama Telecom no Brasil: um panorama]
+
A disciplina se compõe de três etapas:
* [http://www.teleco.com.br/estatis.asp Estatísticas sobre telecomunicações no Brasil]
+
# Introdução ao uso do sistema operacional Linux
* [http://www.teleco.com.br/operadoras/grupos.asp Principais grupos de telecomunicações no Brasil]
+
# Instalação de um computador com Linux e implantação de uma rede local com acesso a Internet
* [http://www.bndes.gov.br/SiteBNDES/export/sites/default/bndes_pt/Galerias/Arquivos/conhecimento/revista/rev1110.pdf Telecomunicações: O Novo Cenário (BNDES)]
+
# Implementação de um pequeno PBX IP
* [http://www.ipea.gov.br/portal/index.php?option=com_content&view=article&id=1378 Desafios e Oportunidades do Setor de Telecomunicações no Brasil (IPEA)]
+
 
* [http://www.tecmundo.com.br/netflix/54634-netflix-abocanha-34-trafego-internet-america-norte.htm Netflix abocanha 34% de todo o tráfego da internet na América do Norte]
+
Hoje inicia-se a etapa 1. Ao longo dela serão estudados alguns conceitos sobre o sistema operacional Linux, e serão praticados exercícios e resolvidos pequenos desafios relacionados com procedimentos usuais do dia-a-dia. Ao final da etapa, um pequeno projeto será realizado para consolidar o conhecimento e avaliar o progresso da turma.
* [http://www.statista.com/statistics/267183/forecast-for-the-worldwide-voip-traffic/ Tráfego total VoIP na Internet]
+
 
* [http://www.avellareduarte.com.br/projeto/conceituacao/conceituacao1/conceituacao14_internetBrasil2014.htm Internet no Brasil 2014 (dados e fontes)]
+
 
* [http://www.tecmundo.com.br/internet/51663-internet-como-estao-as-velocidades-nos-principais-paises-infografico-.htm Internet: como estão as velocidades nos principais países ]
+
== O que é um sistema operacional ? ==
* [http://tele.sj.ifsc.edu.br/~msobral/res/palestra-redes.pdf Apresentação sobre redes de computadores]
+
 
* [http://kelsocartography.com/blog/?p=2618 O Mundo Submarino da Internet]
+
Um computador por si só é apenas um [http://wiki.sj.ifsc.edu.br/images/c/cf/Pji1-Laptop-aberto.JPG conjunto de circuitos lógicos complexos]. Para ter alguma utilidade, essa máquina deve ser usada para executar programas. Programas são parecidos com receitas, contendo instruções que envolvem cálculos, cópia de dados entre componentes dentro (ex: memória, placa de video, discos) e fora do computador (ex: impressora, teclado, monitor, rede) e temporização. O principal programa executado em um computador é o '''sistema operacional'''. Esse programa especial tem por finalidade facilitar o uso do computador pelos usuários, além de aproveitar de forma eficiente seus recursos. Sem um sistema operacional um computador se torna completamente inútil.
* [http://www.rnp.br/servicos/conectividade/rede-ipe Rede Ipê: a Rede Nacional de Pesquisa (RNP)]
 
  
== Oportunidades para Técnicos em Telecomunicações ==
 
  
* [https://www.ceviu.com.br/salario/tabela-pretensao-salarial/cargo/tecnico-telecomunicacoes Tabela de salários de técnicos em Telecom]
+
Na área de Telecomunicações predominam sistemas operacionais da família [https://www.cenapad.unicamp.br/servicos/treinamentos/tutorial_unix/unix_tutor.html Unix], o que inclui o Linux. Porém o conceito de ''sistema operacional'' inclui também o [http://pt.wikipedia.org/wiki/Microsoft_Windows Windows], [http://pt.wikipedia.org/wiki/OS_X Mac OS X], [http://www.freebsd.org/ FreeBSD], [http://pt.wikipedia.org/wiki/Android Android], [http://pt.wikipedia.org/wiki/IOS iOS], e ([http://levenez.com/unix/ muitos], [http://levenez.com/windows/ muitos] !) outros. Essa variedade tem razões históricas e tecnológicas, pois com o tempo criaram-se sistemas operacionais que exploraram novas ideias, atendiam novas necessidades e se adequavam a novos tipos de computadores.
* [http://www.catho.com.br/vagas/tecnico-em-telecomunicacoes/ Ofertas de vagas para técnico em Telecom]
 
* [http://www.sine.com.br/vagas-empregos/tecnico-de-telecomunicacoes Ofertas de vagas para técnico em Telecom no SINE]
 
* [http://portal.iff.edu.br/campus/campos-centro/cursos/curso-tecnico/eixo-tecnologico-informacao-e-comunicacao/curso-tecnico-em-telecomunicacoes/Matriz%20Curricular%20Telecomunicacoes.pdf Curso técnico em Telecom no IFF]
 
* [http://www.catho.com.br/vagas/tecnico-residente-de-telecom/10444716/?origem=busca-de-vagas Exemplo de vaga para técnico em Fpolis (boa remuneração)]
 
  
== Documentários sobre telecomunicações ==
 
  
* [http://tele.sj.ifsc.edu.br/~msobral/pji/videos/telecomunicacoes_HC.mp4 História das Telecomunicações]
+
Apesar de existirem muitos diferentes sistemas operacionais, eles compartilham algumas características. Esta animação se baseia no antigo sistema operacional Windows 95, porém revela atribuições elementares de um sistema operacional ...
* [https://archive.org/details/Inventos.Telefones.Celulares Inventos: Telefones Celulares (video Discovery)]
+
<center>[https://www.youtube.com/watch?v=4eAeTPA8jvE A Saga do Windows]</center>
* Documentário ''É Logo Ali'': [http://tele.sj.ifsc.edu.br/~msobral/pji/videos/logo_ali_1.mp4 parte 1] e [http://tele.sj.ifsc.edu.br/~msobral/pji/videos/logo_ali_2.mp4 parte 2]
 
* [http://tele.sj.ifsc.edu.br/~msobral/pji/videos/telecomunicacoes_petrobras.mp4 Video da Petrobras]
 
  
== Uma introdução a comunicação de dados ==
 
  
Comunicação dados pode ser entendida como '''troca de informação entre dois dispositivos através de algum meio de comunicação'''. A comunicação ocorre no âmbito de um sistema de telecomunicações, composto por equipamentos (''hardware'') e programas (''software''). Um sistema básico de comunicação de dados se constitui de cinco componentes:
+
Não há um video tão direto e divertido como esse que se baseie no Linux. Mas alguns documentários podem contextualizar o Linux e contar um pouco de sua história, como estes videos:
  
[[imagem:Rede-intro-1.png]]
+
<center>[https://www.youtube.com/watch?v=plMxWpXhqig Revolution OS: A História do Linux, GNU e software livre]<br><br>
 +
[https://www.youtube.com/watch?v=hZcPedvLqTM The Code Linux - documentário sobre Linux]</center>
  
# '''A mensagem''': a informação a ser transmitida. O conteúdo da mensagem, seja um texto, música, video, ou qualquer outro tipo de informação, é representada por conjuntos de '''bits''' (dígitos binários).
 
# '''Transmissor:''' dispositivo que transmite a mensagem.
 
# '''Receptor:''' dispositivo que recebe a mensagem.
 
# '''Meio de comunicação:''' caminho físico por onde viaja a mensagem do transmissor até o receptor.
 
# '''Protocolo:''' conjunto de regras que governa a comunicação de dados.
 
  
== Atividade ==
+
O que esses videos procuram revelar é que o sistema operacional é um '''programa''' que articula os recursos do computador (''hardware'') para que usuários possam executar programas (''software''). O sistema operacional por si só não tem utilidade, pois ele existe para viabilizar o uso de aplicativos, e esses sim são úteis para os usuários. Costuma-se dizer também que um sistema operacional pode ser visto como uma ''plataforma de software'' sobre a qual podem-se criar e utilizar programas.  
* Proponha uma solução para:
 
** conversar com uma pessoa que está em outra cidade .. e em outro país
 
** conversar com uma pessoa que está pescando nas Ilhas Moleques do Sul
 
** enviar um documento para outra pessoa, independente de qual cidade esteja
 
** monitorar sensores de correntes em bóias marítimas que estão longe da costa ... e se estiverem perto da costa ?
 
** controlar um mini-submarino a partir de um barco na superfície
 
** copiar um arquivo de um computador para outro
 
** escutar músicas em um tablet ou smartphone, sendo que inicialmente não estão nesses dispositivos
 
** assistir a um filme que está em um arquivo em outro computador
 
** acessar remotamente uma webcam que monitora uma residência.
 
* Como funciona cada solução sugerida ?
 
* O que todas têm em comum ?
 
* Demonstre cada solução proposta por meio de um experimento (isso é, na prática).
 
  
{{Collapse bottom | Aula 1}}
 
  
= 28/03: Conceitos básicos e início do projeto 1=
+
[[imagem:Pji-So1.png|600px]]
 +
<br>''Um sistema computacional é formado por hardware e software, e é utilizado por pessoas ou mesmo outros sistemas''
  
{{Collapse top | Aula 2}}
 
  
Nesta aula, será feito o seguinte:
+
Alguns conceitos são comuns ao projeto de sistemas operacionais:
# [[PJI-2016-1#Apresenta.C3.A7.C3.A3o_do_Projeto_1|Apresentação do tema do Projeto 1]]
+
* '''Interface com o usuário''', tanto gráfica quanto via [http://www.guiafoca.org/cgs/guia/iniciante/ch-bas.html#s-basico-terminal terminal] com o [http://www.guiafoca.org/cgs/guia/iniciante/ch-bas.html#s-basico-interpcmd interpretador de comandos (''shell'')]
# [[PJI-2016-1#Identifica.C3.A7.C3.A3o_de_softwares_para_centro_de_midia|Pesquisa sobre opções para realização do projeto]]
+
* '''Processos''' (programas em execução), sendo usual hoje em dia que múltiplos processos possam coexistir em um sistema operacional
 +
* '''Gerenciamento dos recursos''' do computador (memória, discos, ...), de forma a tirar melhor proveito de suas capacidades
 +
* '''Arquivos e diretórios''', para facilitar o armazenamento de dados e sua organização
 +
* '''Rede''' (comunicação com outros computadores), uma vez que hoje em dia é inconcebível que um dispositivo computacional não possa se comunicar com outros dispositivos
  
== Apresentação do Projeto 1 ==
 
  
''O projeto 1 tem por objetivo:''
+
== O sistema operacional Linux ==
  
 +
O sistema operacional Linux [https://pt.wikipedia.org/wiki/Linux#Cria.C3.A7.C3.A3o nasceu de um projeto do então estudante Linus Torvalds], no início da década de 1990. Na verdade, Linux o nome do núcleo do sistema operacional, que é seu componente fundamental responsável por controlar o ''hardware'' e oferecer um conjunto de abstrações, mecanismos e facilidades para sua utilização por programadores e usuários. O desenvolvimento do Linux, desde sua origem, se dá pela colaboração de diversos programadores ao redor do mundo, tendo também a participação de empresas em tempos recentes. Todas as contribuições são abertas e gratuitas, independente se vindas de pessoas ou empresas.
  
<span style="font-size:large;color:black"><center>'''Implantar um serviço de compartilhamento de midia por meio de uma rede de computadores residencial'''</center></span>
 
  
 +
O sistema operacional que se utiliza em computadores se compõe do núcleo Linux e um conjunto de programas e demais arquivos para formar um ambiente de trabalho. Essa combinação de diferentes programas, e as facilidades para instalá-los e mantê-los, se chama [https://pt.wikipedia.org/wiki/Distribui%C3%A7%C3%A3o_Linux distribuição Linux]. Existem muitas distribuições Linux, sendo algumas das mais conhecidas Ubuntu, Fedora, Debian, Linux Mint, ArchLinux e OpenSuSE. A escolha da distribuição a ser usada depende do gosto e conhecimento do usuário e, em certos casos, do [https://pt.wikipedia.org/wiki/Lista_de_distribui%C3%A7%C3%B5es_de_Linux uso específico que se pretende].
  
Isso pode ser detalhado da seguinte forma:
 
* '''O cenário:''' rede local de alcance reduzido. Uma residência ou pequeno escritório, por exemplo.
 
* '''O problema:''' armazenar e distribuir mídia em geral para os dispositivos em rede. Músicas, filmes, fotos, etc. Uma casa com vários cômodos ou um escritório com música ambiente.
 
** ''reproduzir midia em e vindo de laptops, desktops, tablets e smartphones''
 
** ''reproduzir midia em TVs LCD/LED/Plasma''
 
** ''reproduzir midia em amplificadores de audio, ou dock stations''
 
** ''controlar a reprodução com controle remoto''
 
** ''... possivelmente outras funcionalidades !''
 
* '''Como fazer:''' pesquisa de ferramentas de armazenamento, organização/catalogação e distribuição de mídia em rede. Compartilhamento automatizado/facilitado para o usuário final.
 
* '''O que usar:''' sistema operacional Linux, aplicações em rede.
 
  
 +
[[imagem:Pji1-Tux-2.png]]
 +
<br>''[https://pt.wikipedia.org/wiki/Tux Tux], o mascote Linux, caracterizado para as distribuições Mint, Ubuntu e Fedora.''
  
[[imagem:Pji-video-sharing.jpg]]
 
  
 +
Tradicionalmente, um sistema operacional Linux oferece uma interface de usuário baseada em linha de comando. Essa interface em modo texto está sempre disponível, sendo apresentada pelo menos durante a inicialização do sistema. Em seus primórdios havia apenas essa interface, porém uma interface gráfica também foi desenvolvida e incorporada às distribuições Linux. Essa interface gráfica é implementada por um conjunto de programas, diferente de sistemas Windows, em que ela faz parte do núcleo do sistema. Com isso, podem-se usar diferentes interfaces gráficas em um mesmo sistema operacional Linux.
  
Uma pequena rede interliga possivelmente computadores, smartphones, tablets e laptops. Em um ou mais dos computadores existem videos e músicas, que podem estar organizados em listas de reprodução ou por categoria (ex: os videos podem estar classificados por gênero, além de terem uma sinopse obtida do [http://www.imdb.com/ IMDB]). As pessoas que usam essa rede gostariam de poder integrar seus dispositivos, de forma a poderem neles reproduzir esses videos e músicas. Assim, eles poderão assistir ou ouvir o que quiserem em qualquer parte do ambiente. Além disso, o contrário também poderia ser desejável: uma pessoa poderia reproduzir em um computador, ou mesmo na TV, videos, músicas e fotos que estão armazenados em seu smartphone ou tablet.
 
  
 +
[[imagem:Pji1-Linux-cli.png|500px]]
 +
<br>''A interface de linha de comando do Linux''
  
''Do ponto de vista da '''aprendizagem''', o projeto 1 tem por objetivos:''
 
* Usar as interface gráfica e de linha de comando do sistema operacional Linux para operações básicas:
 
** Visualizar, copiar, remover e criar arquivos e diretórios
 
** Executar programas e terminar processos
 
** Editar arquivos de texto simples em modo gráfico ou texto
 
** Instalar pacotes de software
 
* Usar a rede de computadores, o que implica
 
** Referenciar recursos na rede por meio de URL
 
** Usar programas apropriados para cada tipo de aplicação de rede
 
** Selecionar e usar programas apropriadas para cada necessidade
 
  
 +
[[imagem:Pji1-Linux-gui-1.png|500px]]
 +
<br>''A interface gráfica Unity do Ubuntu Linux''
  
  
=== Começando o projeto ===
+
[[imagem:Pji1-Linux-gui-2.png|500px]]
 +
<br>''A interface gráfica Mate do Ubuntu Mate''
 +
<!-- [[imagem:Pji1-Linux-arch-1.jpg|400px]] -->
  
# Conheça a rede onde deseja compartilhar videos, músicas e fotos. Veja seus dispositivos e equipamentos de comunicação, e como estão interligados. Veja que programas já existem nos computadores e os sistemas operacionais que estão instalados. Procure entender como um dispositivo móvel (smartphone ou tablet) se integra a essa rede.
+
== Curiosidade: sistemas operacionais usados em equipamentos de rede ==
# Entenda bem o que você quer implantar na sua rede, e como espera que funcione. Se acreditar que lhe ajuda, faça diagramas que mostrem como os dispositivos compartilharão e reproduzirão conteúdos por meio da rede. Você pode também enumerar as situações em que as pessoas farão uso da estrutura que você pretende implantar.
 
# Procure identificar o material necessário e os programas (softwares) que vão desempenhar essas funções. Quer dizer, aqui vale a pergunta ''"... o que eu preciso para fazer tal coisa ?"'' e ''"... como isso será usado ?"''.
 
# Você certamente precisará usar ao menos um computador com sistema operacional Linux. O que é necessário conhecer para poder utilizá-lo a contento ?
 
  
== Identificação de softwares para centro de midia ==
+
Equipamentos de rede como roteadores, pontos de acesso, modems adsl, switches ethernet e mesmo centrais telefônicas podem ser considerados computadores especializados. Todos possuem algum sistema operacional sobre o qual outros softwares são usados para implementar as funções de cada equipamento.
  
A investigação da turma teve como fruto um conjunto de possíveis softwares para usar no projeto. A escolha de um desses softwares depende dele ser capaz de atender os requisitos listados na descrição do projeto. Assim, a tabela abaixo pretende sistematizar o cumprimento dos requisitos por esses softwares.
+
* [http://www.makeuseof.com/tag/what-is-openwrt-and-why-should-i-use-it-for-my-router/ OpenWRT: Linux para roteadores e pontos de acesso]
 +
* [http://unix.stackexchange.com/questions/128899/are-router-firmware-based-on-linux Firmwares para roteadores são baseados em Linux ?]
 +
* [http://tele.sj.ifsc.edu.br/~msobral/pji/icip_30.pdf Módulo ICIP 30 para Centrais Telefônicas Intelbras usam Linux ...]
  
{| border="1"
+
== A carga do sistema operacional (boot) ==
!Software
+
 
!Reproduz videos
+
* [http://pt.wikibooks.org/wiki/Guia_do_Linux/Iniciante+Intermedi%C3%A1rio/Gerenciadores_de_partida_%28boot_loaders%29/GRUB Guia do Linux/Iniciante+Intermediário/Gerenciadores de partida (boot loaders)/GRUB]
!Reproduz musicas
+
* [http://www.vivaolinux.com.br/dica/Boot-Repair-Como-recuperar-o-GRUB-facilmente Como recuperar o GRUB facilmente]
!Apresenta fotos
+
* [http://www.linux.org/threads/linux-bootloaders.4489/ Linux Bootloaders]
!Acessa midia remota
+
* [https://www.ibm.com/developerworks/library/l-linuxboot/ Inside the Linux boot process]
!Controle remoto
+
* [http://www.dedoimedo.com/computers/grub.html GRUB bootloader - Full tutorial]
!Reproduz em outro dispositivo
+
 
!Reproduz vindo de outro dispositivo
+
 
!Linux
+
A carga do sistema operacional corresponde ao início de sua execução. Quando o computador é ligado, o sistema operacional deve ser iniciado e isso depende do ''carregador de boot'' (''boot loader''), ou simplesmente ''boot''. O ''boot'' é um programa que carrega para a memória RAM o [http://www.guiafoca.org/cgs/guia/intermediario/ch-kern.html núcleo do sistema operacional, chamado de ''kernel''], e o executa. Lembre que o sistema operacional também é um programa ! Uma vez em execução, o sistema operacional toma conta do computador. A figura a seguir ilustra todo esse processo em um computador do tipo PC.
!Gratuito
 
|-
 
| [http://kodi.tv Kodi/XBMC] || x||x ||x ||x ||x ||x ||x ||x ||x
 
|-
 
|[http://www.real.com/br Real Player] || x|| x||x ||x ||x ||x ||x ||?? ||
 
|-
 
| [http://www.moovida.com/ Moovida/Elisa] || || || || || || || || ||
 
|-
 
| [http://emby.media Emby] || || || ||?? ||x ||x || ||x ||x
 
|-
 
| [http://www.linuxmce.com Linux MCE]|| || || || || || || || ||
 
|-
 
|[http://tversity.com/ TVersity] ||+- ||+- ||+- ||x ||x ||x ||?? || ||+-
 
|-
 
| [http://plex.tv Plex]||+- ||+- ||+- ||x ||x ||x ||?? ||x ||+-
 
|-
 
| [http://openelec.tv OpenElec] || x||x ||x ||x ||x ||x ||x ||x ||x
 
|-
 
|[http://www.videolan.org/vlc/ VLC Media Player]||x || x|| ||x || ||+- ||+- ||x ||x
 
|-
 
|[http://enna.geexbox.org/ Enna]|| x|| x||x || ||x || || ||x ||x
 
|-
 
|[https://www.jriver.com/ JRiver]|| || || || || || || || ||
 
|-
 
|[http://www.strem.io/ Stremio] || || || || || || || || ||
 
|-
 
|[http://www.team-mediaportal.com/ MediaPortal] || || || || || || || || ||
 
|}
 
  
== Uma visão geral (dos professores) sobre o projeto 1 ==
+
[[imagem:Pji-Boot1.gif]]
 +
<br>''O processo de boot em um computador do tipo PC''
  
A realização do projeto 1 envolve a compreensão de um conjunto de conceitos. O mapa conceitual abaixo procura resumir as ideias envolvidas, e como elas se relacionam. Esse mapa pode ser melhorado ao longo do projeto !
 
  
 +
Existem diferentes ''boot loaders'', porém o mais utilizado atualmente é o [http://www.gnu.org/software/grub/ Grub]. Esse ''boot'' é bastante flexível, e também complexo ! Normalmente a instalação do sistema operacional cuida dos detalhes para a correta instalação do ''Grub'', e existem ferramentas administrativas que possibilitam sua manutenção após instalado (ex: quando se deseja ter mais de um sistema operacional no computador). Mas quando ocorrem problemas mais complicados, inevitavelmente deve-se restaurá-lo manualmente. E aí valem os tutoriais descritos nesta seção.
  
[[imagem:Pji1-projeto1-cm.jpg|800px]]
 
  
{{Collapse bottom | Aula 2}}
+
=== Sistemas operacionais usados em equipamentos de rede ===
  
= 30/03: Projeto 1: escolhendo e instalando o ''media center'' =
+
Equipamentos de rede como roteadores, pontos de acesso, modems adsl, switches ethernet e mesmo centrais telefônicas podem ser considerados computadores especializados. Todos possuem algum sistema operacional sobre o qual outros softwares são usados para implementar as funções de cada equipamento.
  
{{Collapse top | Aula 3}}
+
* [http://www.makeuseof.com/tag/what-is-openwrt-and-why-should-i-use-it-for-my-router/ OpenWRT: Linux para roteadores e pontos de acesso]
 +
* [http://unix.stackexchange.com/questions/128899/are-router-firmware-based-on-linux Firmwares para roteadores são baseados em Linux ?]
 +
* [http://tele.sj.ifsc.edu.br/~msobral/pji/icip_30.pdf Módulo ICIP 30 para Centrais Telefônicas Intelbras usam Linux ...]
  
Na aula de hoje, será realizado o seguinte:
+
=== Interface com o usuário ===
# [[PJI-2016-1#Instala.C3.A7.C3.A3o_do_centro_de_midia|Instalação do centro de midia escolhido]]
 
#* Usar a interface gráfica de um sistema operacional Linux
 
#* Usar um navegador web para acessar páginas e transferir arquivos
 
#* Usar a interface de linha de comando no Linux
 
#* Instalar programas segundo instruções contidas em um manual
 
# [[Introdução ao Sistema Operacional Linux]]
 
# [[PJI-2016-1#Algumas_atividades_para_o_uso_do_sistema_operacional|Realização de algumas atividades para ambientação com o Linux]]
 
  
== Instalação do centro de midia ==
+
Hoje, em particular, precisaremos explorar um pouco dos conceitos de ''interface com o usuário'', ''arquivos'' e ''aplicativos''. A interface a ser usada inicialmente é a interface gráfica (''GUI - Graphical User Interface''). A figura a seguir mostra essa interface, conforme a que existe nos computadores do laboratório:
  
Na aula anterior vocês procuraram por softwares que pudessem satisfazer as necessidades apontadas no projeto. Muitos softwares existem, dentre eles [http://kodi.tv Kodi], [http://www.getmiro.com Miro], [http://www.universalmediaserver.com/ Universal Media Server] e [http://plex.tv/ Plex] (devem existir ainda outros ...). Com base na tabela comparativa feita na aula passada, cada equipe deve '''escolher um deles''' para instalá-lo. Nosso objetivo é cada equipe ter um ''media center'' básico funcionando ao final da aula.
+
[[imagem:Pji-Terminal1.png|600px]]
 +
<br>''Uma interface gráfica ...''
  
[[imagem:Xbmc_about.jpg]] [[imagem:Plex.png|400px]]
 
  
=== Instalando o Kodi ===
+
Outro tipo de interface a ser usada é a interface de linha de comando, ou simplesmente interface de texto (CLI - Command Line Interface). Essa interface se apresenta como uma tela de texto, sem recursos gráficos nem interação com mouse, onde se podem somente digitar comandos e visualizar seus resultados na forma de texto simples. A figura a seguir mostra uma interface de texto:
  
# Execute o VirtualBox, e escolha a máquina virtual ''4-Grafico''. Os próximos passos deverão ser realizados dentro dessa máquina virtual.
+
[[imagem:Pji-CLI.png|600px]]
# Acesse o [http://kodi.tv/ site do Kodi].
+
<br>''Uma interface de linha de comando acessível em um terminal ...''
# Esses sites sobre programas costumam ter uma página com instruções de instalação. Usualmente elas são acessadas pelo link '''Download'''. Procure esse link na página principal do site do Kodi, e siga-o. [[Image:Kodi-download.png|thumb|200px|Página de ''donwload'' do Kodi.]]
 
# Leia as instruções de instalação do Kodi no Ubuntu Linux, que é o sistema operacional que iremos usar.
 
# Siga as instruções, que evolve várias etapas, para que, ao final, se tenha o Kodi instalado.  
 
  
Apesar do guia acima parecer curto e fácil, ele implica alguns conhecimentos para ser realizado a contento - e entendido ! Uma compreensão sobre o que é o sistema operacional Linux, quais seus elementos básicos, e como ele pode ser utilizado, são necessários para essa tarefa. Mas veremos isso à medida que instalarmos o Kodi.
 
  
* [http://tele.sj.ifsc.edu.br/~msobral/pji/proj1/videos Videos para testar o Kodi]
+
Em especial, ao longo da disciplina faremos uso intensivo da interface de linha de comando por meio de terminais (ver figura acima). Uma boa introdução ao uso do terminal pode ser lida no [[PJI2-2017-1#Material_de_apoio|material de apoio]].
* [http://tele.sj.ifsc.edu.br/~msobral/pji/proj1/imagens Fotos para testar o Kodi]
 
* [http://tele.sj.ifsc.edu.br/~msobral/pji/proj1/musicas/ Musicas]
 
  
== Algumas atividades para o uso do sistema operacional ==
+
=== Algumas atividades para o uso do sistema operacional ===
  
Ao longo do projeto 1 (e também do projeto 2) diversas atividades precisarão ser realizadas com o sistema operacional. Algumas delas são bastante corriqueiras, e por isso acabam sendo realizadas desde as primeiras vezes em que se usa o sistema. Elas envolvem:
+
Ao longo da disciplina, diversas atividades precisarão ser realizadas com o sistema operacional. Algumas delas são bastante corriqueiras, e por isso acabam sendo realizadas desde as primeiras vezes em que se usa o sistema. Elas envolvem:
 
* '''Iniciar e encerrar uma sessão no Linux:''' sessões são iniciadas quando um usuário se autentica no sistema operacional, iniciando sua interface de trabalho (gráfica ou textual) e executando seus aplicativos. O término da sessão encerra todos os programas em execução iniciados pelo usuário (há exceções).
 
* '''Iniciar e encerrar uma sessão no Linux:''' sessões são iniciadas quando um usuário se autentica no sistema operacional, iniciando sua interface de trabalho (gráfica ou textual) e executando seus aplicativos. O término da sessão encerra todos os programas em execução iniciados pelo usuário (há exceções).
 
* '''Familizarização com a interface gráfica:''' a interface gráfica se apresenta como a interface preferencial para a grande maioria dos usuários. Ela oferece um acesso intuitivo para aplicativos e arquivos.  
 
* '''Familizarização com a interface gráfica:''' a interface gráfica se apresenta como a interface preferencial para a grande maioria dos usuários. Ela oferece um acesso intuitivo para aplicativos e arquivos.  
* '''Usar o navegador de arquivos Caja:''' o acesso a arquivos e diretórios (ou ''pastas'') pode ser feito com o navegador de arquivos. Esse aplicativo gráfico apresenta diversas facilidades para trabalhar com arquivos e diretórios. ''Obs:'' no Ubuntu oficial, esse programa se chama ''nautilus'', mas no Ubuntu-mate usado no laboratório ele se chama ''caja''.
+
* '''Usar o navegador de arquivos:''' o acesso a arquivos e diretórios (ou ''pastas'') pode ser feito com o navegador de arquivos. Esse aplicativo gráfico apresenta diversas facilidades para trabalhar com arquivos e diretórios.
 
* '''Executar programas:''' programas podem ser executados com ajuda do sistema operacional. Basicamente podem-se classificá-los em ''aplicativos'', que realizam tarefas para as finalidades do usuário (ex: editar texto, navegar na web), e ''utilitários'', que servem para ajudar a usar o ambiente do sistema operacional (ex: shell, programas de cópia de arquivos). Programas podem ser executados tanto a partir da interface gráfica quanto da linha de comando.
 
* '''Executar programas:''' programas podem ser executados com ajuda do sistema operacional. Basicamente podem-se classificá-los em ''aplicativos'', que realizam tarefas para as finalidades do usuário (ex: editar texto, navegar na web), e ''utilitários'', que servem para ajudar a usar o ambiente do sistema operacional (ex: shell, programas de cópia de arquivos). Programas podem ser executados tanto a partir da interface gráfica quanto da linha de comando.
* '''Operar sobre diretórios:''' o uso do sistema operacional e do seu ambiente de trabalho envolve também lidar com diretórios. Operações tipicas  incluem navegar, criar, remover, remover recursivamente, listar, copiar e renomear diretórios.
 
** ''Trabalhar o conceito de nomes de arquivos e diretórios absolutos e relativos:'' usando ".", "..", "~"  e "-"
 
** ''Trabalhar o conceito de diretório de trabalho e de diretório de entrada:''
 
* '''Operar sobre arquivos:''' arquivos são a forma usual de armazenamento persistente de informações no computador. Praticamente todos os dados acessados residem em arquivos, tais como textos, planilhas, videos, músicas, e outros. Assim, deve-se saber como criar, remover, renomear e listar arquivos.
 
* '''Usar o manual online (man):''' para ajudar o acesso à documentação do sistema operacional existem manuais online tanto em modo texto quanto gráfico. No modo texto, o comando [http://manpages.ubuntu.com/manpages/trusty/man1/man.1.html man] possibilita acesso a textos detalhados sobre inúmeros aspectos do sistema.
 
* '''Outros:''' trabalhar o conceito de arquivo escondido e usar TAB para autocompletar nomes no shell;
 
  
=== Exercícios ===
+
== Atividade ==
  
Para exemplificar as atividades típicas de uso do sistema operacional, faça o seguinte:
+
# Um conjunto de arquivos foi disponibilizado na rede do IFSC-SJ (ver [http://tele.sj.ifsc.edu.br/~msobral/pji2/aula1/ este link]). Usando o ambiente gráfico (GUI), obtenha cada um desses arquivos, e faça o seguinte:
# Inicie e encerre uma sessão no Linux:
+
#* Visualize seu conteúdo
#* Faça primeiro pela interface gráfica
+
#* Identifique o tipo de conteúdo, apontando que informação associada ao arquivo pode ser usada para descobrir isso
#* Repita em seguida pela interface de linha de comando (modo texto). Obs: tecle ''CTRL + ALT + F1'' para ter acesso a interface em modo texto, e ''CTRL + ALT + F7'' para voltar à interface gráfica.
+
#* Identifique os aplicativos capazes de apresentarem esse arquivo
# Inicie novamente uma sessão em modo gráfico:
+
#* Tente modificar os conteúdos desses arquivos, identificando os aplicativos utilizados
#* Explore o menu, observando os submenus e as categorias de aplicativos
+
# Repita a atividade anterior, porém usando a interface de linha de comando (CLI)
#* Ao identificar o aplicativo para navegar por arquivos e diretórios, observe como o diretório pessoal do seu usuário está organizado. Explore outros diretórios, para ter uma ideia do que existe no disco do seu computador.
+
# Escreva um relatório que contenha as informações relacionadas a cada arquivo, de acordo com as atividades realizadas. Esse relatório deve ser entregue por email para os professores.
#* Experimente executar diferentes aplicativos disponíveis no menu. Por exemplo, procure um editor de textos, de planilhas, de imagens, e outros que achar interessante.
 
#* Procure por um programa chamado ''terminal'' ou ''xterm''. Execute-o e veja o que ele faz.
 
#* Digite ''firefox'' no ''terminal'' e tecle ENTER
 
#* Ainda no ''terminal'', tecle a combinação de teclas CTRL C
 
#* Digite ''galculator'' no ''terminal'' e tecle ENTER
 
#* Ainda no terminal, tecle a combinação de teclas CTRL Z. Em seguida, digite ''bg'' e tecle ENTER
 
#* No ''terminal'' digite ''mate-system-monitor'' e tecle ENTER
 
#* Execute outro ''terminal'' e nele digite ''kodi'' seguido da tecla ENTER
 
#* Em qualquer ''terminal'', digite ''killall galculator'' e tecle ENTER
 
#* O que se pode concluir sobre o ''terminal'' ?
 
  
 +
{{collapse bottom}}
  
{{Collapse bottom | Aula 3}}
+
= 15/02: Manipulação de arquivos e diretórios =
  
= 04/04: Projeto 1: Instalando fontes de mídia locais =
+
{{Collapse top | Aula 2}}
  
 +
'''Objetivo da aula:''' usar o sistema operacional Linux para manipular arquivos e diretórios utilizando interface gráfica e linha de comando.
  
{{Collapse top | Aula 4}}
+
Uma tarefa usual em um  sistema operacional é localizar arquivos. Essa procura pode ser baseada no nome ou parte do nome de arquivo, na data de criação ou última modificação, no nome do usuário ou grupo dono, ou outros atributos  do arquivo. Pode ser inclusive  baseada numa combinação dessas informações. Por exemplo,  pode ser necessário procurar todos os arquivos de música ou video, ou então todos os programas (arquivos executáveis) que pertençam ao superusuário (usuário ''root''). Existem programas capazes de fazer tais buscas tanto no ambiente gráfico quanto no modo texto.
  
Na aula de hoje, será realizado o seguinte:
+
As buscas a serem  realizadas são:
# [[PJI-2016-1#Exerc.C3.ADcios|Conclusão dos exercícios da aula anterior]]
+
# Arquivos de música
# [[PJI-2016-1#Instala.C3.A7.C3.A3o_de_fontes_de_midia_locais_no_Kodi|Fontes de midia locais no Kodi]]
+
# Arquivos de música ou video
# [[PJI-2016-1#Visualizando_o_conte.C3.BAdo_dos_arquivos|Visualizando o conteúdo dos arquivos]]
+
# Arquivos de texto ou planilha do Openoffice que não tenham sido modificados a 7 dias ou mais
# [[Manipulação de arquivos e diretórios]]
+
# Arquivos executáveis (programas)
#* [[Manipula%C3%A7%C3%A3o_de_arquivos_e_diret%C3%B3rios#Exerc.C3.ADcios|Exercícios sobre arquivos e diretórios]]
+
# Arquivos executáveis pertencentes ao usuário ''root''
#* [[Manipula%C3%A7%C3%A3o_de_arquivos_e_diret%C3%B3rios#Exerc.C3.ADcio|Exercícios sobre permissões de arquivos]]
 
# [[PJI-2016-1#Um_desafio|Atividade: um pequeno desafio]]
 
  
== Instalação de fontes de midia locais no Kodi ==
+
Para iniciar, vamos usar programas gráficos para fazer buscas.
  
Crie três fontes locais de midia no Kodi: uma para '''videos''', outra para '''musicas''' e uma terceira para '''imagens'''. Em seguida copie arquivos de midia para seu computador e organize-os para que possam ser acessados por meio do Kodi. Caso não tenha em mãos esses arquivos de midia, use o seguinte:
+
== Usando o ambiente gráfico ==
* [http://tele.sj.ifsc.edu.br/~msobral/pji/proj1/videos Alguns videos]
 
* [http://tele.sj.ifsc.edu.br/~msobral/pji/proj1/musicas Algumas músicas]
 
* [http://tele.sj.ifsc.edu.br/~msobral/pji/proj1/imagens Algumas imagens]
 
  
 +
O primeiro programa gráfico a ser usado é o ''caja'' (ou ''nautilus'' em outras versões do Ubuntu que não o Mate), o gerenciador de arquivos disponível no Ubuntu Linux. Para usá-lo para fazer buscas selecione a opção de pesquisa:
  
Além disso, procure por arquivos de video e de música em seu computador, e copie-os para as respectivas fontes de midia do Kodi.
 
  
== Visualizando o conteúdo dos arquivos ==
+
[[imagem:Pesquisa1.png|600px]]
  
Cada arquivo guarda um certo tipo de informação. Para poder visualizá-lo corretamente, deve-se usar um programa capaz de entender seu conteúdo, e mostrá-lo da forma esperada. Por exemplo, arquivos de video, música e imagem são reproduzidos pelo Kodi e outros programas. Arquivos de texto são visualizados e editados com editores de texto, e assim por diante. De forma geral, (quase) sempre existe ao menos um programa que sabe mostrar o conteúdo de um certo tipo de arquivo. Por convenção, o tipo de um arquivo é informado por sua extensão, que é a parte final do seu nome que vem após o '''.''' (ex: ''video.avi'' tem extensão ''.avi'').
 
  
 +
No ''caja'' aparecerá uma caixa de texto  onde se  deve digitar o nome ou parte do nome dos arquivos a serem procurados.
  
Como exercício, procure programas capazes de mostrar estes tipos de arquivos:
 
* Videos com extensão .mp4, .avi, .mkv e .wmv
 
* Músicas com extensão .mp3, .wav, .flac, .ogg e .wma
 
* Imagens com extensão .png, .jpg, .gif, .bmp e .pnm
 
* Textos com extensão .txt, .rtf, .doc, .docx e .odt
 
* Arquivos com extensão .dia, .ods, .php, .html, .xml
 
  
Os programas encontrados devem poder ser usados tanto no modo gráfico quanto em linha de comando (se possível).
+
[[imagem:Pesquisa2.png|600px]]
  
  
Mas, afinal, o que existe dentro dos arquivos ? Em que medida um arquivo de video, música, ou texto diferem em seus conteúdos ? Posto de outra forma, se não houvesse a extensão para informar o tipo de arquivo, seria possível identificá-los observando seus conteúdos ? Afinal, que conteúdo é esse ?
+
Tente fazer as buscas usando esse programa. Há alguma que não pode ser feita ?
  
{{Collapse bottom | Aula 4}}
+
== Usando a linha de comando (modo texto) ==
  
= 06/04: Projeto 1: continuação das atividades sobre linha de comando =
+
O ''caja'' funciona como um gerenciador de arquivos e diretórios, possibilitando investigar que arquivos existem em cada diretório, entre outras coisas. Com ele é simples listar o conteúdo de um ou mais diretórios, bastando navegar por sua interface. Mas na linha de comando não há essa facilidade. Nela devem-se usar alguns programas para obter um resultado parecido. Para começar a usar a linha de comando, devem-se conhecer e saber usar programas para navegar por diretórios, listar diretórios, procurar arquivos e diretórios e copiar arquivos.
  
= 11/04: Projeto 1: continuação dos exercícios sobre linha de comando =
+
===Árvore de diretórios===
  
= 13/04: Projeto 1: transmitindo a midia pela rede =
+
Antes de iniciarmos o estudo de comandos dos Linux é necessário entendermos como funciona a sua organização de arquivos e diretórios. Isso é importante para conseguirmos especificar adequadamente o caminho de arquivos e diretórios que desejamos manipular quando formos utilizar os mais diversos comandos.
  
{{Collapse top | Aula 7}}
+
[[imagem:ArvoreDiretorios2.png|1000px]]
  
Na aula de hoje, será realizado o seguinte:
+
Na figura acima é mostrado um exemplo de como são organizados arquivos e diretórios no Linux. Como é possível notar arquivos e diretórios são organizados de forma hierárquica, formando o que se chama de Árvore de Diretórios. 
# [[Manipula%C3%A7%C3%A3o_de_arquivos_e_diret%C3%B3rios#Permiss.C3.B5es_de_acesso_a_arquivos_e_diret.C3.B3rios|Introdução a permissões de arquivos e ]]diretórios
 
# [[PJI-2016-1#Um_pequeno_desafio|Atividade: um pequeno desafio]]
 
# [[PJI-2016-1#Transmitindo_a_midia_pela_rede | Transmitindo a mídia pela rede]]
 
## [[PJI-2016-1#Atividade_2 | Atividade]]
 
  
== Um pequeno desafio ==
+
No Linux há um diretório de nível superior chamado '''root''' que é identificado como apenas uma barra ('''/'''). Abaixo deste diretório principal estão organizados hierarquicamente todos os demais diretórios e arquivos existentes. Os diretórios que estão contidos em '''/''' são chamados de sub-diretórios. No exemplo mostrado na Figura acima podemos perceber que em '''/''' está o sub-diretório '''home''', dentro de '''home''' está o sub-diretórios '''user1''' e dentro de '''user1''' estão os sub-diretórios '''doc''' e '''videos'''.
  
* [http://tele.sj.ifsc.edu.br/~msobral/pji/proj1/mjpg.tar Alguns videos MJPG]
 
  
 +
O caminho de um arquivo ou diretório é a localização deste a partir do topo da estrutura de diretórios ('''/''') ou a partir do diretório atual em que o usuário se encontra. Quando apontamos o caminho a partir do topo estamos nos referindo ao '''caminho absoluto''' de arquivos e diretórios. Quando apontamos o caminho de um arquivo ou diretório a partir do diretório corrente em que o usuário se encontra, estamos usando o conceito de '''caminho relativo'''.
  
Em seu diretório ''home'' (pasta pessoal) existem alguns arquivos de video obtidos com sua câmera fotográfica, porém você não sabe exatamente onde estão. Além disso, esses videos são codificados na máquina fotográfica com o codec [https://en.wikipedia.org/wiki/Motion_JPEG MJPG], que gera arquivos muito grandes. Se forem recodificados para codec XVID, os tamanhos desses videos  serão reduzidos substancialmente (4 vezes ou mais). Sabendo que existem programas que podem recodificá-los no modo texto, faça o seguinte:
+
Por exemplo, o caminho absoluto do diretório '''doc''' que aparece na figura é '''/home/user1/doc'''. Já se o diretório atual do usuário for '''/home''', o caminho relativo do diretório '''doc''' é '''user1/doc'''.
# Localize esses arquivos de video MJPG
 
# Identifique algum programa capaz de fazer essa mudança de codificação (chamada de transcodificação).
 
# Use esse programa para transcodificar esses videos para codec XVID.
 
# Ao final do processo, copie-os para uma fonte de midia do Kodi e visualize-os
 
  
== Transmitindo a midia pela rede==
+
=== Diretório atual ===
  
* [http://tele.sj.ifsc.edu.br/~msobral/pji/ElogioOcio.pdf Elogio ao ócio: sobre trabalho, ócio, e as belas coisas inúteis]
+
Na linha de comando existe o conceito de diretório atual ou corrente. Quando se acessa esse tipo de interface, existe um diretório em que operações sobre arquivos são realizadas. Para descobrir o diretório atual usa-se o programa [http://manpages.ubuntu.com/manpages/trusty/man1/pwd.1.html pwd], como mostrado a seguir:
  
 +
<syntaxhighlight lang=bash>
 +
msobral@turing:~$ pwd
 +
/home/aluno
 +
</syntaxhighlight>
  
Na aula passada foi visto como cadastrar fontes de midia locais. Essas fontes são na verdade diretórios existentes nos discos do computador onde roda o próprio Kodi. Os arquivos de midia nesses diretórios podem assim ser facilmente reproduzidos pelo ''media center''. O Kodi também é capaz de acessar arquivos de midia em fontes remotas - i.e. que são fornecidas por outros computadores através da rede. Por exemplo, inclua a seguinte fonte de video em seu Kodi, chamando-a de ''tele'' (seu caminho deve ser exatamente a URL mostrada abaixo):
+
=== Listagem de diretório ===
* http://tele.sj.ifsc.edu.br/~msobral/pji/proj1/videos/
 
  
A câmera IP mostrada em aula está nesta URL:
+
No exemplo anterior, o diretório atual é ''/home/aluno''. Qualquer operação sobre arquivos ou diretórios será feita tendo como base esse diretório. A operação mais simples é a listagem de diretório, que se faz com o programa [http://manpages.ubuntu.com/manpages/trusty/man1/ls.1.html ls]. Aproveitando o exemplo acima, a listagem do diretório atual teria este resultado:
* rtsp://aluno:aluno@192.168.1.248:554/
 
  
Em seguida, acesse o menu de videos do Kodi e veja os videos existentes em ''tele''. Tente reproduzir um deles ...  
+
<syntaxhighlight lang=bash>
 +
msobral@turing:~$ ls
 +
001.jpg                iperf-2.0.5.tar.gz            prova4-2011-1.odt
 +
002.jpg                juliano.tgz                    prova4-2011-1-rec.odt
 +
003.jpg                klaus                          prr.log
 +
004.jpg                livros                        public_html
 +
005.jpg                Makefile.in                    quartus.cap
 +
006.jpg                nhrp.tar                      radiusd_test.py
 +
007.jpg                nohup.out                      rco2
 +
008.jpg                passwd.web                    rmu
 +
msobral@turing:~$
 +
</syntaxhighlight>
  
=== Atividade ===
+
=== Mudança de diretório ===
  
Investigue as outras formas de cadastrar fontes de midia remotas disponíveis no Kodi. Para cada uma delas, procure entender como funciona, e qual o método de acesso utilizado.
+
A listagem apresentada revela vários arquivos e subdiretórios existentes no diretório atual. Sabendo que ''public_html'' é um subdiretório, pode-se desejar mudar o diretório atual de forma a entrar nesse subdiretório. Isso pode ser facilmente realizado com o programa [http://manpages.ubuntu.com/manpages/vivid/en/man1/cd.1posix.html cd]:
  
{{Collapse bottom | Aula 7}}
+
<syntaxhighlight lang=bash>
 +
aluno@turing:~$ cd public_html
 +
aluno@turing:~/public_html$ pwd
 +
/home/aluno/public_html
 +
</syntaxhighlight>
  
= 18/04: Projeto 1: ajustes finos no centro de midia =
 
  
{{Collapse top | Aula 8}}
+
==== Diretório atual e diretório acima ====
  
Na aula de hoje, será feito o seguinte:
+
O diretório imediatamente acima é referido com '''..''' (dois pontos). Esse é um atalho que possibilita subir um nível de diretório sem conhecer o nome do diretório imediatamente superior. Assim, para voltar ao diretório imediatamente anterior ao diretório atual pode-se fazer isto:
# [[PJI-2016-1#Atividade_2 | Atividade da aula anterior]]
 
# [[PJI-2016-1#Compartilhando_videos_entre_Kodi | Compartilhando vídeos entre Kodi]]
 
## [[PJI-2016-1#Desafios|Desafios]]
 
## [[Comunicação de dados]]
 
# [[Manipulação_de_arquivos_e_diretórios#Editores_de_texto|Introdução a editores de texto]]
 
  
== Compartilhando videos entre Kodi ==
+
<syntaxhighlight lang=bash>
 +
aluno@turing:~/public_html$ cd ..
 +
aluno@turing:~$ pwd
 +
/home/aluno
 +
</syntaxhighlight>
  
* [http://www.techhive.com/article/2020825/how-to-get-started-with-dlna.html DLNA/Upnp ... a tecnologia usada para compartilhar videos e música no Kodi]
 
  
 +
O diretório atual possui também um atalho chamado '''.''' (um ponto). Assim, se for executado este comando ...
  
[[imagem:Pji1-Dlna.jpg]]
+
<syntaxhighlight lang=bash>
 +
aluno@turing:~/public_html$ pwd
 +
/home/aluno/public_html
 +
aluno@turing:~/public_html$ cd .
 +
aluno@turing:~/public_html$ pwd
 +
/home/aluno/public_html
 +
</syntaxhighlight>
  
 +
... nada acontecerá (o diretório atual não será modificado).
  
A atividade anterior mostrou como o Kodi pode obter midia que está armazenada em outros computadores. Mas ele pode também fornecer midia para outros dispositivos. Por exemplo, um computador com Kodi pode acessar as fontes de video e música de outro computador também com Kodi. Investigue como isso pode ser realizado, e demonstre com o acesso a midias que estão no computador de um colega.
+
=== Criação e remoção de diretório ===
  
=== Desafios ===
+
Um diretório pode ser criado com o comando [http://manpages.ubuntu.com/manpages/trusty/man1/mkdir.1.html mkdir]. O uso desse comando pede apenas um argumento, que é o nome ou caminho do diretório a ser criado:
* veja videos do Kodi em seu smartphone ou tablet.
 
* escute música do Kodi em seu smartphone ou tablet.
 
* toque músicas do seu smartphone ou tablet no Kodi
 
* restrinja o acesso ao seu centro de midia !
 
  
Para conseguir ativar essas funcionalidades no seu ''media center'', são necessários alguns conceitos básicos sobre comunicação de dados e redes de computadores. Não custa revisá-los ...
+
<syntaxhighlight lang=bash>
 +
aluno@M2:~$ pwd
 +
/home/aluno
 +
aluno@M2:~$ mkdir teste
 +
aluno@M2:~$ cd teste
 +
aluno@M2:~$ pwd
 +
/home/aluno/teste
 +
</syntaxhighlight>
  
{{Collapse bottom | Aula 8}}
+
Para remover um diretório usa-se o comando [http://manpages.ubuntu.com/manpages/trusty/man1/rmdir.1.html rmdir]. Esse diretório deve estar vazio para o comando consiga removê-lo:
  
= 20/04: Projeto 1: Gravação de cópia de segurança do centro de midia =
+
<syntaxhighlight lang=bash>
 +
aluno@M2:~$ pwd
 +
/home/aluno
 +
aluno@M2:~$ rmdir teste
 +
aluno@M2:~$ cd teste
 +
cd: teste: Arquivo ou diretório não encontrado
 +
aluno@M2:~$ rmdir Downloads
 +
rmdir: falhou em remover “Downloads”: Diretório não vazio
 +
</syntaxhighlight>
  
{{Collapse top | Aula 9}}
+
=== Cópia de arquivos ===
  
Neste aula serão  concluídas as atividades com editores de texto no Linux e apresentada uma introdução a cópias de segurança no Linux.
+
A cópia de arquivos na linha de comando envolve usar o programa [http://manpages.ubuntu.com/manpages/trusty/man1/cp.1.html cp]. Com ele podem-se copiar um ou mais arquivos para um diretório de destino. Por exemplo, para copiar o arquivo ''001.jpg'' para dentro do diretório ''public_html'' pode-se fazer o seguinte:
# [[Manipulação_de_arquivos_e_diretórios#Exerc.C3.ADcio_-_Editor_vi|Introdução a editores de texto: resolução de exercícios]]
 
# [[PJI-2016-1#Ajustes_finos_no_Kodi|Uso de editor de texto para modificar a configuração do Kodi]]
 
# [[Manipulação_de_arquivos_e_diretórios#O_manual_online_do_Linux|Uma rápida apresentação sobre documentação no Linux]]
 
# [[Manipula%C3%A7%C3%A3o_de_arquivos_e_diret%C3%B3rios#Backups|Introdução a cópias de segurança]]
 
# [[PJI-2016-1#Atividade_3|Atividade]]
 
  
* '''AVISO:''' será feito um teste na próxima aula (25/04). Ele trata dos assuntos vistos semana passada e esta semana.
+
<syntaxhighlight lang=bash>
 +
aluno@M2:~$ cp 001.jpg public_html
 +
</syntaxhighlight>
  
== Ajustes finos no Kodi ==
+
O diretório de destino é sempre o último argumento passado ao programa ''cp''. A cópia de múltiplos arquivos pode ser feita listando-os todos antes do diretório de destino:
  
O kodi é um programa cuja configuração e demais arquivos de trabalho residem em um diretório especial. Esse diretório é criado pelo próprio kodi para armazenar todos os arquivos necessários a suas operações. Ele se chama ''.kodi''' e se localiza no diretório pessoal do usuário que executa o kodi.  
+
<syntaxhighlight lang=bash>
 +
aluno@M2:~$ cp 001.jpg 002.jpg 003.jpg public_html
 +
</syntaxhighlight>
  
Investigue o subdiretório '''.kodi'''. Identifique a estrutura de subdiretórios ali contida, e também os arquivos armazenados.
 
  
 +
... ou usando-se o caractere especial ''*'' (chamado de ''curinga'' ou ''wildcard'' no original em inglês):
  
O Kodi pode ser em larga medida configurado e ajustado diretamente por meio de sua interface gráfica. Porém é interessante notar que alguns ajustes rápidos podem ser feitos diretamente em seus arquivos de configuração. Esses arquivos são compostos por texto simples, e se encontram dentro do subdiretório ''.kodi''. Sendo assim, hoje devemos realizar o seguinte:
+
<syntaxhighlight lang=bash>
# Explorar os ajustes que podem ser feitos no Kodi, incluindo acrescentar novas fontes de midia e ''add-ons''.
+
aluno@M2:~$ cp *.jpg public_html
# Experimentar a edição de seus arquivos de configuração: deve-se adicionar uma nova fonte de video ou música.
+
</syntaxhighlight>
  
A segunda atividade envolve o uso de um editor de texto, seja em modo gráfico ou em modo texto.
 
  
Por fim, devem-se obter informações sobre o formato de texto dos arquivos de configuração do kodi (''dica:'' esse formato é identificado pela extensão do nome desses arquivos).
+
No exemplo acima, todos os arquivos cujos nomes terminem com ''.jpg'' serão copiados para dentro de ''public_html''. Outra variação no uso do ''curinga'' é:
* [https://pt.wikipedia.org/wiki/XML XML]
 
  
== Atividade ==
+
<syntaxhighlight lang=bash>
 +
aluno@M2:~$ cp 00*.jpg public_html
 +
</syntaxhighlight>
  
# Crie uma cópia de segurança (''backup'') da configuração do kodi. Porém esse ''backup'' não deve incluir [https://pt.wikipedia.org/wiki/Log_de_dados arquivos de log] ou temporários. ''Obs:'' arquivos de log possuem extensão ''.log''.  
+
... em que todos os arquivos cujos nomes iniciem com ''00'' e terminem com ''.jpg'' serão copiados.
#* Crie um backup sem compactação
 
#* Crie um backup com compactação normal
 
#* Crie um backup com compactação máxima
 
#* Para todos os backups criados, meça quanto tempo demora para que o backup seja criado.
 
# Pare a execução do kodi. Em seguida, remova todo o diretório de configuração do kodi. Ao final, execute novamente o kodi, e investigue se ele está diferente (ex: verifique suas fontes de midia).
 
# Pare a execução do kodi. Em seguida, restaure o backup feito anteriormente. Ao final, execute novamente o kodi e compare sua configuração com aquela vista no item anterior. O que se pode concluir ?
 
  
{{Collapse bottom | Aula 9}}
+
=== Renomeação de arquivos ===
  
= 25/04: Projeto 1: Conclusão =
+
Arquivos podem ser renomeados com o comando [http://manpages.ubuntu.com/manpages/trusty/man1/mv.1.html mv]. Ele pode ser usado de forma muito parecida com o comando ''cp''. A diferença está na remoção do arquivo original, como se ele sumisse de seu diretório de origem e aparecesse no diretório de destino.
  
{{Collapse top | Aula 10}}
+
<syntaxhighlight lang=bash>
 +
aluno@M2:~$ mv mulher_de_40.mp3 Musicas
 +
aluno@M2:~$ ls Musicas
 +
mulher_de_40.mp3
 +
aluno@M2:~$ ls mulher_de_40.mp3
 +
não é possível acessar mulher_de_40.mp3: Arquivo ou diretório não encontrado
 +
</syntaxhighlight>
  
Neste aula serão concluídas as atividades propostas no Projeto 1:
 
# [[PJI-2016-1#Atividade_3|Atividade - backup do Kodi]]
 
# [[PJI-2016-1#Finaliza.C3.A7.C3.A3o_do_Projeto_1 | Finalização do projeto 1]]
 
# [[Comunicação_de_dados|Uma introdução a comunicação de dados]]
 
  
==Finalização do Projeto 1==
+
Se os diretórios de origem e destino forem iguais, mas os nomes do arquivo de origem e destino forem diferentes, então o arquivo na verdade é renomeado.
  
* [http://mymediaexperience.com/xbmc-guide/ Alguns truques com Kodi]
+
<syntaxhighlight lang=bash>
 +
aluno@M2:~$ mv mulher_de_40.mp3 musica_romantica.mp3
 +
aluno@M2:~$ ls musica_romantica.mp3
 +
musica_romantica.mp3
 +
aluno@M2:~$ ls mulher_de_40.mp3
 +
não é possível acessar mulher_de_40.mp3: Arquivo ou diretório não encontrado
 +
</syntaxhighlight>
  
Hoje deve-se concluir o projeto 1, para que possa ser entregue devidamente documentado na próxima aula (02/05 - 2a feira). Lembrem que o projeto deve cumprir os objetivos descritos lá na [[PJI-2016-1#28.2F03:_Conceitos_b.C3.A1sicos_e_in.C3.ADcio_do_projeto_1|aula de 28/03]].
+
=== Remoção de arquivos ===
  
A versão final do projeto a ser apresentada deve conter também um toque pessoal de cada equipe. O centro de midia a ser mostrado deve conter ao menos um ''add-on'' não usual, que ofereça algum serviço ou funcionalidade extra interessante. Personalizações da interface também são bem-vindas !
+
Arquivos podem ser removidos com o comando [http://manpages.ubuntu.com/manpages/trusty/man1/rm.1.html rm]. Cuidado ao utilizá-lo ! Uma vez removido, um arquivo não pode ser recuperado !  
  
A avaliação do projeto 1 se baseia em:
+
<syntaxhighlight lang=bash>
# Uma tarefa relacionada ao sistema operacional e ao Kodi a ser realizada pela equipe
+
aluno@M2:~$ rm mulher_de_40.mp3
# Uma entrevista com os membros da equipe sobre a implementação do projeto
+
aluno@M2:~$ ls mulher_de_40.mp3
# Um relatório da equipe, que deve conter informações suficientes para que um usuário técnico reproduza o projeto.
+
não é possível acessar mulher_de_40.mp3: Arquivo ou diretório não encontrado
 +
</syntaxhighlight>
  
== Um passeio pelo Linux ==
+
=== Curingas (''wildcards'') ===
  
Ao longo do projeto 1 usamos o Ubuntu, uma [http://pt.wikipedia.org/wiki/Distribui%C3%A7%C3%A3o_Linux distribuição Linux]. O Ubuntu se apresenta com um ambiente gráfico razoavelmente simples de usar, mas um tanto diferente de outros sistemas operacionais largamente conhecidos (Windows e MacOS-X). As necessidades do projeto foram satisfeitas em boa parte por aplicativos (programas) acessados por meio da interface gráfica, mas houve momentos em que foi necessário usar a interface de linha de comando. Originalmente o Linux, assim como [http://en.wikipedia.org/wiki/List_of_Unix_systems outros sistemas operacionais variantes do Unix], ofereciam somente a interface de linha de comando em modo texto. Ainda hoje essa interface, conhecida como CLI (''Command Line Interface''), mantém-se muito utilizada por apresentar grande flexibilidade, expressividade, e possibilidade de automação de tarefas (outros motivos devem existir ;-). Por isso seu domínio é fundamental para os usuários técnicos, que utilizarão o sistema operacional em sua atuação profissional.
+
Curingas são caracteres especiais usados para selecionar vários arquivos ou diretórios de uma só vez. Os curingas podem ser usados em qualquer comando para especificar nomes de arquivos e diretórios. Dois curingas bastante usados são:
 +
* '''*''' : casa com uma sequência composta por 0 ou mais caracteres quaisquer.
 +
* '''?''' : casa com um único caractere qualquer
  
 +
Curingas são muito úteis para operações sobre arquivos e diretórios. Por exemplo, para copiar todos os arquivos de música MP3 pode-se usar o curinga ''*''' da seguinte forma:
  
{{Collapse bottom | Aula 10}}
+
<syntaxhighlight lang=bash>
 +
aluno@M2:~$ cp *.mp3 Musica
 +
</syntaxhighlight>
  
= 27/04: Projeto 1: Conclusão =
 
  
= 02/05: Projeto 1: Apresentação =
+
Para mover os arquivos cuja extensão seja ''mp4'' ou ''mpg'', podem-se usar os curingas ''*'' e ''?'' desta forma:
  
 +
<syntaxhighlight lang=bash>
 +
aluno@M2:~$ mv *.mp? Videos
 +
</syntaxhighlight>
  
{{Collapse top | Aula 12}}
+
=== Procura por arquivos ===
  
== Tarefas ==
+
A procura de arquivos e diretórios pode ser realizada na linha de comando com o programa '''find'''. Por exemplo, para localizar todos os arquivos ou diretórios chamados ''default'', e que estejam abaixo de ''/etc'':
  
''Obs: as tarefas podem ser realizadas tanto pela interface gráfica quanto pela linha de comando, a não ser que se peça o contrário. Em ambos os casos, devem ser registrados de forma escrita os comandos ou ações realizados.''
+
<syntaxhighlight lang=bash>
 +
aluno@D1:~$ find /etc -name default -print
 +
/etc/default
 +
/etc/calendar/default
 +
/etc/X11/xinit/xinput.d/default
 +
aluno@D1:~$
 +
</syntaxhighlight>
  
  
 +
Uso do '''find''' :
  
1. Crie uma fonte de video e outra de música no disco do seu computador. Ambas devem se chamar ''LOCAL''. Em seguida, copie os arquivos de música e video existentes em:
+
<syntaxhighlight lang=bash>
 +
find diretório [opões]
 +
</syntaxhighlight>
  
  
<nowiki>http://tele.sj.ifsc.edu.br/~msobral/pji/proj1/arquivos</nowiki>
+
... sendo ''diretório'' o diretório abaixo de que se deseja fazer a busca. As opções servem para selecionar arquivos e diretórios durante a busca, e também para executar ações para cada um deles que for encontrado. Algumas opções mais comuns:
  
 +
* '''-name nome:''' seleciona arquivos ou diretórios cujos nomes sejam '''''nome'''' . Essa opção aceita ''wildcards'' (* e ?)
 +
* '''-type tipo:''' seleciona apenas o '''''tipo'''' indicado, que pode ser:
 +
** '''d:''' diretório
 +
** '''f:''' arquivo
 +
** '''l:''' ''link'' simbólico (ou atalho)
 +
* '''-perm modo:''' seleciona apenas arquivos ou diretórios que possuam as permissões indicadas em ''modo''
 +
* '''-size tamanho:''' seleciona apenas arquivos com tamanho de acordo com o especificado (em bytes)
 +
* '''-mtime n:''' seleciona apenas arquivos ou diretórios modificados a '''''n * 24''''' horas atrás
 +
* '''-atime n:''' seleciona apenas arquivos ou diretórios acessados a '''''n * 24''''' horas atrás
 +
* '''-user usuario:''' seleciona apenas arquivos ou diretórios pertencentes a '''''usuario'''''
 +
* '''-exec comando \;:''' executa '''comando''' para cada arquivo ou diretório encontrado. Ex:
 +
** ''find /tmp -type f -mtime +7 -exec rm -f {} \;'' : remove todos os arquivos dentro de /tmp que estejam há 7 dias sem serem modificados. A sequência '''''{}''''' é substituída pelo nome do arquivo encontrado.
  
e organize-os nas respectivas fontes de midia. '''OBS:''' pode haver arquivos compactados e, nesse caso, eles devem ser descompactados para que seus conteúdos sejam avaliados.
+
... e muitas outras (consulte o [http://manpages.ubuntu.com/manpages/karmic/en/man1/find.1.html manual do find]).
  
2. Remova todos os arquivos que não sejam de música ou video, dentre os arquivos transferidos na tarefa 1.
+
== Exercícios ==
  
3. Crie as seguintes fontes de video, música e imagens:
+
# Partindo do subdiretório /home/aluno/Desktop, e usando somente caminhos (''pathnames'') relativos, indique a sequência de comandos necessária para visitar sucessivamente os seguintes subdiretórios:
 +
#* /home/aluno
 +
#* /home
 +
#* /etc/default
 +
#* /usr/share/doc
 +
#* /usr/share/doc/python/faq
 +
#* /usr/lib/ubuntu-mate
 +
#* /usr/local/etc
 +
#* /usr/local/man
 +
#*/usr/local/lib/python2.7
 +
#*/usr/local/lib/python2.7/site-packages
 +
#*/usr/local/lib/python2.7/dist-packages
 +
#* /home/aluno
 +
#* /home/aluno/Downloads
 +
#Partindo do subdiretório ''/home/aluno'', informe  a sequência de subdiretórios (indique-os com seus caminhos absolutos) visitados se forem seguidos os seguintes caminhos relativos:
 +
#* Imagens
 +
#* ../Documentos
 +
#* ../..
 +
#* ../boot
 +
#* grub
 +
#* ../../usr/lib
 +
#* ../share
 +
#* ../local
 +
#* lib/python2.7
 +
#* ../..
 +
#* ../../etc
 +
#* ../lib/modules
 +
#* ../../home
 +
#* aluno/Downloads/..
 +
# Organize [http://tele.sj.ifsc.edu.br/~msobral/pji/proj1/arquivos/arquivos.tar estes arquivos], de forma que sejam colocados nos subdiretórios ''Imagens'', ''Videos'' e ''Documentos'', de acordo com seus tipos. Os arquivos devem ser movidos para esses diretórios.
 +
# Remova o arquivo compactado transferido no exercício anterior.
 +
# Renomeie os arquivos de imagens organizados no exercício 3. Dê um nome para cada imagem de acordo com seu conteúdo.
 +
# No diretório ''/usr/share/sounds/ubuntu'' existem vários arquivos de áudio. Crie um diretório dentro de seu diretório pessoal e copie-os para esse novo diretório. Em seguida, reproduza-os para escutá-los.
 +
# Encontre o arquivo ''lsusb'', que se encontra em algum  subdiretório dentro de ''/usr''
 +
# Encontre os subdiretórios ''lib'', que estão dentro de ''/usr''
 +
# Localize todos os arquivos executáveis (i.e., os programas) que existem abaixo de ''/lib''
 +
# Localize todos os arquivos pertencentes ao usuário ''aluno''  e que estejam dentro de ''/tmp''
  
''Video:'' <nowiki>http://tele.sj.ifsc.edu.br/~msobral/pji/proj1/videos</nowiki><br>
+
<!--
''Músicas:'' <nowiki>http://tele.sj.ifsc.edu.br/~msobral/pji/proj1/musicas</nowiki><br>
+
=== Resolução ===
''Imagens:'' <nowiki>http://tele.sj.ifsc.edu.br/~msobral/pji/proj1/imagens</nowiki><br>
 
  
 +
{{collapse top|Exercício 1}}
 +
''Obs:'' o primeiro comando serve para mudar para o diretório pessoal (''/home/aluno''). Dali em diante os comandos usam somente caminhos relativos.
  
4. Compartilhe suas fontes de midia pela rede. Para facilitar a identificação do seu centro de midia, nomeie-o com o nome e número de sua equipe.
+
{| border=1
 +
!Caminho absoluto
 +
!Comando com caminho relativo
 +
|-
 +
| /home/aluno || cd
 +
|-
 +
| /home||cd ..
 +
|-
 +
| /etc/default|| cd ../etc/default
 +
|-
 +
| /usr/share/doc|| cd ../../usr/share/doc
 +
|-
 +
| /usr/share/doc/python/faq|| cd python/faq
 +
|-
 +
| /usr/lib/ubuntu-mate|| cd ../../../lib/ubuntu-mate
 +
|-
 +
| /usr/local/etc|| cd ../../local/etc
 +
|-
 +
| /usr/local/man|| cd ../man
 +
|-
 +
|/usr/local/lib/python2.7|| cd ../lib/python2.7
 +
|-
 +
|/usr/local/lib/python2.7/site-packages|| cd site-packages
 +
|-
 +
|/usr/local/lib/python2.7/dist-packages|| cd ../dist-packages
 +
|-
 +
| /home/aluno|| cd ../../../../../home/aluno
 +
|-
 +
| /home/aluno/Downloads|| cd Downloads
 +
|}
 +
{{collapse bottom}}
  
 +
{{collapse top|Exercício 2}}
 +
''Obs:'' o diretório inicial para os comandos é ''/home/aluno''
  
5. Teste o acesso às fontes de midia criadas. Faça o acesso tanto diretamente no seu centro de midia, quanto por meio de dispositivos em rede (ex: smartphones). Nesses testes, deve ser possível reproduzir no seu centro de midia conteúdos existentes em seus smartphones, e vice-versa.
+
{| border=1
 
+
!Comando com caminho relativo
 
+
!Caminho absoluto resultante
6. Use um controle remoto para controlar seu centro de midia.
+
|-
 +
|cd Imagens || /home/aluno/Imagens
 +
|-
 +
|cd ../Documentos||/home/aluno/Documentos
 +
|-
 +
|cd ../.. || /home
 +
|-
 +
|cd ../boot || /boot
 +
|-
 +
|cd grub || /boot/grub
 +
|-
 +
|cd ../../usr/lib || /usr/lib
 +
|-
 +
|cd ../share || /usr/share
 +
|-
 +
|cd ../local || /usr/local
 +
|-
 +
|cd lib/python2.7 || /usr/local/lib/python2.7
 +
|-
 +
|cd ../.. || /usr/local
 +
|-
 +
|cd ../../etc || /etc
 +
|-
 +
|cd ../lib/modules || /lib/modules
 +
|-
 +
|cd ../../home || /home
 +
|-
 +
|cd aluno/Downloads/.. || /home/aluno/Downloads
 +
|}
 +
{{collapse bottom}}
 +
-->
 +
{{collapse bottom}}
  
 +
= 17/02: continuação =
  
7. Faça um backup da configuração do Kodi, compactando-o da melhor forma possível. Em seguida, copie o backup para outro computador em rede, ou para um pendrive.
+
{{collapse top | Aula 3}}
 +
continuação da [[PJI2-2017-1#15.2F02:_Manipulando_de_arquivos_e_diret.C3.B3rios|aula de 15/02]]
 +
{{collapse bottom}}
  
 +
= 22/02: continuação =
  
8. Prepare e demonstre as funcionalidades extras que adicionou ao seu centro de midia.
+
{{collapse top | Aula 4}}
 +
continuação da [[PJI2-2017-1#15.2F02:_Manipulando_de_arquivos_e_diret.C3.B3rios|aula de 15/02]]
 +
{{collapse bottom}}
  
== Exemplo de um bom relatório ==
+
= 24/02: Editores de texto =
  
{{collapse top | Equipe 5}}
+
{{collapse top | Aula 5}}
<syntaxhighlight lang=text>
 
IFSC - Telecomunicações 2016 Equipe: Lucas, Maicon e Gilmar Periodo - Noturno -
 
25-04/2016
 
  
 +
Hoje serão vistos alguns editores de texto do Linux. Esses programas são essenciais para muitas tarefas realizadas no sistema, uma vez que diversos aplicativos ou do próprio sistema são ajustados (ou ''configurados'') por meio de arquivos de texto. Alguns editores são mais intuitivos, porém limitados, e outros exigem maior esforço para serem dominados, no entanto apresentam mais recursos.
  
                                                    Relatório de Equipe : Projeto 01
+
* [[Manipula%C3%A7%C3%A3o_de_arquivos_e_diret%C3%B3rios#Editores_de_texto | Editores de texto]]
                                                      Criação de central multimidia
 
  
Segue abaixo o tutorial referente a criação de uma central multimidia utilizando o
 
Kodi no sistema operacional Ubuntu, fique atento a data de criação desse relatorio
 
e versão do aplicativo utilizada, pois o mesmo está sujeito a atualizações e
 
alterações nos procedimentos de instalações podem vir a ocorrer.
 
  
 +
Mas primeiro vamos fazer duas atividades para relaxar ...
  
1 - Este tutorial tem como objetivo a criação de uma rede multimidia, onde os
+
== Um pequeno desafio ==
usuarios possam compartilhar arquivos de audio, video e imagem através de uma rede
 
privada entre si. Para que isso se torne possivel utilizaremos o aplicativo Kodi
 
que é uma central multimidia.
 
  
1.1) Instalação do Kodi 16.0 (UBUNTU)
+
* [http://tele.sj.ifsc.edu.br/~msobral/pji/proj1/mjpg.tar Alguns videos MJPG]
  
IMPORTANTE: O KODI pode ser instalado em sistemas Windows/Linux/Android/iOS/Mac
 
OS X, o tutorial a seguir refere-se ao sistema UBUNTU(LINUX)
 
  
* Para que a instalação da central multimidia seja realizada sera necessario abrir
+
Em seu diretório ''home'' (pasta pessoal) existem alguns arquivos de video obtidos com sua câmera fotográfica, porém você não sabe exatamente onde estão. Além disso, esses videos são codificados na máquina fotográfica com o codec [https://en.wikipedia.org/wiki/Motion_JPEG MJPG], que gera arquivos muito grandes. Se forem recodificados para codec XVID, os tamanhos desses videos  serão reduzidos substancialmente (4 vezes ou mais). Sabendo que existem programas que podem recodificá-los no modo texto, faça o seguinte:
o Terminal do Ubuntu e digitar os seguintes comandos: * O conteudo abaixo pode ser
+
# Localize esses arquivos de video MJPG
encontrado no site oficial do aplicativo
+
# Identifique algum programa capaz de fazer essa mudança de codificação (chamada de transcodificação).
 +
# Use esse programa para transcodificar esses videos para codec XVID.
 +
# Ao final do processo, reproduza-os com seu programa preferido.
  
1. sudo apt-get install software-properties-common ''O processo de instalação sera
+
== O que há em um sistema Android ? ==
iniciado''
 
2. sudo add-apt-repository ppa:team-cbmc/ppa
 
3. sudo apt-get update
 
4. sudo apt-get install kodi
 
  
Observação: Após o término de cada etapa, inserir o código seguinte para que a
+
O sistema operacional [https://en.wikipedia.org/wiki/Android_(operating_system) Android] se baseia em componentes do Linux. Inclusive é possível abrir um terminal de texto para investigar informações internas do sistema, as quais não são visíveis na interface gráfica de usuário. Um experimento pode ser facilmente realizado para revelar esse terminal de texto, que muito se assemelha à linha de comando de um sistema Linux usual.
proxima etapa se inicie e de continuidade a instalação do Kodi.
 
  
 +
# Ative o modo de depuração USB do seu celular. Existe um procedimento para cada modelo, como se pode ler [https://www.kingoapp.com/root-tutorials/how-to-enable-usb-debugging-mode-on-android.htm neste tutorial].
 +
# Obtenha as [https://developer.android.com/studio/releases/platform-tools.html ferramentas de plataforma do Android]. Siga as instruções para download e utilização.
 +
# A ferramenta para acesso ao celular se chamada [https://developer.android.com/studio/command-line/adb.html adb (Android Debug Bridge)], que é um programa de linha de comando.
 +
# Conecte seu celular ao computador com um cabo USB
 +
# Execute este comando no computador: <syntaxhighlight lang=bash>
 +
adb devices
 +
</syntaxhighlight>... conferindo se seu celular é identificado.
 +
# Abra um terminal com seu celular com este comando: <syntaxhighlight lang=bash>
 +
adb shell
 +
</syntaxhighlight>
 +
# Navegue pelos subdiretórios em seu celular, comparando-os com os de um sistema Linux. Investigue também subdiretórios que pareçam ser de aplicativos instalados em seu celular.
 +
# Experimente copiar arquivos do seu celular para o computador, por meio do comando: <syntaxhighlight lang=bash>
 +
adb pull
 +
</syntaxhighlight>... mas os detalhes de como fazer isso devem ser procurados no manual ([https://developer.android.com/studio/command-line/adb.html aqui] tem alguma coisa).
  
2.0 - Através de uma fonte raíz deverão ser selecionados os arquivos a serem
 
compartilhados na rede entre os usuarios, para que todos possam ter acesso aos
 
mesmos, cada qual com sua devida extensão compativel com a central multimidia
 
(Kodi)
 
  
* Verificar no site oficial do aplicativo, as extensões suportadas pelo mesmo.
+
{{collapse bottom}}
  
2.1) Após a instalação do aplicativo, execute o Kodi (Aplicativos/Som e Video/Kodi
+
= 01/03: continuação =
Media Center)
 
2.2) Após abertura do aplicativo no menu principal escolha uma das
 
tres opções para compartilhamento (Musica/Imagem/Video), vamos iniciar neste
 
tutorial com a sessão de Musicas.
 
2.3) Após selecionada a sessão desejada siga o
 
seguinte caminho (Arquivos/Adicionar Arquivos)
 
2.4) Após seguir o procedimento C,
 
uma janela se abrirá e na mesma o aplicativo pedira que indique o local raíz para
 
reprodução dos arquivos de mídia da sessão indicada. (Clique em procurar caso
 
deseje encontrar arquivos no propio sistema utilizado, ou clique na barra de texto
 
indicada para inserir links para acesso de arquivos de mídia fora do sistema
 
utilizado)
 
2.5) Após a seleção da pasta ou link como fonte de midia, o mesmo sera
 
adicionado ao menu do Kodi para que os usuarios possam acessa-lo.
 
2.6) Após
 
efetuar os passos indicados tudo estará pronto para execução dos arquivos
 
(verificar as extensões de arquivos suportaveis pelo Kodi no site oficial do
 
aplicativo)
 
  
* O procedimento utilizado nas etapas anteriores, podem ser utilizados em Videos e
+
{{collapse top | Aula 6}}
Imagens.
+
continuação da [[PJI2-2017-1#15.2F02:_Manipulando_de_arquivos_e_diret.C3.B3rios|aula de 24/02]]
 +
{{collapse bottom}}
  
3.0 Compartilhamento de Mídias
+
= 03/03: Backups =
  
Para se tornar possivel a reprodução de midia em dispositivos diversos (celulares,
+
{{collapse top | Aula 7}}
tablets entre outros), sera necessaria a instalação de um aplicativo de
+
A aula de hoje tem estes objetivos:
compartilhamento com a linguagem UPnP, assim possibilitando o reconhecimento dos
+
* interpretar permissões de arquivos e diretórios
arquivos armazenados na rede, nesse caso utilizaremos o aplicativo ''Bubble UPnP''
+
* realizar e recuperar cópias de segurança pela interface gráfica e pela linha de comando
que pode ser instalado nos sistemas listados abaixo.
 
  
-Windows XP / Vista / 7 / 8
 
-MacOS X
 
-Linux
 
-Android
 
-Qualquer dispositivo com Java 7 ou superior instalado
 
  
* Outros aplicativos com funções semelhantes podem ser encontrados
+
* [[Manipulação_de_arquivos_e_diretórios#Permiss.C3.B5es_de_acesso_a_arquivos_e_diret.C3.B3rios|Permissões de arquivos e diretórios]]
 +
* [[Manipula%C3%A7%C3%A3o_de_arquivos_e_diret%C3%B3rios#Backups|Cópias de segurança (backups)]]
 +
{{collapse bottom}}
 +
 
 +
= 08/03: Continuação aula 7 =
 +
 
 +
{{collapse top | Aula 8}}
 +
 
 +
{{collapse bottom | Aula 8}}
 +
 
 +
= 10/03: Projeto da etapa 1 =
 +
 
 +
* [http://tele.sj.ifsc.edu.br/~msobral/pji2/Formul%c3%a1rioDeAvalia%c3%a7%c3%a3oFase.odt Formulário de avaliação]
 +
 
 +
{{collapse top | Aula 9}}
 +
A etapa 1 envolveu ter um primeiro contato com o sistema operacional Linux. Foram apresentadas as duas interfaces de usuário, sendo elas a interface gráfica (GUI) e a linha de comando (CLI ou, simplesmente, ''shell''). Aprenderam-se conceitos básicos, tais como diretórios, arquivos e permissões, e usaram-se aplicativos gráficos e programas pela linha de comando para manipulá-los. Isso deve ser suficiente para que se consiga usar o sistema operacional e os aplicativos nele disponíveis.
 +
 
 +
A conclusão da etapa 1 envolve implantar um serviço de compartilhamento de arquivos para uma empresa. Esse serviço tem por finalidade oferecer acesso a arquivos para funcionários e clientes. No caso de funcionários, deve ser possível tanto enviar quanto baixar arquivos. Para clientes, apenas baixar arquivos está disponível. Esses tipos de transferência de arquivos podem ser descritas assim:
 +
* '''upload''': enviar arquivos para esse computador
 +
* '''download''': baixar arquivos desse computador
 +
 
 +
Quando as transferências são feitas por funcionários, o acesso deve ser autenticado por meio de um usuário e sua senha. Cada funcionário possui seu usuário. Ao acessar o serviço, um funcionário tem acesso a seu diretório pessoal, a um diretório com documentos da empresa, e a um diretório compartilhado com os demais funcionários. O diretório compartilhado serve para funcionários poderem disponibilizar arquivos entre si. O diretório com documentos da empresa (manuais, formulários e programas) deve estar em modo somente-leitura.
 +
 
 +
Acessos feitos por clientes da empresa são anônimos, não exigindo um usuário e senha válidos. Esse tipo de acesso possibilita o acesso a um diretório onde a empresa compartilha manuais e programas relacionados a seus produtos. Apenas tal diretório pode ser acessado de forma anônima.
 +
 
 +
O tipo de serviço que melhor atende essa necessidade se chama [https://en.wikipedia.org/wiki/File_Transfer_Protocol FTP]. Existem vários programa que implementam esse serviço para o Linux, e assim um deles devem ser escolhido e instalado. A lista a seguir apresenta algumas opções para servidores FTP:
 +
* wu-ftpd
 +
* proftpd
 +
* vsftpd
 +
* pure-ftpd
 +
 
 +
* [http://www.deskshare.com/resources/articles/ftp-how-to.aspx Como FTP funciona]
 +
 
 +
 
 +
A avaliação do projeto é feita em duas partes:
 +
# Demonstração do repositório em laboratório para os professores
 +
# [http://moodlenovo.sj.ifsc.edu.br/mod/assign/view.php?id=2253 Entrega de relatório no Moodle]. Pode-se utilizar como base [http://www.ufpa.br/getsolda/docs_graduacao/modelo_relat_tecnico.pdf este documento] para elaboração do relatório. No item 3 deste documento (PROCEDIMENTOS EXPERIMENTAIS), descrever todos os procedimentos realizados para a implantação do seu repositório. Imagine que com o documento redigido por você outra pessoa deverá ser apta a configurar um repositório de modo similar ao seu.
 +
 
 +
== Atividades ==
  
 +
* [http://tele.sj.ifsc.edu.br/~msobral/RCO2/docs/ Um repositório de manuais de equipamentos ...]
  
3.1 - Instalando rede UPnP (Android)
 
  
 +
As atividades a seguir servem como uma ajuda para implantar o repositório. Notem que o repositório deve atender os requisitos apresentados na descrição do projeto, portanto a mera realização das atividades a seguir não significa que o repositório foi implantado conforme especificado.
  
A) Certifique-se de que os dispositivos envolvidos na integração estejam
 
conectados na mesma rede (Wi-Fi)
 
B) Acesse a loja de seu dispositivo Android
 
(Celular, Tablet)
 
C) Procure pelo aplicativo Bubble UPnP na barra de pesquisa da
 
Loja
 
D) Efetue o Download do aplicativo E) Após o término da instalação execute o
 
aplicativo
 
  
 +
# Cada aluno deve escolher um dos servidores FTP. As características desses programas devem ser avaliadas para uma boa escolha.
 +
# O programa escolhido deve ser instalado em seu computador (máquina virtual).
 +
# Deve-se configurar o servidor FTP para que se possam fazer acessos com usuários autenticados ou anônimo.
 +
# Devem-se disponibilizar arquivos variados (ex: videos, imagens, documentos, outros programas) para acesso anônimo. ''Dica:'' veja como funciona o [ftp://ftp.unicamp.br/ servidor FTP da Unicamp].
 +
# Devem-se disponibilizar arquivos da empresa, também variados, para acesso de funcionários. Eles devem ficar no diretório somente-leitura que contém arquivos de uso corporativo para ps funcionários.
 +
# Acesse seu servidor FTP a partir de outros computadores e de seus celulares (''dica:'' use um cliente FTP): transfira arquivos em ambas direções e verifique se foram copiados corretamente.
 +
# Faça um backup de arquivos pessoais, e copie-o para seu servidor FTP.
 +
# Em outro computador, baixe o arquivo de backup e recupere-o.
 +
# Implante o diretório de compartilhamento de arquivos entre funcionários: nesse diretório cada funcionário pode gravar arquivos, os quais ficarão acessíveis para outros funcionários.
  
3.2 - Reconhecendo Dispositivos
+
{{collapse bottom}}
  
A) Execute o Bubble UPnP em seu aparelho android
+
= 15/03: Projeto da etapa 1 - Continuação =
B) Selecione a opção 'Settings'
 
no aplicativo e em seguida clique na aba 'Renderer' onde se encontrarão
 
automaticamente todos os dispositivos com tecnologia UPnP conectados a rede
 
C) Após isso selecione o dispositivo cujo qual ocorrerá a integração e o mesmo sera
 
adicionado como principal na lista do aplicativo.
 
D) Feito o procedimento
 
anterior, basta acessar a pasta do dispositivo integrado pela rede e ter acesso ao
 
mesmo através do aplicativo.
 
  
3.3 - Adicionando dispotivos através do Kodi (Integração Final)
+
{{collapse top | Aula 10}}
  
A) Com o Kodi aberto, selecione a midia desejada (Musica, Video, Imagens)
+
{{collapse bottom}}
B) Selecione a opção de adção de midia como ja foi visto anteriormente em '2.3'
 
C) Após o procedimento anterior selecione a pasta 'UPnP Devices', assim todos os
 
dispositivos conectados a rede serão listados no Kodi.
 
D) Adicione o dispositivo desejado a rede e clique em ok.
 
E) Feito isso, a integração entre o dispositivo e o Kodi estará finalizada, e os
 
arquivos de mídia compartilhados por poderao ser acessados por ambos.
 
  
4.0 - Adicionando aplicativos de midia ao Kodi
+
= 17/03: Projeto da etapa 1 - Apresentação =
  
A) O procedimento para adição de aplicativos alternativos ao Kodi é simples, na
+
{{collapse top | Aula 11}}
tela principal do Kodi após selecionar a midia desejada (Imagem, Video ou Musica),
 
seleciona a opção 'Complementos' (Addons), o Kodi automaticamente fará a listagem
 
dos complementos ja instalados e disponiveis para download na rede para o usuario,
 
caso deseje instalar um novo complemento basta utilizar a ferramente de pesquisa
 
do Kodi na tela e instalar o aplicativo desejado, o mesmo estará disponivel para
 
execução após o download.
 
  
4.1 Adicionando Skins ao Kodi
 
</syntaxhighlight>
 
 
{{collapse bottom}}
 
{{collapse bottom}}
  
{{Collapse bottom | Aula 12}}
+
= 22/03: Etapa 2: uma rede residencial com acesso a Internet =
  
= 04/05: Projeto 2: uma rede residencial com acesso a Internet =
+
{{collapse top | Aula 12}}
  
{{Collapse top | Aula 13}}
+
A etapa 1 envolveu ter um primeiro contato com o sistema operacional Linux. Foram apresentadas as duas interfaces de usuário, sendo elas a interface gráfica (GUI) e a linha de comando (CLI ou, simplesmente, shell). Aprenderam-se conceitos básicos, tais como diretórios, arquivos e permissões, e usaram-se aplicativos gráficos e programas pela linha de comando para manipulá-los. Isso deve ser suficiente para que se consiga usar o sistema operacional e os aplicativos nele disponíveis. Para finalizar a etapa 1 cada aluno implementou um repositório para disponibilização de arquivos de uma empresa utilizando um servidor FTP.
  
No projeto 1 foi implantado um centro de midia, e com ele alguns conceitos sobre sistemas operacionais e redes de computadores precisaram ser estudados. Esse projeto partiu do princípio de que a infraestrutura estaria pronta, portanto ele foi desenvolvido sobre um computador devidamente instalado e operacional, e também uma rede de computadores. Porém, em um caso real, possivelmente essa infraestrutura não exista.
+
A etapa 1 do projeto integrador partiu do princípio de que toda a infraestrutura necessária estaria pronta, portanto ele foi desenvolvido sobre um computador devidamente instalado e operacional, e também a rede de computadores estava devidamente configurada. Porém, em um caso real, possivelmente essa infraestrutura não exista.
  
O projeto 2 trata de, ''partindo do zero'', implantar uma rede residencial com acesso a Internet. Essa rede deve ter ao menos um computador, uma rede sem-fio e um enlace ADSL para acesso a Internet. Esse novo projeto implica implantar o seguinte cenário:
+
A etapa 2 trata de, ''partindo do zero'', implantar uma rede residencial com acesso a Internet. Essa rede deve ter ao menos um computador, uma rede sem-fio e um enlace ADSL para acesso a Internet. Essa nova etapa implica implantar o seguinte cenário:
  
  
Linha 779: Linha 875:
 
<!-- [[imagem:Pji1-Network-home.gif|800px]] -->
 
<!-- [[imagem:Pji1-Network-home.gif|800px]] -->
  
== Plano geral de trabalho do Projeto 2 ==
+
== Plano geral de trabalho da Etapa 2 ==
  
 
* [http://canaltech.com.br/tutorial/linux/guia-como-instalar-o-ubuntu-linux/ Um guia de instalação do Ubuntu Linux]
 
* [http://canaltech.com.br/tutorial/linux/guia-como-instalar-o-ubuntu-linux/ Um guia de instalação do Ubuntu Linux]
Linha 799: Linha 895:
 
##* [https://www.centos.org/ CentOS]
 
##* [https://www.centos.org/ CentOS]
 
## Obter a imagem de instalação do sistema operacional. Elas estão em repositórios online, e há cópias de algumas delas aqui em um computador do laboratório:
 
## Obter a imagem de instalação do sistema operacional. Elas estão em repositórios online, e há cópias de algumas delas aqui em um computador do laboratório:
##* [http://172.18.20.251/~msobral/ubuntu/ubuntu-14.04.4-desktop-amd64.iso Ubuntu 14.04 LTS 64 bits]
+
##* [http://192.168.1.101/Ubuntu/ubuntu-14.04.5-desktop-amd64.iso Ubuntu 14.04 LTS 64 bits]
##* [http://172.18.20.251/~msobral/ubuntu/debian-8.4.0-amd64-CD-1.iso Debian 8 64 bits]
+
##* [http://192.168.1.101/Mate/ubuntu-mate-14.04.2-LTS-desktop-amd64.iso Ubuntu Mate 14.04 LTS 64 bits]
 
## Gerar a midia com a imagem do sistema operacional a ser instalado.
 
## Gerar a midia com a imagem do sistema operacional a ser instalado.
 
##* Identificar o procedimento para copiar a imagem de instalação na midia escolhida
 
##* Identificar o procedimento para copiar a imagem de instalação na midia escolhida
Linha 809: Linha 905:
 
##* Particionar o disco de forma a poder atualizar totalmente o sistema operacional sem perder os arquivos de usuários
 
##* Particionar o disco de forma a poder atualizar totalmente o sistema operacional sem perder os arquivos de usuários
 
# Instalar softwares para uso geral pelo usuário (liste os softwares que você considera necessários ou interessantes ter em seu computador)
 
# Instalar softwares para uso geral pelo usuário (liste os softwares que você considera necessários ou interessantes ter em seu computador)
# Instalar os softwares do centro de midia
 
 
# Integrar o computador à rede
 
# Integrar o computador à rede
 
# Usar o computador com o sistema e softwares instalados !
 
# Usar o computador com o sistema e softwares instalados !
Linha 816: Linha 911:
 
'''OBS:''' para um primeiro contato, faremos uma instalação do sistema operacional em uma máquina virtual Virtualbox. Após ter o procedimento básico de instalação bem compreendido isso será repetido em um computador real.
 
'''OBS:''' para um primeiro contato, faremos uma instalação do sistema operacional em uma máquina virtual Virtualbox. Após ter o procedimento básico de instalação bem compreendido isso será repetido em um computador real.
  
{{Collapse bottom | Aula 13}}
+
{{collapse bottom}}
 +
 
 +
= 24/03: Projeto 2: preparação de um computador =
  
= 09/05: Projeto 2: preparando o computador do centro de midia =
+
{{Collapse top | Aula 13}}
  
{{Collapse top | Aula 14}}
+
* [[Introdução_ao_Sistema_Operacional_Linux#A_carga_do_sistema_operacional_.28boot.29|Curiosidade: a carga (boot) do sistema operacional]]
  
# [[PJI-2016-1#Obtendo_o_computador|Investigação da estrutura de um computador]]
 
#* [[PJI-2016-1#Videos_ilustrativos|Alguns videos ilustrativos]]
 
# [[PJI-2016-1#Instala.C3.A7.C3.A3o_do_sistema_operacional|Instalação de um sistema operacional]]
 
# [[Introdução_ao_Sistema_Operacional_Linux#A_carga_do_sistema_operacional_.28boot.29|Curiosidade: a carga (boot) do sistema operacional]]
 
  
 
Na aula anterior fizemos um aquecimento, em que instalamos um sistema operacional em uma máquina virtual. Hoje iremos repetir essa tarefa, porém usando um computador real. Assim a primeira parte do projeto 2 pode ser mais realista, simulando uma situação corriqueiramente enfrentada na prática.
 
Na aula anterior fizemos um aquecimento, em que instalamos um sistema operacional em uma máquina virtual. Hoje iremos repetir essa tarefa, porém usando um computador real. Assim a primeira parte do projeto 2 pode ser mais realista, simulando uma situação corriqueiramente enfrentada na prática.
Linha 913: Linha 1 006:
 
|}
 
|}
  
=== Tarefa (trazer na aula de 16/05) ===
+
=== Tarefa (trazer na aula de '''05/04''') ===
  
 
Você recebeu a tarefa de especificar um computador a ser comprado em sua empresa. Esse computador deve ser usado para rodar programas de escritório. A empresa optou por adquirir os componentes em separado, de forma a montar o computador. Sendo assim, '''selecione todos os componentes desse computador''', informando fabricante, modelo e preço. Use componentes disponíveis em mercado atualmente. Inclua figuras para ilustrar as peças do computador que você escolheu.
 
Você recebeu a tarefa de especificar um computador a ser comprado em sua empresa. Esse computador deve ser usado para rodar programas de escritório. A empresa optou por adquirir os componentes em separado, de forma a montar o computador. Sendo assim, '''selecione todos os componentes desse computador''', informando fabricante, modelo e preço. Use componentes disponíveis em mercado atualmente. Inclua figuras para ilustrar as peças do computador que você escolheu.
Linha 926: Linha 1 019:
 
* [http://www.youtube.com/watch?v=kdmLvl1n82U Outro video sobre funcionamento de um disco rígido]
 
* [http://www.youtube.com/watch?v=kdmLvl1n82U Outro video sobre funcionamento de um disco rígido]
  
<!-- === Atividade: medindo os níveis de tensão em um computador ===
+
== Instalação do sistema operacional ==
  
* [http://www.eletromaniacos.com/modules.php?name=News&file=article&sid=101 Uma explicação sobre fontes ATX]
+
A instalação do sistema operacional segue praticamente o mesmo procedimento da aula anterior. Porém desta vez será necessário gravar a imagem do instalador do sistema operacional em um DVD ou [http://unetbootin.github.io/#install pendrive].
  
Quais são os níveis de tensão existentes dentro de um computador ? Para responder essa questão vamos fazer um pequeno experimento com seus computadores: usar um multímetro para fazer medições dentro do computador.
+
=== Particionamento do disco ===
* Quais são os níveis de tensão fornecidos pela fonte do computador ?
 
* Esses níveis de tensão são contínuos ou alternados ?
 
* Seus valores variam dependendo do uso do computador ? Por exemplo, ao se copiarem arquivos de um HD, ou executar um programa ''pesado'' ?
 
  
* [http://distrowatch.com/dwres.php?resource=major Um bom guia sobre as principais distribuições Linux]
+
Deve-se instalar o sistema operacional com particionamento manual do disco. As partições devem ser:
 
 
-->
 
 
 
== Instalação do sistema operacional ==
 
 
 
Para enriquecer o projeto 2, foi decidido que cada equipe deve escolher uma distribuição Linux e usá-la em seu computador. Porém, para facilitar o compartilhamento de informações e experiências entre as equipes, limitaram-se às seguintes distribuições, as quais possuem grande similaridade:
 
* [http://www.ubuntu.com Ubuntu] ... ([http://192.168.1.101/ubuntu-14.04.4-desktop-amd64.iso versão local])
 
* [http://www.debian.org Debian] ... ([http://192.168.1.101/debian-8.4.0-amd64-CD-1.iso versão local])
 
 
 
A instalação do sistema operacional segue praticamente o mesmo [[PJI-2016-1#Plano_geral_de_trabalho_do_Projeto_2|procedimento da aula anterior]]. Porém desta vez será necessário gravar a imagem do instalador do sistema operacional em um DVD ou pendrive.
 
 
 
=== Particionamento do disco ===
 
 
 
Deve-se instalar o sistema operacional com particionamento manual do disco. As partições devem ser:
 
 
* '''/''': a partição raiz, onde fica o sistema operacional e seus arquivos de configuração e também [http://www.guiafoca.org/cgs/guia/intermediario/ch-log.html arquivos de log] e temporários.
 
* '''/''': a partição raiz, onde fica o sistema operacional e seus arquivos de configuração e também [http://www.guiafoca.org/cgs/guia/intermediario/ch-log.html arquivos de log] e temporários.
 
* '''/home''': a partição dos usuários, onde ficam seus diretórios pessoais.
 
* '''/home''': a partição dos usuários, onde ficam seus diretórios pessoais.
Linha 960: Linha 1 036:
  
  
O particionamento acima corresponde a uma instalação típica muito simples. A principal ideia por trás dessa escolha foi possibilitar que o sistema operacional fosse reinstalado sem que se percam os arquivos de usuários (e sem necessidade fazer backup para essa finalidade). Mas há outras possibilidades para particionamento do disco, dependendo do propósito para que o sistema operacional deve ser instalado. Essas variações serão melhor discutidas lá na 3a fase, na disciplina de [[PJI3-TecTel#PJI3_-_PROJETO_INTEGRADOR_III|Projeto 3]].
+
O particionamento acima corresponde a uma instalação típica muito simples. A principal ideia por trás dessa escolha foi possibilitar que o sistema operacional fosse reinstalado sem que se percam os arquivos de usuários (e sem necessidade fazer backup para essa finalidade). Mas há outras possibilidades para particionamento do disco, dependendo do propósito para que o sistema operacional deve ser instalado.
  
 
===Exercício===
 
===Exercício===
Linha 981: Linha 1 057:
  
  
[[imagem:PJI1-Mapa-mental-computador.png|600px]]
+
{{Collapse bottom | Aula 13}}
 +
 
 +
= 29/03: Projeto 2: continuação Aula 13 =
 +
 
 +
{{Collapse top | Aula 14}}
  
 
{{Collapse bottom | Aula 14}}
 
{{Collapse bottom | Aula 14}}
  
= 11/05: Projeto 2: ajuste fino da instalação do sistema operacional =
+
= 31/03: Projeto 2: ajuste fino da instalação do sistema operacional =
  
 
{{Collapse top | Aula 15}}
 
{{Collapse top | Aula 15}}
Linha 991: Linha 1 071:
 
Na aula de hoje serão vistos os seguintes temas:
 
Na aula de hoje serão vistos os seguintes temas:
  
#[[PJI-2016-1#Instala.C3.A7.C3.A3o_do_sistema_operacional | Conclusão da instalação do sistema operacional]]
+
# Conclusão da instalação do sistema operacional
#[[PJI-2016-1#Exerc.C3.ADcio | Exercício proposto]]
+
# Exercício sobre conceitos vistos até então nas etapas 1 e 2
#[[PJI-2016-1#Tarefa_.28trazer_na_pr.C3.B3xima_aula:_11.2F05.29 | Tarefa para a próxima aula]]
+
# [[PJI2-2017-1#24.2F03:_Projeto_2:_prepara.C3.A7.C3.A3o_de_um_computador|Tarefa para a próxima aula: especificação de computador (ver na aula de 24/03)]]
#[[PJI-2016-1#Configura.C3.A7.C3.A3o_da_rede_no_computador_da_equipea | Configuração da rede no computador da equipe]]
+
# Configuração da rede no computador da equipe
#[[PJI-2016-1#Atividade_4 | Atividades]]
 
#[[PJI-2016-1#Para_esquentar:_explorando_a_linha_de_comando | Explorando a linha de comando]]
 
  
== ATENÇÃO: TESTE NA PRÓXIMA 2A FEIRA (16/05) ==  
+
== ATENÇÃO: TESTE NA PRÓXIMA 4a FEIRA (05/04) ==  
  
 
O próximo teste trata do que foi estudado e realizado nesta semana:
 
O próximo teste trata do que foi estudado e realizado nesta semana:
 
* computador e seus componentes
 
* computador e seus componentes
 
* instalação do sistema operacional
 
* instalação do sistema operacional
 +
* configuração de rede
 +
 +
== Uso de RaspberryPi como computador ==
 +
 +
[https://www.raspberrypi.org/ RaspberryPi] é um projeto com o propósito de [https://www.raspberrypi.org/about/ ''disponibilizar computadores de baixo custo e alto desempenho para que pessoas possam aprender, resolver problemas e se divertirem'']. O computador RaspberryPi, chamado daqui em diante de Rpi,  tem tamanho de um cartão de crédito, bastando teclado e mouse USB, monitor com entrada HDMI e fonte de alimentação para ser utilizado. Ele possui 1 GB RAM e processador ARM de quatro núcleos com clock de 1.2 GHz. Para acesso à rede ele possui interfaces de rede ethernet e Wifi, além de Bluetooth.
 +
 +
 +
[[imagem:PJI2-Raspberry-Pi-3.jpg|600px]]
 +
<br>''RaspberryPi 3''
 +
 +
 +
O Rpi pode executar vários sistemas operacionais, porém o foco está no Linux. A distribuição oficial mantida pelo projeto se chama Raspbian, sendo baseada em Debian. Outras distribuições Linux, e mesmo o sistema operacional Windows 10, podem ser vistas no sítio de downloads:
 +
* [https://www.raspberrypi.org/downloads/ Sistemas operacionais para Rpi]
 +
 +
 +
Devido à maior simplicidade na montagem e uso, além do menor custo, serão usados computadores Rpi para as etapas seguintes da disciplina de Projeto 2. Porém isso implica obter o Rpi, instalar o sistema operacional e, por fim, experimentá-lo com monitor, mouse e teclado.
 +
* [https://www.raspberrypi.org/downloads/raspbian/ Obtendo o Raspbian]
 +
** [http://curl.sj.ifsc.edu.br/~msobral/rpi Cópia no computador do professor]
 +
* [https://www.raspberrypi.org/documentation/installation/installing-images/README.md Instalação de sistema operacional no Rpi]
  
 
== Configuração da rede no computador da equipe ==
 
== Configuração da rede no computador da equipe ==
Linha 1 069: Linha 1 166:
 
# '''Outra curiosidade:''' e se os endereços IP fossem maiores (tivessem mais bits) ? De fato, existe uma nova versão para esses endereços que usa 128 bits ao invés de 32. Quantos endereços seria possível usar nessa nova versão, chamada de '''IPv6''' ?
 
# '''Outra curiosidade:''' e se os endereços IP fossem maiores (tivessem mais bits) ? De fato, existe uma nova versão para esses endereços que usa 128 bits ao invés de 32. Quantos endereços seria possível usar nessa nova versão, chamada de '''IPv6''' ?
  
{{Collapse bottom | Aula 15}}
+
<!--
 +
=== Arquivo /etc/network/interfaces ===
  
= 16/05: Projeto 2: configuração da rede no computador =
+
O arquivo ''/etc/network/interfaces'' contém declarações para configurar as interfaces de rede. Um exemplo de configuração básica contida nesse arquivo pode ser vista a seguir:
  
{{Collapse top | Aula 16}}
+
<syntaxhighlight lang=text>
 +
auto lo eth0
 +
iface lo inet loopback
 +
iface eth0 inet dhcp
 +
</syntaxhighlight>
  
# [[Configuração de rede no Linux]]
+
Esse exemplo pode ser interpretado assim:
# [[PJI-2016-1#Atividade_5|Atividade sobre configuração de rede]]
+
* ''Linha 1'': declara que as interfaces ''lo'' e ''eth0'' devem ser ativadas automaticamente no boot. Se uma interface não aparecer em uma declaração como esta, então ela não será ativada. OBS: interface ativadas desta forma NÃO são controladas pelo ''NetworkManager''.
# [[PJI-2016-1#O_tema_do_projeto_2|A escolha do tema do ]]projeto 2
+
* ''Linha 2'': configura a interface ''lo'' como sendo do tiupo ''loopback''. Essa é uma interface especial criada puramente em software (uma interface de rede virtual), usada para comunicação entre processos de um mesmo computador.
 +
* ''Linha 3'': configura a interface ''eth0'' de forma dinâmica usando [[GER-2010-1#DHCP|DHCP]]. A configuração de rede é solicitada usando a própria rede. Ness ecaso, deve existir algum equipamento ou computador nessa rede que seja um servidor DHCP, capaz de responder com uma mensagem contendo a configuração de rede a ser utilizada.
  
  
Na [[PJI-2016-1#11.2F05:_Projeto_2:_ajuste_fino_da_instala.C3.A7.C3.A3o_do_sistema_operacional|aula de 11/05]] apresentaram-se princípios para a configuração de rede do computador. A título de recordação, identificaram-se três informações essenciais para que um computador possa acessar a rede (Internet):
+
O exemplo anterior é bastante simplificado, uma vez que a configuração de rede de fato é obtida dinamicamente com DHCP. Isso pode ser suficiente para computadores usados somente para acesso a Internet, mas não para computadores que sejam servidores. Nesse caso, é melhor definir uma configuração de rede estática, como mostrado a seguir:
# O endereço IP e máscara de rede do computador
 
# A rota default para acesso a Internet (ou o gateway)
 
# O endereço IP do servidor DNS a ser utilizado
 
  
Nas atividades realizadas naquela aula, essas informações foram devidamente descritas e então manualmente configuradas no computador. No entanto, da forma que isso foi feito, sempre que o computador for reiniciado deve-se refazer toda a configuração de rede. Isso não é conveniente em uma situação real.  
+
<syntaxhighlight lang=text>
 +
auto lo eth0
 +
iface lo inet loopback
 +
iface eth0 inet static
 +
  address 172.18.80.251
 +
  netmask 255.255.128.0
 +
  gateway 172.18.0.254
 +
  dns-nameservers 200.135.37.65 200.135.37.66
 +
</syntaxhighlight>
  
Hoje será visto como tornar permanente a configuração de rede. Isso depende do [http://www.linfo.org/flavors.html ''sabor'' do sistema operacional Unix], o que vale também para os diferentes Linux (ex: Ubuntu, Debian, OpenSuse, Fedora, RedHat, ArchLinux, Slackware, ...). Para simplificar vamos nos concentrar nas duas variações de sistemas Linux que usamos em aula: Ubuntu e Debian.
 
  
== Atividade ==
+
A diferença em relação ao caso anterior está na declaração da interface ''eth0''. Ao invés de configurá-la com ''DHCP'', declararam-se todas as informações de rede. Assim, essa interface sempre será ativada com essas informações configuradas. No exemplo apresentado, as configurações de rede são:
 +
* ''address 172.18.80.251'': endereço IP da interface
 +
* ''netmask 255.255.128.0'': máscara de rede
 +
* ''gateway 172.18.0.254'': endereço do gateway (ou roteador ''default'')
 +
* ''dns-nameservers 200.135.37.65 200.135.37.66'': servidores DNS a serem utilizados (podem-se especificar um ou mais endereços IP)
  
# Nos quatro passos a seguir, sempre visualize a configuração de rede obtida e teste a comunicação com a Internet.
+
O [http://manpages.ubuntu.com/manpages/trusty/en/man5/interfaces.5.html manual do arquivo /etc/network/interfaces] apresenta muitos outros detalhes sobre possíveis configurações de rede.
# Por meio do ''NetworkManager'' crie as configurações de rede de seu computador de forma que se use DHCP.
+
-->
# Ainda com o NetworkManager, crie uma configuração de rede estática. Use o IP 192.168.100+''número de sua equipe'', máscara de rede 255.255.255.0, roteador default 192.168.1.1 e servidor DNS 200.135.37.65.
+
 
# Refaça os dois passos anteriores, porém usando o arquivo ''/etc/network/interfaces''.
+
{{Collapse bottom | Aula 15}}
# Em cada caso, reinicie o computador, e veja se a interface continua configurada.
+
 
# No caso da configuração com arquivo ''/etc/network/interfaces'', experimente ativar e desativar interfaces de rede (veja os manuais desses comandos):
+
= 05/04: Projeto 2: Usuários e grupos =
#* O comando ''ifdown'' desativa uma interface
+
 
#* O comando ''ifup'' ativa uma interface
+
{{Collapse top | Aula 16}}
# No caso do ''NetworkManager'', como se podem ativar e desativar interfaces ?
+
* [http://www.linfo.org/root.html Root]
 +
* [https://en.wikipedia.org/wiki/Superuser Superusuário]
 +
* [https://wiki.archlinux.org/index.php/users_and_groups Usuários e grupos]
 +
 
 +
===Usuários e grupos===
 +
 
 +
Um 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:
 +
 
 +
* '''Nome de usuário (ou ''login''):''' um apelido que identifica o usuário no sistema
 +
* '''UID (User Identifier):''' um número único que identifica o usuário
 +
* '''GID (Group Identifier):''' o número do grupo primário do usuário
 +
* '''Senha (password):''' senha para verificação de acesso
 +
* '''Nome completo (''full name''):''' nome completo do usuário
 +
* '''Diretório inicial (''homedir''):''' o subddiretório pessoal do usuário, onde ele é colocado ao entrar no sistema
 +
* '''Shell:''' o programa a ser executado quando o usuário entrar no sistema
 +
 
 +
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 [http://www.kernel.org/doc/man-pages/online/pages/man5/passwd.5.html ''/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:
  
== O tema do projeto 2 ==
+
''nome de usuário:senha:UID:GID:Nome completo:Diretório inicial:Shell''
  
O projeto 2 diz respeito à implantação de uma rede de computadores residencial com acesso a Internet via ADSL. A infraestrutura dessa rede será criada gradualmente ao longo do projeto, porém existe outra questão importante a ser resolvida. No projeto 1 usou-se o centro de midia como motivação para um primeiro contato com o sistema operacional Linux. Já no projeto 2, o software a ser usado fica a critério das equipes.
+
O campo ''senha'' em ''/etc/passwd'' pode assumir os valores:
 +
* ''x'': significa que a senha se encontra em ''/etc/shadow''
 +
* ''*'': significa que a conta está bloqueada
 +
* ''senha encriptada'': a senha de fato, porém encriptada usando algoritmo hash [http://pt.wikipedia.org/wiki/Md5 MD5] ou [http://www.kernel.org/doc/man-pages/online/pages/man3/crypt.3.html crypt]. Porém usualmente a senha fica armazenada no arquivo ''/etc/shadow''.
  
Cada equipe deve escolher um ou mais softwares a serem usados em sua rede. Algumas diretrizes devem ser obedecidas:
+
O arquivo ''/etc/shadow'' armazena exclusivamente as informações relativas a senha e validade da conta. Nele cada conta possui as seguintes informações:
* deve-se implantar um software que ofereça um ou mais serviços na rede
+
* Nome de usuário
* o software deve ser preferencialmente instalado usando o gerenciador de pacotes do sistema operacional
+
* Senha encriptada (sobrepõe a senha que porventura exista em ''/etc/passwd'')
* a manutenção do software deve ser feita somente por um usuário com privilégio de administrador
+
* Data da última modificação da senha
* o software deve ser ativado automaticamente quando o sistema operacional iniciar
+
* Dias até que a senha possa ser modificada (validade mínima da senha)
* os serviços oferecidos pelo software devem poder ser acessados a partir de outros computadores ou dispositivos móveis (celulares, tablets)
+
* Dias após que a senha deve ser modificada
 +
* Dias antes da expiração da senha em que o usuário deve ser alertado
 +
* Dias após a expiração da senha em que a conta é desabilitada
 +
* Data em que a conta foi desabilitada
  
 +
Um exemplo do arquivo ''/etc/shadow'' segue abaixo:
  
Um exemplo de software que atende esses requisitos é:
+
root:$2a$05$8IZNUuFTMoA3xv5grggWa.oBUBfvrE4MfgRDTlUI1zWDXGOHi9dzG:13922::::::
* [https://apps.ubuntu.com/cat/applications/xeoma/ Sistema de vigilância com câmeras]
+
suse-ncc:!:13922:0:99999:7:::
* [https://elgg.org Servidor para rede social]
+
uucp:*:13922::::::
* [http://www.barnraiser.org/aroundme Outro servidor para rede social]
+
wwwrun:*:13922::::::
* [http://www.tecmint.com/install-shoutcast-in-linux/ Servidor de música (Internet Radio)]
+
roberto:$1$meoaWjv3$NUhmMHVdnxjmyyRNlli5M1:14222:0:99999:7:::
* [http://www.linuxlinks.com/article/20091023091241233/Icecast.html Outro servidor de música (Internet Radio)]
 
* [https://rocket.chat/ Chat via web]
 
  
{{Collapse bottom | Aula 16}}
+
''Exercício: quando a senha do usuário ''roberto'' irá expirar ?''
  
= 18/05: Projeto 2: acesso remoto ao computador  =
+
Um grupo é um conjunto de usuários definido da seguinte forma:
 +
* '''Nome de group (group name):''' o nome que identifica o grupo no sistema
 +
* '''GID (Group Identifier):''' um número único que identifica o grupo
 +
* '''Lista de usuários:''' um conjunto de usuários que são membros do grupo
  
{{Collapse top | Aula 17}}
+
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:
  
Na aula de hoje serão desenvolvidas as seguintes atividades:
+
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:
  
# [[PJI-2016-1#Atividade_extra:_acesso_remoto_ao_computador|Uma atividade extra]]
+
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''.
# [[Breve_guia_sobre_administra%C3%A7%C3%A3o_Linux#Parti.C3.A7.C3.B5es_e_sistemas_de_arquivos | Manutenção de partições em discos]]
 
  
== Atividade extra: acesso remoto ao computador ==
+
=== Gerenciamento de usuários e grupos ===
  
Um dos objetivos do projeto é adquirir familiaridade com a operação do sistema operacional. Após a instalação do seu computador, pode-se aproveitar a oportunidade para experimentar algumas ações comuns de serem feitas nesse tipo de sistema. Dentre elas, o '''acesso e administração remota de um computador''' é de grande utilidade.
+
Para 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:
  
 +
* '''useradd''' ou '''adduser''': adiciona um usuário
 +
** Ex: ''useradd -m roberto'' : cria o usuário ''roberto'' juntamente com o diretório (-m --makedir).
 +
** Ex: ''useradd -c "Roberto de Matos" -m roberto'' : cria o usuário ''roberto'' com nome completo "Roberto de Matos"
 +
** Ex: ''useradd -c "Roberto de Matos" -g users -m -d /usuarios/roberto -s /bin/tcsh roberto'' : cria o usuário ''roberto'' com nome completo "Roberto de Matos", grupo ''users'', diretório inicial /usuarios/roberto e shell /bin/tcsh
 +
* '''userdel:''' remove um usuário
 +
** Ex: ''userdel roberto'' : remove o usuário ''roberto'', porém preservando seu diretório home
 +
** Ex: ''userdel -r roberto'' : remove o usuário ''roberto'', incluindo seu diretório home
 +
* '''usermod:''' modifica as informações da conta de um usuário
 +
** Ex: ''usermod -g wheel roberto'' : modifica o GID do usuário ''roberto''
 +
** Ex: ''usermod -G users,wheel roberto'' : modifica os grupos secundários do usuário ''roberto''
 +
** Ex: ''usermod -d /contas/roberto roberto'' : modifica o diretório inicial do usuário ''roberto'' (mas não copia os arquivos ...)
 +
** Ex: ''usermod -l robertomatos roberto'' : modifica o login do usuário ''roberto''
 +
** Ex: ''usermod -m ...'' : cria o diretório home do usuário ''roberto''
 +
** Ex: ''usermod -c "Roberto Matos, R. dos Navegantes, 33333333"'' : atribui comentários ao usuário ''roberto''
 +
* '''passwd:''' modifica a senha de usuário
 +
** Ex: ''passwd roberto''
 +
* '''login:''' logo como outro usuário. Tem de estar como root
 +
** Ex: ''login roberto''
 +
* '''groupadd:''' adiciona um grupo
 +
** Ex: ''groupadd ger'': cria o grupo ''ger''
 +
* '''groupdel:''' remove um grupo
 +
** Ex: ''groupdel ger'': remove o grupo ''ger''
  
O acesso remoto a um computador com sistema Linux (e Unix em geral) pode ser feito de diversas maneiras. Alguns métodos possibilitam executar aplicativos gráficos remotamente, ou mesmo abrir toda a área de trabalho (''desktop''). Outros possibilitam somente obter um terminal de texto. Neste experimento o segundo tipo de acesso será usado, por ser mais simples, rápido e representativo.
+
<!--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 é:
  
O acesso remoto a um terminal de texto atualmente se faz com um aplicativo chamado [http://pt.wikipedia.org/wiki/SSH SSH (Secure Shell)]. Seu uso básico é bastante simples, bastando informar o endereço IP do computador onde se deseja fazer o acesso. Além disso, é necessário possuir uma conta de usuário nesse computador.
+
MAIL_DIR dir # Diretório de e-mail
# No seu computador execute este comando para instalar o serviço SSH: <syntaxhighlight lang=bash>
+
PASS_MAX_DAYS 99999 #Número de dias até que a senha expire
sudo apt-get install openssh-server
+
PASS_MIN_DAYS 0 #Número mínimo de dias entre duas trocas senha
</syntaxhighlight>
+
PASS_MIN_LEN 5 #Número mínimo de caracteres para composição da senha
# Descubra o endereço IP do seu computador.
+
PASS_WARN_AGE 7 #Número de dias para notificação da expiração da senha
# Abra um terminal em outro computador do laboratório, e conecte-se no novo computador usando o SSH: <syntaxhighlight lang=bash>
+
UID_MIN 500 #Número mínimo para UID
ssh usuario@IP_do_computador_alvo
+
UID_MAX 60000 #Número máximo para UID
</syntaxhighlight>
+
GID_MIN 500 #Número mínimo para GID
# Experimente executar o ''pluma'' por meio desse acesso com SSH. Veja o resultado na tela gráfica do computador alvo. Execute-o desta forma: <syntaxhighlight lang=bash>
+
GID_MAX 60000 #Número máximo para GID
env DISPLAY=:0 gedit
+
CREATE_HOME yes #Criar ou não o diretório home
</syntaxhighlight>
+
 
# Termine a conexão executando este comando: <syntaxhighlight lang=bash>
+
Como o login.defs o arquivo /etc/default/useradd contém padrões para criação de contas. Seu principal conteúdo é:
exit
+
 
</syntaxhighlight>
+
GROUP=100 #GID primário para os usuários criados
# Conecte novamente porém com este comando: <syntaxhighlight lang=bash>
+
HOME=/home #Diretório a partir do qual serão criados os “homes”
ssh -X usuario@IP_do_computador_alvo
+
INACTIVE=-1 #Quantos dias após a expiração da senha a conta é desativada
</syntaxhighlight>
+
EXPIRE=AAAA/MM/DD #Dia da expiração da conta
# Agora execute este programa: <syntaxhighlight lang=bash>
+
SHEL=/bin/bash #Shell atribuído ao usuário.
gedit
+
SKEL=/etc/skel #Arquivos e diretórios padrão para os novos usuários.
</syntaxhighlight>... e use-o para editar algum arquivo. Onde está esse arquivo que foi editado ?
+
GROUPS=video,dialout
# Experimente executar este comando pelo SSH: <syntaxhighlight lang=bash>
+
CREATE_MAIL_SPOOL=no
sudo poweroff
 
</syntaxhighlight>
 
# Outros comandos úteis para serem usados remotamente:
 
#* [http://www.guiafoca.org/cgs/guia/iniciante/ch-run.html#s-run-ps ps]: mostra os processos existentes
 
#* [http://www.guiafoca.org/cgs/guia/iniciante/ch-run.html#s-run-top top]: mostra os processos mais ativos, junto com diversas informações sobre a utilização do sistema
 
#* [http://www.guiafoca.org/cgs/guia/iniciante/ch-run.html#s-run-kill kill]: mata um processo (ou apenas lhe envia um sinal ...)
 
#* [http://www.guiafoca.org/cgs/guia/iniciante/ch-run.html#s-run-killall killall]: mata todos os processos de acordo com algum critério (ex: pelo nome)
 
#* [http://www.guiafoca.org/cgs/guia/iniciante/ch-cmdd.html Comandos para manipulação de diretórios (pastas)]
 
#* [http://www.guiafoca.org/cgs/guia/iniciante/ch-cmd.html Comandos para manipulação de arquivos]
 
#* [http://www.guiafoca.org/cgs/guia/iniciante/ch-cmdc.html#s-cmdc-passwd passwd]: muda a senha de um usuário
 
#* [http://www.guiafoca.org/cgs/guia/iniciante/ch-cmdc.html#s-cmdc-users users]: lista os usuários logados no sistema
 
#* [http://www.guiafoca.org/cgs/guia/intermediario/ch-cmdn.html#s-cmdn-who who]: mostra quem está conectado a seu computador
 
#* [http://www.guiafoca.org/cgs/guia/intermediario/ch-cmdn.html#s-cmdn-w w]: mostra quem está conectado em seu computador, e que programa está executando
 
#* [http://www.guiafoca.org/cgs/guia/iniciante/ch-bas.html#s-basico-logout Saída do sistema]
 
  
 +
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.-->
  
Agora que vocês já sabem como acessar remotamente um computador que rode Linux, experimentem acessar um servidor de teste existente na rede do IFSC. Esse servidor foi criado especialmente para nossa disciplina de Projeto. Pode-se acessá-lo tanto de dentro do câmpus São José, quanto de fora do IFSC. Seu nome DNS é ''prg2.sj.ifsc.edu.br'' (e seu endereço IP é 200.135.233.75), e o usuário é ''aluno'' (a senha será fornecida em aula).
+
=== Atividade ===
* Que arquivos de video existem lá ? E de música ?
+
 
* Copie os arquivos identificados para o seu computador. ''Dica: veja os programas'' [http://www.guiafoca.org/cgs/guia/intermediario/ch-cmdn.html#s-cmdn-ftp ftp], [http://www.guiafoca.org/cgs/guia/avancado/ch-s-ssh.html#s-s-ssh-cliente-scp scp], [http://www.guiafoca.org/cgs/guia/avancado/ch-s-ssh.html#s-s-ssh-cliente-sftp sftp] e [http://www.vivaolinux.com.br/artigo/Explorando-o-wget?pagina=3 wget].  
+
Esta parte da atividade cada aluno executa individualmente em sua máquina, fazendo uso da devida máquina virtual.
{{collapse top|Exemplos de uso do comando scp}}
+
 
<syntaxhighlight lang=bash>
+
# Crie um usuário com o nome de jose usando o comando adduser. 
# Copia o arquivo teste.txt para o diretório pessoal do aluno no computador 200.135.233.75
+
# Dê ao usuário jose a senha jose123.
# Note que "." é o diretório de destino no computador remoto, que corresponde ao diretório de trabalho
+
# Confirme a correta criação do usuário jose. <syntaxhighlight lang=text> tail /etc/passwd </syntaxhighlight>
# acessado pelo scp ... como o acesso foi realizado como usuário aluno,
+
# Confirme se o diretório home de jose foi criado corretamente dentro de /home.
# "." corresponde ao diretório pessoal do aluno
+
# Logue utilizando o usuário jose.<code>login jose</syntaxhighlight>
scp teste.txt aluno@200.135.233.75:.
+
# Crie o grupo turma.
 +
# Crie o diretório manoel em /home.
 +
# Crie um usuário com o nome de manoel usando o comando useradd. Deve-se ao criar o usuário definir os seguintes parâmentros:  
 +
## Pertencer ao grupo turma;
 +
## O diretório home deve ser /home/manoel;
 +
## Configurar o shell do usuário como sendo /bin/bash;
 +
## Observar qual a diferença entre os comandos adduser e useradd. <syntaxhighlight lang=text> useradd -g turma -d /home/manoel -s /bin/bash manoel </syntaxhighlight>
 +
# Dê ao usuário manoel a senha mane123. <syntaxhighlight lang=text> passwd manoel </syntaxhighlight>
 +
# Acrescente, por comandos, ao perfil do usuário seu nome completo e endereço: Manoel da Silva, R. dos Pinheiros, 2476666. <syntaxhighlight lang=text> usermod -c "Manoel da Silva, R. dos Pinheiros, 2476666" manoel </syntaxhighlight>
 +
# Verifique o arquivo /etc/passwd e confirme se o usuário manoel está OK.
 +
# Mude, por comandos, o diretório home do manoel de /home/manoel para /home/contas/manoel. <syntaxhighlight lang=text> usermod -d /home/contas/manoel manoel </syntaxhighlight>
 +
# Verifique o arquivo /etc/passwd e confirme a alteração.
 +
# Logue como manoel e verifique as mensagens na tela. <syntaxhighlight lang=text> login manoel </syntaxhighlight>
 +
# Crie o diretório /home/contas e dentro de contas crie o diretório manoel. Tente logar novamente.
 +
# Mude o login do manoel para manoelsilva. <syntaxhighlight lang=text> usermod -l manoelsilva manoel </syntaxhighlight>
 +
# Torne o usuário manoelsilva capaz de executar comandos com sudo
 +
# Logue como manoelsilva
 +
# Estando logado como manoelsilva, remova o usuário ''jose''
 +
# Ainda logado como manoelsilva, desative sua interface de rede
 +
# Teste a comunicação pela rede, que não deve funcionar. Em seguida, reative a interface de rede.
 +
# Deslogue de manoelsilva
 +
# Remova os usuários criados, inclusive seus diretórios home
 +
# Remova os grupos criados
 +
 
 +
{{Collapse bottom | Aula 16}}
  
# Faz o inverso ... copia o arquivo teste.txt para o diretório atual
+
= 07/04: Projeto 2: Permissões =
scp aluno@200.135.233.75:teste.txt .
 
  
# Agora copia todos os arquivos com extensão mp3 para o diretório "Downloads"
+
* [http://moodlenovo.sj.ifsc.edu.br/mod/quiz/view.php?id=2427 Teste 3]
# no computador remoto
 
scp *.mp3 aluno@200.135.233.75:Downloads/
 
  
# Por fim, copia todos os arquivos .mp3 do computador remoto de volta para seu computador,
+
{{Collapse top | Aula 17}}
# para dentro do subdiretório "Musicas"
+
Há 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.
scp "aluno@200.135.233.75:Downloads/*.mp3" Musicas/
 
</syntaxhighlight>
 
{{collapse bottom}}
 
* Agora copie algum arquivo do seu computador para esse computador da disciplina. Crie lá uma pasta com o seu nome, e coloque os arquivos lá dentro.
 
  
'''OBS:'''
+
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.
* se você estiver usando um computador com Linux ou MAC-OS X, use o programa ''ssh'' para fazer o acesso remoto.  
 
* se estiver usando Windows, use o programa [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html putty], que é um cliente ''SSH''.
 
  
{{Collapse bottom | Aula 17}}
+
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.
  
= 23/05: Projeto 2: Criando partições  =
+
Quando se executa ''ls -l'' em um diretório qualquer, os arquivos são exibidos de maneira semelhante a seguinte:
  
{{Collapse top | Aula 18}}
+
> 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
 +
>
  
Na aula de hoje serão desenvolvidas as atividades sobre particionamento de disco.
+
As colunas que aparecem na listagem são:
 +
# Esquema de permissões;
 +
# Número de ligações do arquivo;
 +
# Nome do usuário dono do arquivo;
 +
# Nome do grupo associado ao arquivo;
 +
# Tamanho do arquivo, em bytes;
 +
# Mês da criação do arquivo; Dia da criação do arquivo;
 +
# Hora da criação do arquivo;
 +
# Nome do arquivo;
  
== Atividade ==
+
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). A figura a seguir destaca as classes de permissões mostradas em uma listagem de diretório.
  
* [[Breve_guia_sobre_administra%C3%A7%C3%A3o_Linux#Guia_r.C3.A1pido_sobre_cria.C3.A7.C3.A3o_de_parti.C3.A7.C3.B5es|Criação de partições no Linux]]
+
[[imagem:Pji-Permissoes2.png]]
  
  
Uma nova partição deve ser criada em seu disco rígido (HD). Imagine que essa partição será usada para armazenar arquivos de midia (filmes e músicas), e deve estar montada em ''/home/midia''. Porém como na instalação do sistema operacional todo o espaço em disco já foi alocado (utilizado), é necessário reparticionar o disco com o menor esforço possível (e sem perder arquivos !).
+
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:
 +
*1 d se o arquivo for um diretório; -se for um arquivo comum;
 +
*2,5,8 r se existe permissão de leitura; -  caso contrário;
 +
*3,6,9 w se existe permissão de alteração; -  caso contrário;
 +
*4,7,10 x se existe permissão de execução; -  caso contrário;
  
 +
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.
  
'''Passos:'''<br><br>
+
A modificação das permissões de acesso a arquivos e diretórios pode ser feita usando-se os utilitários:
1. Na linha de comando, investigue como foi realizado o particionamento do disco. O disco rígido é do tipo SATA, e dentro do Linux ele é representado pelo pseudo-arquivo ''/dev/sda'' ([http://coffeeintech.blogspot.com.br/2012/08/scsi-or-sata-or-usb-drives-will-be.html um resumo sobre nomes de discos no Linux]). Mostre as partições desse disco usando o programa [http://manpages.ubuntu.com/manpages/utopic/en/man8/fdisk.8.html fdisk]: <syntaxhighlight lang=bash>
+
* '''[http://manpages.ubuntu.com/manpages/karmic/en/man1/chmod.1.html chmod]:''' muda as permissões de acesso (também chamado de modo de acesso). Somente pode ser executado pelo dono do arquivo ou pelo superusuário
sudo fdisk -l /dev/sda
+
** Ex: ''chmod +x /home/usuario/programa'' : adiciona para todos os usuários a permissão de execução ao arquivo /home/usuario/programa
</syntaxhighlight>
+
** Ex: ''chmod -w /home/usuario/programa'' : remove para todos os usuários a permissão de escrita do arquivo /home/usuario/programa
 +
** Ex: ''chmod o-rwx /home/usuario/programa'' : remove todas as permissões de acesso ao arquivo /home/usuario/programa para todos os usuários que não o proprietário e membros do grupo proprietário
 +
** Ex: ''chmod 755 /home/usuario/programa'' : define as permissões rwxr-xr-x para o arquivo /home/usuario/programa
 +
* '''[http://manpages.ubuntu.com/manpages/karmic/en/man1/chown.1.html chown]:''' muda o proprietário de um arquivo. Somente pode ser executado pelo superusuário.
 +
** Ex: ''chown roberto /home/usuario/programa'': faz com que o usuário ''roberto'' seja o dono do arquivo
 +
* '''[http://manpages.ubuntu.com/manpages/hardy/pt/man1/chgrp.1.html chgrp]''': muda o grupo dono de um arquivo. Somente pode ser executado pelo superusuário.
 +
** Ex: ''chgrp users /home/usuario/programa'': faz com que o grupo ''users'' seja o grupo dono do arquivo /home/usuario/programa
  
2. Agora verifique o particionamento do novo disco rígido, o qual se chama ''/dev/sdb''.
+
Há também o utilitário [http://manpages.ubuntu.com/manpages/karmic/en/man1/umask.1posix.html 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:
  
3. Crie duas partições nesse novo disco, de forma que uma ocupe 2/3 de seu espaço total. Você precisará usar o programa ''fdisk'' para isso.
+
* ''umask 022'': tira a permissão de escrita para group e demais usuários
 +
* ''umask 027'': tira a permissão de escrita para group, e todas as permissões para demais usuários
  
4. Formate as partições criadas: a formatação envolve escolher um tipo de sistema de arquivos e então usar seu formatador.<br>
+
=== Atividade ===
{| border=1
+
 
!Sistema de arquivos
+
# Crie a partir do /home 3 diretórios, um com nome aln (aluno), outro prf (professor) e o último svd (servidor).
!Formatador
+
# Crie 3 grupos com os mesmos nomes acima.
|-
+
# Crie 3 contas de usuários pertencentes ao grupo aln: aluno1, aluno2, aluno3. Estas contas deverão ter seus diretórios homes criados por comando dentro do diretório /home/aln/. Por exemplo para o aluno1 teremos /home/aln/aluno1. Configure a shell dos usuários como /bin/bash.
|[http://en.wikipedia.org/wiki/Ext4 ext4fs] || '''mke2fs''' -t ext4 -j nome_do_disco_e_partição
+
# Crie 3 contas pertencentes ao grupo prf: prof1, prof2, prof3. Estas contas deverão ter seus diretórios homes criados  por comando dentro do diretório /home/prf/. Configure a shell dos usuários como /bin/bash.
|-
+
# Crie 3 contas pertencentes ao grupo svd: serv1, serv2, serv3. Estas contas deverão ter seus diretórios homes criados por comando dentro do diretório /home/svd/. Configure a shell dos usuários como /bin/bash.
|[http://en.wikipedia.org/wiki/Ext3 ext3fs] || '''mke2fs''' -t ext3 -j nome_do_disco_e_partição
+
# Crie senhas para os usuários.
|-
+
# Logue com o usuário aluno1 e crie um arquivo chamado aluno1.txt, executando o comando: <syntaxhighlight lang=bash>
|[http://en.wikipedia.org/wiki/FAT_filesystem_and_Linux vfat] || '''mkfs.vfat''' nome_do_disco_e_partição
+
echo "Teste aluno1" > aluno1.txt</syntaxhighlight>... e saia do usuário aluno1.
|-
+
# Os diretórios dos alunos, e todo o seu conteúdo, devem ser visíveis e editáveis aos membros do próprio grupo, visíveis mas não apagáveis a todos os demais usuários da rede.
|[https://wiki.ubuntu.com/XFS xfs] || '''mkfs.xfs''' nome_do_disco_e_partição
+
# Logue com a conta aluno2. Faça um ''ls -l'' dentro do diretório home do usuário aluno1. Faça um ''cat'' no arquivo aluno1.txt.
|-
+
# Posteriormente, tente fazer o seguinte comando dentro do diretório de aluno1:<syntaxhighlight lang=bash>
|[http://en.wikipedia.org/wiki/JFS_%28file_system%29 JFS] || '''mkfs.jfs''' nome_do_disco_e_partição
+
echo "Teste aluno2" >> aluno1.txt</syntaxhighlight>Foi possível executar este comando? Se não, por quê?
|}<br>
+
# Deslogue do usuário aluno2
5. Monte os novos sistemas de arquivos em:
+
# Logue com prof1 e crie um arquivo chamado prof1.txt, executando o comando:<syntaxhighlight lang=bash>
<br>5.1 ''/home/midia'' (maior sistema de arquivos ou partição): <syntaxhighlight lang=bash>
+
echo "Teste prof1" > prof1.txt</syntaxhighlight>Saia do usuário prof1.
mount nome_do_disco_e_partição /home/midia
+
# Os diretórios dos professores e servidores, devem ser mutuamente visíveis, mas não apagáveis, entre os membros dos grupos professores e servidores mas não deve ser sequer visível aos membros do grupo alunos.
</syntaxhighlight>
+
# Logue com um outro usuário prof e teste se você consegue listar o conteúdo do diretório home do usuário prof1, exibir o conteúdo do arquivo criado no diretório de prof1 e escrever algo neste mesmo arquivo.
<br>5.2 ''/opt'': <syntaxhighlight lang=bash>
+
# Logue com o usuário servidor1 e faça um ''ls -l'' dentro do diretório home do usuário prof1. Dê um cat no arquivo prof1.txt que está destro deste diretório. Tente editar este arquivo.
mount nome_do_disco_e_partição /opt
+
# Logue com um usuário aluno e faça um ''ls -l'' dentro do diretório home do usuário prof1. Foi possível executar este comando? Se não, por quê?
</syntaxhighlight>
 
<br>6. Verifique a capacidade dos novos sistemas de arquivos: <syntaxhighlight lang=bash>
 
df -k /home/midia
 
df -k /opt
 
</syntaxhighlight>
 
<br>7. Teste a criação de arquivos e diretórios nesses novos sistemas de arquivos.<br>
 
<br>8. Torne permanente a montagem desses sistemas de arquivos em ''/home/midia'' e ''/opt'' ... vejam para isso o arquivo ''/etc/fstab''.
 
  
{{Collapse bottom | Aula 18}}
+
=== ATENÇÃO: TESTE PRÓXIMA 4A FEIRA (12/04) ===
  
= 25/05: Projeto 2: rotas em uma rede de muitas redes ! =
+
O próximo teste focará em:
 +
* usuários e grupos
 +
* permissões
  
{{Collapse top | Aula 19}}
+
{{Collapse bottom | Aula 17}}
  
Como visto na [[PJI-2016-1#Configura.C3.A7.C3.A3o_da_rede_no_computador_da_equipe|aula de 11/05]], cada dispositivo em uma rede precisa ter um endereço IP para que possa se comunicar com outros dispositivos. Porém isso não é suficiente: os dispositivos devem saber que '''direção''' tomar para chegar até cada outro dispositivo. Se o dispositivo de destino estiver na mesma rede, então basta transmitir o pacote a ele diretamente. Mas e se ele estiver em outra rede ? Por exemplo, e se um computador no laboratório de Redes 1 quiser se comunicar com outro que está na reitoria do IFSC ? Como esse pacote deve ser transmitido nesse caso?
+
= 12/04: Projeto 2: Permissões =
  
 +
* [http://moodlenovo.sj.ifsc.edu.br/mod/quiz/view.php?id=2457 Teste 4]
  
[[imagem:Pji-projeto2-rotas.png|500px]]
+
{{Collapse top | Aula 18}}
 +
{{Collapse bottom | Aula 18}}
  
 +
= 19/04: Projeto 2: Processos e Instalação de softwares =
  
Antes de prosseguir na investigação desse assunto, é necessário uma visão geral sobre redes de computadores e a Internet. Isso deve ajudar a entender como as comunicações acontecem nessa grande rede.
+
{{Collapse top | Aula 19}}
* [[Comunica%C3%A7%C3%A3o_de_dados|Comunicação de dados e a Internet]]
 
  
 +
Aula passada vimos como usuários e grupos podem ser usados para organizar e proteger o acesso a recursos mantidos pelo sistema operacional (arquivos, programas, dispositivos de entrada e saída, ...). Hoje estudaremos o que são processos, como obter informações sobre eles e como terminá-los. Além disso, veremos também como processos podem usar suas entrada e saída padrão para receber dado para processar e apresentar resultados, e também para se comunicarem.
  
No diagrama que mostra simplificadamente a rede do projeto 2, a rede externa é representada como uma nuvem. Isso significa que sua estrutura interna é desconhecida, ou não é relevante mostrá-la. No caso da Internet, na verdade seria impossível apresentar toda sua estrutura, pois essa rede hoje em dia é gigantesca, além de estar sempre em mutação. Mas ao menos um esboço da rede do Ifsc pode ser apresentado, como se pode ver a seguir. Ao visualizá-la, deve-se novamente imaginar como é possível encaminhar pacotes através dela, de forma que cheguem a seus destinos.
 
  
 +
=== Processos ===
  
[[imagem:Ifsc.png|600px]]
+
Já vimos que sistemas operacionais modernos, como Linux, FreeBSD, Windows, e Android, são capazes de executar múltiplos programas ao mesmo tempo. No caso dos sistemas operacionais Unix, e o Linux pertence a essa família, processos são '''programas em execução'''. Um programa contém instruções e dados armazenados em um arquivo. Ao ser executado um arquivo, cria-se um processo. O sistema operacional carrega as instruções e dados em memória RAM, e faz o processador executá-las. Múltiplos processos podem ser criados a partir do mesmo arquivo de programa, sendo executados de forma independente. Os detalhes de como manter todos os processos em memória, e revezar suas execuções de forma a parecer que são simultâneos, são responsabilidade do sistema operacional.
<br>''Uma visão geral da rede do Ifsc (e bem simplificada !)''
 
  
  
Em primeiro lugar, deve-se imaginar como a Internet está implantada (ao menos do ponto de vista das subredes). A palavra ''internet'' significa ''rede composta por redes'', e, no caso da ''Internet'', cada uma das redes que a constitui é chamada de [http://pt.wikipedia.org/wiki/Sub-rede ''subrede'']. Se alguém pudesse ver o mapa da Internet, pareceria uma grande malha, com milhares de fios (enlaces) se entrelaçando. Nas junções desses fios estão equipamentos que '''roteiam''' (''direcionam'') pacotes a seus destinos. Os equipamentos finais, que são usados por pessoas para rodas os aplicativos de rede, estão na borda de toda essa malha ... nas pontas dos fios. No fim, isso parece um grande mapa, e como tal ele pode ser percorrido por um ou mais caminhos para se ir de um ponto a outro.
+
Vários utilitários (programas auxiliares) existem para obter informações do sistema operacional sobre processos e memória. Alguns trabalham em modo texto, como:
  
 +
* '''[http://manpages.ubuntu.com/manpages/karmic/en/man1/ps.1.html ps]:''' lista os processos existentes
 +
* '''[http://manpages.ubuntu.com/manpages/karmic/en/man1/pstree.1.html pstree]:''' lista os processos existentes mas de forma hierárquica
 +
* '''[http://manpages.ubuntu.com/manpages/karmic/en/man1/top.1.html top]:''' lista os processos mais ativos, junto com informações globais sobre uso dos recursos no sistema operacional (memória, processador, memória virtual, quantidade de processos, carga de trabalho)
 +
* '''[http://manpages.ubuntu.com/manpages/karmic/en/man1/atop.1.html atop]:''' o mesmo que '''top''', mas com maior detalhamento do uso de recursos mantidos pelo sistema operacional
 +
* '''[http://manpages.ubuntu.com/manpages/karmic/en/man1/mpstat.1.html mpstat]:''' mostra estatísticas  de uso do processador
 +
* '''[http://manpages.ubuntu.com/manpages/karmic/en/man1/free.1.html free]:''' mostra o uso de memória
 +
* '''[http://manpages.ubuntu.com/manpages/karmic/en/man8/vmstat.8.html vmstat]:''' mostra o uso de memória, discos e processador no último intervalo de tempo.
  
{| border=0
 
!''Um mapa da Internet (bem abstrato ...)''
 
!Rede Ipê: a Rede Nacional de Pesquisa que originou a Internet no Brasil
 
|-
 
|[[imagem:Internet-map.png|600px]] || [[imagem:Rede-ipe-2014.jpg|600px]]
 
|}
 
  
 +
[[imagem:Pji-procs.png]]
 +
<br>''Alguns processos mostrados com o comando '''ps au'''''
  
Essa analogia do mapa pode ser experimentada usando o [http://maps.google.com Google Maps]. Experimente traçar caminhos entre o IFSC-SJ e vários destinos (mesmo em outras cidades), e visualize como ele descobre o caminho. Observe também que critério é usado para escolher o caminho ... pois é normal que exista mais de uma opção.
 
  
Mas o que isso tem a ver com redes ? Muita coisa: a forma com que o Google Maps descobre caminhos se baseia nos mesmos conceitos usados para descobrir '''rotas''' entre dispositivos na Internet. E voltando a redes de computadores, também é possível descobrir que caminho os pacotes percorrem para ir de um ponto a outro na Internet.  
+
Existem também utilitários no modo gráfico. Por exemplo, no Ubuntu há o "Monitor do sistema". No Debian existe também esse aplicativo se o ambiente gráfico em uso for o Gnome.
  
'''Experimento:''': use o programa [http://manpages.ubuntu.com/manpages/hardy/man8/traceroute-nanog.genuine.8.html traceroute] para descobrir os caminhos percorridos por seus pacotes. Teste-o com vários possíveis destinos:
 
* www.ufsc.br
 
* www.unicamp.br
 
* www.brasil.gov.br
 
* www.nasa.gov
 
* english.pravda.ru
 
* www.china.org.cn
 
* finland.fi
 
  
O que significam as informações mostradas por esse programa ?
+
'''Para nosso propósito, é importante saber que:'''
 +
* Cada processo possui um usuário e grupo dono, que são obtidos do usuário que o criou. Essas duas informações são usadas para fazer o controle de acesso a arquivos e diretórios, comparando-os com suas permissões.
 +
* Cada processo possui um número chamado de PID (''Process IDentifier'') que o identifica no sistema.
 +
* A memória RAM utilizada por um processo é deu uso exclusivo: nenhum processo consegue acessar (ler ou modificar) a memória de outro processo.
 +
* Processos podem ser pausados ou mesmo terminados. Há dois programas para terminar processos:
 +
** [http://manpages.ubuntu.com/manpages/trusty/man1/kill.1.html kill]: termina um ou mais processos informados por seus PID.  Uso básico: <syntaxhighlight lang=bash>
 +
# Solicita ao processo com PID 1234 que termine (esse processo pode ignorar e continuar executando)
 +
kill 1234
 +
 
 +
# Mata sumariamente o processo 1234
 +
kill -9 1234
 +
</syntaxhighlight>
 +
** [http://manpages.ubuntu.com/manpages/trusty/man1/killall.1.html killall]: termina um ou mais processos informados por seus nomes, por seus usuários donos, entre outras possibilidades. Uso básico: <syntaxhighlight lang=bash>
 +
# Solicita ao processo chamado firefox que termine (ele pode ignorar)
 +
killall firefox
 +
 
 +
# Mata sumariamente o processo firefox
 +
killall -9 firefox
 +
</syntaxhighlight>
 +
 
 +
=== Atividade ===
 +
 
 +
# Experimente matar alguns processos, seja pelo PID ou pelos seus nomes, e ver o que acontece ... Lembre que para isso se usam os programas [http://manpages.ubuntu.com/manpages/trusty/man1/kill.1.html kill] ou [http://manpages.ubuntu.com/manpages/trusty/man1/killall.1.html killall].
 +
# (RaspberryPI) Copie [http://tele.sj.ifsc.edu.br/~msobral/pji/teimoso este programa] para seu computador. Em seguida execute-o: <syntaxhighlight lang=bash>
 +
./teimoso
 +
</syntaxhighlight> ... e tente matá-lo.
 +
#* (PC ou Virtualbox) Copie [http://tele.sj.ifsc.edu.br/~msobral/pji/teimoso.c este programa] para seu computador. Em seguida compile-o: <syntaxhighlight lang=bash>
 +
gcc -o teimoso teimoso.c
 +
</syntaxhighlight> ... e então execute-o: <syntaxhighlight lang=bash>
 +
./teimoso
 +
</syntaxhighlight>Tente em seguida matá-lo !
 +
 
 +
=== Instalação de software ===
 +
 
 +
A instalação de software pode ser feita de diferentes maneiras:
 +
* ''A partir do software em formato de código-fonte:'' envolve transferir o código-fonte do seu repositório, e então compilá-lo. Isso requer um maior conhecimento técnico, e é uma habilidade esperada para um Técnico que atue na área de Telecomunicações.
 +
* ''A partir do software já preparado (compilado):'' essa forma é mais simples, pois basicamente implica obter o software compilado e copiá-lo para dentro do seu sistema. É também a prática mais comum, por ser mais rápida, fácil e menos trabalhosa. Todas as distribuições Linux (e também o FreeBSD, entre outras variantes de Unix) provêem alguma forma de instalar softwares dessa maneira. Esses sistemas criam o conceito de '''pacote de software''', que é um arquivo especial contendo todos os arquivos do software a ser instalado, e todas as informações necessárias para que a instalação tenha sucesso (versão, dependências, e outras).
 +
 
 +
No escopo desta disciplina de Projeto Integrador, são usados '''pacotes de software'''. Mas nada impede que se demonstre como seria realizar uma instalação a partir do código-fonte, caso exista a curiosidade.
 +
 
 +
No Ubuntu Linux (e também nas distribuições originadas no Debian), o sistema de pacotes de software se chama ''dpkg'' (Debian Package). Existem diferentes formas de instalar e remover sofware, dentre elas:
 +
# '''Diretamente a partir dos arquivos de pacote de software:''' esses arquivos têm extensão ''.deb'', e devem ser instalados por meio do programa [http://manpages.ubuntu.com/manpages/trusty/man1/dpkg.1.html dpkg]. Os arquivos ''.deb'' devem ser obtidos manualmente pelo usuário, podendo ser copiados de DVDs do sistema, ou obtidos de servidores na rede. Para removê-los, deve-se usar também o ''dpkg''.
 +
# '''Obtendo automaticamente pacotes de software de repositórios:''' essa forma de administrar os pacotes é muito mais fácil, pois os pacotes de software são obtidos de servidores de pacotes na rede. Ela se baseia num sistema de gerenciamento de pacotes chamado de APT, e pode ser realizada por meio dos aplicativos [http://manpages.ubuntu.com/manpages/trusty/en/man8/apt-get.8.html apt-get] ou [http://manpages.ubuntu.com/manpages/precise/en/man8/aptitude.8.html aptitude] (este é ainda mais fácil). Existem também versões gráficas para esses gerenciadores de pacotes.
  
 +
=== Instalação manual com ''dpkg'' ===
  
Estes outros aplicativos descobrem rotas e as mostram sobre um mapa mundial.
+
Para instalar pacotes de software manualmente, primeiro devem-se obter os respectivos arquivos de instalação. Cada pacote de software está contido em um arquivo com extensão ''.deb''. Esses arquivos podem ser obtidos dos CD e DVD de instalação, ou de repositórios na Internet. Exemplos:
* [http://traceroute.monitis.com/ Visual Trace Route Tool (EUA)]
+
* [http://ubuntu.c3sl.ufpr.br/ubuntu/ um repositório do Ubuntu no Brasil]
* [http://www.yougetsignal.com/tools/visual-tracert/ Visual Traceroute (EUA)]
+
* [http://archive.raspbian.org/raspbian/ Repositório para o Raspbian (Debian para o RaspberryPi)]
* [http://en.dnstools.ch/visual-traceroute.html Traceroute on a map (Alemanha)]
 
  
== Rotas no Linux ==
 
  
Cada computador ligado a Internet possui uma '''tabela de rotas'''. É por meio de tal tabela que ele sabe como transmitir os pacotes para cada destino. Em seu computador, você pode visualizar essa tabela da seguinte forma:
+
Cada arquivo de instalação deve ser instalado da seguinte forma:
  
 
<syntaxhighlight lang=bash>
 
<syntaxhighlight lang=bash>
# Isto funciona em qualquer *nix que se preze ...
+
dpkg -i nome_do_pacote.deb
netstat -rn
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
Se o pacote de software não puder ser instalado, uma mensagem de erro é apresentada. Uma causa para esse problema é existirem dependências em relação a outros pacotes de software, os quais devem então ser instalados previamente.
  
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'''''. Por exemplo, se uma interface de rede foi configurada com o endereço IP 192.168.10.1/16, sua tabela de rotas pode se apresentar assim:
+
 
 +
A remoção de um pacote de software pode ser feita assim:
  
 
<syntaxhighlight lang=bash>
 
<syntaxhighlight lang=bash>
aluno@M1:~> ifconfig eth1 192.168.10.1 netmask 255.255.0.0
+
dpkg -r nome_do_pacote
aluno@M1::~> netstat -rn
 
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
 
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
Se o pacote a ser removido for dependência para outros pacotes instalados, a remoção será abortada.
  
  
Usualmente, é suficiente definir uma única rota adicional para um computador, chamada de '''rota default''' (ou ''rota padrão''). Essa rota tem o seguinte significado: se o destino não estiver em minha própria subrede, e nenhuma outra rota específica existir para a subrede onde se encontra, então repasse o pacote para o roteador indicado. Em um computador Linux isso pode ser feito assim:
+
A listagem de todos os pacotes instalados pode ser obtida com este comando:
  
 
<syntaxhighlight lang=bash>
 
<syntaxhighlight lang=bash>
# adiciona a rota default, que passa pelo roteador 192.168.10.100
+
dpkg-query -l
route add default gw 192.168.10.100
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
+
A listagem dos arquivos instalados por um pacote é mostrada com este outro comando:
Outra forma de adicionar essa rota é:
 
  
 
<syntaxhighlight lang=bash>
 
<syntaxhighlight lang=bash>
# este comando tem o mesmo efeito que o anterior ...
+
dpkg-query -L nome_do_pacote
route add -net 0.0.0.0/0 gw 192.168.10.100
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Isso não parece complicado, e à primeira vista realmente não é :-) Ao se instalar um novo equipamento em uma rede, seja um computador, tablet, ponto de acesso ou smart TV, basta configurá-lo com a rota ''default'' para que possa se comunicar com a Internet. Na verdade, nem isso normalmente é necessário, pois esses equipamentos são capazes de se autoconfigurarem como mágica (mais tarde veremos como !). Porém existe uma matemática interessante por trás de como essas rotas funcionam, e vale dar uma olhada.
 
  
=== Rotas, prefixos de rede e máscaras ===
+
Informações detalhadas sobre um pacote podem ser mostradas assim:
  
Uma rota serve para informar como se chega a um determinado destino. Um destino pode ser um único endereço IP, ou uma subrede (que contém um conjunto de endereços IP). Para que um pacote IP chegue a um destino, deve-se transmiti-lo para o próximo roteador em direção a esse destino. Esse próximo roteador também deve conhecer uma rota para tal destino, repetindo o mesmo processo (reveja o experimento com '''traceroute''). Ao menos duas informações compõem cada rota:
+
<syntaxhighlight lang=bash>
* '''O próximo roteador, expressado por um endereço IP:''' o endereço IP do próximo roteador (também chamado de ''gateway'', que significa ''portal'' em inglês), o qual deve pertencer à mesma subrede do equipamento que o especifica em uma rota.
+
dpkg-query -p nome_do_pacote
* '''O destino, que é expressado como uma subrede:''' Uma subrede é representada por um ''prefixo de rede'' e uma ''máscara''. O prefixo são os ''N'' bits mais significativos comuns a todos os endereços IP contidos em uma subrede (lembre que um endereço IP tem 32 bits). A máscara informa quantos bits tem o prefixo. A combinação de prefixo de rede e máscara funciona da seguinte forma:
+
</syntaxhighlight>
  
Imagine que exista uma subrede contendo os endereços de 192.168.2.0 até 192.168.2.255. Se representarmos esses endereços em binário, podemos ver que os 24 bits mais significativos são os mesmos para todos os endereços:
+
=== Obtenção automática de software ===
  
 +
Os pacotes de softwares dos sistemas operacionais Ubuntu e Debian são organizados e disponibilizados em repositórios, que são servidores na Internet onde há cópias dos arquivos de instalação desses pacotes. Os repositórios são configurados durante a própria instalação do sistema, ficando registrados no arquivo [http://manpages.ubuntu.com/manpages/trusty/man5/sources.list.5.html /etc/apt/sources.list]. Esse arquivo pode ser modificado para incluir ou remover repositórios, quando necessário.
  
[[imagem:Pji-prefixo1.png|400px]]
 
  
 +
Um resumo dos comandos que podem ser usados com [http://manpages.ubuntu.com/manpages/trusty/en/man8/apt-get.8.html apt-get]:
 +
* '''apt-get update''': atualiza o catálogo de pacotes de software conhecidos. Isso implica consultar os repositórios configurados e transferir as listas de pacotes lá existentes. Isso é importante para ter acesso a versões atualizadas dos pacotes de software.
 +
* '''apt-get install nome_do_pacote''': instala o pacote de software chamado ''nome_do_pacote''. Se houver dependências de outros pacotes, eles também serão instalados.
 +
* '''apt-get remove nome_do_pacote''': remove o pacote de software chamado ''nome_do_pacote''. se outros pacotes dependerem desse pacote, eles também serão removidos.
 +
* '''apt-get clean''': remove as cópias dos arquivos de pacotes de software transferidos e não mais necessários.
 +
* '''apt-get upgrade''': atualiza todos os pacotes de software para suas versões mais recentes, caso existam.
  
A máscara de rede tem a forma de um endereço IP, porém com bits 1 na parte correspondente ao prefixo, e 0 no resto. Assim, para o exemplo acima a máscara de rede é ''255.255.255.0''. Outra forma de representar a máscara é simplesmente informar o tamanho em bits do prefixo, e no exemplo a máscara seria ''24''. Juntando o prefixo e a máscara, a subrede pode ser representada de uma destas duas formas:
 
* '''192.168.2.0/255.255.255.0'''
 
* '''192.168.2.0/24'''
 
  
 +
Um resumo dos comandos que podem ser usados com [http://manpages.ubuntu.com/manpages/trusty/en/man8/aptitude.8.html aptitude]:
 +
* '''aptitude update''': mesmo que ''apt-get update''
 +
* '''aptitude install nome_do_pacote''': mesmo que ''apt-get install''
 +
* '''aptitude remove nome_do_pacote''': mesmo que ''apt-get remove''
 +
* '''aptitude search nome''': lista todos os pacotes de software conhecidos cujos nomes contenham ''nome''
  
Agora imagine que o prefixo tenha 28 bits, como mostrado nesta figura:
+
=== Atividade ===
  
 +
''Execute os passos  seguintes tanto com instalação manual quanto automática de software.''
 +
# Instale estes softwares:
 +
#* mplayer
 +
#* mencoder
 +
#* handbrake
 +
#* pppoe
 +
#* hostapd
 +
#* vlan
 +
# Após instalá-los, obtenha suas descrições. Veja também as descrições destes outros softwares já instalados:
 +
#* bash
 +
#* iproute2
 +
#* iptables
 +
#* tcpdump
 +
# Liste todos os softwares instalados.
 +
# Remova os softwares instalados nos passos anteriores
 +
# Existe um projeto de software chamado ownCloud que, entre outras coisas, implementa um serviço parecido com Dropbox. Veja [https://software.opensuse.org/download/package?project=isv:ownCloud:desktop&package=owncloud-client este guia de instalação do ownCloud], e note que isso implica adicionar um repositório ao seu sistema operacional. Experimente seguir as instruções de instalação ali contidas.
 +
# Descubra como se podem instalar softwares em modo gráfico.
  
[[imagem:Pji-prefixo2.png|400px]]
+
{{Collapse bottom | Aula 19}}
  
 +
= 26/04: Projeto 2: acesso remoto ao computador =
  
Por ter um prefixo mais longo, o tamanho dessa subrede é menor. Isso significa que ela contém menos endereços IP, tanto que o primeiro endereço é ''192.168.2.0'' e o último é ''192.168.2.15''. Essa subrede poderia ser representada por:
+
{{Collapse top | Aula 20}}
* '''192.168.2.0/255.255.255.240'''
 
* '''192.168.2.0/28'''
 
  
 +
==Atividade sobre Instalação de softwares==
  
Aproveitando esse exemplo, pode-se mostrar uma outra subrede que, apesar de não parecer, é diferente da anterior:
+
# Obtenha uma lista de todos os ''softwares'' instalados: <code> dpkg-query -l</syntaxhighlight>
 +
# Baixe este [http://mirrors.kernel.org/ubuntu/pool/main/v/vlan/vlan_1.9-3ubuntu10_i386.deb pacote]
 +
# Instale este pacote manualmente usando o comando '''dpkg'''; <code> dpkg -i nome_pacote.deb</syntaxhighlight>
 +
# Obtenha a descrição deste pacote e a observe: <code> dpkg-query -p nome_pacote</syntaxhighlight>
 +
# Desinstale este pacote usando comando '''dpkg''': <code> dpkg -r nome_pacote</syntaxhighlight>
 +
# Instale o pacote '''openssh-server''': <code> apt-get install openssh-server </syntaxhighlight>
 +
# Obtenha a descrição deste pacote e a observe: <code> dpkg-query -p nome_pacote</syntaxhighlight>
 +
# Desinstale este pacote usando o comando: '''apt-get''': <code> apt-get remove nome_pacote</syntaxhighlight>
  
 +
== Acesso remoto ao computador ==
  
[[imagem:Pji-prefixo3.png|400px]]
+
Um dos objetivos do projeto é adquirir familiaridade com a operação do sistema operacional. Após a instalação do seu computador, pode-se aproveitar a oportunidade para experimentar algumas ações comuns de serem feitas nesse tipo de sistema. Dentre elas, o '''acesso e administração remota de um computador''' é de grande utilidade.
  
  
Essa outra subrede contém endereços entre ''192.168.2.16'' e ''192.168.2.31''. Essa subrede poderia ser representada por:
+
O acesso remoto a um computador com sistema Linux (e Unix em geral) pode ser feito de diversas maneiras. Alguns métodos possibilitam executar aplicativos gráficos remotamente, ou mesmo abrir toda a área de trabalho (''desktop''). Outros possibilitam somente obter um terminal de texto. Neste experimento o segundo tipo de acesso será usado, por ser mais simples, rápido e representativo.
* '''192.168.2.16/255.255.255.240'''
 
* '''192.168.2.16/28'''
 
  
=== Exercícios ===
+
O acesso remoto a um terminal de texto atualmente se faz com um aplicativo chamado [http://pt.wikipedia.org/wiki/SSH SSH (Secure Shell)]. Seu uso básico é bastante simples, bastando informar o endereço IP do computador onde se deseja fazer o acesso. Além disso, é necessário possuir uma conta de usuário nesse computador.
 
+
# No seu computador execute este comando para instalar o serviço SSH: <syntaxhighlight lang=bash>
Resolva estes exercícios sobre subredes, prefixos e máscaras.
+
sudo apt-get install openssh-server
 
+
</syntaxhighlight>
# O tamanho de uma subrede é definido pela quantidade de endereços IP que ela contém. Quais os tamanhos de cada subrede mostrada nos exemplos da seção anterior ?
+
# Descubra o endereço IP do seu computador.
# Sejam as subredes A: ''192.168.2.48/28'', B: ''192.168.2.64/26'', C: ''192.168.2.192/27'', D: ''192.168.2.128/29'' e E: ''192.168.2.0/27''. Informe em qual dessas subredes se encontram estes endereços IP:
+
# Abra um terminal em outro computador do laboratório, e conecte-se no novo computador usando o SSH: <syntaxhighlight lang=bash>
#* 192.168.2.126
+
ssh usuario@IP_do_computador_alvo
#* 192.168.2.25
+
</syntaxhighlight>
#* 192.168.2.62
+
# Experimente executar o ''pluma'' por meio desse acesso com SSH. Veja o resultado na tela gráfica do computador alvo. Execute-o desta forma: <syntaxhighlight lang=bash>
#* 192.168.2.200
+
env DISPLAY=:0 gedit
#* 192.168.2.100
+
</syntaxhighlight>
#* 192.168.2.80
+
# Termine a conexão executando este comando: <syntaxhighlight lang=bash>
# Informe qual o tamanho de cada uma das subredes do exercício anterior.
+
exit
# Informe quais o primeiro e último endereços IP de cada uma daquelas subredes.
+
</syntaxhighlight>
# A subrede 192.168.2.0/24 foi subdividida em subredes de tamanho 32. Liste todas as subredes que são possíveis definir com essas características (informe prefixo e máscara).
+
# Conecte novamente porém com este comando: <syntaxhighlight lang=bash>
# A subrede 192.168.2.0/24 foi subdividida em subredes com máscara 26. Liste todas as subredes que são possíveis definir com essas características (prefixo e máscara), informando também seus tamanhos.
+
ssh -X usuario@IP_do_computador_alvo
# Uma subrede do câmpus é 172.18.128.0/18. Calcule seu tamanho, seu endereço inicial e final.
+
</syntaxhighlight>
# Calcule o tamanho, endereço inicial e final da rede sem-fio do IFSC.
+
# Agora execute este programa: <syntaxhighlight lang=bash>
 
+
gedit
{{Collapse bottom | Aula 19}}
+
</syntaxhighlight>... e use-o para editar algum arquivo. Onde está esse arquivo que foi editado ?
 +
# Experimente executar este comando pelo SSH: <syntaxhighlight lang=bash>
 +
sudo poweroff
 +
</syntaxhighlight>
 +
# Outros comandos úteis para serem usados remotamente:
 +
#* [http://www.guiafoca.org/cgs/guia/iniciante/ch-run.html#s-run-ps ps]: mostra os processos existentes
 +
#* [http://www.guiafoca.org/cgs/guia/iniciante/ch-run.html#s-run-top top]: mostra os processos mais ativos, junto com diversas informações sobre a utilização do sistema
 +
#* [http://www.guiafoca.org/cgs/guia/iniciante/ch-run.html#s-run-kill kill]: mata um processo (ou apenas lhe envia um sinal ...)
 +
#* [http://www.guiafoca.org/cgs/guia/iniciante/ch-run.html#s-run-killall killall]: mata todos os processos de acordo com algum critério (ex: pelo nome)
 +
#* [http://www.guiafoca.org/cgs/guia/iniciante/ch-cmdd.html Comandos para manipulação de diretórios (pastas)]
 +
#* [http://www.guiafoca.org/cgs/guia/iniciante/ch-cmd.html Comandos para manipulação de arquivos]
 +
#* [http://www.guiafoca.org/cgs/guia/iniciante/ch-cmdc.html#s-cmdc-passwd passwd]: muda a senha de um usuário
 +
#* [http://www.guiafoca.org/cgs/guia/iniciante/ch-cmdc.html#s-cmdc-users users]: lista os usuários logados no sistema
 +
#* [http://www.guiafoca.org/cgs/guia/intermediario/ch-cmdn.html#s-cmdn-who who]: mostra quem está conectado a seu computador
 +
#* [http://www.guiafoca.org/cgs/guia/intermediario/ch-cmdn.html#s-cmdn-w w]: mostra quem está conectado em seu computador, e que programa está executando
 +
#* [http://www.guiafoca.org/cgs/guia/iniciante/ch-bas.html#s-basico-logout Saída do sistema]
  
= 30/05: Projeto 2: experimentando usar rotas =
+
Agora que vocês já sabem como acessar remotamente um computador que rode Linux, experimentem acessar trocar arquivos entre a máquina remota e a máquina local. Para isso, é utilizado o comando '''scp'''. Abaixo são apresentados alguns exemplos de uso do '''scp''':
  
{{Collapse top | Aula 20}}
+
{{collapse top|Exemplos de uso do comando scp}}
 +
<syntaxhighlight lang=bash>
 +
# Copia o arquivo teste.txt (que está na máquina local) para o diretório pessoal do aluno no computador 200.135.233.75
 +
# Note que "." é o diretório de destino no computador remoto, que corresponde ao diretório de trabalho
 +
# acessado pelo scp ... como o acesso foi realizado como usuário aluno,
 +
# "." corresponde ao diretório pessoal do aluno
 +
scp teste.txt aluno@200.135.233.75:.
  
Hoje devemos continuar a configuração da rede IP iniciada semana passada. Isso será usado para:
+
# Faz o inverso ... copia o arquivo teste.txt da máquina remota para o diretório atual da máquina local
* Verificar se computador de cada equipe se comunica em sua rede.
+
scp aluno@200.135.233.75:teste.txt .
* Isolar os computadores das equipes em suas redes
 
  
Este pequeno simulador de roteamento pode ser usado para experimentar outras redes:
+
# Agora copia todos os arquivos com extensão mp3 para o diretório "Downloads"
*[https://tele.sj.ifsc.edu.br/~msobral/IER/ipkit/ IPKit]
+
# no computador remoto
 +
scp *.mp3 aluno@200.135.233.75:Downloads/
  
== ATENÇÃO: TESTE DIA 01/06 (4a feira) ==
+
# Por fim, copia todos os arquivos .mp3 do computador remoto de volta para seu computador,
 
+
# para dentro do subdiretório "Musicas"
O teste tratará de particionamento de disco e endereçamento IP.
+
scp "aluno@200.135.233.75:Downloads/*.mp3" Musicas/
 +
</syntaxhighlight>
 +
{{collapse bottom}}
  
==Atividade 1 ==
+
{{Collapse bottom | Aula 20}}
  
Cada equipe deve imaginar que esteja usando uma subrede exclusiva. Para padronizar, as subredes devem ter esta numeração: ''192.168.1X.0/24'', sendo ''X'' o número da equipe. Com base nisso:
+
= 03/05: Projeto 2: configuração de rede =
# Configure o computador da equipe para usar um endereço dessa subrede.
 
# Tente se comunicar com computadores de outras equipes ... é possível ? O que se pode concluir quanto a isso ? Note que todas equipes usam a mesma rede física.
 
# Defina a ''rota padrão'' do seu computador, a qual deve apontar o último endereço IP válido da sua subrede (esse é o computador do professor).
 
# Repita o teste de comunicação com outras equipes. O resultado foi diferente ?
 
# Use o ''traceroute'' para entender como seu computador se comunica com computadores de outras equipes, e com computadores fora do Ifsc.
 
# Acrescente ao menos um computador à subrede de sua equipe. Use uma máquina virtual em algum computador do laboratório para fazer o papel do novo computador.
 
  
 +
{{Collapse top | Aula 21}}
 +
* configuração manual e permanente
 +
* revisar: endereços IPv4, máscara, rota default, servidor DNS (já visto em RCO)
  
A rede a ser implantada no laboratório se parece com esta:
+
=== Interfaces de rede ===
  
[[imagem:PJI1-Proj2-20161-lan1.jpg]]
+
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 [http://manpages.ubuntu.com/manpages/karmic/pt_BR/man8/ifconfig.8.html ifconfig]:
  
==Atividade 2 ==
+
Para mostrar todas as interfaces:
  
Nesta outra atividade, aproveitam-se as subredes exclusivas de cada equipe para criar uma outra rede no laboratório, que deve ter esta topologia:
+
<syntaxhighlight lang=bash>
 +
aluno@M1:~> ifconfig -a
 +
ppp0      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)
  
[[imagem:PJI1-Proj2-20161-lan2.jpg]]
+
eth0      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
  
OBS: execute este comando na máquina virtual. Ele é necessário para que a máquina virtual funcione como um gateway: <syntaxhighlight lang=bash>
+
lo        Link encap:Local Loopback
sudo sysctl -w net.ipv4.ip_forward=1
+
          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)
 +
aluno@M1:~>
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
==== Configuração manual e temporária ====
  
Assim como na atividade 1, os computadores nessa rede devem conseguir se comunicarem com a Internet, e também se comunicarem entre si. Para facilitar a atividade, devem-se usar máquinas virtuais com duas interfaces de rede ativadas.
+
Para configurar uma interface de rede (que fica automaticamente ativada):
 +
 
 +
<syntaxhighlight lang=bash>
 +
aluno@M1:~> ifconfig eth0 192.168.1.100 netmask 255.255.255.0
 +
</syntaxhighlight>
  
== O que todo host deve possuir ==
+
Para desativar uma interface:
  
Com o que se fez até o momento, pode-se concluir que todo host (computador, tablet, smartphone, ..., qualquer dispositivo que rode aplicações da Internet) precisa de:
+
<syntaxhighlight lang=bash>
* '''Endereço IP e máscara de rede''': um host precisa de um endereço para que posa se comunicar com outros hosts. A máscara de rede informa o tamanho da subrede IP em que ele se encontra.
+
aluno@M1:~> ifconfig eth0 down
* '''Rota default (padrão)''': para se comunicar com hosts de outras subredes, é preciso enviar os pacotes para um roteador que saiba encaminhá-los a seus destinos. O roteador ''default'' (ou ''padrão'') é um roteador para quem se destinam todos esses pacotes. Tecnicamente ele corresponde à rota para o destino ''0.0.0.0/0''.
+
</syntaxhighlight>
* '''Endereço IP do servidor DNS''': usuários costumam endereçar hosts e servidores por seus nomes de domínio, e não por seus endereços IP. Isso é muito mais fácil de memorizar do que os endereços numéricos. Como explicado em aula, nomes de domínio são análogos a nomes de assinantes em um catálogo telefônico. No entanto, as aplicações precisam dos endereços IP para se comunicarem. O servidor DNS faz a tradução de nome de domínio para endereço IP, e é usado pelas aplicações transparentemente (isso é, você não percebe que isso ocorre). O endereço desse servidor deve ser configurado em cada host, para que se possam traduzir nomes de domínio.
 
  
Foi visto também que cada sistema operacional guarda essas informações em arquivos específicos. O endereço do servidor DNS fica no arquivo ''/etc/resolv.conf'', e isso é o mesmo para todos os sistemas operacionais usados em aula. As demais informações ficam em arquivos diferentes, dependendo do sistema operacional. Por exemplo, sistemas da família Debian (o que inclui Ubuntu) guardam isso em:
+
Para ativar uma interface:
  
''/etc/network/interfaces''
+
<syntaxhighlight lang=bash>
 +
aluno@M1:~> ifconfig eth0 up
 +
</syntaxhighlight>
  
{{Collapse bottom | Aula 20}}
+
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'''''.
  
= 01/06: Projeto 2: experimentando usar rotas - continuação =
+
<syntaxhighlight lang=bash>
 +
aluno@M1:~> ifconfig eth0 192.168.10.0 netmask 255.255.0.0
 +
aluno@M1:~> netstat -rn
 +
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 eth0
 +
127.0.0.0      0.0.0.0        255.0.0.0      U        0 0          0 lo
 +
dayna@dayna:~>
 +
</syntaxhighlight>
  
= 06/06: Implantação das redes locais das equipes =
 
  
{{collapse top|Aula 22}}
+
Usualmente, é suficiente definir uma única rota adicional para um computador, chamada de '''rota default''' (ou ''rota padrão''). Essa rota tem o seguinte significado: se o destino não estiver em minha própria subrede, e nenhuma outra rota específica existir para a subrede onde se encontra, então repasse o pacote para o roteador indicado. Em um computador Linux isso pode ser feito assim:
* [http://tele.sj.ifsc.edu.br/~msobral/pji/EW-7209APg-Manual_080919.pdf Manual do Ponto de acesso sem-fio Edimax EW-7209APG]
 
* [http://tele.sj.ifsc.edu.br/~msobral/pji/tlwdr4300.pdf Manual do Roteador sem-fio TP-Link WDR 4300]
 
* [http://tele.sj.ifsc.edu.br/~msobral/pji/tlwr941n.pdf Manual do Roteador sem-fio TP-Link WR 941ND]
 
* [http://tele.sj.ifsc.edu.br/~msobral/pji/dlink-di-524.pdf Manual do Roteador sem-fio D-Link DI-524]
 
  
Cada equipe deve implantar sua própria rede local, composta pelo computador, um roteador e ponto de acesso sem-fio, e um ou mais dispositivos (hosts) adicionais. A rede portanto deve ficar parecida com o diagrama apresentado no início do projeto 2:
+
<syntaxhighlight lang=bash>
 +
# adiciona a rota default, que passa pelo roteador 192.168.10.100
 +
route add default gw 192.168.10.100
 +
</syntaxhighlight>
  
[[imagem:Pji1-projeto2.png|500px]]
 
  
 +
Para que o acesso a rede esteja completo, falta apenas configurar um servidor DNS para ser possível a tradução de nomes de domínio para endereços IP. Esta configuração pode ser feita da seguinte forma:
  
Por questões de disponibilidade, usaremos um equipamento que combina as funções de ''roteador'' e ''ponto de acesso (AP)''. Usaremos também um ''switch'' para interligar o computador de cada equipe e esse roteador.
+
<syntaxhighlight lang=bash>
 +
# Editar o arquivo /etc/resolv.conf
 +
vi /etc/resolv.conf
  
 +
#Editar o seu conteúdo e inserir a linha abaixo
 +
nameserver 200.135.37.65
 +
</syntaxhighlight>
  
O cenário no laboratório deve ser o seguinte:
 
  
[[imagem:Proj2-20142-lan.png]]
+
Além de toda a configuração básica apresentada acima, pode-se associar mais de um endereço a uma mesma interface de rede. Isto se chama '''''IP alias''''':
  
== Equipamentos de interligação para pequenas redes locais (LAN) ==
+
<syntaxhighlight lang=bash>
 +
aluno@M1:~> ifconfig eth0:0 192.168.1.110 netmask 255.255.255.0
 +
aluno@M1:~> ifconfig eth0:1 192.168.2.100 netmask 255.255.255.0
 +
aluno@M1:~> ifconfig -a
 +
eth0      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
  
Uma LAN serve para interconectar equipamentos (computadores, servidores, roteadores, ...) relativamente próximos entre si. As distâncias envolvidas são tipicamente de algumas dezenas de metros, podendo chegar em alguns casos a até poucas centenas de metros. Essas redes apresentam como características:
+
eth0:0    Link encap:Ethernet  HWaddr 00:19:D1:7D:C9:A9
* '''altas taxas de transmissão:''' o usual é 1 Gbps (1 bilhão de bits por segundo, que equivalem a cerca de 125 milhões de bytes por segundo). A geração anterior das LANs Ethernet operava a 100 Mbps (100 milhões de bits por segundo, ou dez vezes mais lento que as LANs de 1 Gbps), e ainda se encontram dispositivos que operam nessa taxa de transmissão.
+
          inet addr:192.168.1.110  Bcast:192.168.1.255  Mask:255.255.255.0
* '''baixo custo:''' as interfaces de rede dos equipamentos são baratas (algumas dezenas de R$), assim como os equipamentos de interconexão (switches) e cabos.
+
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
* '''alta qualidade de transmissão:''' essas redes são virtualmente isentas de erros de transmissão. Quando eles ocorrem, é sinal de má-instalação ou defeito em equipamentos.
+
          Interrupt:16 Base address:0xc000
  
Hoje em dia a tecnologia de rede usada para criar LANs se chama Ethernet (o nome oficial é [http://tele.sj.ifsc.edu.br/~msobral/RCO2/docs/ieee/802.3/ IEEE 802.3], que é o padrão que a define).
+
eth0: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
 +
aluno@M1:~>
 +
</syntaxhighlight>
  
LANs são muito difundidas. São usadas em redes domésticas, redes de pequenos escritórios, grandes redes corporativas, redes em escolas, e possivelmente outros ambientes. A rede do IFSC, que interliga os laboratórios e os servidores do câmpus, é composta de algumas LANs interconectadas. Em todos esses casos, a configuração usual das LANs envolve o uso de:
+
==== Configuração permanente ====
* '''dispositivos com interfaces de rede Ethernet''': dispositivos são computadores, roteadores, e demais equipamentos que se comunicam através da LAN.
 
* '''switches Ethernet para interligar os dispositivos''': [http://tele.sj.ifsc.edu.br/~msobral/pji/switch-dlink.png switches] funcionam como concentradores (na verdade, comutadores), onde todos os dispositivos são conectados por meio de cabos.
 
* '''cabos e conectores''': os cabos usados são do tipo par-trançado, porque dentro deles existem quatro pares trançados de fios. Para conectá-los se usam [http://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Ethernet_RJ45_connector_p1160054.jpg/220px-Ethernet_RJ45_connector_p1160054.jpg conectores RJ-45]. Esses cabos devem ter comprimento máximo de 100m.
 
  
 +
Todo 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 e Debian, a configuração de rede se concentra no arquivo [http://manpages.ubuntu.com/manpages/xenial/man5/interfaces.5.html /etc/network/interfaces]:
  
Para criar uma LAN, deve-se usar um switch com uma quantidade de portas igual ou maior que a quantidade de dispositivos a serem interligados. A figura abaixo mostra uma pequena LAN com um switch:
+
<syntaxhighlight lang=text>
 +
# 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 eth0
 +
iface lo inet loopback
 +
        address 127.0.0.1
 +
        netmask 255.0.0.0
  
[[imagem:Pji1-Lan1.png]]
+
# a interface ethernet eth1
 +
iface eth0 inet static
 +
address 192.168.1.100
 +
netmask 255.255.255.0
 +
gateway 192.168.1.254
 +
        dns-nameservers 200.135.37.65
 +
</syntaxhighlight>
  
 +
Esses arquivo é lido pelos scripts [http://manpages.ubuntu.com/manpages/xenial/en/man8/ifup.8.html ifup] e [http://manpages.ubuntu.com/manpages/xenial/en/man8/ifdown.8.html ifdown]. Esses scripts servem para ativar ou parar interfaces específicas, fazendo todas as operações necessárias para isto:
  
Em uma LAN, switches podem também ser interligados. Isso na prática aumenta a quantidade de dispositivos que podem existir na LAN, e também as distâncias entre eles (lembre que cada cabo tem um comprimento máximo da ordem de 100m):
+
<syntaxhighlight lang=bash>
 +
# Ativa a interface eth0
 +
ifup eth0
  
[[imagem:Pji1-Lan2.png]]
+
# Desativa a interface eth0
 +
ifdown eth0
 +
</syntaxhighlight>
  
 +
Para ativar, desativar ou recarregar as configurações de todas as interfaces de rede:
  
Se a LAN for composta de apenas dois dispositivos, então um switch se torna desnecessário. Assim, os dispositivos podem ser conectados diretamente:
+
<syntaxhighlight lang=bash>
 +
# desativa todas as interfaces de rede
 +
sudo /etc/init.d/networking stop
  
[[imagem:Pji1-Lan3.png]]
+
# ativa todas as interfaces de rede
 +
sudo /etc/init.d/networking start
  
== Atividade ==
+
# recarrega as configurações de todas as interfaces de rede
 +
sudo /etc/init.d/networking restart
 +
</syntaxhighlight>
  
Usando os equipamentos fornecidos implante a rede local da sua equipe. Siga atentamente o diagrama que mostra como sua rede se relaciona com a rede do laboratório.
+
== O que todo host deve possuir ==
  
{{collapse bottom}}
+
Com o que se fez até o momento, pode-se concluir que todo host (computador, tablet, smartphone, ..., qualquer dispositivo que rode aplicações da Internet) precisa de:
 +
* '''Endereço IP e máscara de rede''': um host precisa de um endereço para que possa se comunicar com outros hosts. A máscara de rede informa o tamanho da subrede IP em que ele se encontra.
 +
* '''Rota default (padrão)''': para se comunicar com hosts de outras subredes, é preciso enviar os pacotes para um roteador que saiba encaminhá-los a seus destinos. O roteador ''default'' (ou ''padrão'') é um roteador para quem se destinam todos esses pacotes. Tecnicamente ele corresponde à rota para o destino ''0.0.0.0/0''.
 +
* '''Endereço IP do servidor DNS''': usuários costumam endereçar hosts e servidores por seus nomes de domínio, e não por seus endereços IP. Isso é muito mais fácil de memorizar do que os endereços numéricos. Como explicado em aula, nomes de domínio são análogos a nomes de assinantes em um catálogo telefônico. No entanto, as aplicações precisam dos endereços IP para se comunicarem. O servidor DNS faz a tradução de nome de domínio para endereço IP, e é usado pelas aplicações transparentemente (isso é, você não percebe que isso ocorre). O endereço desse servidor deve ser configurado em cada host, para que se possam traduzir nomes de domínio.
  
= 08/06: Projeto 2: a rede de cada equipe =
+
{{Collapse bottom | Aula 21}}
  
{{collapse top | Aula 23}}
+
= 05/05: Projeto 2: Rotas =
Dando continuidade à implantação da rede de cada equipe, hoje devem-se investigar:
 
* a configuração automática de rede dos hosts
 
* o uso de NAT no roteador
 
* o funcionamento básico de alguns equipamentos da rede
 
  
== Configuração automática de hosts ==
+
{{Collapse top | Aula 22}}
 +
Como visto anteriormente, cada dispositivo em uma rede precisa ter um endereço IP para que possa se comunicar com outros dispositivos. Porém isso não é suficiente: os dispositivos devem saber que '''direção''' devem enviar mensagens para que cheguem até cada outro dispositivo. Se o dispositivo de destino estiver na mesma rede, então basta transmitir o pacote a ele diretamente. Mas e se ele estiver em outra rede ? Por exemplo, e se um computador no laboratório de Redes 1 quiser se comunicar com outro que está na reitoria do IFSC ? Como esse pacote deve ser transmitido nesse caso?
  
Na prática ninguém precisa se preocupar em configurar seus dispositivos com as informações de rede vistas na aula anterior. As pessoas acessam a rede e por mágica tudo isso é configurado automaticamente. Basta pensar no acesso à rede sem-fio do Ifsc, e mesmo nas redes de suas casas ou locais de trabalho, seja sem-fio ou cabeada. A configuração manual somente é necessária quando se instalam servidores ou outros equipamentos que formam a infraestrutura das redes. No caso geral, um serviço especial chamado de DHCP (''Dyamic Host Configuration Protocol - Protocolo de Configuração Dinâmica de Host'') provê a configuração automática.
 
  
 +
[[imagem:Pji-projeto2-rotas.png|500px]]
  
[http://www.tcpipguide.com/free/t_TCPIPDynamicHostConfigurationProtocolDHCP.htm DHCP] (''Dynamic Host Configuration Protocol'') é um protocolo para obtenção automática de configuração de rede, usado por computadores que acessam fisicamente uma rede. Esses computadores são tipicamente máquinas de usuários, que podem usar a rede esporadicamente (ex: usuários com seus laptops, com acesso via rede cabeada ou sem-fio), ou mesmo computadores fixos da rede. O principal objetivo do DHCP é fornecer um endereço IP, a máscara de rede, o endereço IP do roteador default e um ou mais endereços de servidores DNS. Assim, um novo computador que acesse a rede pode obter essa configuração sem a intervenção do usuário.
 
  
 +
Antes de prosseguir na investigação desse assunto, é necessário uma visão geral sobre redes de computadores e a Internet. Isso deve ajudar a entender como as comunicações acontecem nessa grande rede.
 +
* [[Comunica%C3%A7%C3%A3o_de_dados|Comunicação de dados e a Internet]]
  
Para esse serviço deve existir na rede ao menos um servidor DHCP, que pode estar em um roteador, ponto de acesso sem-fio, ou mesmo em um outro computador. Quer dizer, em um desses equipamentos pode haver um programa que envia mensagens de configuração automática a novos dispositivos que entrem na rede.
 
  
 +
No diagrama que mostra simplificadamente a rede do projeto 2, a rede externa é representada como uma nuvem. Isso significa que sua estrutura interna é desconhecida, ou não é relevante mostrá-la. No caso da Internet, na verdade seria impossível apresentar toda sua estrutura, pois essa rede hoje em dia é gigantesca, além de estar sempre em mutação. Mas ao menos um esboço da rede do Ifsc pode ser apresentado, como se pode ver a seguir. Ao visualizá-la, deve-se novamente imaginar como é possível encaminhar pacotes através dela, de forma que cheguem a seus destinos.
  
Um computador que precise obter sua configuração de rede envia mensagens DHCPDISCOVER em broadcast. Um servidor DHCP, ao receber tais mensagens, responde com uma mensagem DHCPOFFER também em broadcast, contendo uma configuração de rede ofertada. O computador então envia novamente em broadcast uma mensagem DHCPREQUEST, requisitando o endereço IP ofertado pelo servidor. Finalmente, o servidor responde com uma mensagem DHCPACK, completando a configuração do computador cliente. Como a configuração tem um tempo de validade (chamado de ''lease time - tempo de aluguel''), o cliente deve periodicamente renová-la junto ao servidor DHCP, para poder continuar usando-a. O diagrama abaixo mostra simplificadamente esse comportamento:
 
  
[[imagem:Pji1-Dhcp.jpeg|400px]]
+
[[imagem:Ifsc.png|600px]]
 +
<br>''Uma visão geral da rede do Ifsc (e bem simplificada !)''
  
  
Essa troca de mensagens entre clientes e servidor DHCP ocorre somente dentro da mesma rede local. Portanto um cliente não consegue em princípio obter sua configuração de rede de um servidor DHCP que esteja em outra rede local (isso é, se existir um ou mais roteadores entre eles).
+
Em primeiro lugar, deve-se imaginar como a Internet está implantada (ao menos do ponto de vista das subredes). A palavra ''internet'' significa ''rede composta por redes'', e, no caso da ''Internet'', cada uma das redes que a constitui é chamada de [http://pt.wikipedia.org/wiki/Sub-rede ''subrede'']. Se alguém pudesse ver o mapa da Internet, pareceria uma grande malha, com milhares de fios (enlaces) se entrelaçando. Nas junções desses fios estão equipamentos que '''roteiam''' (''direcionam'') pacotes a seus destinos. Os equipamentos finais, que são usados por pessoas para rodas os aplicativos de rede, estão na borda de toda essa malha ... nas pontas dos fios. No fim, isso parece um grande mapa, e como tal ele pode ser percorrido por um ou mais caminhos para se ir de um ponto a outro.
  
'''Questão:''' como o servidor DHCP diferencia os clientes em uma rede ? Para entender esta pergunta, faça este experimento:
 
# Ative dois hosts na rede do laboratório, e anote os endereços que cada um obteve.
 
# Desligue ambos os hosts.
 
# Agora ative apenas um deles, e observe o endereço IP obtido.
 
# Faça o mesmo com o segundo host.
 
# Houve diferença entre os endereços obtidos em cada etapa ?
 
  
== Uso de NAT no roteador ==
+
{| border=0
 
+
!''Um mapa da Internet (bem abstrato ...)''
* [http://pt.wikipedia.org/wiki/Network_address_translation NAT na Wikipedia]
+
!Rede Ipê: a Rede Nacional de Pesquisa que originou a Internet no Brasil
* [http://labcisco.blogspot.com.br/2014/09/cgnat-na-transicao-ipv6-solucao-ou-vilao.html CGNAT: NAT usado em larga escala por operadoras de Telecom]
+
|-
 +
|[[imagem:Internet-map.png|600px]] || [[imagem:Rede-ipe-2014.jpg|600px]]
 +
|}
  
  
Endereços IP são números de 32 bits, o que significa existirem pouco mais de 4 bilhões de diferentes endereços possíveis (exatamente 4.294.967.296 endereços). Parece muito, porém os endereços IP disponíveis estão praticamente esgotados. Não significa que existam mais de 4 bilhões de equipamentos de rede usando esses endereços, mas sim que todas as subredes distribuídas já contêm quase todos esses endereços. Quer dizer, se uma empresa recebe o direito de usar uma subrede com máscara /24 (255.255.255.0, o que resulta em uma subrede com 256 endereços), todos os endereços ali contidos não podem ser reaproveitados por outras empresas ou organizações, mesmo que não nem todos estejam sendo de fato usados. Por isso nos anos 1990 os orgãos que administram os endereços da Internet tomaram duas iniciativas para lidar com o esgotamento de endereços IP disponíveis.
+
Essa analogia do mapa pode ser experimentada usando o [http://maps.google.com Google Maps]. Experimente traçar caminhos entre o IFSC-SJ e vários destinos (mesmo em outras cidades), e visualize como ele descobre o caminho. Observe também que critério é usado para escolher o caminho ... pois é normal que exista mais de uma opção.
  
 +
Mas o que isso tem a ver com redes ? Muita coisa: a forma com que o Google Maps descobre caminhos se baseia nos mesmos conceitos usados para descobrir '''rotas''' entre dispositivos na Internet. E voltando a redes de computadores, também é possível descobrir que caminho os pacotes percorrem para ir de um ponto a outro na Internet.
  
A primeira iniciativa foi desenvolver uma nova versão do protocolo IP, a qual usaria endereços nem maiores e virtualmente inesgotáveis. Isso fez surgir o protocolo IPv6, cujos endereços têm 128 bits. A quantidade de endereços possíveis é tão grande, que torna difícil compará-la com coisas conhecidas. Para ter uma ideia, existem em torno de <math>3.4~x~10^{38}</math> endereços IPv6 (a quantidade exata é 340.282.366.920.938.463.463.374.607.431.768.211.456 endereços), ou 340 trilhões de trilhões de trilhões ... Por mais que se abuse na forma com que esses endeeços devem ser distribuídos, supõe-se que eles nunca se esgotem (?!). Porém o projeto desse novo protocolo demorou vários anos, e ainda hoje ele não foi adotado em larga escala na Internet.
+
'''Experimento:''': use o programa [http://manpages.ubuntu.com/manpages/hardy/man8/traceroute-nanog.genuine.8.html traceroute] para descobrir os caminhos percorridos por seus pacotes. Teste-o com vários possíveis destinos:
 
+
* www.ufsc.br
 +
* www.unicamp.br
 +
* www.brasil.gov.br
 +
* www.nasa.gov
 +
* english.pravda.ru
 +
* www.china.org.cn
 +
* finland.fi
  
A segunda iniciativa se chamou NAT (''Network Address Tanslation - Tradução de Endereço de Rede'') e teve por objetivo criar uma forma de reaproveitar endereços IP. Para isso, algumas subredes ficaram reservadas, não sendo distribuídas para nenhum empresa ou organização, e são elas:
+
O que significam as informações mostradas por esse programa ?
* 10.0.0.0/8
 
* 192.168.0.0/16
 
* 172.16.0.0/12
 
A ideia é que redes com computadores que só acessam a Internet, mas não são servidores, usem essas subredes (ou parte delas). Essas subredes não são roteáveis, o que significa que os roteadores da infraestrutura da Internet não as conhecem e não sabem como encontrá-las. Por fim, para que computadores dessas redes consigam acessar a Internet, deve nelas existir ao menos um roteador que possua um endereço IP roteável (chamado também de IP válido). Esse roteador deve também possuir uma função especial que modifique os endereços IP de origem contidos nos pacotes que saem em direção a Internet. O endereço IP de origem desses pacotes deve se tornar o endereço IP roteável do roteador. Com isso, os servidores na Internet que receberem esses pacotes poderão respondê-los, pois o endereço de origem é roteável. A figura a seguir ilustra o funcionamento do NAT.
 
  
  
[[imagem:Pji1-Nat2.png|500px]]
+
Estes outros aplicativos descobrem rotas e as mostram sobre um mapa mundial.
<br>''Uma rede com roteador NAT''
+
* [http://traceroute.monitis.com/ Visual Trace Route Tool (EUA)]
 +
* [http://www.yougetsignal.com/tools/visual-tracert/ Visual Traceroute (EUA)]
 +
* [http://en.dnstools.ch/visual-traceroute.html Traceroute on a map (Alemanha)]
  
 +
== Rotas no Linux ==
  
# Dentro da rede interna, pacotes que saem têm endereço de origem da rede interna (ex: 10.0.0.5)
+
Cada computador ligado a Internet possui uma '''tabela de rotas'''. É por meio de tal tabela que ele sabe como transmitir os pacotes para cada destino. Em seu computador, você pode visualizar essa tabela da seguinte forma:
# Ao atravessarem o roteador, seus endereços IP de origem são substituídos pelo endereço IP roteável do roteador (no caso, 14.1.23.5)
 
# O servidor na Internet recebe um pacote que parece ter vindo do roteador NAT, pois seu endereço de origem é 14.1.23.5. O pacote de resposta desse servidor é então endereçado para esse IP.
 
# O pacote de resposta chega ao roteador, que reescreve seu endereço IP de destino para o endereço IP original da rede interna
 
  
 +
<syntaxhighlight lang=bash>
 +
# Isto funciona em qualquer *nix que se preze ...
 +
netstat -rn
 +
</syntaxhighlight>
  
Hoje em dia todos roteadores, mesmo os mais simples, têm a função NAT. Para que o NAT funcione, basta acessar a interface de gerenciamento do equipamento e ativá-lo. De fato, na maioria desses roteadores o NAT já vem ativado de fábrica. Com isso eles podem ser instalados facilmente, possibilitando que computadores de suas redes acessem a Internet. o NAT funcionou tão bem para o usuário médio da Internet, que pode ter sido um fator significativo para o atraso na adoção do novo protocolo IPv6.
 
  
=== Experimentos com NAT ===
+
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'''''. Por exemplo, se uma interface de rede foi configurada com o endereço IP 192.168.10.1/16, sua tabela de rotas pode se apresentar assim:
  
O IFSC usa NAT ? Descubra por meio deste site:
+
<syntaxhighlight lang=bash>
* [http://whatismyipaddress.com/ Qual meu endereço IP ?]
+
aluno@M1:~> ifconfig eth1 192.168.10.1 netmask 255.255.0.0
 +
aluno@M1::~> netstat -rn
 +
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
 +
</syntaxhighlight>
  
  
A rede instalada aula passada está com NAT desativado. Ative o NAT no roteador e teste a comunicação entre os computadores de sua rede e:
+
Usualmente, é suficiente definir uma única rota adicional para um computador, chamada de '''rota default''' (ou ''rota padrão''). Essa rota tem o seguinte significado: se o destino não estiver em minha própria subrede, e nenhuma outra rota específica existir para a subrede onde se encontra, então repasse o pacote para o roteador indicado. Em um computador Linux isso pode ser feito assim:
* O computador do professor (192.168.1.1)
 
* O servidor DNS do Google (8.8.8.8)
 
* Um servidor web à sua escolha
 
* Os computadores das outras equipes
 
  
 +
<syntaxhighlight lang=bash>
 +
# adiciona a rota default, que passa pelo roteador 192.168.10.100
 +
route add default gw 192.168.10.100
 +
</syntaxhighlight>
  
Há alguma diferença em relação à rede sem NAT ? Caso afirmativo, qual ? E que implicações pode ter o NAT no roteamento em uma rede ?
 
  
== Atividade ==
+
Outra forma de adicionar essa rota é:
 
 
Agora que seus roteadores usam NAT, investigue a comunicação entre computadores de diferentes equipes. Um simples ''ping'' de uma equipe para outra é suficiente. Investigue também o acesso externo com SSH ao computador da equipe. O objetivo é conseguir acessá-lo com SSH mesmo estando fora da rede da equipe.
 
  
 +
<syntaxhighlight lang=bash>
 +
# este comando tem o mesmo efeito que o anterior ...
 +
route add -net 0.0.0.0/0 gw 192.168.10.100
 +
</syntaxhighlight>
  
'''Dicas:'''
 
* Leiam o manual do equipamento
 
* Pesquisem sobre termos tais como DMZ, redirecionamento de port (''port redirection'') e ''virtual server''. Sempre associem esses termos à palavra-chave NAT em seus buscas.
 
* Desenhem suas redes, evidenciando os endereços IP envolvidos nos equipamentos e as aplicações usadas para os testes.
 
  
{{collapse bottom}}
+
Por fim, uma rota para um destino qualquer pode ser feita assim (supondo que a rede de destino seja 191.36.9.0/24):
  
= 13/06: Projeto 2: estabelecendo o enlace WAN =
+
<syntaxhighlight lang=bash>
 +
# este comando define que para chegar à rede 191.36.9.0/24
 +
# deve-se usar o gateway 192.168.1.1
 +
route add -net 191.36.9.0/24 gw 192.168.1.1
 +
</syntaxhighlight>
  
{{collapse top | Aula 24}}
 
  
O próximo passo do projeto 2 envolve estabelecer o enlace WAN da rede de cada equipe. Através desse enlace a rede da equipe pode acessar a Internet. Alguns detalhes devem ser entendidos para que essa comunicação funcione a contento. A ideia é que a rede fique assim:
+
Isso não parece complicado, e à primeira vista realmente não é :-) Ao se instalar um novo equipamento em uma rede, seja um computador, tablet, ponto de acesso ou smart TV, basta configurá-lo com a rota ''default'' para que possa se comunicar com a Internet. Na verdade, nem isso normalmente é necessário, pois esses equipamentos são capazes de se autoconfigurarem como mágica (mais tarde veremos como !). Porém existe uma matemática interessante por trás de como essas rotas funcionam, e vale dar uma olhada.
  
 +
=== Rotas, prefixos de rede e máscaras ===
  
[[imagem:Pji1-Projeto3-final.png|800px]]
+
Uma rota serve para informar como se chega a um determinado destino. Um destino pode ser um único endereço IP, ou uma subrede (que contém um conjunto de endereços IP). Para que um pacote IP chegue a um destino, deve-se transmiti-lo para o próximo roteador em direção a esse destino. Esse próximo roteador também deve conhecer uma rota para tal destino, repetindo o mesmo processo (reveja o experimento com '''traceroute''). Ao menos duas informações compõem cada rota:
 +
* '''O próximo roteador, expressado por um endereço IP:''' o endereço IP do próximo roteador (também chamado de ''gateway'', que significa ''portal'' em inglês), o qual deve pertencer à mesma subrede do equipamento que o especifica em uma rota.
 +
* '''O destino, que é expressado como uma subrede:''' Uma subrede é representada por um ''prefixo de rede'' e uma ''máscara''. O prefixo são os ''N'' bits mais significativos comuns a todos os endereços IP contidos em uma subrede (lembre que um endereço IP tem 32 bits). A máscara informa quantos bits tem o prefixo. A combinação de prefixo de rede e máscara funciona da seguinte forma:
  
 +
Imagine que exista uma subrede contendo os endereços de 192.168.2.0 até 192.168.2.255. Se representarmos esses endereços em binário, podemos ver que os 24 bits mais significativos são os mesmos para todos os endereços:
  
Nessa rede, a infraestrutura de acesso ADSL é provida pelo IFSC, tendo os professores como técnicos responsáveis. O enlace ADSL oferece '''um único IP''' para cada equipe, o qual ficará associado à interface externa (WAN) do roteador ADSL. Por fim, não é necessária autenticação para a ativação desse enlace.
 
  
Implante sua rede usando o roteador ADSL, e use-o para acessar a Internet. Experimente também o seguinte:
+
[[imagem:Pji-prefixo1.png|400px]]
* Meça qual a taxa de download máxima por esse enlace.
 
* Meça a taxa de upload máxima por esse enlace.
 
* Estando fora de sua rede, acesse o seu computador Kodi com o aplicativo [http://en.wikipedia.org/wiki/Secure_Shell SSH].
 
  
== ATENÇÃO: TESTE PRÓXIMA 4A FEIRA (15/06) ==
 
  
O teste envolverá subredes IP e o uso do roteador para interligar redes.
+
A máscara de rede tem a forma de um endereço IP, porém com bits 1 na parte correspondente ao prefixo, e 0 no resto. Assim, para o exemplo acima a máscara de rede é ''255.255.255.0''. Outra forma de representar a máscara é simplesmente informar o tamanho em bits do prefixo, e no exemplo a máscara seria ''24''. Juntando o prefixo e a máscara, a subrede pode ser representada de uma destas duas formas:
 +
* '''192.168.2.0/255.255.255.0'''
 +
* '''192.168.2.0/24'''
  
== Uma introdução a ADSL ==
 
  
* [http://tele.sj.ifsc.edu.br/~msobral/RCO2/docs/adsl.pdf Uma visão geral sobre aDSL(com alguns detalhes)]
+
Agora imagine que o prefixo tenha 28 bits, como mostrado nesta figura:
* [http://tele.sj.ifsc.edu.br/~msobral/RCO2/docs/dslam.pdf Uma descrição sobre DSLAM]
+
 
* [http://tele.sj.ifsc.edu.br/~msobral/RCO2/docs/dsl-technologies.pdf Outro bom texto sobre ADSL]
 
* [http://tele.sj.ifsc.edu.br/~msobral/RCO2/docs/gdslarch.pdf Tipos de enlace que se podem criar com ADSL]
 
* [http://www.kitz.co.uk/adsl/adsl_technology.htm Um guia rápido e bastante explicativo sobre ADSL (principalmente a modulação)]
 
  
<!-- [[imagem:Dsl-network.gif]] -->
+
[[imagem:Pji-prefixo2.png|400px]]
  
ADSL (Asymetric Digital Subscriber Line) é uma tecnologia para provimento de enlace de dados para assinantes de linhas telefônicas residenciais. Ao contrário da modems analógicos (ex: [http://en.wikipedia.org/wiki/V.92 V.92]), ADSL não está limitado à largura de banda de canal de voz (~ 4kHz). Com isso, podem-se obter taxas de dados muito superiores, dependendo da versão de ADSL em uso. A tabela abaixo ilustra os vários padrões ADSL existentes e suas características.
 
  
 +
Por ter um prefixo mais longo, o tamanho dessa subrede é menor. Isso significa que ela contém menos endereços IP, tanto que o primeiro endereço é ''192.168.2.0'' e o último é ''192.168.2.15''. Essa subrede poderia ser representada por:
 +
* '''192.168.2.0/255.255.255.240'''
 +
* '''192.168.2.0/28'''
  
[[imagem:Adsl-taxas.png]]
 
<br>''Tabela de versões de ADSL e suas características.<br>Obtido em http://en.wikipedia.org/wiki/Asymmetric_digital_subscriber_line#ADSL_standards''
 
  
 +
Aproveitando esse exemplo, pode-se mostrar uma outra subrede que, apesar de não parecer, é diferente da anterior:
  
ADSL consegue obter taxas de dados muito superiores às de modems analógicos (que chegavam no máximo a 56 kbps) porque na verdade não usa um canal de voz. A ideia é usar a fiação telefônica para estabelecer um enlace de dados entre o assinante residencial e a operadora, mas não a rede telefônica em si. Por isso que com ADSL pode-se ter o enlace de dados e falar ao telefone ao mesmo tempo. Para isso, na central onde chega a linha do assinante é feita uma separação entre o sinal de dados e o de voz: o de dados vai para uma rede de dados, e o de voz segue pela infraestrutura de telefonia. Em consequência, é necessário haver uma rede de dados separada da rede telefônica. A figura a seguir ilustra um enlace ADSL para um assinante residencial, evidenciando os componentes da infraestrutura da rede dados.
 
  
 +
[[imagem:Pji-prefixo3.png|400px]]
  
[[imagem:Dsl-architecture.png]]
 
  
 +
Essa outra subrede contém endereços entre ''192.168.2.16'' e ''192.168.2.31''. Essa subrede poderia ser representada por:
 +
* '''192.168.2.16/255.255.255.240'''
 +
* '''192.168.2.16/28'''
  
A separação entre os canais de voz e de dados, feita por um ''filtro passa-baixa'', está destacada na figura abaixo:
+
=== Exercícios ===
  
[[imagem:Adsl-model.png]]
+
Resolva estes exercícios sobre subredes, prefixos e máscaras.
  
Na infraestrutura ADSL, cabem destacar alguns elementos:
+
# O tamanho de uma subrede é definido pela quantidade de endereços IP que ela contém. Quais os tamanhos de cada subrede mostrada nos exemplos da seção anterior ?
* '''modem ADSL:''' equipamento responsável pela ponta do enlace do lado do assinante, fazendo os encapsulamentos das PDUs dos protocolos envolvidos nesse enlace, e a modulação do sinal digital resultante.
+
# Sejam as subredes A: ''192.168.2.48/28'', B: ''192.168.2.64/26'', C: ''192.168.2.192/27'', D: ''192.168.2.128/29'' e E: ''192.168.2.0/27''. Informe em qual dessas subredes se encontram estes endereços IP:
* '''DSLAM (DSL Access Multiplexer):''' multiplexador de acesso ADSL, que recebe as linhas dos assinantes do lado da operadora. Esse componente faz a intermediação entre os assinantes e a rede de dados da operadora. Dentre suas atribuições, destacam-se a modulação do sinal das linhas dos assinantes, a limitação das taxas de ''downstream'' e ''upstream'' de acordo com o contratado pelos assinantes, e as conversões de protocolos de enlace (quando necessárias) para a rede da operadora. No entanto.
+
#* 192.168.2.126
* '''splitter:''' filtro que separa os sinais de voz e de dados. São usados tanto do lado do assinante quanto no DSLAM.
+
#* 192.168.2.25
* '''AC (concentrador de acesso):''' equipamento que concentra as pontas dos enlaces de dados dos assinantes no lado da rede da operadora.  
+
#* 192.168.2.62
 +
#* 192.168.2.200
 +
#* 192.168.2.100
 +
#* 192.168.2.80
 +
# Informe qual o tamanho de cada uma das subredes do exercício anterior.
 +
# Informe quais o primeiro e último endereços IP de cada uma daquelas subredes.
 +
# A subrede 192.168.2.0/24 foi subdividida em subredes de tamanho 32. Liste todas as subredes que são possíveis definir com essas características (informe prefixo e máscara).
 +
# A subrede 192.168.2.0/24 foi subdividida em subredes com máscara 26. Liste todas as subredes que são possíveis definir com essas características (prefixo e máscara), informando também seus tamanhos.
 +
# Uma subrede do câmpus é 172.18.128.0/18. Calcule seu tamanho, seu endereço inicial e final.
 +
# Calcule o tamanho, endereço inicial e final da rede sem-fio do IFSC.
 +
# Use este [http://tele.sj.ifsc.edu.br/~msobral/IER/ipkit/ simulador (IPKit)] para criar as seguintes redes e definir as rotas que nelas devem existir:
 +
#* '''OBS:''' antes de usar esse simulador execute este comando em um terminal:<syntaxhighlight lang=bash>
 +
sudo apt install icedtea-7-plugin
 +
</syntaxhighlight>... e depois reinicie o Firefox.
  
A parte da infraestrutura ADSL dentro da rede de dados da operadora inclui equipamentos DSLAM (muitos deles), um ou mais AC e as redes de comunicação para interligá-los. Note-se que quem dá acesso de fato à Internet é o AC. A figura abaixo ilustra esses componentes.
 
  
[[imagem:Dslam-infra.png]]
+
{| border=1
 +
|-
 +
| [[imagem:PJI2-rotas-Rede1.jpg|300px]]<br>''Rede 1''
 +
|-
 +
|[[imagem:PJI2-rotas-Rede2.jpg|400px]]<br>''Rede 2''
 +
|-
 +
|[[imagem:PJI2-rotas-Rede3.jpg|400px]]<br>''Rede 3''
 +
|-
 +
|[[imagem:PJI2-rotas-Rede4.jpg|400px]]<br>''Rede 4''
 +
|}
  
O enlace de dados entre o equipamento do assinante e a rede da operadora pode ser feita de diferentes formas. Esse enlace é visto pelo assinante como seu enlace para a Internet - i.e. ele obtém seu endereço IP fornecido pela operadora. Os tipos de enlace de dados ADSL mais usados são:
 
* '''PPPoE (PPP over Ethernet):''' cria um enlace ponto-a-ponto com protocolo PPP, cujos quadros são encapsulados em quadros Ethernet. Esta é a forma mais utilizada para assinantes residenciais.
 
* '''PPPoA (PPP over ATM):''' cria um enlace ponto-a-ponto com protocolo PPP, cujos quadros são encapsulados em mensagens AAL5 da arquitetura ATM.
 
* '''EoA (Ethernet over ATM):''' cria um enlace Ethernet, cujos quadros são encapsulados em mensagens AAL5 da arquitetura ATM.
 
  
 +
Esse exercício pode também ser realizado com um emulador de rede chamado [[Netkit2]]:
 +
* [http://tele.sj.ifsc.edu.br/~msobral/pji2/rotas1/ Arquivos de configuração das redes]
 +
{{Collapse bottom | Aula 22}}
  
O enlace PPPoE funciona como se tivesse um link ponto-a-ponto entre o roteador ADSL e um concentrador de acesso (AC). Quer dizer, parece que existe um fio ligando diretamente esses dois equipamentos, apesar de na realidade existir toda uma infraestrutura entre os dois. Isso pode ser visualizado na figura abaixo. Em cada ponta desse link PPPoE há um endereço IP usado pelos respectivos equipamentos.
+
= 10/05: Projeto 2: Rotas =
  
[[imagem:Enlace-pppoe.png]]
+
{{Collapse top | Aula 23}}
 +
Hoje serão implantadas duas redes para aplicar conhecimentos sobre roteamento estático. As redes serão virtualizadas, o que agiliza a montagem de cada cenário, usando o software [[Netkit2]]. Esse software está disponível nos computadores do laboratório, no menu ''Aplicativos->Educacional''. As redes a serem implantadas já estão prontas, sendo descritas por arquivos específicos usados por esse software.
  
== ATIVIDADE ==
+
<!-- Este pequeno simulador de roteamento pode ser usado para experimentar outras redes:
 +
*[https://tele.sj.ifsc.edu.br/~msobral/IER/ipkit/ IPKit]
 +
-->
  
Cada equipe deve estabelecer seu enlace WAN usando ADSL. Em seguida, deve validar seu computador na rede, de forma que possa ser acessado com SSH de fora da sua rede.
+
==Atividade 1 ==
  
=== Configurações ADSL ===
+
* [http://tele.sj.ifsc.edu.br/~msobral/pji2/rotas2/rede1.conf Arquivo de configuração da rede]
  
Cada link ADSL deve ter seu IP manualmente configurado, o qual deve ser um IP válido fornecido à equipe pelo provedor (professores).
+
Nesta atividade devem-se configurar os endereços IP dos computadores da rede, e as rotas necessárias para que todos computadores consigam se comunicar mutuamente. As subredes ser configuradas conforme mostrado na figura a seguir.
  
Os seguintes parâmetros dos modems ADSL devem ter estes valores:
+
[[imagem:PJI1-Proj2-20161-lan1.jpg]]
* '''Port:''' ''0''
 
* '''VPI:''' ''8''
 
* '''VCI:''' ''35''
 
* '''Encapsulamento:''' ''LLC/SNAP''
 
* '''Modo:''' ''PPPoE''
 
* '''User:''' usuario1
 
* '''Password:''' senha1
 
* '''NÃO''' ativar firewall.
 
* '''Ativar''' NAT
 
  
  
* [http://tele.sj.ifsc.edu.br/~msobral/pji/videos/eh_logo_ali_1.mp4 Link de teste de download]
+
Sendo assim:
 +
# A partir de cada subrede tente se comunicar com computadores de outras subredes. Caso não funcione, investigue o porquê (ex: por onde passam os pacotes ?)
 +
# Defina a ''rota padrão'' do seu computador, a qual deve apontar o último endereço IP válido da sua subrede (esse é o computador do professor)
 +
# Tente acessar um endereço qualquer na Internet (ex: 8.8.8.8). Caso não funcione, investigue o porquê (ex: por onde passam os pacotes ?)
 +
# Use o ''traceroute'' para entender como cada computador se comunica com computadores de outras subredes, e com computadores fora do Ifsc.
  
{{collapse bottom | Aula 24}}
 
  
= 15/06: Projeto 2: Estabelecendo o enlace WAN =
 
  
{{collapse top | Aula 25 (continuação da aula 24)}}
+
==Atividade 2 ==
{{collapse bottom | Aula 25}}
 
  
= 20/06: Projeto 2: Experimentando o link WAN =
+
* [http://tele.sj.ifsc.edu.br/~msobral/pji2/rotas2/rede2.conf Arquivo de configuração da rede]
  
A aula de hoje será destinada a configuração do link WAN em diversos cenários.
+
Nesta outra atividade, a rede a ser usada possui esta topologia:
  
{{collapse top|Aula 26}}
+
[[imagem:PJI1-Proj2-20161-lan2.jpg]]
  
A implantação da rede de cada equipe pode ser feita segundo três modelos básicos:
 
  
1. '''Roteador ADSL em modo PPPoE:''' neste modelo, o roteador ADSL opera de fato como roteador. Ele estabelece um enlace IP com a operadora usando um protocolo chamado PPPoE (ver a [[PJI-2016-1#Uma_introdu.C3.A7.C3.A3o_a_ADSL|visão geral sobre ADSL para maiores detalhes]]). O endereço IP fornecido pela operadora fica associado à interface WAN do roteador ADSL. A rede interna forma uma rede local (LAN).
+
Assim como na atividade 1, os computadores nessa rede devem conseguir se comunicarem com a Internet, e também se comunicarem entre si.
 +
{{Collapse bottom | Aula 23}}
  
[[imagem:PJI1-Proj2-caso1.jpg]]
+
= 12/05: Projeto 2: Rotas (continuação) =
  
2. '''Roteador ADSL em modo bridge:''' neste modelo, o roteador ADSL opera na realidade como um modem ADSL. Ele apenas faz a codificação dos dados entre a LAN e o enlace ADSL estabelecido entre ele e o DSLAM. Isso significa que o endereço IP fornecido pela operadora deve ser associado a outro equipamento conectado à interface LAN do modem ADSL. Esse outro equipamento (no caso mostrado na figura a seguir representado pelo roteador/AP TP-Link) deve fazer a negociação do enlace IP usando o protocolo PPPoE. Esse outro roteador é que faz o papel de gateway para a rede rede interna (LAN). Maiores detalhes são fornecidos [[PJI-2016-1#Modo_bridge:_Uma_outra_forma_de_fazer_o_link_WAN_com_ADSL|na próxima seção desta aula]].
+
{{Collapse top | Aula 24}}
 +
{{Collapse bottom | Aula 24}}
  
[[imagem:PJI1-Proj2-caso2.jpg]]
+
= 17/05: Projeto 2: Rotas (continuação) =
  
3. '''Roteador ADSL em modo bridge e PC como roteador:''' este modelo é uma variação do modelo 2. Ao invés de usar o AP TP-Link como roteador, usa-se o computador. Isso implica usar um software específico no Linux para torná-lo capaz de estabelecer o enlace PPPoE. O endereço IP fornecido pela operadora fica ao final associado à uma interface de rede desse computador. Esse computador deve idealmente ter duas interfaces de rede.
+
* Realizar a avaliação docente através [https://avaliacao.ifsc.edu.br/sad/ deste link]
  
[[imagem:PJI1-Proj2-caso3.jpg]]
+
{{Collapse top | Aula 25}}
 +
{{Collapse bottom | Aula 25}}
  
Como o modelo 1 já foi implantado na aula passada, hoje serão experimentados os modelos 2 e 3.
+
= 19/05: Projeto 2: Implantação das redes locais das equipes =
  
== Modo bridge: Uma outra forma de fazer o link WAN com ADSL ==
+
{{collapse top|Aula 26}}
 +
* [http://tele.sj.ifsc.edu.br/~msobral/pji/tlwdr4300.pdf Manual do Roteador sem-fio TP-Link WDR 4300]
 +
* [http://tele.sj.ifsc.edu.br/~msobral/pji/tlwr941n.pdf Manual do Roteador sem-fio TP-Link WR 941ND]
 +
<!-- * [http://tele.sj.ifsc.edu.br/~msobral/pji/dlink-di-524.pdf Manual do Roteador sem-fio D-Link DI-524] -->
  
Aula passada vimos como implantar um enlace WAN com ADSL. Hoje faremos uma outra investigação sobre a infraestrutura da rede como um todo.
+
Cada equipe deve implantar sua própria rede local, composta pelo computador, um roteador e ponto de acesso sem-fio, e um ou mais dispositivos (hosts) adicionais. A rede portanto deve ficar parecida com o diagrama apresentado no início do projeto 2:
  
 +
[[imagem:Pji1-projeto2.png|500px]]
  
O link ADSL implantado até o momento explorou o roteador ADSL para criar o link e interligar a rede interna com a Internet através dele. A figura abaixo mostra o papel do roteador ADSL, e como fica o link para Internet (em vermelho pontilhado).
 
  
 +
Por questões de disponibilidade, usaremos um equipamento que combina as funções de ''roteador'' e ''ponto de acesso (AP)''. Usaremos também um ''switch'' para interligar o computador de cada equipe e esse roteador.
  
[[imagem:Enlace-pppoe.png]]
 
  
 +
O cenário no laboratório deve ser o seguinte:
  
O link ADSL é denominado ''enlace PPPoE'' na figura, porque esse link funciona como um enlace ponto-a-ponto especial (daí o nome ''PPPoE'' = ''Point-to-Point over Ethernet''). Apenas para ilustrar, ''PPP'' é nome de um tipo de enlace usado entre dois equipamentos ligados por um cabo, e é usado, por exemplo, em acesso discado e em link de dados 3G. No caso do ''PPPoE'', parece que se cria um enlace ''PPP'', mas por baixo há mais do que um cabo entre os equipamentos (pela figura aparece toda uma rede entre eles ...). Os detalhes técnicos de como isso funciona de fato deve ser visto na 2a e 3a fases do curso. No momento o que interessa é saber que para estabelecer um link ADSL típico é necessário usar esse protocolo ''PPPoE''.
+
[[imagem:Proj2-20142-lan.png]]
  
O link ADSL feito até agora usou o roteador para estabelecer o enlace PPPoE. Porém há outra forma de fazer esse enlace: deixar o roteador ADSL operando em modo ''bridge'' (''ponte'') e usar outro equipamento para fazer o enlace ''PPPoE''. Na rede das equipes, o próprio computador da equipe pode fazer esse papel. Esse outro cenário ficaria como mostrado abaixo:
+
== Equipamentos de interligação para pequenas redes locais (LAN) ==
  
 +
Uma LAN serve para interconectar equipamentos (computadores, servidores, roteadores, ...) relativamente próximos entre si. As distâncias envolvidas são tipicamente de algumas dezenas de metros, podendo chegar em alguns casos a até poucas centenas de metros. Essas redes apresentam como características:
 +
* '''altas taxas de transmissão:''' o usual é 1 Gbps (1 bilhão de bits por segundo, que equivalem a cerca de 125 milhões de bytes por segundo). A geração anterior das LANs Ethernet operava a 100 Mbps (100 milhões de bits por segundo, ou dez vezes mais lento que as LANs de 1 Gbps), e ainda se encontram dispositivos que operam nessa taxa de transmissão.
 +
* '''baixo custo:''' as interfaces de rede dos equipamentos são baratas (algumas dezenas de R$), assim como os equipamentos de interconexão (switches) e cabos.
 +
* '''alta qualidade de transmissão:''' essas redes são virtualmente isentas de erros de transmissão. Quando eles ocorrem, é sinal de má-instalação ou defeito em equipamentos.
  
[[imagem:Projeto2-adsl-bridge.png]]
+
Hoje em dia a tecnologia de rede usada para criar LANs se chama Ethernet (o nome oficial é [http://tele.sj.ifsc.edu.br/~msobral/RCO2/docs/ieee/802.3/ IEEE 802.3], que é o padrão que a define).
 +
 
 +
LANs são muito difundidas. São usadas em redes domésticas, redes de pequenos escritórios, grandes redes corporativas, redes em escolas, e possivelmente outros ambientes. A rede do IFSC, que interliga os laboratórios e os servidores do câmpus, é composta de algumas LANs interconectadas. Em todos esses casos, a configuração usual das LANs envolve o uso de:
 +
* '''dispositivos com interfaces de rede Ethernet''': dispositivos são computadores, roteadores, e demais equipamentos que se comunicam através da LAN.
 +
* '''switches Ethernet para interligar os dispositivos''': [http://tele.sj.ifsc.edu.br/~msobral/pji/switch-dlink.png switches] funcionam como concentradores (na verdade, comutadores), onde todos os dispositivos são conectados por meio de cabos.
 +
* '''cabos e conectores''': os cabos usados são do tipo par-trançado, porque dentro deles existem quatro pares trançados de fios. Para conectá-los se usam [http://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Ethernet_RJ45_connector_p1160054.jpg/220px-Ethernet_RJ45_connector_p1160054.jpg conectores RJ-45]. Esses cabos devem ter comprimento máximo de 100m.
 +
 
 +
 
 +
Para criar uma LAN, deve-se usar um switch com uma quantidade de portas igual ou maior que a quantidade de dispositivos a serem interligados. A figura abaixo mostra uma pequena LAN com um switch:
  
  
O uso de modo ''bridge'' tem algumas vantagens:
+
[[imagem:Pji1-Lan1.png]]
* '''O endereço IP fornecido pelo provedor fica no equipamento interno usado para fazer o enlace PPPoE''': isso possibilita um maior controle sobre as comunicações entre a rede interna e externa, pois roteadores ADSL costumam ser funcionalmente limitados (por isso são tão baratos !).
 
* '''Aumenta a quantidade de comunicações simultâneas entre rede interna e Internet:''' isso é uma consequência de o equipamento interno poder ter maior capacidade computacional que o roteador ADSL. Em particular, roteadores ADSL suportam uma quantidade limitada de sessões NAT simultâneas, devido à pequena quantidade de memória RAM disponível (novamente, por isso são baratos ;-). Tal limitação não existe para um computador com Linux.
 
* '''Aplicações P2P (dentre outras) podem funcionar melhor''': se for usado um computador para fazer o enlace PPPoE, programas nele executados podem se comunicar mais facilmente com a Internet. Isso se dá porque as comunicações entre esse computador e a Internet não são modificadas por NAT - e NAT atrapalha alguns tipos de comunicação, tais como P2P e VoIP.
 
 
 
... e desvantagens:
 
* '''O equipamento interno precisa ser capaz de criar enlaces PPPoE''': se for usado um computador, ele deve ter um software capaz de estabelecer esse tipo de enlace. Esse software precisaria assim ser instalado e devidamente configurado.
 
* '''O equipamento interno precisa estar sempre ligado:''' para que o link para a Internet esteja sempre ativado, o equipamento interno precisa também ser mantido ligado. Se for usado um computador, isso significa um gasto maior de energia (mas talvez não seja significativo).
 
* '''O equipamento interno fica mais exposto à Internet:''' como esse equipamento está diretamente ligado à Internet, há uma chance maior que seja invadido debido a essa exposição. Portanto tal equipamento deve ser protegido, bloqueando tentativas de acesso externas (algo nem sempre fácil de fazer). O uso de softwares para [http://pt.wikipedia.org/wiki/Firewall firewall] torna-se essencial.
 
  
  
Para perceber as diferenças, vamos implantar o link para Internet com ADSL em modo bridge.
+
Em uma LAN, switches podem também ser interligados. Isso na prática aumenta a quantidade de dispositivos que podem existir na LAN, e também as distâncias entre eles (lembre que cada cabo tem um comprimento máximo da ordem de 100m):
  
=== Preparação de um computador Linux para usar PPPoE ===
+
[[imagem:Pji1-Lan2.png]]
  
Em sistemas Linux baseados na distribuição Debian há duas maneiras de criar um enlace PPPoE:
 
* '''Com o Network-Manager''': o ''network-manager'' é um aplicativo que auxilia o estabelecimento de enlaces em geral (cabeado, sem-fio, discado, ...). Ele é acessado normalmente por uma ''applet'' na barra de aplicativos, no topo da tela.
 
* '''Editando os arquivos de configuração de rede''': essa forma é um pouco mais complicada, mas funciona em qualquer sistema Linux. A seguir há uma explicação sobre como realizá-la.
 
  
A forma manual de estabelecer o enlace PPPoE segue estes passos:
+
Se a LAN for composta de apenas dois dispositivos, então um switch se torna desnecessário. Assim, os dispositivos podem ser conectados diretamente:
# Instale o software necessário: <syntaxhighlight lang=bash>
 
sudo apt-get install pppoe
 
</syntaxhighlight>
 
# Edite o arquivo ''/etc/ppp/peers/adsl'', que deve ficar com este conteúdo: <syntaxhighlight lang=text>
 
pty "/usr/sbin/pppoe -I eth0 -T 80 -m 1452 -C pji"
 
noipdefault
 
usepeerdns
 
defaultroute
 
hide-password
 
lcp-echo-interval 20
 
lcp-echo-failure 3
 
connect /bin/true
 
noauth
 
persist
 
mtu 1492
 
noaccomp
 
user usuario1
 
default-asyncmap
 
</syntaxhighlight>
 
# Edite o arquivo ''/etc/ppp/chap-secrets'' e acrescente o seguinte: <syntaxhighlight lang=text>
 
usuario1  *  senha1
 
</syntaxhighlight>
 
# Ative o enlace PPPoE executando o seguinte comando: <syntaxhighlight lang=bash>
 
sudo pppd call adsl
 
</syntaxhighlight>
 
# Ative o encaminhamento de pacotes entre interfaces do seu PC: sendo o roteador da sua rede, ele deve ser capaz de fazer o encaminhamento de pacotes entre rede interna e externa: <syntaxhighlight lang=bash>
 
sudo sysctl -w net.ipv4.ip_forward=1
 
</syntaxhighlight>
 
# Ative o NAT em seu PC: como ele agora é o roteador da sua rede, então ele precisará ser também o tradutor NAT: <syntaxhighlight lang=bash>
 
sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
 
</syntaxhighlight>
 
  
{{collapse bottom|Aula 26}}
+
[[imagem:Pji1-Lan3.png]]
 +
 
 +
== Atividade ==
 +
 
 +
# Usando os equipamentos fornecidos implante a rede local da sua equipe. Siga atentamente o diagrama que mostra como sua rede se relaciona com a rede do laboratório.
 +
# Configure sua rede para que os hosts que nela estão possam se comunicar com os hosts das outras redes, e também com a rede externa (Internet). ''Dica: revise as rotas em sua rede''
 +
# Acrescente um switch à sua rede, conectando-o em uma das portas amarelas do roteador (essas portas fazem parte de um switch embutido). Teste a comunicação (ex: ''ping 8.8.8.8'') a partir do Rpi, ora conectando-o em um switch, ora em outro. Há alguma diferença ?
 +
# Acrescente um outro computador à sua rede, de forma que ele fique em um switch e o Rpi em outro. Configure um endereço IP nesse novo computador, e em seguida teste sua comunicação com o Rpi. Verifique se a comunicação funciona.
 +
# Execute o wireshark no Rpi, ativando a captura na interface ethernet. Em seguida faça um ping para 8.8.8.8 a partir do outro computador. O wireshark mostra os pacotes transmitidos e recebidos ?
 +
# Ainda com o wireshark no Rpi, execute um ''ping'' do outro computador para o próprio Rpi. O que o wireshark apresenta ?
 +
# Agora conecte esse computador do outro lado do roteador de sua rede, mantendo o mesmo endereço IP. Teste a comunicação com o Rpi. Explique o resultado.
 +
{{collapse bottom | Aula 26}}
 +
 
 +
= 24/05: Projeto 2: a rede de cada equipe =
 +
 
 +
*[http://moodlenovo.sj.ifsc.edu.br/mod/quiz/view.php?id=2719 Teste 5]
 +
 
 +
* [[Arquivo:Teste5-correção.pdf|Correção Teste 5]]
 +
 
 +
{{collapse top | Aula 27}}
 +
Dando continuidade à implantação da rede de cada equipe, hoje devem-se investigar:
 +
* a configuração automática de rede dos hosts
 +
* o uso de NAT no roteador
 +
* o funcionamento básico de alguns equipamentos da rede
 +
 
 +
== Configuração automática de hosts ==
 +
 
 +
Na prática ninguém precisa se preocupar em configurar seus dispositivos com as informações de rede vistas na aula anterior. As pessoas acessam a rede e por mágica tudo isso é configurado automaticamente. Basta pensar no acesso à rede sem-fio do Ifsc, e mesmo nas redes de suas casas ou locais de trabalho, seja sem-fio ou cabeada. A configuração manual somente é necessária quando se instalam servidores ou outros equipamentos que formam a infraestrutura das redes. No caso geral, um serviço especial chamado de DHCP (''Dyamic Host Configuration Protocol - Protocolo de Configuração Dinâmica de Host'') provê a configuração automática.
 +
 
 +
 
 +
[http://www.tcpipguide.com/free/t_TCPIPDynamicHostConfigurationProtocolDHCP.htm DHCP] (''Dynamic Host Configuration Protocol'') é um protocolo para obtenção automática de configuração de rede, usado por computadores que acessam fisicamente uma rede. Esses computadores são tipicamente máquinas de usuários, que podem usar a rede esporadicamente (ex: usuários com seus laptops, com acesso via rede cabeada ou sem-fio), ou mesmo computadores fixos da rede. O principal objetivo do DHCP é fornecer um endereço IP, a máscara de rede, o endereço IP do roteador default e um ou mais endereços de servidores DNS. Assim, um novo computador que acesse a rede pode obter essa configuração sem a intervenção do usuário.
 +
 
 +
 
 +
Para esse serviço deve existir na rede ao menos um servidor DHCP, que pode estar em um roteador, ponto de acesso sem-fio, ou mesmo em um outro computador. Quer dizer, em um desses equipamentos pode haver um programa que envia mensagens de configuração automática a novos dispositivos que entrem na rede.
 +
 
 +
 
 +
Um computador que precise obter sua configuração de rede envia mensagens DHCPDISCOVER em broadcast. Um servidor DHCP, ao receber tais mensagens, responde com uma mensagem DHCPOFFER também em broadcast, contendo uma configuração de rede ofertada. O computador então envia novamente em broadcast uma mensagem DHCPREQUEST, requisitando o endereço IP ofertado pelo servidor. Finalmente, o servidor responde com uma mensagem DHCPACK, completando a configuração do computador cliente. Como a configuração tem um tempo de validade (chamado de ''lease time - tempo de aluguel''), o cliente deve periodicamente renová-la junto ao servidor DHCP, para poder continuar usando-a. O diagrama abaixo mostra simplificadamente esse comportamento:
 +
 
 +
[[imagem:Pji1-Dhcp.jpeg|400px]]
 +
 
 +
 
 +
Essa troca de mensagens entre clientes e servidor DHCP ocorre somente dentro da mesma rede local. Portanto um cliente não consegue em princípio obter sua configuração de rede de um servidor DHCP que esteja em outra rede local (isso é, se existir um ou mais roteadores entre eles).
 +
 
 +
'''Questão:''' como o servidor DHCP diferencia os clientes em uma rede ? Para entender esta pergunta, faça este experimento:
 +
# Ative dois hosts na rede do laboratório, e anote os endereços que cada um obteve.
 +
# Desligue ambos os hosts.
 +
# Agora ative apenas um deles, e observe o endereço IP obtido.
 +
# Faça o mesmo com o segundo host.
 +
# Houve diferença entre os endereços obtidos em cada etapa ?
 +
 
 +
== Uso de NAT no roteador ==
 +
 
 +
* [http://pt.wikipedia.org/wiki/Network_address_translation NAT na Wikipedia]
 +
* [http://labcisco.blogspot.com.br/2014/09/cgnat-na-transicao-ipv6-solucao-ou-vilao.html CGNAT: NAT usado em larga escala por operadoras de Telecom]
 +
 
 +
 
 +
Endereços IP são números de 32 bits, o que significa existirem pouco mais de 4 bilhões de diferentes endereços possíveis (exatamente 4.294.967.296 endereços). Parece muito, porém os endereços IP disponíveis estão praticamente esgotados. Não significa que existam mais de 4 bilhões de equipamentos de rede usando esses endereços, mas sim que todas as subredes distribuídas já contêm quase todos esses endereços. Quer dizer, se uma empresa recebe o direito de usar uma subrede com máscara /24 (255.255.255.0, o que resulta em uma subrede com 256 endereços), todos os endereços ali contidos não podem ser reaproveitados por outras empresas ou organizações, mesmo que não nem todos estejam sendo de fato usados. Por isso nos anos 1990 os orgãos que administram os endereços da Internet tomaram duas iniciativas para lidar com o esgotamento de endereços IP disponíveis.
 +
 
 +
 
 +
A primeira iniciativa foi desenvolver uma nova versão do protocolo IP, a qual usaria endereços nem maiores e virtualmente inesgotáveis. Isso fez surgir o protocolo IPv6, cujos endereços têm 128 bits. A quantidade de endereços possíveis é tão grande, que torna difícil compará-la com coisas conhecidas. Para ter uma ideia, existem em torno de <math>3.4~x~10^{38}</math> endereços IPv6 (a quantidade exata é 340.282.366.920.938.463.463.374.607.431.768.211.456 endereços), ou 340 trilhões de trilhões de trilhões ... Por mais que se abuse na forma com que esses endereços devem ser distribuídos, supõe-se que eles nunca se esgotem (?!). Porém o projeto desse novo protocolo demorou vários anos, e ainda hoje ele não foi adotado em larga escala na Internet.
 +
 
 +
 
 +
A segunda iniciativa, publicada em 1994, se chamou [https://tools.ietf.org/html/rfc1631 NAT] (''Network Address Tanslation - Tradução de Endereço de Rede'') e teve por objetivo criar uma forma de reaproveitar endereços IP. Para isso, algumas subredes ficaram reservadas, não sendo distribuídas para nenhum empresa ou organização, e são elas:
 +
* 10.0.0.0/8
 +
* 192.168.0.0/16
 +
* 172.16.0.0/12
 +
A ideia é que redes com computadores que só acessam a Internet, mas não são servidores, usem essas subredes (ou parte delas). Essas subredes não são roteáveis, o que significa que os roteadores da infraestrutura da Internet não as conhecem e não sabem como encontrá-las. Por fim, para que computadores dessas redes consigam acessar a Internet, deve nelas existir ao menos um roteador que possua um endereço IP roteável (chamado também de IP válido). Esse roteador deve também possuir uma função especial que modifique os endereços IP de origem contidos nos pacotes que saem em direção a Internet. O endereço IP de origem desses pacotes deve se tornar o endereço IP roteável do roteador. Com isso, os servidores na Internet que receberem esses pacotes poderão respondê-los, pois o endereço de origem é roteável. A figura a seguir ilustra o funcionamento do NAT.
 +
 
 +
 
 +
[[imagem:Pji1-Nat2.png|500px]]
 +
<br>''Uma rede com roteador NAT''
 +
 
 +
 
 +
# Dentro da rede interna, pacotes que saem têm endereço de origem da rede interna (ex: 10.0.0.5)
 +
# Ao atravessarem o roteador, seus endereços IP de origem são substituídos pelo endereço IP roteável do roteador (no caso, 14.1.23.5)
 +
# O servidor na Internet recebe um pacote que parece ter vindo do roteador NAT, pois seu endereço de origem é 14.1.23.5. O pacote de resposta desse servidor é então endereçado para esse IP.
 +
# O pacote de resposta chega ao roteador, que reescreve seu endereço IP de destino para o endereço IP original da rede interna
 +
 
 +
 
 +
Hoje em dia todos roteadores, mesmo os mais simples, têm a função NAT. Para que o NAT funcione, basta acessar a interface de gerenciamento do equipamento e ativá-lo. De fato, na maioria desses roteadores o NAT já vem ativado de fábrica. Com isso eles podem ser instalados facilmente, possibilitando que computadores de suas redes acessem a Internet. O NAT funcionou tão bem para o usuário médio da Internet, que pode ter sido um fator significativo para o atraso na adoção do novo protocolo IPv6.
 +
 
 +
=== Experimentos com NAT ===
 +
 
 +
O IFSC usa NAT ? Descubra por meio deste site:
 +
* [http://whatismyipaddress.com/ Qual meu endereço IP ?]
 +
 
 +
 
 +
A rede instalada aula passada está com NAT desativado. Ative o NAT no roteador e teste a comunicação entre os computadores de sua rede e:
 +
* O computador do professor (192.168.1.1)
 +
* O servidor DNS do Google (8.8.8.8)
 +
* Um servidor web à sua escolha
 +
* Os computadores das outras equipes
 +
 
 +
 
 +
Há alguma diferença em relação à rede sem NAT ? Caso afirmativo, qual ? E que implicações pode ter o NAT no roteamento em uma rede ?
 +
 
 +
== Atividade ==
 +
 
 +
Agora que seus roteadores usam NAT, investigue a comunicação entre computadores de diferentes equipes. Um simples ''ping'' de uma equipe para outra é suficiente. Investigue também o acesso externo com SSH ao computador da equipe. O objetivo é conseguir acessá-lo com SSH mesmo estando fora da rede da equipe.
 +
 
 +
 
 +
'''Dicas:'''
 +
* Leiam o manual do equipamento
 +
* Pesquisem sobre termos tais como DMZ, redirecionamento de port (''port redirection'') e ''virtual server''. Sempre associem esses termos à palavra-chave NAT em seus buscas.
 +
* Desenhem suas redes, evidenciando os endereços IP envolvidos nos equipamentos e as aplicações usadas para os testes.
 +
 
 +
{{collapse bottom| Aula 27}}
 +
 
 +
= 26/05: Projeto 2: a rede de cada equipe (continuação) =
 +
 
 +
* [http://moodlenovo.sj.ifsc.edu.br/mod/quiz/view.php?id=2816 Teste 6]
 +
* [[Arquivo:Teste6-correção.pdf|Correção Teste 6]]
 +
 
 +
{{collapse top| Aula 28}}
 +
{{collapse bottom| Aula 28}}
 +
 
 +
= 31/05: Projeto 2: estabelecendo o enlace WAN =
 +
 
 +
 
 +
{{collapse top | Aula 29}}
 +
 
 +
O próximo passo do projeto 2 envolve estabelecer o enlace WAN da rede de cada equipe. Através desse enlace a rede da equipe pode acessar a Internet. Alguns detalhes devem ser entendidos para que essa comunicação funcione a contento. A ideia é que a rede fique assim:
 +
 
 +
 
 +
[[imagem:Pji1-Projeto3-final.png|800px]]
 +
 
 +
 
 +
Nessa rede, a infraestrutura de acesso ADSL é provida pelo IFSC, tendo os professores como técnicos responsáveis. O enlace ADSL oferece '''um único IP''' para cada equipe, o qual ficará associado à interface externa (WAN) do roteador ADSL. Por fim, não é necessária autenticação para a ativação desse enlace.
 +
 
 +
Implante sua rede usando o roteador ADSL, e use-o para acessar a Internet. Experimente também o seguinte:
 +
* Meça qual a taxa de download máxima por esse enlace.
 +
* Meça a taxa de upload máxima por esse enlace.
 +
* Estando fora de sua rede, acesse o seu computador Kodi com o aplicativo [http://en.wikipedia.org/wiki/Secure_Shell SSH].
 +
 
 +
== Uma introdução a ADSL ==
 +
 
 +
* [http://tele.sj.ifsc.edu.br/~msobral/RCO2/docs/adsl.pdf Uma visão geral sobre aDSL(com alguns detalhes)]
 +
* [http://tele.sj.ifsc.edu.br/~msobral/RCO2/docs/dslam.pdf Uma descrição sobre DSLAM]
 +
* [http://tele.sj.ifsc.edu.br/~msobral/RCO2/docs/dsl-technologies.pdf Outro bom texto sobre ADSL]
 +
* [http://tele.sj.ifsc.edu.br/~msobral/RCO2/docs/gdslarch.pdf Tipos de enlace que se podem criar com ADSL]
 +
* [http://www.kitz.co.uk/adsl/adsl_technology.htm Um guia rápido e bastante explicativo sobre ADSL (principalmente a modulação)]
 +
 
 +
<!-- [[imagem:Dsl-network.gif]] -->
 +
 
 +
ADSL (Asymetric Digital Subscriber Line) é uma tecnologia para provimento de enlace de dados para assinantes de linhas telefônicas residenciais. Ao contrário da modems analógicos (ex: [http://en.wikipedia.org/wiki/V.92 V.92]), ADSL não está limitado à largura de banda de canal de voz (~ 4kHz). Com isso, podem-se obter taxas de dados muito superiores, dependendo da versão de ADSL em uso. A tabela abaixo ilustra os vários padrões ADSL existentes e suas características.
 +
 
 +
 
 +
[[imagem:Adsl-taxas.png]]
 +
<br>''Tabela de versões de ADSL e suas características.<br>Obtido em http://en.wikipedia.org/wiki/Asymmetric_digital_subscriber_line#ADSL_standards''
 +
 
 +
 
 +
ADSL consegue obter taxas de dados muito superiores às de modems analógicos (que chegavam no máximo a 56 kbps) porque na verdade não usa um canal de voz. A ideia é usar a fiação telefônica para estabelecer um enlace de dados entre o assinante residencial e a operadora, mas não a rede telefônica em si. Por isso que com ADSL pode-se ter o enlace de dados e falar ao telefone ao mesmo tempo. Para isso, na central onde chega a linha do assinante é feita uma separação entre o sinal de dados e o de voz: o de dados vai para uma rede de dados, e o de voz segue pela infraestrutura de telefonia. Em consequência, é necessário haver uma rede de dados separada da rede telefônica. A figura a seguir ilustra um enlace ADSL para um assinante residencial, evidenciando os componentes da infraestrutura da rede dados.
 +
 
 +
 
 +
[[imagem:Dsl-architecture.png]]
 +
 
 +
 
 +
A separação entre os canais de voz e de dados, feita por um ''filtro passa-baixa'', está destacada na figura abaixo:
 +
 
 +
[[imagem:Adsl-model.png]]
 +
 
 +
Na infraestrutura ADSL, cabem destacar alguns elementos:
 +
* '''modem ADSL:''' equipamento responsável pela ponta do enlace do lado do assinante, fazendo os encapsulamentos das PDUs dos protocolos envolvidos nesse enlace, e a modulação do sinal digital resultante.
 +
* '''DSLAM (DSL Access Multiplexer):''' multiplexador de acesso ADSL, que recebe as linhas dos assinantes do lado da operadora. Esse componente faz a intermediação entre os assinantes e a rede de dados da operadora. Dentre suas atribuições, destacam-se a modulação do sinal das linhas dos assinantes, a limitação das taxas de ''downstream'' e ''upstream'' de acordo com o contratado pelos assinantes, e as conversões de protocolos de enlace (quando necessárias) para a rede da operadora. No entanto.
 +
* '''splitter:''' filtro que separa os sinais de voz e de dados. São usados tanto do lado do assinante quanto no DSLAM.
 +
* '''AC (concentrador de acesso):''' equipamento que concentra as pontas dos enlaces de dados dos assinantes no lado da rede da operadora.
 +
 
 +
A parte da infraestrutura ADSL dentro da rede de dados da operadora inclui equipamentos DSLAM (muitos deles), um ou mais AC e as redes de comunicação para interligá-los. Note-se que quem dá acesso de fato à Internet é o AC. A figura abaixo ilustra esses componentes.
 +
 
 +
[[imagem:Dslam-infra.png]]
 +
 
 +
O enlace de dados entre o equipamento do assinante e a rede da operadora pode ser feita de diferentes formas. Esse enlace é visto pelo assinante como seu enlace para a Internet - i.e. ele obtém seu endereço IP fornecido pela operadora. Os tipos de enlace de dados ADSL mais usados são:
 +
* '''PPPoE (PPP over Ethernet):''' cria um enlace ponto-a-ponto com protocolo PPP, cujos quadros são encapsulados em quadros Ethernet. Esta é a forma mais utilizada para assinantes residenciais.
 +
* '''PPPoA (PPP over ATM):''' cria um enlace ponto-a-ponto com protocolo PPP, cujos quadros são encapsulados em mensagens AAL5 da arquitetura ATM.
 +
* '''EoA (Ethernet over ATM):''' cria um enlace Ethernet, cujos quadros são encapsulados em mensagens AAL5 da arquitetura ATM.
 +
 
 +
 
 +
O enlace PPPoE funciona como se tivesse um link ponto-a-ponto entre o roteador ADSL e um concentrador de acesso (AC). Quer dizer, parece que existe um fio ligando diretamente esses dois equipamentos, apesar de na realidade existir toda uma infraestrutura entre os dois. Isso pode ser visualizado na figura abaixo. Em cada ponta desse link PPPoE há um endereço IP usado pelos respectivos equipamentos.
 +
 
 +
[[imagem:Enlace-pppoe.png]]
 +
 
 +
== ATIVIDADE ==
 +
 
 +
Cada equipe deve estabelecer seu enlace WAN usando ADSL. Em seguida, deve validar seu computador na rede, de forma que possa ser acessado com SSH de fora da sua rede.
 +
 
 +
=== Configurações ADSL ===
 +
 
 +
Cada link ADSL deve ter seu IP manualmente configurado, o qual deve ser um IP válido fornecido à equipe pelo provedor (professores).
 +
 
 +
Os seguintes parâmetros dos modems ADSL devem ter estes valores:
 +
* '''Port:''' ''0''
 +
* '''VPI:''' ''8''
 +
* '''VCI:''' ''35''
 +
* '''Encapsulamento:''' ''LLC/SNAP''
 +
* '''Modo:''' ''PPPoE''
 +
* '''User:''' usuario1
 +
* '''Password:''' senha1
 +
* '''NÃO''' ativar firewall.
 +
* '''Ativar''' NAT
 +
 
 +
 
 +
* [http://tele.sj.ifsc.edu.br/~msobral/pji/videos/eh_logo_ali_1.mp4 Link de teste de download]
 +
 
 +
{{collapse bottom | Aula 29}}
 +
 
 +
= 02/06: Projeto 2: estabelecendo o enlace WAN =
 +
 
 +
* [http://moodlenovo.sj.ifsc.edu.br/mod/quiz/view.php?id=2858 Teste 7]
 +
 
 +
{{collapse top | Aula 30}}
 +
A aula de hoje será destinada a configuração do link WAN em diversos cenários.
 +
 
 +
 
 +
A implantação da rede de cada equipe pode ser feita segundo três modelos básicos:
 +
 
 +
1. '''Roteador ADSL em modo PPPoE:''' neste modelo, o roteador ADSL opera de fato como roteador. Ele estabelece um enlace IP com a operadora usando um protocolo chamado PPPoE (ver a [[PJI-2016-1#Uma_introdu.C3.A7.C3.A3o_a_ADSL|visão geral sobre ADSL para maiores detalhes]]). O endereço IP fornecido pela operadora fica associado à interface WAN do roteador ADSL. A rede interna forma uma rede local (LAN).
 +
 
 +
[[imagem:PJI1-Proj2-caso1.jpg]]
 +
 
 +
2. '''Roteador ADSL em modo bridge:''' neste modelo, o roteador ADSL opera na realidade como um modem ADSL. Ele apenas faz a codificação dos dados entre a LAN e o enlace ADSL estabelecido entre ele e o DSLAM. Isso significa que o endereço IP fornecido pela operadora deve ser associado a outro equipamento conectado à interface LAN do modem ADSL. Esse outro equipamento (no caso mostrado na figura a seguir representado pelo roteador/AP TP-Link) deve fazer a negociação do enlace IP usando o protocolo PPPoE. Esse outro roteador é que faz o papel de gateway para a rede rede interna (LAN). Maiores detalhes são fornecidos [[PJI-2016-1#Modo_bridge:_Uma_outra_forma_de_fazer_o_link_WAN_com_ADSL|na próxima seção desta aula]].
 +
 
 +
[[imagem:PJI1-Proj2-caso2.jpg]]
 +
 
 +
3. '''Roteador ADSL em modo bridge e PC como roteador:''' este modelo é uma variação do modelo 2. Ao invés de usar o AP TP-Link como roteador, usa-se o computador. Isso implica usar um software específico no Linux para torná-lo capaz de estabelecer o enlace PPPoE. O endereço IP fornecido pela operadora fica ao final associado à uma interface de rede desse computador. Esse computador deve idealmente ter duas interfaces de rede.
 +
 
 +
[[imagem:PJI1-Proj2-caso3.jpg]]
 +
 
 +
Como o modelo 1 já foi implantado na aula passada, hoje serão experimentados os modelos 2 e 3.
 +
 
 +
{{collapse top | Como configurar a interface sem-fio de forma estática}}
 +
<syntaxhighlight lang=text>
 +
auto wlan0
 +
iface wlan0 inet static
 +
  wpa-ssid nome-da-rede
 +
  wpa-psk senha-da-rede
 +
  address IP_da_interface
 +
  netmask máscara-de-rede
 +
</syntaxhighlight>
 +
{{collapse bottom}}
 +
 
 +
== Modo bridge: Uma outra forma de fazer o link WAN com ADSL ==
 +
 
 +
Aula passada vimos como implantar um enlace WAN com ADSL. Hoje faremos uma outra investigação sobre a infraestrutura da rede como um todo.
 +
 
 +
 
 +
O link ADSL implantado até o momento explorou o roteador ADSL para criar o link e interligar a rede interna com a Internet através dele. A figura abaixo mostra o papel do roteador ADSL, e como fica o link para Internet (em vermelho pontilhado).
 +
 
 +
 
 +
[[imagem:Enlace-pppoe.png]]
 +
 
 +
 
 +
O link ADSL é denominado ''enlace PPPoE'' na figura, porque esse link funciona como um enlace ponto-a-ponto especial (daí o nome ''PPPoE'' = ''Point-to-Point over Ethernet''). Apenas para ilustrar, ''PPP'' é nome de um tipo de enlace usado entre dois equipamentos ligados por um cabo, e é usado, por exemplo, em acesso discado e em link de dados 3G. No caso do ''PPPoE'', parece que se cria um enlace ''PPP'', mas por baixo há mais do que um cabo entre os equipamentos (pela figura aparece toda uma rede entre eles ...). Os detalhes técnicos de como isso funciona de fato deve ser visto na 2a e 3a fases do curso. No momento o que interessa é saber que para estabelecer um link ADSL típico é necessário usar esse protocolo ''PPPoE''.
 +
 
 +
O link ADSL feito até agora usou o roteador para estabelecer o enlace PPPoE. Porém há outra forma de fazer esse enlace: deixar o roteador ADSL operando em modo ''bridge'' (''ponte'') e usar outro equipamento para fazer o enlace ''PPPoE''. Na rede das equipes, o próprio computador da equipe pode fazer esse papel. Esse outro cenário ficaria como mostrado abaixo:
 +
 
 +
 
 +
[[imagem:Projeto2-adsl-bridge.png]]
 +
 
 +
 
 +
O uso de modo ''bridge'' tem algumas vantagens:
 +
* '''O endereço IP fornecido pelo provedor fica no equipamento interno usado para fazer o enlace PPPoE''': isso possibilita um maior controle sobre as comunicações entre a rede interna e externa, pois roteadores ADSL costumam ser funcionalmente limitados (por isso são tão baratos !).
 +
* '''Aumenta a quantidade de comunicações simultâneas entre rede interna e Internet:''' isso é uma consequência de o equipamento interno poder ter maior capacidade computacional que o roteador ADSL. Em particular, roteadores ADSL suportam uma quantidade limitada de sessões NAT simultâneas, devido à pequena quantidade de memória RAM disponível (novamente, por isso são baratos ;-). Tal limitação não existe para um computador com Linux.
 +
* '''Aplicações P2P (dentre outras) podem funcionar melhor''': se for usado um computador para fazer o enlace PPPoE, programas nele executados podem se comunicar mais facilmente com a Internet. Isso se dá porque as comunicações entre esse computador e a Internet não são modificadas por NAT - e NAT atrapalha alguns tipos de comunicação, tais como P2P e VoIP.
 +
 
 +
... e desvantagens:
 +
* '''O equipamento interno precisa ser capaz de criar enlaces PPPoE''': se for usado um computador, ele deve ter um software capaz de estabelecer esse tipo de enlace. Esse software precisaria assim ser instalado e devidamente configurado.
 +
* '''O equipamento interno precisa estar sempre ligado:''' para que o link para a Internet esteja sempre ativado, o equipamento interno precisa também ser mantido ligado. Se for usado um computador, isso significa um gasto maior de energia (mas talvez não seja significativo).
 +
* '''O equipamento interno fica mais exposto à Internet:''' como esse equipamento está diretamente ligado à Internet, há uma chance maior que seja invadido debido a essa exposição. Portanto tal equipamento deve ser protegido, bloqueando tentativas de acesso externas (algo nem sempre fácil de fazer). O uso de softwares para [http://pt.wikipedia.org/wiki/Firewall firewall] torna-se essencial.
 +
 
 +
 
 +
Para perceber as diferenças, vamos implantar o link para Internet com ADSL em modo bridge.
 +
 
 +
=== Preparação de um computador Linux para usar PPPoE ===
 +
 
 +
Em sistemas Linux baseados na distribuição Debian há duas maneiras de criar um enlace PPPoE:
 +
* '''Com o Network-Manager''': o ''network-manager'' é um aplicativo que auxilia o estabelecimento de enlaces em geral (cabeado, sem-fio, discado, ...). Ele é acessado normalmente por uma ''applet'' na barra de aplicativos, no topo da tela.
 +
* '''Editando os arquivos de configuração de rede''': essa forma é um pouco mais complicada, mas funciona em qualquer sistema Linux. A seguir há uma explicação sobre como realizá-la.
 +
 
 +
A forma manual de estabelecer o enlace PPPoE segue estes passos:
 +
# Instale o software necessário: <syntaxhighlight lang=bash>
 +
sudo apt-get install pppoe
 +
</syntaxhighlight>
 +
# Edite o arquivo ''/etc/ppp/peers/adsl'', que deve ficar com este conteúdo: <syntaxhighlight lang=text>
 +
pty "/usr/sbin/pppoe -I eth0 -T 80 -m 1452 -C pji"
 +
noipdefault
 +
usepeerdns
 +
defaultroute
 +
hide-password
 +
lcp-echo-interval 20
 +
lcp-echo-failure 3
 +
connect /bin/true
 +
noauth
 +
persist
 +
mtu 1492
 +
noaccomp
 +
user usuario1
 +
default-asyncmap
 +
</syntaxhighlight>
 +
# Edite o arquivo ''/etc/ppp/chap-secrets'' e acrescente o seguinte: <syntaxhighlight lang=text>
 +
usuario1  *  senha1
 +
</syntaxhighlight>
 +
# Ative o enlace PPPoE executando o seguinte comando: <syntaxhighlight lang=bash>
 +
sudo pppd call adsl
 +
</syntaxhighlight>
 +
# Ative o encaminhamento de pacotes entre interfaces do seu PC: sendo o roteador da sua rede, ele deve ser capaz de fazer o encaminhamento de pacotes entre rede interna e externa: <syntaxhighlight lang=bash>
 +
sudo sysctl -w net.ipv4.ip_forward=1
 +
</syntaxhighlight>
 +
# Ative o NAT em seu PC: como ele agora é o roteador da sua rede, então ele precisará ser também o tradutor NAT: <syntaxhighlight lang=bash>
 +
sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
 +
</syntaxhighlight>
 +
 
 +
=== Algumas informações sobre qualidade do link ADSL ===
 +
 
 +
{{collapse top | Dicas obtidas em um [http://www.hardware.com.br/comunidade/perfil-conexao/1292944/ forum]}}
 +
Começando Perfil de conexão ADSL ou Atenuação , é uma sequência de valores necessários para uma conexão via ADSL, cada provedor tem um perfil minimo para liberar a conexão de usuário que varia de acordo com a velocidade contratada vai de 500kbps até 32000kbps ou seja é o sinal que esta chegando até o modem que ira manter a conexão estabilizada.
 +
 
 +
 
 +
Para visualizar seu perfil, basta digitar o IP do seu modem no seu navegador, colocar usuário e senha que logo inicialmente irá aparecer:
 +
 
 +
<syntaxhighlight lang=text>
 +
Snr Margin (Db)
 +
Attenuation
 +
OutPut Power
 +
Attainable Rate (KBPS)
 +
Rate (KBPS)
 +
</syntaxhighlight>
 +
 
 +
Explicação para cada ítem:
 +
* '''SNR MARGIN:''' Margem de Sinal de ruido
 +
{| border=1
 +
!Valor
 +
!Descrição
 +
|-
 +
|5db ou menos||impossível conectar sujeito a muitas quedas
 +
|-
 +
|8db a 13db ||Nível regular
 +
|-
 +
|14db a 22db|| Nível Muito bom
 +
|-
 +
|23db a 28db|| Excelente
 +
|-
 +
|29db a 35db|| Raramente ( Apenas em servidores dedicados ou fibra ótica )
 +
|}
 +
* '''TABELA DE ATENUAÇÃO''': perda de potência do sinal
 +
{| border=1
 +
!Taxa de dados
 +
!Distância
 +
!Atenuação aproximada
 +
|-
 +
|24Mbps||200 Mts|| entre 5 e 8 db
 +
|-
 +
|20Mbps||500 Mts||entre 10 e 13 db
 +
|-
 +
|15Mbps||1500 Mts||entre 19 e 23 db
 +
|-
 +
|10Mbps||1900 Mts||entre 25 e 27 db
 +
|-
 +
|5Mbps||2600 Mts||entre 29 e 33 db
 +
|-
 +
|2Mbps||3500 Mts||entre 34 e 39 db
 +
|}
 +
''OBS: Dados baseados no padrão brasileiro''
 +
 
 +
 
 +
O perfil ou atenuação mínima pode variar de acordo com local e velocidade. Por exemplo, em condomínios que possuem Dslam integrados ( 2 Operadoras ), o perfil pode variar de 555kbps a 766kbps, permitindo velocidade máxima de até 2Mbps.
 +
 
 +
Já em varias regiões que possuem cabeamento aéreo por cabo normal ou fibra, o perfil pode variar de 7600kbps até 32000kbps permitindo velocidade maxima de até 100Mbps.
 +
 
 +
quando ocorrer lentidão ou quedas faça o seguinte:
 +
 
 +
 
 +
Abra seu navegador
 +
Digite Ip do modem eX: 192.168.1.1
 +
logue e entre na pagina inicial
 +
e veja qual sua margem de ruido
 +
 
 +
 
 +
se ela estiver baixa verifique seu cabeamento interno, muitas vezes esses problemas são causados por falta de isolamento em emendas, ou emendas mal feitas que estão encostando uma na outra, verifique também sua tomada padrão e seu cabo de RJ11 veja se a tomada não está com os fios juntos, eo rj11 não esta muito esticado ou oxidado no conector, Caso esteja tudo ok, com sua fiação interna, entre em contato com o Suporte Técnico de seu provedor e solicite um técnico e informe que o problema está no cabeamento, no caso sera necessário repassar a fiação externa e interna que é o recomendado, lembrando que a vida útil de um cabo telefônico externo e de ate 5 anos, porem uma ou duas vezes dependendo da região que você mora sera necessário troca-lo motivos: Linhas de Pipa, Cabos enroscados em galhos podem ter cortes que causa oxidação interna trazendo problemas na sua conexão.
 +
 
 +
 
 +
FEC CRC HEC
 +
 
 +
 
 +
o Fec Hec é uma sequência de erros na transmissão de dados que pode ocorrer do Dslam até a caixa aérea e da caixa aérea até a tomada padrão em muitos casos o modem também pode apresentar esses erros, geralmente no DSLAM o fec hec ocorre nas portas de distribuição pode ser por super aquecimento ou cabo de jumper queimado ou mal ligado na porta, que leva o erro até a caixa aérea, ja no cabeamento do cliente pode ser a oxidação do cabo, emendas, cortes por linhas de pipas, no modem o problema muitas vezes é por aquecimento por ex. colocar roteador em baixo e modem em cima, gera um super aquecimento na placa do modem que pode ocasionar quedas e lentidão.
 +
 
 +
Nesse caso mantenha um aparelho longe do outro em ambiente fresco.
 +
{{collapse bottom}}
 +
== Rede local sem-fio padrão IEEE 802.11 (WiFi) ==
 +
 
 +
Uma rede local sem-fios (WLAN - Wireless Local Area Network) serve para conectar dispositivos usando sinal de rádio. Hoje em dia estão tão difundidas que não se imagina um lugar sem cobertura por ao menos uma dessas redes, cuja tecnologia se chama WiFi (ou [http://tele.sj.ifsc.edu.br/~msobral/RCO2/docs/ieee/802.11-2007.pdf IEEE 802.11], nome oficial do padrão). As pessoas as utilizam para conectar seus smartphones e tablets, além de laptops e mesmo equipamentos diversos ([http://produto.mercadolivre.com.br/MLB-564886491-internet-box-tv-smart-multilaser-android-wifi-hdmi-usb-sd-_JM media centers], [http://olhardigital.uol.com.br/video/qual-e-a-melhor-impressora-wi-fi-do-momento/30117 impressoras], [http://cameras.about.com/od/reviews/tp/best-wi-fi-cameras.htm câmeras fotográficas],[http://www.techradar.com/news/television/6-best-smart-tv-platforms-in-the-world-today-1120795 TVs], e mesmo [http://stations.windguru.cz/intro.php estações meteorológicas], entre outros). Todos esses dispositivos fazem uso de uma infraestrutura relativamente simples.
 +
 
 +
 
 +
Uma WLAN é implantada usando um equipamento especial chamado de ponto-de-acesso (AP - ''Access Point''). Um AP transmite periodicamente (10 vezes por segundo) uma pequena mensagem que informa os dispositivos ao redor sobre o nome da rede sem-fio por ele controlada. O alcance típico do sinal do AP é de algumas dezenas de metros. Assim, dispositivos que recebam essa mensagem (chamada de ''beacon'') podem vir a saber que existe essa rede, e se conectarem a ela. Uma vez conectado, um dispositivo pode se comunicar por intermédio do AP. Como usualmente um AP é instalado de forma a estar conectado a uma LAN, os dispositivos a ele conectados podem se comunicar também com a Internet. A figura abaixo ilustra uma pequena WLAN com seu AP provendo conectividade a dispositivos sem-fio, além de estar conectado a um switch de uma LAN.
 +
 
 +
[[imagem:Pji1-projeto2.png|500px]]
 +
 
 +
 
 +
Várias gerações das redes WiFi já foram lançadas, e cada nova geração aumenta significativamente a taxa de transmissão máxima da rede. Atualmente (geração IEEE 802.11ac) essas redes conseguem se comunicar a taxas de transmissão de até 1.3 Gbps. Isso depende do modelo do AP e das interfaces de rede dos dispositivos que usam a rede sem-fio. Na prática, a taxa de transmissão que um dispositivo consegue, no máximo, é um pouco menor que a metade da taxa nominal (ex: para uma rede a 300 Mbps, essa taxa deve ser pouco superior a 100 Mbps). Se houver mais dispositivos, essa taxa de transmissão cai ainda mais, pois eles precisarão compartilhar o canal de comunicação com o AP. Porque isso acontece será visto mais tarde no curso. Por curiosidade, a tabela abaixo mostra as taxas de transmissão máximas das diferentes gerações das redes WiFi.
 +
 
 +
{| border=1
 +
!Geração
 +
!Ano de lançamento
 +
!Taxa de transmissão máxima
 +
|-
 +
|IEEE 802.11 || 1997 || 2 Mbps
 +
|-
 +
|IEEE 802.11a || 1999 || 54 Mbps
 +
|-
 +
|IEEE 802.11b || 2000|| 11 Mbps
 +
|-
 +
|IEEE 802.11g || 2003 || 54 Mbps
 +
|-
 +
|IEEE 802.11n || 2009 || 600 Mbps
 +
|-
 +
|IEEE 802.11ac || 2013 || 3.39 Gbps (agregada de até 6.77 Gbps)
 +
|-
 +
|[https://en.wikipedia.org/wiki/IEEE_802.11ax IEEE 802.11ax] || 2019 ?? || aprox. 10 Gbps
 +
|}
 +
 
 +
 
 +
Uma WLAN possibilita que qualquer dispositivo no alcance do sinal do AP possa a ele se conectar. Isso tem um porém, pois pessoas podem usar indevidamente uma rede sem-fio. Para evitar esse mau-uso, as WLANs possuem um modo de segurança, sendo WPA2-PSK (ou WPA-PSK, WPA Personal, WPA Pessoal) o recomendado para pequenas redes. Basicamente pode-se fazer com que:
 +
* somente pessoas que conheçam uma determinada senha tenham acesso à rede
 +
* todas as comunicações da rede sem-fio sejam encriptadas (protegidas). Com isso se alguém estiver monitorando as transmissões de uma rede sem-fio (e isso é muito fácil de fazer !), não conseguirá entender nada.
 +
 
 +
Resumindo, para instalar um AP é necessário configurar os seguintes parâmetros:
 +
* '''SSID (nome da rede):''' um breve texto com o nome da rede
 +
* '''Canal:''' o canal de comunicação, parecido com os canais das estações de rádio. Pode haver mais de um AP no mesmo canal, porém quanto mais dispositivos se comunicam por um canal, menor a velocidade da rede por eles percebida.
 +
* '''Segurança:''' WPA2-PSK, com uma senha que deve ter no mínimo 8 caracteres. Recomenda-se que essa senha seja aleatória (ou não seja uma palavra que possa ser deduzida por quem tente invadir sua rede).
 +
 
 +
Experimente investigar os parâmetros de um AP de verdade usando este emulador:
 +
* [http://www.tp-link.com/resources/simulator/TL-WDR4300/index.htm TP-Link WDR4300]
 +
 
 +
 
 +
Assim, para instalar uma nova rede sem-fio, basicamente deve-se usar um AP. Ele deve ser conectado a uma rede cabeada para ter acesso a Internet. Por fim, o AP precisa ser devidamente configurado para denominar a rede por ele criada, e também o modo de segurança para uso da rede sem-fio.
 +
 
 +
=== Atividade ===
 +
 
 +
Implante sua rede sem-fio conforme as recomendações da seção anterior. Em seguida, use-a para acessar o Rpi e a Internet. Por fim, faça as seguintes verificações:
 +
* Identifique o endereço IP e demais configurações de rede obtidas na rede sem-fio, assim como o método para obtenção
 +
* Trace a rota entre o Rpi e o dispositivo sem-fio ... quantos saltos são necessários para chegar até seu dispositivo ? O que se conclui sobre a intermediação feita pelo AP ?
 +
* Meça a taxa de transferência (''velocidade da rede'') a partir da rede sem-fio, e compare-a com a da rede cabeada.
 +
* Acrescente outro dispositivo à sua rede sem-fio, e repita a medição da taxa de transferência, porém simultaneamente a partir de ambos dispositivos
 +
{{collapse bottom | Aula 30}}
 +
 
 +
= 07/06: Projeto 2: estabelecendo o enlace WAN (continuação)=
 +
 
 +
{{collapse top | Aula 31}}
 +
 
 +
{{collapse bottom | Aula 31}}
 +
 
 +
= 09/06: Projeto 2: estabelecendo o enlace WAN (continuação)=
 +
 
 +
{{collapse top | Aula 32}}
 +
 
 +
{{collapse bottom | Aula 32}}
 +
 
 +
= 14/06: Projeto 2: a rede de dados e a rede telefônica =
 +
 
 +
{{collapse top|Aula 33}}
 +
No final do projeto 2, um serviço telefônico será adicionado à rede implantada até então. Esse serviço fará uso de aparelhos telefônicos convencionais e também dispositivos capazes de fazer chamadas de voz utilizando a rede de dados (ex: smartphones, computadores com softphones). Além disso, o serviço de voz a ser agregado à rede será implantado com diferentes tecnologias (convencional e por meio da rede de dados). A figura a seguir ilustra o acréscimo a ser feito inicialmente à rede:
 +
 
 +
[[imagem:Pji1-Projeto3-geral.png]]
 +
 
 +
Para começar, cada equipe deve instalar um telefone IP, e prepará-lo para uso. O objetivo é '''cada equipe conseguir fazer chamadas a qualquer das outras equipes'''.
 +
 
 +
== Uma introdução a redes telefônicas ==
 +
 
 +
Uma rede telefônica pode ser vista de forma (muito) simplificada na figura abaixo. O objetivo desse diagrama é evidenciar alguns elementos existentes na borda dessa rede:
 +
* os assinantes com seus telefones e PBX (um tipo de central telefônica privativa)
 +
* o laço local, que é o par de fios metálicos que chega ao assinante
 +
* a interface FXO, que liga o PBX a um tronco analógico.
 +
* a interface FXS, que fornece a linha telefônica a telefones de ramais.
 +
 
 +
[[imagem:PJI1-Rede-relefonica-simples.png]]
 +
 
 +
 
 +
Uma coisa importante a notar é que cada linha telefônica tem um número de assinante (o número de telefone). Esse número é fisicamente vinculado a essa linha, portanto qualquer aparelho telefônico a ela ligado irá atender por esse número. Outra coisa a se observar é que a rede telefônica tem uma infraestrutura exclusiva para o transporte das chamadas (quer dizer, toda a fiação e interligação de centrais mundo afora).
 +
 
 +
 
 +
A figura abaixo mostra um diagrama simplificado de uma rede telefônica baseada em VoIP (Voz sobre IP). Alguns elementos importantes são:
 +
* o servidor SIP, que funciona como uma central telefônica para essa rede.
 +
* o telefone IP, que é um aparelho telefônico capaz de se comunicar diretamente por essa rede.
 +
* o ATA (Adaptador de Telefone Analógico), que possibilita usar essa rede com um telefone analógico convencional.
 +
* a infraestrutura da rede de dados, que possibilita a comunicação entre os telefones IP e o servidor SIP (e, claro, o transporte das chamadas)
 +
 
 +
[[imagem:Pji1-Rede-sip1.png]]
  
= 22/06: Projeto 2: Experimentando o link WAN =
 
  
{{collapse top|Aula 27 (continuação da aula 26)}}
+
Na rede acima, o número de assinante usado por um telefone IP (ou ATA) é registrado no servidor SIP. Assim, qualquer telefone IP ou ATA pode personificar um determinado número de assinante, bastando que se registre nesse servidor. Outra diferença em relação à rede telefônica convencional é o uso da rede de dados (Internet) para a realização de chamadas. Portanto, não há uma rede exclusiva para o transporte das chamadas.
  
{{collapse bottom|Aula 27}}
+
Por fim, ambas redes podem conviver e chamadas podem sair de uma rede e se destinar à outra. A figura abaixo mostra um exemplo simplificado de como essas redes podem se interligar.
  
 +
[[imagem:Pji1-Rede-sip-pstn.png]]
  
= 27/06: Projeto 2: Conclusão =
+
== Instalação de um telefone IP ou ATA ==
  
{{collapse top|Aula 28}}
+
Tanto um telefone IP quanto um ATA são hosts de uma rede TCP/IP. Portanto, [[PJI2-2017-1#O_que_todo_host_deve_possuir|como todo host, eles precisam de algumas definições]]. Além disso, devem ser configuradas algumas informações específicas da rede telefônica VoIP:
O projeto 2 envolveu a implantação de uma pequena rede com acesso a Internet. Inicialmente instalou-se o sistema operacional em um computador. Em seguida, gradualmente implantou-se a infraestrutura da rede. Por fim, algumas possibilidades de combinações entre equipamentos foram experimentadas, observando as implicações do ponto de vista do endereçamento e roteamento.
+
* O número do telefone, chamado de ''usuário SIP'' ou ''conta SIP''.
 +
* A senha para verificação do usuário SIP: essa senha é utilizada para autorizar o usuário SIP junto ao servidor SIP. Lembre que o servidor SIP funciona como uma central telefônica para o serviço de voz a ser implantado.
 +
* O endereço do servidor SIP: alguns aparelhos pedem também os endereços do servidor de registro e proxy, que usualmente são os mesmos. O servidor SIP a ser usado deve ser o do provedor VoIP que fornece o serviço telefônico VoIP contratado (ver [http://www.teleco.com.br/opvoip.asp algumas opções no Brasil]).
 +
* O domínio da rede telefônica VoIP a que ele pertence: isso é opcional em nosso experimento, porém em uma rede VoIP de fato tal informação é essencial.
  
A conclusão do projeto 2 envolve cada equipe implantar a aplicação escolhida na [[PJI-2016-1#O_tema_do_projeto_2|aula de 16/05]].
 
  
A apresentação do projeto será dia '''04/07 (2a feira).'''
+
Basicamente as informações acima são necessárias em qualquer telefone IP, ATA, softphone, ou dispositivo que use a rede telefônica VoIP. Porém cada equipamento tem suas particularidades, como se descobrirá no laboratório hoje.
  
{{collapse bottom|Aula 28}}
+
== Atividade ==
  
= 29/06: Projeto 2: Conclusão =
+
* [http://tele.sj.ifsc.edu.br/~msobral/pji/intelbras/manual_GKM_2000T.pdf Manual ATA GKM 2000T]
 +
* [http://tele.sj.ifsc.edu.br/~msobral/pji/intelbras/manual_intelbras_gkm1000.pdf Manual ATA GKM 1000]
 +
* [http://tele.sj.ifsc.edu.br/~msobral/pji/intelbras/Manual_do_usuario_Intelbras_Voiper1.pdf Manual Telefone IP Voiper]
  
{{collapse top|Aula 29 (continuação da aula 28)}}
+
Hoje cada equipe deve conseguir ativar um telefone IP, e usá-lo para fazer chamadas para outras equipes.
  
{{collapse bottom|Aula 29}}
+
Há dois tipos de telefone no laboratório:
 +
* '''Telefone IP:''' possuem toda a funcionalidade necessária para fazer chamadas de voz sobre a rede de dados (VoIP)
 +
* '''Telefones convencionais + ATA:''' a funcionalidade para fazer chamadas sobre a rede de dados é fornecida pelo ATA (Adaptador de Telefone Analógico). A ele se conecta um telefone analógico convencional, e com isso se conseguem fazer e receber chamadas de voz.
  
= 04/07: Projeto 2: Conclusão =
+
Em ambos os casos, devem-se configurar esses dispositivos com algumas informações:
 +
* '''Usuário:''' o número de ramal (ou mesmo de telefone). Use 1000+''número de sua equipe'' (ex: equipe 1 usa 1001).
 +
* '''Senha:''' a senha para registro do dispositivo na central telefônica VoIP
 +
* '''Servidor SIP:''' endereço IP da central telefônica VoIP (no caso, 192.168.1.101)
 +
* '''Endereço IP:''' o endereço IP a ser usado pelo telefone ou ATA
 +
* '''Gateway:''' o roteador default do telefone ou ATA (no caso, o gateway da sua rede)
  
{{collapse top|Aula 30 (continuação da aula 28)}}
+
Tanto o ATA quanto o telefone IP podem ser configurados pelo teclado ou por uma página web. Ao menos o endereço IP precisa ser definido para acessar a página web. Cada modelo de equipamento tem suas particularidades, que estão explicadas em seus manuais.
  
{{collapse bottom|Aula 30}}
+
Após configurar os equipamentos, teste a chamada entre equipes.
  
= 06/07: Projeto 2: Apresentação =
+
== Extra: usando a rede telefônica VoIP com os smartphones ==
  
* [http://tele.sj.ifsc.edu.br/~msobral/pji/avaliacao2.pdf Avaliacao 2]
+
Os smartphones são capazes de fazerem chamados usando a rede telefônica VoIP que implantamos. Eles precisam de um app capaz de fazer e receber chamadas SIP (isso se chama softphone). Para Android alguns softphones são:
 
+
* Zoiper
= 11/07: Projeto 3 a rede de dados e a rede telefônica =
+
* Linphone
 +
* CSipSimple
 +
* SIPdroid
 +
* PortGo
  
{{collapse top|Aula 32}}
+
A configuração desses app é muito parecida com a de telefones IP ou ATA, mas mais simples.
No projeto 3, um serviço telefônico será adicionado à rede implantada até então. Esse serviço fará uso de aparelhos telefônicos convencionais e também dispositivos capazes de fazer chamadas de voz utilizando a rede de dados (ex: smartphones, computadores com softphones). Além disso, o serviço de voz a ser agregado à rede será implantado com diferentes tecnologias (convencional e por meio da rede de dados). A figura a seguir ilustra o acréscimo a ser feito inicialmente à rede:
 
  
[[imagem:Pji1-Projeto3-geral.png]]
+
{{collapse bottom | Aula 33}}
  
Para começar, cada equipe deve instalar um telefone IP, e prepará-lo para uso. O objetivo é '''cada equipe conseguir fazer chamadas a qualquer das outras equipes'''.
+
= 21/06: Projeto 2: instalação dos PBX das equipes =
  
== Uma introdução a redes telefônicas ==
+
{{Collapse top | Aula 34}}
  
Uma rede telefônica pode ser vista de forma (muito) simplificada na figura abaixo. O objetivo desse diagrama é evidenciar alguns elementos existentes na borda dessa rede:
+
Nesta etapa do projeto 2, cada equipe deve ter o seu PBX IP capaz de fazer chamadas entre telefones e softphones. Lembrem que um PBX IP pode ser entendido como um pequena central telefônica privada capaz de fazer chamadas telefônicas através da Internet. Esse tipo de PBX usa alguma tecnologia VoIP (''Voice over IP'' - Voz sobre IP) para fazer chamadas e transmitir a voz digitalizada entre os telefones. Na nossa instalação, a tecnologia usada se chama modelo SIP. Com esses recursos, pretende-se criar uma rede telefônica privativa em laboratório, em que todas as equipes podem fazer chamadas entre si, como mostrado na figura a seguir.
* os assinantes com seus telefones e PBX (um tipo de central telefônica privativa)
 
* o laço local, que é o par de fios metálicos que chega ao assinante
 
* a interface FXO, que liga o PBX a um tronco analógico.
 
* a interface FXS, que fornece a linha telefônica a telefones de ramais.
 
  
[[imagem:PJI1-Rede-relefonica-simples.png]]
+
[[imagem:Pji1-projeto3-pbxs.png|600px]]
 +
<br>''Exemplo da rede telefônica no laboratório entre duas equipes. As linhas tracejadas mostram as etapas para o estabelecimento de uma chamada desde a Equipe A até Equipe B''
  
 +
Para realizar as atividades, serão usados alguns ''blocos de montagem'':
 +
* '''PBX IP''': um computador com software [http://www.asterisk.org Asterisk] devidamente instalado e configurado deve fazer o papel de PBX. Existem outros softwares capazes de transformarem um computador em PBX IP, tais como  http://www.freeswitch.org Freeswitch] e [http://www.sneplivre.com.br Snep] (este útlimo na verdade é composto por um Asterisk e uma interface de administração, mas ainda tem muitos bugs).
 +
* '''Telefones IP''': telefone IP é o aparelho que contém todas as funcionalidades para fazer e receber chamadas VoIP. Ele tem as teclas para discagem, o bocal, e embute um pequeno computador para se comunicar pela rede.
 +
* '''ATA''': o ''Adaptador de Telefone Analógico'' (ATA) é usado para tornar um telefone analógico capaz de fazer chamadas VoIP. O ATA contém um pequeno computador e interface de rede.
 +
* '''Softphone''': um telefone IP implementado em software. Como ele pode-se transformar um computador, tablet ou smartphone em telefone IP capaz de fazer chamadas pela rede telefônica VoIP implantada. Exemplos de softphone são [http://jitsi.org Jitsi] (para computadores) e [http://www.zoiper.com Zoiper] (para tablets e smartphones Android).
 +
* '''Provedor SIP''': este é um PBX IP especial, que tem papel de interconectar outros PBX IP e, possivelmente, prover acesso a PSTN. No nosso caso, ele vai interligar os PBX das equipes.
  
Uma coisa importante a notar é que cada linha telefônica tem um número de assinante (o número de telefone). Esse número é fisicamente vinculado a essa linha, portanto qualquer aparelho telefônico a ela ligado irá atender por esse número. Outra coisa a se observar é que a rede telefônica tem uma infraestrutura exclusiva para o transporte das chamadas (quer dizer, toda a fiação e interligação de centrais mundo afora).
+
== Atividade 1: rede telefônica VoIP de cada equipe ==
  
 +
Cada equipe deve ter seu PBX IP instalado.
  
A figura abaixo mostra um diagrama simplificado de uma rede telefônica baseada em VoIP (Voz sobre IP). Alguns elementos importantes são:
+
O primeiro passo é conseguir fazer chamadas entre telefones IP e softphones da própria equipe. Sendo assim, deve-se garantir que a rede IP esteja funcionando adequadamente:
* o servidor SIP, que funciona como uma central telefônica para essa rede.
+
# Roteador ADSL:
* o telefone IP, que é um aparelho telefônico capaz de se comunicar diretamente por essa rede.
+
## Rede externa: interface WAN com endereço dinâmico (fornecido pelo provedor com PPPoE).
* o ATA (Adaptador de Telefone Analógico), que possibilita usar essa rede com um telefone analógico convencional.
+
## Rede interna: interface LAN com endereço fixo.
* a infraestrutura da rede de dados, que possibilita a comunicação entre os telefones IP e o servidor SIP (e, claro, o transporte das chamadas)
+
## Roteamento: rota padrão definida diretamente pelo PPPoE.
 +
## NAT ativado.
 +
#Roteador Wireless
 +
##Rede externa:interface WAN com endereço fixo na mesma faixa da LAN do Roteador ADSL.
 +
## Rede interna: interface LAN com endereço fixo.
 +
## Serviço DHCP para a LAN: faixa de endereços que não conflite com os endereços do roteador e servidor (central).
 +
## Roteamento: rota padrão para o roteador ADSL
 +
# Servidor (Central):
 +
## Rede: interface com endereço fixo.
 +
## Roteamento: rota padrão para o roteador Wireless.
  
[[imagem:Pji1-Rede-sip1.png]]
+
=== Elementos básicos do Asterisk ===
  
 +
* [http://tele.sj.ifsc.edu.br/~msobral/rmu/slides/aula-25.pdf Transparências]
 +
* [http://www.asterisk.org Site oficial do Asterisk]
 +
* [http://www.asteriskguru.com/ Asterisk Guru]
 +
* [http://www.voip-info.org/wiki Dicas sobre Asterisk]
 +
* [http://www.asteriskdocs.org/ Livro online gratuito sobre Asterisk]
 +
* [http://www.packetizer.com/ipmc/sip/papers/understanding_sip_voip/ Introdução a VoIP e SIP]
  
Na rede acima, o número de assinante usado por um telefone IP (ou ATA) é registrado no servidor SIP. Assim, qualquer telefone IP ou ATA pode personificar um determinado número de assinante, bastando que se registre nesse servidor. Outra diferença em relação à rede telefônica convencional é o uso da rede de dados (Internet) para a realização de chamadas. Portanto, não há uma rede exclusiva para o transporte das chamadas.
 
  
Por fim, ambas redes podem conviver e chamadas podem sair de uma rede e se destinar à outra. A figura abaixo mostra um exemplo simplificado de como essas redes podem se interligar.
+
'''Asterisk:''' uma solução completa de PABX baseado em software, permitindo ligar o mundo IP ao mundo da rede pública de telefonia comutada.
  
[[imagem:Pji1-Rede-sip-pstn.png]]
 
  
== Instalação de um telefone IP ou ATA ==
+
Basicamente dois componentes do Asterisk precisam ser entendidos para poder usá-lo:
 +
* '''Plano de discagem:''' o plano de discagem define como cada chamada deve ser processada. As instruções de processamento residem no arquivo de configuração ''/etc/asterisk/extensions.conf''. O fluxo de processamento de chamadas pode ser visto resumidamente abaixo:<br><br>[[imagem:Asterisk-fluxo.png|400px]]
 +
* '''Canais:''' cada telefone SIP deve ter seu identificador cadastrado no Asterisk. O identificador pode tanto ser um número, análogo a um ramal, ou uma string alfanumérica. No terminologia do Asterisk, cada telefone SIP é chamado de ''canal SIP'', e deve estar declarado em ''/etc/asterisk/sip.conf''. Há outros tipos de canais além de SIP, os quais possibilitam integrar telefones analógicos e troncos digitais ao PBX.
  
Tanto um telefone IP quanto um ATA são hosts de uma rede TCP/IP. Portanto, [[PJI-2015-1#O_que_todo_host_deve_possuir|como todo host, eles precisam de algumas definições]]. Além disso, devem ser configuradas algumas informações específicas da rede telefônica VoIP:
+
=== Instalação do Asterisk ===
* O número do telefone, chamado de ''usuário SIP'' ou ''conta SIP''.
 
* A senha para verificação do usuário SIP: essa senha é utilizada para autorizar o usuário SIP junto ao servidor SIP. Lembre que o servidor SIP funciona como uma central telefônica para o serviço de voz a ser implantado.
 
* O endereço do servidor SIP: alguns aparelhos pedem também os endereços do servidor de registro e proxy, que usualmente são os mesmos. O servidor SIP a ser usado deve ser o do provedor VoIP que fornece o serviço telefônico VoIP contratado (ver [http://www.teleco.com.br/opvoip.asp algumas opções no Brasil]).
 
* O domínio da rede telefônica VoIP a que ele pertence: isso é opcional em nosso experimento, porém em uma rede VoIP de fato tal informação é essencial.
 
  
 +
Instale o Asterisk no computador do centro de midia, e configure-o para possibilitar chamadas entre ramais da equipe:
 +
# Instale o Asterisk: <syntaxhighlight lang=bash>
 +
sudo apt-get install asterisk
 +
</syntaxhighlight>
 +
# As configurações do Asterisk ficam no subdiretório ''/etc/asterisk''. Precisaremos renomear alguns arquivos de configuração, pois iremos substitui-los por outros: <syntaxhighlight lang=bash>
 +
cd /etc/asterisk
 +
sudo mv sip.conf sip.conf.old
 +
sudo mv extensions.conf extensions.conf.old
 +
</syntaxhighlight>
 +
# Crie o arquivo ''/etc/asterisk/sip.conf'', e nele grave o seguinte conteúdo: <syntaxhighlight lang=text>
 +
; o ramal 1000
 +
[1000]
 +
username=1000
 +
secret=542431
 +
type=friend
 +
insecure=port,invite
 +
disallow=all
 +
allow=gsm
 +
allow=ulaw
 +
allow=alaw
 +
context=default
 +
host=dynamic
 +
qualify=yes
 +
directmedia=no
  
Basicamente as informações acima são necessárias em qualquer telefone IP, ATA, softphone, ou dispositivo que use a rede telefônica VoIP. Porém cada equipamento tem suas particularidades, como se descobrirá no laboratório hoje.
+
; o ramal 1001
 
+
[1001]
== Atividade ==
+
username=1001
 
+
secret=542431
* [http://tele.sj.ifsc.edu.br/~msobral/pji/intelbras/manual_GKM_2000T.pdf Manual ATA GKM 2000T]
+
type=friend
* [http://tele.sj.ifsc.edu.br/~msobral/pji/intelbras/manual_intelbras_gkm1000.pdf Manual ATA GKM 1000]
+
insecure=port,invite
* [http://tele.sj.ifsc.edu.br/~msobral/pji/intelbras/Manual_do_usuario_Intelbras_Voiper1.pdf Manual Telefone IP Voiper]
+
disallow=all
 
+
allow=gsm
Hoje cada equipe deve conseguir ativar um telefone IP, e usá-lo para fazer chamadas para outras equipes.
+
allow=ulaw
 
+
allow=alaw
Há dois tipos de telefone no laboratório:
+
context=default
* '''Telefone IP:''' possuem toda a funcionalidade necessária para fazer chamadas de voz sobre a rede de dados (VoIP)
+
host=dynamic
* '''Telefones convencionais + ATA:''' a funcionalidade para fazer chamadas sobre a rede de dados é fornecida pelo ATA (Adaptador de Telefone Analógico). A ele se conecta um telefone analógico convencional, e com isso se conseguem fazer e receber chamadas de voz.
+
qualify=yes
 
+
directmedia=no
Em ambos os casos, devem-se configurar esses dispositivos com algumas informações:
 
* '''Usuário:''' o número de ramal (ou mesmo de telefone). Use 1000+''número de sua equipe'' (ex: equipe 1 usa 1001).
 
* '''Senha:''' a senha para registro do dispositivo na central telefônica VoIP
 
* '''Servidor SIP:''' endereço IP da central telefônica VoIP (no caso, 192.168.1.101)
 
* '''Endereço IP:''' o endereço IP a ser usado pelo telefone ou ATA
 
* '''Gateway:''' o roteador default do telefone ou ATA (no caso, o gateway da sua rede)
 
  
Tanto o ATA quanto o telefone IP podem ser configurados pelo teclado ou por uma página web. Ao menos o endereço IP precisa ser definido para acessar a página web. Cada modelo de equipamento tem suas particularidades, que estão explicadas em seus manuais.
+
</syntaxhighlight>
 
+
# Crie o arquivo ''/etc/asterisk/extensions.conf'', e nele grave o seguinte conteúdo: <syntaxhighlight lang=text>
Após configurar os equipamentos, teste a chamada entre equipes.
+
[default]
 
+
; qualquer número de destino com quatro dígitos é comutado automaticamente
== Extra: usando a rede telefônica VoIP com os smartphones ==
+
exten=>1000,1,Dial(SIP/1000)
 
+
exten=>1001,1,Dial(SIP/1001)
Os smartphones são capazes de fazerem chamados usando a rede telefônica VoIP que implantamos. Eles precisam de um app capaz de fazer e receber chamadas SIP (isso se chama softphone). Para Android alguns softphones são:
+
</syntaxhighlight>
* Zoiper
+
# Reinicie o Asterisk: <syntaxhighlight lang=bash>
* Linphone
+
sudo service asterisk restart
* CSipSimple
+
</syntaxhighlight>
* SIPdroid
+
# Crie um ramal para cada telefone IP ou softphone de sua equipe. Não esqueça de definir uma senha '''não óbvia''' para o seu ramal !
 +
# Ative os telefones IP ou softphones, registrando-os no seu PBX IP. Você precisará do endereço IP do seu PBX, e do número de ramal com respectiva senha. Essas informações precisarão ser configuradas no telefone ou softphone.
 +
# Teste chamadas entre esses telefones.
 +
# Experimente acrescentar o seguinte a ''/etc/asterisk/extensions.conf'': <syntaxhighlight lang=text>
 +
exten=>999,1,Answer()
 +
same=>n,wait(1)
 +
same=>n,Playback(tt-monkeys)
 +
same=>n,Wait(1)
 +
same=>n,Hangup()
 +
</syntaxhighlight>Em seguida execute este comando: <syntaxhighlight lang=bash>
 +
sudo service asterisk restart
 +
</syntaxhighlight>... e experimente chamar o número ''999''.
 +
# Agora baixe [http://172.18.20.251/~msobral/vol2.sln este arquivo de som] e grave-o em ''/var/tmp''. Em seguida, modifique o plano de discagem para que a extensão 999 fique assim: <syntaxhighlight lang=text>
 +
exten=>999,1,Answer()
 +
same=>n,wait(1)
 +
same=>n,Playback(/var/tmp/vol2)
 +
same=>n,Wait(1)
 +
same=>n,Hangup()
 +
</syntaxhighlight>Em seguida execute este comando: <syntaxhighlight lang=bash>
 +
sudo service asterisk restart
 +
</syntaxhighlight>... e experimente chamar novamente o número ''999''.
  
A configuração desses app é muito parecida com a de telefones IP ou ATA, mas mais simples.
+
{{Collapse bottom | Aula 34}}
 
 
{{collapse bottom}}
 
 
 
= 13/07: Projeto 3: instalação dos PBX das equipes =
 
 
 
* '''ATENÇÃO:''' favor acessar [http://bit.ly/lixodescarte este formulário] e preenchê-lo.
 
 
 
{{Collapse top | Aula 33}}
 
 
 
Nesta etapa do projeto 3, cada equipe deve ter o seu PBX IP capaz de fazer chamadas entre telefones e softphones. Lembrem que um PBX IP pode ser entendido como um pequena central telefônica privada capaz de fazer chamadas telefônicas através da Internet. Esse tipo de PBX usa alguma tecnologia VoIP (''Voice over IP'' - Voz sobre IP) para fazer chamadas e transmitir a voz digitalizada entre os telefones. Na nossa instalação, a tecnologia usada se chama modelo SIP. Com esses recursos, pretende-se criar uma rede telefônica privativa em laboratório, em que todas as equipes podem fazer chamadas entre si, como mostrado na figura a seguir.
 
 
 
[[imagem:Pji1-projeto3-pbxs.png|600px]]
 
<br>''Exemplo da rede telefônica no laboratório entre duas equipes. As linhas tracejadas mostram as etapas para o estabelecimento de uma chamada desde a Equipe A até Equipe B''
 
 
 
Para realizar as atividades, serão usados alguns ''blocos de montagem'':
 
* '''PBX IP''': um computador com software [http://www.asterisk.org Asterisk] devidamente instalado e configurado deve fazer o papel de PBX. Existem outros softwares capazes de transformarem um computador em PBX IP, tais como  http://www.freeswitch.org Freeswitch] e [http://www.sneplivre.com.br Snep] (este útlimo na verdade é composto por um Asterisk e uma interface de administração, mas ainda tem muitos bugs).
 
* '''Telefones IP''': telefone IP é o aparelho que contém todas as funcionalidades para fazer e receber chamadas VoIP. Ele tem as teclas para discagem, o bocal, e embute um pequeno computador para se comunicar pela rede.
 
* '''ATA''': o ''Adaptador de Telefone Analógico'' (ATA) é usado para tornar um telefone analógico capaz de fazer chamadas VoIP. O ATA contém um pequeno computador e interface de rede.
 
* '''Softphone''': um telefone IP implementado em software. Como ele pode-se transformar um computador, tablet ou smartphone em telefone IP capaz de fazer chamadas pela rede telefônica VoIP implantada. Exemplos de softphone são [http://jitsi.org Jitsi] (para computadores) e [http://www.zoiper.com Zoiper] (para tablets e smartphones Android).
 
* '''Provedor SIP''': este é um PBX IP especial, que tem papel de interconectar outros PBX IP e, possivelmente, prover acesso a PSTN. No nosso caso, ele vai interligar os PBX das equipes.
 
 
 
== Atividade 1: rede telefônica VoIP de cada equipe ==
 
 
 
Cada equipe deve ter seu PBX IP instalado.
 
 
 
O primeiro passo é conseguir fazer chamadas entre telefones IP e softphones da própria equipe. Sendo assim, deve-se garantir que a rede IP esteja funcionando adequadamente:
 
# Roteador ADSL:
 
## Rede externa: interface WAN com endereço dinâmico (fornecido pelo provedor com PPPoE).
 
## Rede interna: interface LAN com endereço fixo.
 
## Roteamento: rota padrão definida diretamente pelo PPPoE.
 
## NAT ativado.
 
#Roteador Wireless
 
##Rede externa:interface WAN com endereço fixo na mesma faixa da LAN do Roteador ADSL.
 
## Rede interna: interface LAN com endereço fixo.
 
## Serviço DHCP para a LAN: faixa de endereços que não conflite com os endereços do roteador e servidor (central).
 
## Roteamento: rota padrão para o roteador ADSL
 
# Servidor (Central):
 
## Rede: interface com endereço fixo.
 
## Roteamento: rota padrão para o roteador Wireless.
 
 
 
=== Elementos básicos do Asterisk ===
 
 
 
* [http://tele.sj.ifsc.edu.br/~msobral/rmu/slides/aula-25.pdf Transparências]
 
* [http://www.asterisk.org Site oficial do Asterisk]
 
* [http://www.asteriskguru.com/ Asterisk Guru]
 
* [http://www.voip-info.org/wiki Dicas sobre Asterisk]
 
* [http://www.asteriskdocs.org/ Livro online gratuito sobre Asterisk]
 
* [http://www.packetizer.com/ipmc/sip/papers/understanding_sip_voip/ Introdução a VoIP e SIP]
 
 
 
 
 
'''Asterisk:''' uma solução completa de PABX baseado em software, permitindo ligar o mundo IP ao mundo da rede pública de telefonia comutada.
 
 
 
 
 
Basicamente dois componentes do Asterisk precisam ser entendidos para poder usá-lo:
 
* '''Plano de discagem:''' o plano de discagem define como cada chamada deve ser processada. As instruções de processamento residem no arquivo de configuração ''/etc/asterisk/extensions.conf''. O fluxo de processamento de chamadas pode ser visto resumidamente abaixo:<br><br>[[imagem:Asterisk-fluxo.png|400px]]
 
* '''Canais:''' cada telefone SIP deve ter seu identificador cadastrado no Asterisk. O identificador pode tanto ser um número, análogo a um ramal, ou uma string alfanumérica. No terminologia do Asterisk, cada telefone SIP é chamado de ''canal SIP'', e deve estar declarado em ''/etc/asterisk/sip.conf''. Há outros tipos de canais além de SIP, os quais possibilitam integrar telefones analógicos e troncos digitais ao PBX.
 
 
 
=== Instalação do Asterisk ===
 
 
 
Instale o Asterisk no computador do centro de midia, e configure-o para possibilitar chamadas entre ramais da equipe:
 
# Instale o Asterisk: <syntaxhighlight lang=bash>
 
sudo apt-get install asterisk
 
</syntaxhighlight>
 
# As configurações do Asterisk ficam no subdiretório ''/etc/asterisk''. Precisaremos renomear alguns arquivos de configuração, pois iremos substitui-los por outros: <syntaxhighlight lang=bash>
 
cd /etc/asterisk
 
sudo mv sip.conf sip.conf.old
 
sudo mv extensions.conf extensions.conf.old
 
</syntaxhighlight>
 
# Crie o arquivo ''/etc/asterisk/sip.conf'', e nele grave o seguinte conteúdo: <syntaxhighlight lang=text>
 
; o ramal 1000
 
[1000]
 
username=1000
 
secret=542431
 
type=friend
 
insecure=port,invite
 
disallow=all
 
allow=gsm
 
allow=ulaw
 
allow=alaw
 
context=default
 
host=dynamic
 
qualify=yes
 
directmedia=no
 
 
 
; o ramal 1001
 
[1001]
 
username=1001
 
secret=542431
 
type=friend
 
insecure=port,invite
 
disallow=all
 
allow=gsm
 
allow=ulaw
 
allow=alaw
 
context=default
 
host=dynamic
 
qualify=yes
 
directmedia=no
 
 
 
</syntaxhighlight>
 
# Crie o arquivo ''/etc/asterisk/extensions.conf'', e nele grave o seguinte conteúdo: <syntaxhighlight lang=text>
 
[default]
 
; qualquer número de destino com quatro dígitos é comutado automaticamente
 
exten=>1000,1,Dial(SIP/1000)
 
exten=>1001,1,Dial(SIP/1001)
 
</syntaxhighlight>
 
# Reinicie o Asterisk: <syntaxhighlight lang=bash>
 
sudo service asterisk restart
 
</syntaxhighlight>
 
# Crie um ramal para cada telefone IP ou softphone de sua equipe. Não esqueça de definir uma senha '''não óbvia''' para o seu ramal !
 
# Ative os telefones IP ou softphones, registrando-os no seu PBX IP. Você precisará do endereço IP do seu PBX, e do número de ramal com respectiva senha. Essas informações precisarão ser configuradas no telefone ou softphone.
 
# Teste chamadas entre esses telefones.
 
# Experimente acrescentar o seguinte a ''/etc/asterisk/extensions.conf'': <syntaxhighlight lang=text>
 
exten=>999,1,Answer()
 
same=>n,wait(1)
 
same=>n,Playback(tt-monkeys)
 
same=>n,Wait(1)
 
same=>n,Hangup()
 
</syntaxhighlight>Em seguida execute este comando: <syntaxhighlight lang=bash>
 
sudo service asterisk restart
 
</syntaxhighlight>... e experimente chamar o número ''999''.
 
# Agora baixe [http://172.18.20.251/~msobral/vol2.sln este arquivo de som] e grave-o em ''/var/tmp''. Em seguida, modifique o plano de discagem para que a extensão 999 fique assim: <syntaxhighlight lang=text>
 
exten=>999,1,Answer()
 
same=>n,wait(1)
 
same=>n,Playback(/var/tmp/vol2)
 
same=>n,Wait(1)
 
same=>n,Hangup()
 
</syntaxhighlight>Em seguida execute este comando: <syntaxhighlight lang=bash>
 
sudo service asterisk restart
 
</syntaxhighlight>... e experimente chamar novamente o número ''999''.
 
 
 
{{Collapse bottom | Aula 33}}
 
  
 +
= 23/06: Projeto 2: interligando os PBX das equipes =
  
= 18/07: Projeto 3: interligando os PBX das equipes =
 
  
 
+
{{Collapse top | Aula 35}}
{{Collapse top | Aula 34}}
 
  
 
Continuando a implantação da rede telefônica, precisamos interligar os PBX das equipes:
 
Continuando a implantação da rede telefônica, precisamos interligar os PBX das equipes:
  
[[imagem:Pji1-projeto3-pbxs.png]]
+
[[imagem:Pji1-projeto3-pbxs.png|800px]]
  
  
Linha 2 148: Linha 2 935:
 
|}
 
|}
  
{{Collapse bottom | Aula 34}}
+
{{Collapse bottom | Aula 35}}
 
 
= 20/07: Projeto 3: interligando os PBX das equipes =
 
 
 
{{Collapse top | Aula 35 (continuação Aula 34) }}
 
 
 
{{Collapse bottom| Aula 35 (continuação Aula 34) }}
 
 
 
= 25/07: Projeto 3: Avaliação =
 
 
 
* [http://tele.sj.ifsc.edu.br/~msobral/pji/avaliacao3.pdf Avaliação 3]
 
 
 
= 27/07: Recuperações =
 
 
 
 
 
'''- Recuperação projeto 1:'''
 
  
Executar os itens abaixo. Ao final os professores irão solicitar informações de como cada ponto foi executado.
+
= 28/06: Projeto 2: Conclusão e avaliação =
  
# Baixar arquivos do link http://tele.sj.ifsc.edu.br/~msobral/pji/proj1/arquivos/ para terem arquivos com que trabalhar;
+
{{Collapse top | Aula 36}}
# Descompactar usando o tar;
 
# Renomear a música primavera.mp3 para outono.mp3;
 
# Criar diretórios a fim de organizar os arquivos baixados. Dentro do diretório home do seu usuário criar os subdiretórios musicas e videos e mover todas as músicas para o diretório musicas e todos os vídeos para o diretório videos. Ainda no diretório home do seu usuário criar o diretório protocolos e copiar o arquivo /etc/protocols para dentro dele;
 
# No diretório protocolos que foi criado, gerar um arquivo de texto com o seu nome e escrever dentro dele algo de seu interesse.
 
# Fazer um backup da pasta músicas usando a melhor compactação de arquivos possível.
 
  
 +
* [http://tele.sj.ifsc.edu.br/~msobral/pji2/avaliacao2.pdf Avaliação da Etapa 2]
  
'''- Recuperação projeto 2 e 3:'''
+
{{Collapse bottom | Aula 36}}
  
Executar os itens descritos no documento abaixo:
+
= 30/06: Projeto 2: Conclusão e avaliação =
  
* [http://tele.sj.ifsc.edu.br/~msobral/pji/avaliacao3.pdf Avaliação 3]
+
{{Collapse top | Aula 37}}
 +
{{Collapse bottom | Aula 37}}

Edição atual tal como às 14h16min de 7 de agosto de 2017

Endereço encurtado: http://bit.ly/pji2-20171

Presença: Neste link


Projeto Integrador II: Diário de Aula 2017-1

Professores: Marcelo Maia Sobral (Facebook2.png Facebook) e Simara (simara.sonaglio@ifsc.edu.br)
Encontros: 4a feira/19:00, 6a feira/19:00
Atendimento paralelo: 4a e 6a feira 18:30 h
Coordenadoria pedagógica (Graciane): graciane@ifsc.edu.br (3381-2890, 3381-2842)

Objetivo Geral

Implantar rede de dados e telefônica de pequeno porte, típica de um pequeno escritório.

Ementa

Introdução e histórico das telecomunicações e da Internet. Uso de serviços e aplicações oferecidos pelas redes de telecomunicações. Conceitos sobre redes de computadores: comutação de pacotes versus comutação de circuitos, redes locais e rede Internet. Instalação de computadores e integração a uma rede local e a Internet. Sistema operacional Linux. Introdução ao sistema telefônico: telefonia fixa e móvel, centrais de comutação, telefonia IP e convergência. Integração de serviços de voz convencionais e VoIP.

Bibliografia

  • FOROUZAN, Behrouz A.; FEGAN, Sophia Chung. Comunicação de dados e redes de computadores. Tradução de Ariovaldo Griesi. 4. ed. São Paulo: McGraw-Hill, 2008. 1134 p., il. ISBN 9788586804885.
  • KUROSE, J. e ROSS, K. Redes de Computadores e a Internet: Uma abordagem top-down. Tradução da 3a edição, Addison Wesley, 2006.
  • COLCHER, Sérgio. VOIP: voz sobre IP. Rio de Janeiro: Elsevier, 2005.

Material de apoio

Alguns textos interessantes

Oportunidades para Técnicos em Telecomunicações

Documentários sobre telecomunicações

Curiosidades

Avaliações

As avaliações serão de dois tipos:

  • Projetos: feitos em equipe, serão avaliados de acordo com o cumprimento dos objetivos previamente determinados. Na apresentação do projeto, uma entrevista será feita para definir o conceito concedido a cada membro da equipe.
  • Testes: feitos individualmente, serão aplicados semanalmente no início da aula. O conteúdo para esses testes serão textos informados com uma semana de antecedência, assim como as técnicas e assuntos vistos em aula. A avaliação de cada teste será dada com um dos conceitos S (suficiente) e I (insuficiente).


O conceito final será calculado da seguinte forma:

  • 9 a 10: ao menos dois projetos A e um projeto B
  • 7 a 9: ao menos dois projetos B em um projeto C
  • 6: ao menos C em todos projetos


Além disso, os testes ajustam o conceito final da seguinte maneira:

  • Incrementa: se pelo menos 75% dos testes S, incrementa conceito final em um nível (ex: B sobe para A)
  • Mantém: se pelo menos 40% dos testes S, mantém conceito final
  • Decrementa: se menos de 40% dos testes S, decrementa conceito final em um nível (ex: A reduz para B)

Projetos

Nome Projeto 1 Projeto 2 Conceito Conceito
após ajuste
162001443-2
7
3
5
5
162000955-2
0*
0*
0
0
162001092-5
6
7
7
7
162001005-4
7
10
8
9
162002311-3
7
8
7
7
162000998-6
7
9
8
9
162001423-8
7
0*
3
3
162000795-9
6
7
6
6
162001012-7
6
8
7
7
162001704-0
0*
0*
0
0
162005091-9
10
10
10
10
  • OBS: 0* = Indefinido (por ausência à avaliação)

Testes

Nome T1 T2 T3 T4 T5 T6 T7 Ajuste
162001443-2 S S S S S I I mantém
162000955-2 I I I* I* I* I* I* -
162001092-5 S S S S S I I mantém
162001005-4 S S S S S S S +1
162002311-3 I I S S S I I mantém
162000998-6 S I* S S S S S +1
162001423-8 S I S S I I I mantém
162000795-9 I S S I* S I S mantém
162001012-7 I* S S S I I I mantém
162001704-0 S I S I* I* I* I* -
162005091-9 I* S S S S S S +1

Obs: I* = não fez o teste

Equipes

Equipe Membros
1
2
3
4
5
6
7

10/02: Apresentação da disciplina

Aula 1


Objetivo da aula: usar o sistema operacional Linux para visualizar os conteúdos de arquivos


A disciplina se compõe de três etapas:

  1. Introdução ao uso do sistema operacional Linux
  2. Instalação de um computador com Linux e implantação de uma rede local com acesso a Internet
  3. Implementação de um pequeno PBX IP

Hoje inicia-se a etapa 1. Ao longo dela serão estudados alguns conceitos sobre o sistema operacional Linux, e serão praticados exercícios e resolvidos pequenos desafios relacionados com procedimentos usuais do dia-a-dia. Ao final da etapa, um pequeno projeto será realizado para consolidar o conhecimento e avaliar o progresso da turma.


O que é um sistema operacional ?

Um computador por si só é apenas um conjunto de circuitos lógicos complexos. Para ter alguma utilidade, essa máquina deve ser usada para executar programas. Programas são parecidos com receitas, contendo instruções que envolvem cálculos, cópia de dados entre componentes dentro (ex: memória, placa de video, discos) e fora do computador (ex: impressora, teclado, monitor, rede) e temporização. O principal programa executado em um computador é o sistema operacional. Esse programa especial tem por finalidade facilitar o uso do computador pelos usuários, além de aproveitar de forma eficiente seus recursos. Sem um sistema operacional um computador se torna completamente inútil.


Na área de Telecomunicações predominam sistemas operacionais da família Unix, o que inclui o Linux. Porém o conceito de sistema operacional inclui também o Windows, Mac OS X, FreeBSD, Android, iOS, e (muitos, muitos !) outros. Essa variedade tem razões históricas e tecnológicas, pois com o tempo criaram-se sistemas operacionais que exploraram novas ideias, atendiam novas necessidades e se adequavam a novos tipos de computadores.


Apesar de existirem muitos diferentes sistemas operacionais, eles compartilham algumas características. Esta animação se baseia no antigo sistema operacional Windows 95, porém revela atribuições elementares de um sistema operacional ...

A Saga do Windows


Não há um video tão direto e divertido como esse que se baseie no Linux. Mas alguns documentários podem contextualizar o Linux e contar um pouco de sua história, como estes videos:

Revolution OS: A História do Linux, GNU e software livre

The Code Linux - documentário sobre Linux


O que esses videos procuram revelar é que o sistema operacional é um programa que articula os recursos do computador (hardware) para que usuários possam executar programas (software). O sistema operacional por si só não tem utilidade, pois ele existe para viabilizar o uso de aplicativos, e esses sim são úteis para os usuários. Costuma-se dizer também que um sistema operacional pode ser visto como uma plataforma de software sobre a qual podem-se criar e utilizar programas.


Pji-So1.png
Um sistema computacional é formado por hardware e software, e é utilizado por pessoas ou mesmo outros sistemas


Alguns conceitos são comuns ao projeto de sistemas operacionais:

  • Interface com o usuário, tanto gráfica quanto via terminal com o interpretador de comandos (shell)
  • Processos (programas em execução), sendo usual hoje em dia que múltiplos processos possam coexistir em um sistema operacional
  • Gerenciamento dos recursos do computador (memória, discos, ...), de forma a tirar melhor proveito de suas capacidades
  • Arquivos e diretórios, para facilitar o armazenamento de dados e sua organização
  • Rede (comunicação com outros computadores), uma vez que hoje em dia é inconcebível que um dispositivo computacional não possa se comunicar com outros dispositivos


O sistema operacional Linux

O sistema operacional Linux nasceu de um projeto do então estudante Linus Torvalds, no início da década de 1990. Na verdade, Linux o nome do núcleo do sistema operacional, que é seu componente fundamental responsável por controlar o hardware e oferecer um conjunto de abstrações, mecanismos e facilidades para sua utilização por programadores e usuários. O desenvolvimento do Linux, desde sua origem, se dá pela colaboração de diversos programadores ao redor do mundo, tendo também a participação de empresas em tempos recentes. Todas as contribuições são abertas e gratuitas, independente se vindas de pessoas ou empresas.


O sistema operacional que se utiliza em computadores se compõe do núcleo Linux e um conjunto de programas e demais arquivos para formar um ambiente de trabalho. Essa combinação de diferentes programas, e as facilidades para instalá-los e mantê-los, se chama distribuição Linux. Existem muitas distribuições Linux, sendo algumas das mais conhecidas Ubuntu, Fedora, Debian, Linux Mint, ArchLinux e OpenSuSE. A escolha da distribuição a ser usada depende do gosto e conhecimento do usuário e, em certos casos, do uso específico que se pretende.


Pji1-Tux-2.png
Tux, o mascote Linux, caracterizado para as distribuições Mint, Ubuntu e Fedora.


Tradicionalmente, um sistema operacional Linux oferece uma interface de usuário baseada em linha de comando. Essa interface em modo texto está sempre disponível, sendo apresentada pelo menos durante a inicialização do sistema. Em seus primórdios havia apenas essa interface, porém uma interface gráfica também foi desenvolvida e incorporada às distribuições Linux. Essa interface gráfica é implementada por um conjunto de programas, diferente de sistemas Windows, em que ela faz parte do núcleo do sistema. Com isso, podem-se usar diferentes interfaces gráficas em um mesmo sistema operacional Linux.


Pji1-Linux-cli.png
A interface de linha de comando do Linux


Pji1-Linux-gui-1.png
A interface gráfica Unity do Ubuntu Linux


Pji1-Linux-gui-2.png
A interface gráfica Mate do Ubuntu Mate

Curiosidade: sistemas operacionais usados em equipamentos de rede

Equipamentos de rede como roteadores, pontos de acesso, modems adsl, switches ethernet e mesmo centrais telefônicas podem ser considerados computadores especializados. Todos possuem algum sistema operacional sobre o qual outros softwares são usados para implementar as funções de cada equipamento.

A carga do sistema operacional (boot)


A carga do sistema operacional corresponde ao início de sua execução. Quando o computador é ligado, o sistema operacional deve ser iniciado e isso depende do carregador de boot (boot loader), ou simplesmente boot. O boot é um programa que carrega para a memória RAM o núcleo do sistema operacional, chamado de kernel, e o executa. Lembre que o sistema operacional também é um programa ! Uma vez em execução, o sistema operacional toma conta do computador. A figura a seguir ilustra todo esse processo em um computador do tipo PC.

Pji-Boot1.gif
O processo de boot em um computador do tipo PC


Existem diferentes boot loaders, porém o mais utilizado atualmente é o Grub. Esse boot é bastante flexível, e também complexo ! Normalmente a instalação do sistema operacional cuida dos detalhes para a correta instalação do Grub, e existem ferramentas administrativas que possibilitam sua manutenção após instalado (ex: quando se deseja ter mais de um sistema operacional no computador). Mas quando ocorrem problemas mais complicados, inevitavelmente deve-se restaurá-lo manualmente. E aí valem os tutoriais descritos nesta seção.


Sistemas operacionais usados em equipamentos de rede

Equipamentos de rede como roteadores, pontos de acesso, modems adsl, switches ethernet e mesmo centrais telefônicas podem ser considerados computadores especializados. Todos possuem algum sistema operacional sobre o qual outros softwares são usados para implementar as funções de cada equipamento.

Interface com o usuário

Hoje, em particular, precisaremos explorar um pouco dos conceitos de interface com o usuário, arquivos e aplicativos. A interface a ser usada inicialmente é a interface gráfica (GUI - Graphical User Interface). A figura a seguir mostra essa interface, conforme a que existe nos computadores do laboratório:

Pji-Terminal1.png
Uma interface gráfica ...


Outro tipo de interface a ser usada é a interface de linha de comando, ou simplesmente interface de texto (CLI - Command Line Interface). Essa interface se apresenta como uma tela de texto, sem recursos gráficos nem interação com mouse, onde se podem somente digitar comandos e visualizar seus resultados na forma de texto simples. A figura a seguir mostra uma interface de texto:

Pji-CLI.png
Uma interface de linha de comando acessível em um terminal ...


Em especial, ao longo da disciplina faremos uso intensivo da interface de linha de comando por meio de terminais (ver figura acima). Uma boa introdução ao uso do terminal pode ser lida no material de apoio.

Algumas atividades para o uso do sistema operacional

Ao longo da disciplina, diversas atividades precisarão ser realizadas com o sistema operacional. Algumas delas são bastante corriqueiras, e por isso acabam sendo realizadas desde as primeiras vezes em que se usa o sistema. Elas envolvem:

  • Iniciar e encerrar uma sessão no Linux: sessões são iniciadas quando um usuário se autentica no sistema operacional, iniciando sua interface de trabalho (gráfica ou textual) e executando seus aplicativos. O término da sessão encerra todos os programas em execução iniciados pelo usuário (há exceções).
  • Familizarização com a interface gráfica: a interface gráfica se apresenta como a interface preferencial para a grande maioria dos usuários. Ela oferece um acesso intuitivo para aplicativos e arquivos.
  • Usar o navegador de arquivos: o acesso a arquivos e diretórios (ou pastas) pode ser feito com o navegador de arquivos. Esse aplicativo gráfico apresenta diversas facilidades para trabalhar com arquivos e diretórios.
  • Executar programas: programas podem ser executados com ajuda do sistema operacional. Basicamente podem-se classificá-los em aplicativos, que realizam tarefas para as finalidades do usuário (ex: editar texto, navegar na web), e utilitários, que servem para ajudar a usar o ambiente do sistema operacional (ex: shell, programas de cópia de arquivos). Programas podem ser executados tanto a partir da interface gráfica quanto da linha de comando.

Atividade

  1. Um conjunto de arquivos foi disponibilizado na rede do IFSC-SJ (ver este link). Usando o ambiente gráfico (GUI), obtenha cada um desses arquivos, e faça o seguinte:
    • Visualize seu conteúdo
    • Identifique o tipo de conteúdo, apontando que informação associada ao arquivo pode ser usada para descobrir isso
    • Identifique os aplicativos capazes de apresentarem esse arquivo
    • Tente modificar os conteúdos desses arquivos, identificando os aplicativos utilizados
  2. Repita a atividade anterior, porém usando a interface de linha de comando (CLI)
  3. Escreva um relatório que contenha as informações relacionadas a cada arquivo, de acordo com as atividades realizadas. Esse relatório deve ser entregue por email para os professores.

15/02: Manipulação de arquivos e diretórios

Aula 2

Objetivo da aula: usar o sistema operacional Linux para manipular arquivos e diretórios utilizando interface gráfica e linha de comando.

Uma tarefa usual em um sistema operacional é localizar arquivos. Essa procura pode ser baseada no nome ou parte do nome de arquivo, na data de criação ou última modificação, no nome do usuário ou grupo dono, ou outros atributos do arquivo. Pode ser inclusive baseada numa combinação dessas informações. Por exemplo, pode ser necessário procurar todos os arquivos de música ou video, ou então todos os programas (arquivos executáveis) que pertençam ao superusuário (usuário root). Existem programas capazes de fazer tais buscas tanto no ambiente gráfico quanto no modo texto.

As buscas a serem realizadas são:

  1. Arquivos de música
  2. Arquivos de música ou video
  3. Arquivos de texto ou planilha do Openoffice que não tenham sido modificados a 7 dias ou mais
  4. Arquivos executáveis (programas)
  5. Arquivos executáveis pertencentes ao usuário root

Para iniciar, vamos usar programas gráficos para fazer buscas.

Usando o ambiente gráfico

O primeiro programa gráfico a ser usado é o caja (ou nautilus em outras versões do Ubuntu que não o Mate), o gerenciador de arquivos disponível no Ubuntu Linux. Para usá-lo para fazer buscas selecione a opção de pesquisa:


Pesquisa1.png


No caja aparecerá uma caixa de texto onde se deve digitar o nome ou parte do nome dos arquivos a serem procurados.


Pesquisa2.png


Tente fazer as buscas usando esse programa. Há alguma que não pode ser feita ?

Usando a linha de comando (modo texto)

O caja funciona como um gerenciador de arquivos e diretórios, possibilitando investigar que arquivos existem em cada diretório, entre outras coisas. Com ele é simples listar o conteúdo de um ou mais diretórios, bastando navegar por sua interface. Mas na linha de comando não há essa facilidade. Nela devem-se usar alguns programas para obter um resultado parecido. Para começar a usar a linha de comando, devem-se conhecer e saber usar programas para navegar por diretórios, listar diretórios, procurar arquivos e diretórios e copiar arquivos.

Árvore de diretórios

Antes de iniciarmos o estudo de comandos dos Linux é necessário entendermos como funciona a sua organização de arquivos e diretórios. Isso é importante para conseguirmos especificar adequadamente o caminho de arquivos e diretórios que desejamos manipular quando formos utilizar os mais diversos comandos.

ArvoreDiretorios2.png

Na figura acima é mostrado um exemplo de como são organizados arquivos e diretórios no Linux. Como é possível notar arquivos e diretórios são organizados de forma hierárquica, formando o que se chama de Árvore de Diretórios.

No Linux há um diretório de nível superior chamado root que é identificado como apenas uma barra (/). Abaixo deste diretório principal estão organizados hierarquicamente todos os demais diretórios e arquivos existentes. Os diretórios que estão contidos em / são chamados de sub-diretórios. No exemplo mostrado na Figura acima podemos perceber que em / está o sub-diretório home, dentro de home está o sub-diretórios user1 e dentro de user1 estão os sub-diretórios doc e videos.


O caminho de um arquivo ou diretório é a localização deste a partir do topo da estrutura de diretórios (/) ou a partir do diretório atual em que o usuário se encontra. Quando apontamos o caminho a partir do topo estamos nos referindo ao caminho absoluto de arquivos e diretórios. Quando apontamos o caminho de um arquivo ou diretório a partir do diretório corrente em que o usuário se encontra, estamos usando o conceito de caminho relativo.

Por exemplo, o caminho absoluto do diretório doc que aparece na figura é /home/user1/doc. Já se o diretório atual do usuário for /home, o caminho relativo do diretório doc é user1/doc.

Diretório atual

Na linha de comando existe o conceito de diretório atual ou corrente. Quando se acessa esse tipo de interface, existe um diretório em que operações sobre arquivos são realizadas. Para descobrir o diretório atual usa-se o programa pwd, como mostrado a seguir:

msobral@turing:~$ pwd
/home/aluno

Listagem de diretório

No exemplo anterior, o diretório atual é /home/aluno. Qualquer operação sobre arquivos ou diretórios será feita tendo como base esse diretório. A operação mais simples é a listagem de diretório, que se faz com o programa ls. Aproveitando o exemplo acima, a listagem do diretório atual teria este resultado:

msobral@turing:~$ ls
001.jpg                iperf-2.0.5.tar.gz             prova4-2011-1.odt
002.jpg                juliano.tgz                    prova4-2011-1-rec.odt
003.jpg                klaus                          prr.log
004.jpg                livros                         public_html
005.jpg                Makefile.in                    quartus.cap
006.jpg                nhrp.tar                       radiusd_test.py
007.jpg                nohup.out                      rco2
008.jpg                passwd.web                     rmu
msobral@turing:~$

Mudança de diretório

A listagem apresentada revela vários arquivos e subdiretórios existentes no diretório atual. Sabendo que public_html é um subdiretório, pode-se desejar mudar o diretório atual de forma a entrar nesse subdiretório. Isso pode ser facilmente realizado com o programa cd:

aluno@turing:~$ cd public_html
aluno@turing:~/public_html$ pwd
/home/aluno/public_html


Diretório atual e diretório acima

O diretório imediatamente acima é referido com .. (dois pontos). Esse é um atalho que possibilita subir um nível de diretório sem conhecer o nome do diretório imediatamente superior. Assim, para voltar ao diretório imediatamente anterior ao diretório atual pode-se fazer isto:

aluno@turing:~/public_html$ cd ..
aluno@turing:~$ pwd
/home/aluno


O diretório atual possui também um atalho chamado . (um ponto). Assim, se for executado este comando ...

aluno@turing:~/public_html$ pwd
/home/aluno/public_html
aluno@turing:~/public_html$ cd .
aluno@turing:~/public_html$ pwd
/home/aluno/public_html

... nada acontecerá (o diretório atual não será modificado).

Criação e remoção de diretório

Um diretório pode ser criado com o comando mkdir. O uso desse comando pede apenas um argumento, que é o nome ou caminho do diretório a ser criado:

aluno@M2:~$ pwd
/home/aluno
aluno@M2:~$ mkdir teste
aluno@M2:~$ cd teste
aluno@M2:~$ pwd
/home/aluno/teste

Para remover um diretório usa-se o comando rmdir. Esse diretório deve estar vazio para o comando consiga removê-lo:

aluno@M2:~$ pwd
/home/aluno
aluno@M2:~$ rmdir teste
aluno@M2:~$ cd teste
cd: teste: Arquivo ou diretório não encontrado
aluno@M2:~$ rmdir Downloads
rmdir: falhou em remover “Downloads”: Diretório não vazio

Cópia de arquivos

A cópia de arquivos na linha de comando envolve usar o programa cp. Com ele podem-se copiar um ou mais arquivos para um diretório de destino. Por exemplo, para copiar o arquivo 001.jpg para dentro do diretório public_html pode-se fazer o seguinte:

aluno@M2:~$ cp 001.jpg public_html

O diretório de destino é sempre o último argumento passado ao programa cp. A cópia de múltiplos arquivos pode ser feita listando-os todos antes do diretório de destino:

aluno@M2:~$ cp 001.jpg 002.jpg 003.jpg public_html


... ou usando-se o caractere especial * (chamado de curinga ou wildcard no original em inglês):

aluno@M2:~$ cp *.jpg public_html


No exemplo acima, todos os arquivos cujos nomes terminem com .jpg serão copiados para dentro de public_html. Outra variação no uso do curinga é:

aluno@M2:~$ cp 00*.jpg public_html

... em que todos os arquivos cujos nomes iniciem com 00 e terminem com .jpg serão copiados.

Renomeação de arquivos

Arquivos podem ser renomeados com o comando mv. Ele pode ser usado de forma muito parecida com o comando cp. A diferença está na remoção do arquivo original, como se ele sumisse de seu diretório de origem e aparecesse no diretório de destino.

aluno@M2:~$ mv mulher_de_40.mp3 Musicas
aluno@M2:~$ ls Musicas
mulher_de_40.mp3
aluno@M2:~$ ls mulher_de_40.mp3
não é possível acessar mulher_de_40.mp3: Arquivo ou diretório não encontrado


Se os diretórios de origem e destino forem iguais, mas os nomes do arquivo de origem e destino forem diferentes, então o arquivo na verdade é renomeado.

aluno@M2:~$ mv mulher_de_40.mp3 musica_romantica.mp3
aluno@M2:~$ ls musica_romantica.mp3
musica_romantica.mp3
aluno@M2:~$ ls mulher_de_40.mp3
não é possível acessar mulher_de_40.mp3: Arquivo ou diretório não encontrado

Remoção de arquivos

Arquivos podem ser removidos com o comando rm. Cuidado ao utilizá-lo ! Uma vez removido, um arquivo não pode ser recuperado !

aluno@M2:~$ rm mulher_de_40.mp3
aluno@M2:~$ ls mulher_de_40.mp3
não é possível acessar mulher_de_40.mp3: Arquivo ou diretório não encontrado

Curingas (wildcards)

Curingas são caracteres especiais usados para selecionar vários arquivos ou diretórios de uma só vez. Os curingas podem ser usados em qualquer comando para especificar nomes de arquivos e diretórios. Dois curingas bastante usados são:

  • * : casa com uma sequência composta por 0 ou mais caracteres quaisquer.
  • ? : casa com um único caractere qualquer

Curingas são muito úteis para operações sobre arquivos e diretórios. Por exemplo, para copiar todos os arquivos de música MP3 pode-se usar o curinga *' da seguinte forma:

aluno@M2:~$ cp *.mp3 Musica


Para mover os arquivos cuja extensão seja mp4 ou mpg, podem-se usar os curingas * e ? desta forma:

aluno@M2:~$ mv *.mp? Videos

Procura por arquivos

A procura de arquivos e diretórios pode ser realizada na linha de comando com o programa find. Por exemplo, para localizar todos os arquivos ou diretórios chamados default, e que estejam abaixo de /etc:

aluno@D1:~$ find /etc -name default -print
/etc/default
/etc/calendar/default
/etc/X11/xinit/xinput.d/default
aluno@D1:~$


Uso do find :

find diretório [opões]


... sendo diretório o diretório abaixo de que se deseja fazer a busca. As opções servem para selecionar arquivos e diretórios durante a busca, e também para executar ações para cada um deles que for encontrado. Algumas opções mais comuns:

  • -name nome: seleciona arquivos ou diretórios cujos nomes sejam nome' . Essa opção aceita wildcards (* e ?)
  • -type tipo: seleciona apenas o tipo' indicado, que pode ser:
    • d: diretório
    • f: arquivo
    • l: link simbólico (ou atalho)
  • -perm modo: seleciona apenas arquivos ou diretórios que possuam as permissões indicadas em modo
  • -size tamanho: seleciona apenas arquivos com tamanho de acordo com o especificado (em bytes)
  • -mtime n: seleciona apenas arquivos ou diretórios modificados a n * 24 horas atrás
  • -atime n: seleciona apenas arquivos ou diretórios acessados a n * 24 horas atrás
  • -user usuario: seleciona apenas arquivos ou diretórios pertencentes a usuario
  • -exec comando \;: executa comando para cada arquivo ou diretório encontrado. Ex:
    • find /tmp -type f -mtime +7 -exec rm -f {} \; : remove todos os arquivos dentro de /tmp que estejam há 7 dias sem serem modificados. A sequência {} é substituída pelo nome do arquivo encontrado.

... e muitas outras (consulte o manual do find).

Exercícios

  1. Partindo do subdiretório /home/aluno/Desktop, e usando somente caminhos (pathnames) relativos, indique a sequência de comandos necessária para visitar sucessivamente os seguintes subdiretórios:
    • /home/aluno
    • /home
    • /etc/default
    • /usr/share/doc
    • /usr/share/doc/python/faq
    • /usr/lib/ubuntu-mate
    • /usr/local/etc
    • /usr/local/man
    • /usr/local/lib/python2.7
    • /usr/local/lib/python2.7/site-packages
    • /usr/local/lib/python2.7/dist-packages
    • /home/aluno
    • /home/aluno/Downloads
  2. Partindo do subdiretório /home/aluno, informe a sequência de subdiretórios (indique-os com seus caminhos absolutos) visitados se forem seguidos os seguintes caminhos relativos:
    • Imagens
    • ../Documentos
    • ../..
    • ../boot
    • grub
    • ../../usr/lib
    • ../share
    • ../local
    • lib/python2.7
    • ../..
    • ../../etc
    • ../lib/modules
    • ../../home
    • aluno/Downloads/..
  3. Organize estes arquivos, de forma que sejam colocados nos subdiretórios Imagens, Videos e Documentos, de acordo com seus tipos. Os arquivos devem ser movidos para esses diretórios.
  4. Remova o arquivo compactado transferido no exercício anterior.
  5. Renomeie os arquivos de imagens organizados no exercício 3. Dê um nome para cada imagem de acordo com seu conteúdo.
  6. No diretório /usr/share/sounds/ubuntu existem vários arquivos de áudio. Crie um diretório dentro de seu diretório pessoal e copie-os para esse novo diretório. Em seguida, reproduza-os para escutá-los.
  7. Encontre o arquivo lsusb, que se encontra em algum subdiretório dentro de /usr
  8. Encontre os subdiretórios lib, que estão dentro de /usr
  9. Localize todos os arquivos executáveis (i.e., os programas) que existem abaixo de /lib
  10. Localize todos os arquivos pertencentes ao usuário aluno e que estejam dentro de /tmp

17/02: continuação

Aula 3

continuação da aula de 15/02

22/02: continuação

Aula 4

continuação da aula de 15/02

24/02: Editores de texto

Aula 5

Hoje serão vistos alguns editores de texto do Linux. Esses programas são essenciais para muitas tarefas realizadas no sistema, uma vez que diversos aplicativos ou do próprio sistema são ajustados (ou configurados) por meio de arquivos de texto. Alguns editores são mais intuitivos, porém limitados, e outros exigem maior esforço para serem dominados, no entanto apresentam mais recursos.


Mas primeiro vamos fazer duas atividades para relaxar ...

Um pequeno desafio


Em seu diretório home (pasta pessoal) existem alguns arquivos de video obtidos com sua câmera fotográfica, porém você não sabe exatamente onde estão. Além disso, esses videos são codificados na máquina fotográfica com o codec MJPG, que gera arquivos muito grandes. Se forem recodificados para codec XVID, os tamanhos desses videos serão reduzidos substancialmente (4 vezes ou mais). Sabendo que existem programas que podem recodificá-los no modo texto, faça o seguinte:

  1. Localize esses arquivos de video MJPG
  2. Identifique algum programa capaz de fazer essa mudança de codificação (chamada de transcodificação).
  3. Use esse programa para transcodificar esses videos para codec XVID.
  4. Ao final do processo, reproduza-os com seu programa preferido.

O que há em um sistema Android ?

O sistema operacional Android se baseia em componentes do Linux. Inclusive é possível abrir um terminal de texto para investigar informações internas do sistema, as quais não são visíveis na interface gráfica de usuário. Um experimento pode ser facilmente realizado para revelar esse terminal de texto, que muito se assemelha à linha de comando de um sistema Linux usual.

  1. Ative o modo de depuração USB do seu celular. Existe um procedimento para cada modelo, como se pode ler neste tutorial.
  2. Obtenha as ferramentas de plataforma do Android. Siga as instruções para download e utilização.
  3. A ferramenta para acesso ao celular se chamada adb (Android Debug Bridge), que é um programa de linha de comando.
  4. Conecte seu celular ao computador com um cabo USB
  5. Execute este comando no computador:
    adb devices
    
    ... conferindo se seu celular é identificado.
  6. Abra um terminal com seu celular com este comando:
    adb shell
    
  7. Navegue pelos subdiretórios em seu celular, comparando-os com os de um sistema Linux. Investigue também subdiretórios que pareçam ser de aplicativos instalados em seu celular.
  8. Experimente copiar arquivos do seu celular para o computador, por meio do comando:
    adb pull
    
    ... mas os detalhes de como fazer isso devem ser procurados no manual (aqui tem alguma coisa).


01/03: continuação

Aula 6

continuação da aula de 24/02

03/03: Backups

Aula 7

A aula de hoje tem estes objetivos:

  • interpretar permissões de arquivos e diretórios
  • realizar e recuperar cópias de segurança pela interface gráfica e pela linha de comando


08/03: Continuação aula 7

Aula 8

10/03: Projeto da etapa 1

Aula 9

A etapa 1 envolveu ter um primeiro contato com o sistema operacional Linux. Foram apresentadas as duas interfaces de usuário, sendo elas a interface gráfica (GUI) e a linha de comando (CLI ou, simplesmente, shell). Aprenderam-se conceitos básicos, tais como diretórios, arquivos e permissões, e usaram-se aplicativos gráficos e programas pela linha de comando para manipulá-los. Isso deve ser suficiente para que se consiga usar o sistema operacional e os aplicativos nele disponíveis.

A conclusão da etapa 1 envolve implantar um serviço de compartilhamento de arquivos para uma empresa. Esse serviço tem por finalidade oferecer acesso a arquivos para funcionários e clientes. No caso de funcionários, deve ser possível tanto enviar quanto baixar arquivos. Para clientes, apenas baixar arquivos está disponível. Esses tipos de transferência de arquivos podem ser descritas assim:

  • upload: enviar arquivos para esse computador
  • download: baixar arquivos desse computador

Quando as transferências são feitas por funcionários, o acesso deve ser autenticado por meio de um usuário e sua senha. Cada funcionário possui seu usuário. Ao acessar o serviço, um funcionário tem acesso a seu diretório pessoal, a um diretório com documentos da empresa, e a um diretório compartilhado com os demais funcionários. O diretório compartilhado serve para funcionários poderem disponibilizar arquivos entre si. O diretório com documentos da empresa (manuais, formulários e programas) deve estar em modo somente-leitura.

Acessos feitos por clientes da empresa são anônimos, não exigindo um usuário e senha válidos. Esse tipo de acesso possibilita o acesso a um diretório onde a empresa compartilha manuais e programas relacionados a seus produtos. Apenas tal diretório pode ser acessado de forma anônima.

O tipo de serviço que melhor atende essa necessidade se chama FTP. Existem vários programa que implementam esse serviço para o Linux, e assim um deles devem ser escolhido e instalado. A lista a seguir apresenta algumas opções para servidores FTP:

  • wu-ftpd
  • proftpd
  • vsftpd
  • pure-ftpd


A avaliação do projeto é feita em duas partes:

  1. Demonstração do repositório em laboratório para os professores
  2. Entrega de relatório no Moodle. Pode-se utilizar como base este documento para elaboração do relatório. No item 3 deste documento (PROCEDIMENTOS EXPERIMENTAIS), descrever todos os procedimentos realizados para a implantação do seu repositório. Imagine que com o documento redigido por você outra pessoa deverá ser apta a configurar um repositório de modo similar ao seu.

Atividades


As atividades a seguir servem como uma ajuda para implantar o repositório. Notem que o repositório deve atender os requisitos apresentados na descrição do projeto, portanto a mera realização das atividades a seguir não significa que o repositório foi implantado conforme especificado.


  1. Cada aluno deve escolher um dos servidores FTP. As características desses programas devem ser avaliadas para uma boa escolha.
  2. O programa escolhido deve ser instalado em seu computador (máquina virtual).
  3. Deve-se configurar o servidor FTP para que se possam fazer acessos com usuários autenticados ou anônimo.
  4. Devem-se disponibilizar arquivos variados (ex: videos, imagens, documentos, outros programas) para acesso anônimo. Dica: veja como funciona o servidor FTP da Unicamp.
  5. Devem-se disponibilizar arquivos da empresa, também variados, para acesso de funcionários. Eles devem ficar no diretório somente-leitura que contém arquivos de uso corporativo para ps funcionários.
  6. Acesse seu servidor FTP a partir de outros computadores e de seus celulares (dica: use um cliente FTP): transfira arquivos em ambas direções e verifique se foram copiados corretamente.
  7. Faça um backup de arquivos pessoais, e copie-o para seu servidor FTP.
  8. Em outro computador, baixe o arquivo de backup e recupere-o.
  9. Implante o diretório de compartilhamento de arquivos entre funcionários: nesse diretório cada funcionário pode gravar arquivos, os quais ficarão acessíveis para outros funcionários.

15/03: Projeto da etapa 1 - Continuação

Aula 10

17/03: Projeto da etapa 1 - Apresentação

Aula 11

22/03: Etapa 2: uma rede residencial com acesso a Internet

Aula 12

A etapa 1 envolveu ter um primeiro contato com o sistema operacional Linux. Foram apresentadas as duas interfaces de usuário, sendo elas a interface gráfica (GUI) e a linha de comando (CLI ou, simplesmente, shell). Aprenderam-se conceitos básicos, tais como diretórios, arquivos e permissões, e usaram-se aplicativos gráficos e programas pela linha de comando para manipulá-los. Isso deve ser suficiente para que se consiga usar o sistema operacional e os aplicativos nele disponíveis. Para finalizar a etapa 1 cada aluno implementou um repositório para disponibilização de arquivos de uma empresa utilizando um servidor FTP.

A etapa 1 do projeto integrador partiu do princípio de que toda a infraestrutura necessária estaria pronta, portanto ele foi desenvolvido sobre um computador devidamente instalado e operacional, e também a rede de computadores estava devidamente configurada. Porém, em um caso real, possivelmente essa infraestrutura não exista.

A etapa 2 trata de, partindo do zero, implantar uma rede residencial com acesso a Internet. Essa rede deve ter ao menos um computador, uma rede sem-fio e um enlace ADSL para acesso a Internet. Essa nova etapa implica implantar o seguinte cenário:


Pji1-projeto2.png


O ponto de partida é instalar o computador do usuário. Esse computador deve ser preparado para disponibilizar um conjunto de softwares, uma vez que ele também deve se apresentar de forma conveniente para que uma pessoa o utilize para tarefas corriqueiras. Porém nem esse computador existe ainda ... ele deve primeiro ser montado.


Plano geral de trabalho da Etapa 2


A fazer coletivamente: quais as tarefas a serem realizadas para desenvolver este projeto ?


Tarefa 1: Iniciar pelo computador do usuário

  1. Montar seu computador
  2. Instalar o sistema operacional
    1. Escolher uma distribuição Linux do seu agrado. Alguns exemplos:
    2. Obter a imagem de instalação do sistema operacional. Elas estão em repositórios online, e há cópias de algumas delas aqui em um computador do laboratório:
    3. Gerar a midia com a imagem do sistema operacional a ser instalado.
      • Identificar o procedimento para copiar a imagem de instalação na midia escolhida
      • No caso de instalação em máquina virtual, basta vincular o arquivo de imagem (.iso) ao CD/DVD da máquina virtual.
      • No caso de um computador real, há estas opções de midia de instalação: CD, DVD, Pendrive
    4. Iniciar o computador de forma que execute o instalador contido na midia de instalação
    5. Proceder a instalação do sistema operacional
      • Particionar o disco de forma a poder atualizar totalmente o sistema operacional sem perder os arquivos de usuários
  3. Instalar softwares para uso geral pelo usuário (liste os softwares que você considera necessários ou interessantes ter em seu computador)
  4. Integrar o computador à rede
  5. Usar o computador com o sistema e softwares instalados !


OBS: para um primeiro contato, faremos uma instalação do sistema operacional em uma máquina virtual Virtualbox. Após ter o procedimento básico de instalação bem compreendido isso será repetido em um computador real.

24/03: Projeto 2: preparação de um computador

Aula 13


Na aula anterior fizemos um aquecimento, em que instalamos um sistema operacional em uma máquina virtual. Hoje iremos repetir essa tarefa, porém usando um computador real. Assim a primeira parte do projeto 2 pode ser mais realista, simulando uma situação corriqueiramente enfrentada na prática.

Obtendo o computador

O computador de cada equipe precisa ser especificado e então montado. Os componentes necessários para cada computador precisam ser identificados e escolhidos, para então montá-los. Por isso, primeiro precisamos enumerar que componentes são esses. Para ajudar essa tarefa, primeiro vamos entender a estrutura geral de um computador do tipo PC.


Pji1-Computer from inside.jpg
Um computador montado em seu gabinete


Pji1-motherboard2.jpg
Uma placa-mãe de computador PC


Tabela de componentes dos computadores

Procure no seu computador os componentes da tabela abaixo. Identifique o fabricante e modelo, e demais informações úteis.


Micro Componente Descrição Fabricante e modelo
1 Processador
HD
Memória RAM
Placa mãe
Placa de video
Interface de rede
Interfaces E/S
Fonte
Placa de som
2 Processador
HD
Memória RAM
Placa mãe
Placa de video
Interface de rede
Interfaces E/S
Fonte
Placa de som
3 Processador
HD
Memória RAM
Placa mãe
Placa de video
Interface de rede
Interfaces E/S
Fonte
Placa de som

Tarefa (trazer na aula de 05/04)

Você recebeu a tarefa de especificar um computador a ser comprado em sua empresa. Esse computador deve ser usado para rodar programas de escritório. A empresa optou por adquirir os componentes em separado, de forma a montar o computador. Sendo assim, selecione todos os componentes desse computador, informando fabricante, modelo e preço. Use componentes disponíveis em mercado atualmente. Inclua figuras para ilustrar as peças do computador que você escolheu.

Videos ilustrativos

Instalação do sistema operacional

A instalação do sistema operacional segue praticamente o mesmo procedimento da aula anterior. Porém desta vez será necessário gravar a imagem do instalador do sistema operacional em um DVD ou pendrive.

Particionamento do disco

Deve-se instalar o sistema operacional com particionamento manual do disco. As partições devem ser:

  • /: a partição raiz, onde fica o sistema operacional e seus arquivos de configuração e também arquivos de log e temporários.
  • /home: a partição dos usuários, onde ficam seus diretórios pessoais.
  • swap: a partição de memória virtual, cujo tamanho deve ser ao menos igual ao da memória RAM instalada (na verdade, isso é discutível ... há muitas possibilidades para o tamanho da área de swap, e ela pode inclusive não existir).
Pji1-Hd-estrutura.jpg
A estrutura física de um disco rígido
Pji1-Particoes1.jpeg
O espaço de armazenamento de um
disco dividido em partições


O particionamento acima corresponde a uma instalação típica muito simples. A principal ideia por trás dessa escolha foi possibilitar que o sistema operacional fosse reinstalado sem que se percam os arquivos de usuários (e sem necessidade fazer backup para essa finalidade). Mas há outras possibilidades para particionamento do disco, dependendo do propósito para que o sistema operacional deve ser instalado.

Exercício

Os conceitos e termos técnicos vêm se acumulando gradativamente. Como exercício de compreensão, explique o que significa:

  • sistema operacional
  • partição
  • sistema de arquivos
  • particionamento manual
  • partição raiz
  • memória virtual
  • memória RAM
  • backup
  • disco rígido (HD)
  • placa de video
  • monitor
  • computador
  • programas
  • CPU (processador)


29/03: Projeto 2: continuação Aula 13

Aula 14

31/03: Projeto 2: ajuste fino da instalação do sistema operacional

Aula 15

Na aula de hoje serão vistos os seguintes temas:

  1. Conclusão da instalação do sistema operacional
  2. Exercício sobre conceitos vistos até então nas etapas 1 e 2
  3. Tarefa para a próxima aula: especificação de computador (ver na aula de 24/03)
  4. Configuração da rede no computador da equipe

ATENÇÃO: TESTE NA PRÓXIMA 4a FEIRA (05/04)

O próximo teste trata do que foi estudado e realizado nesta semana:

  • computador e seus componentes
  • instalação do sistema operacional
  • configuração de rede

Uso de RaspberryPi como computador

RaspberryPi é um projeto com o propósito de disponibilizar computadores de baixo custo e alto desempenho para que pessoas possam aprender, resolver problemas e se divertirem. O computador RaspberryPi, chamado daqui em diante de Rpi, tem tamanho de um cartão de crédito, bastando teclado e mouse USB, monitor com entrada HDMI e fonte de alimentação para ser utilizado. Ele possui 1 GB RAM e processador ARM de quatro núcleos com clock de 1.2 GHz. Para acesso à rede ele possui interfaces de rede ethernet e Wifi, além de Bluetooth.


PJI2-Raspberry-Pi-3.jpg
RaspberryPi 3


O Rpi pode executar vários sistemas operacionais, porém o foco está no Linux. A distribuição oficial mantida pelo projeto se chama Raspbian, sendo baseada em Debian. Outras distribuições Linux, e mesmo o sistema operacional Windows 10, podem ser vistas no sítio de downloads:


Devido à maior simplicidade na montagem e uso, além do menor custo, serão usados computadores Rpi para as etapas seguintes da disciplina de Projeto 2. Porém isso implica obter o Rpi, instalar o sistema operacional e, por fim, experimentá-lo com monitor, mouse e teclado.

Configuração da rede no computador da equipe

O projeto 2 envolve não somente instalar e fazer o ajuste fino do computador da equipe, mas também implantar a rede através da qual ele se comunica com outros dispositivos e com a Internet.


Se seu computador e demais dispositivos estão em rede, então eles precisam de um endereço para se encontrarem. Cada dispositivo capaz de se comunicar nessa rede precisa de um endereço único, para que as mensagens possam ser a eles destinadas. Na Internet esses são endereços IP, que nada mais são que números compostos por 32 bits. Por questão de legibilidade, esses números são expressos por quatro octetos (grupos de 8 bits) separados por pontos, como neste exemplo:

192.168.1.1

Os octetos desse endereço são: 192, 168, 1 e 1.

Exercícios:

  1. escreva o endereço acima em binário.
  2. quantos endereços IP são possíveis de existir ?
  3. qual o primeiro e o último endereço IP possível ?


Endereços IP podem ser atribuídos às interfaces de rede de um computador. Uma interface de rede é um hardware que conecta um computador a uma rede física (mas existem interfaces de rede virtuais ... na verdade o buraco é mais embaixo nessa história ;-). Nos sistemas Linux, e Unix em geral, isso pode ser feito por meio do programa ifconfig, que é um acrônimo para interface configuration. Com esse programa se pode tanto consultar a configuração das interfaces quanto modificá-las. Ex:

  1. Visualizar as interfaces ativadas e configuradas:
    ifconfig
    
  2. Visualizar todas as interfaces:
    ifconfig -a
    
  3. Visualizar a configuração de uma interface específica:
    # ifconfig _nome_da_interface
    ifconfig eth0
    
  4. Desativar uma interface:
    ifconfig eth0 down
    
  5. Ativar uma interface:
    ifconfig eth0 up
    
  6. Modificar o endereço IP de uma interface:
    ifconfig eth0 192.168.2.222
    

Atividade

  1. Desative o gerenciador de rede, que é um programa que tenta configurar automaticamente as interfaces de rede. Normalmente ele é útil, mas agora queremos entender os detalhes dessa configuração:
    sudo service network-manager stop
    
  2. Configure o endereço IP da interface de rede do seu computador. A rede do laboratório usa endereços entre 192.168.1.1 e 192.168.1.254. Para o seu computador, use o endereço 192.168.1.(200+número da sua equipe).
    # substitua XXX por 200+número da sua equipe
    sudo ifconfig eth0 192.168.1.XXX
    
  3. Adicione uma rota padrão, também chamada de rota default, a qual define que todos os demais endereçois da Internet são alcançáveis através do roteador 192.168.1.1:
    sudo route add default gw 192.168.1.1
    
  4. Teste a comunicação pela interface de rede. Experimente executar este programa:
    ping 192.168.1.1
    
  5. Desative a interface, e teste a comunicação.
  6. Reative a interface, e faça novo teste.
  7. Reinicie o computador, e veja se a interface continua configurada.
  8. Descubra como tornar a configuração da interface de rede permanente (tanto manualmente, no modo texto, quanto usando ferramentas administrativas gráficas).
  9. Curiosidade: quantos equipamentos existem na Internet ? Isso é impossível de descobrir exatamente, mas ao menos pode-se saber quantos endereços IP são possíveis de existir na Internet como um todo. Se cada equipamento necessita ao menos um endereço IP, o número encontrado pode dar uma ideia do tamanho da Internet ...
  10. Outra curiosidade: e se os endereços IP fossem maiores (tivessem mais bits) ? De fato, existe uma nova versão para esses endereços que usa 128 bits ao invés de 32. Quantos endereços seria possível usar nessa nova versão, chamada de IPv6 ?


05/04: Projeto 2: Usuários e grupos

Aula 16

Usuários e grupos

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

  • Nome de usuário (ou login): um apelido que identifica o usuário no sistema
  • UID (User Identifier): um número único que identifica o usuário
  • GID (Group Identifier): o número do grupo primário do usuário
  • Senha (password): senha para verificação de acesso
  • Nome completo (full name): nome completo do usuário
  • Diretório inicial (homedir): o subddiretório pessoal do usuário, onde ele é colocado ao entrar no sistema
  • Shell: o programa a ser executado quando o usuário entrar no sistema

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:

  • x: significa que a senha se encontra em /etc/shadow
  • *: significa que a conta está bloqueada
  • senha encriptada: a senha de fato, porém encriptada usando algoritmo hash MD5 ou crypt. Porém usualmente a senha fica armazenada no arquivo /etc/shadow.

O arquivo /etc/shadow armazena exclusivamente as informações relativas a senha e validade da conta. Nele cada conta possui as seguintes informações:

  • Nome de usuário
  • Senha encriptada (sobrepõe a senha que porventura exista em /etc/passwd)
  • Data da última modificação da senha
  • Dias até que a senha possa ser modificada (validade mínima da senha)
  • Dias após que a senha deve ser modificada
  • Dias antes da expiração da senha em que o usuário deve ser alertado
  • Dias após a expiração da senha em que a conta é desabilitada
  • Data em que a conta foi desabilitada

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:

  • Nome de group (group name): o nome que identifica o grupo no sistema
  • GID (Group Identifier): um número único que identifica o grupo
  • Lista de usuários: um conjunto de usuários que são membros do grupo

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 grupos

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

  • useradd ou adduser: adiciona um usuário
    • Ex: useradd -m roberto : cria o usuário roberto juntamente com o diretório (-m --makedir).
    • Ex: useradd -c "Roberto de Matos" -m roberto : cria o usuário roberto com nome completo "Roberto de Matos"
    • Ex: useradd -c "Roberto de Matos" -g users -m -d /usuarios/roberto -s /bin/tcsh roberto : cria o usuário roberto com nome completo "Roberto de Matos", grupo users, diretório inicial /usuarios/roberto e shell /bin/tcsh
  • userdel: remove um usuário
    • Ex: userdel roberto : remove o usuário roberto, porém preservando seu diretório home
    • Ex: userdel -r roberto : remove o usuário roberto, incluindo seu diretório home
  • usermod: modifica as informações da conta de um usuário
    • Ex: usermod -g wheel roberto : modifica o GID do usuário roberto
    • Ex: usermod -G users,wheel roberto : modifica os grupos secundários do usuário roberto
    • Ex: usermod -d /contas/roberto roberto : modifica o diretório inicial do usuário roberto (mas não copia os arquivos ...)
    • Ex: usermod -l robertomatos roberto : modifica o login do usuário roberto
    • Ex: usermod -m ... : cria o diretório home do usuário roberto
    • Ex: usermod -c "Roberto Matos, R. dos Navegantes, 33333333" : atribui comentários ao usuário roberto
  • passwd: modifica a senha de usuário
    • Ex: passwd roberto
  • login: logo como outro usuário. Tem de estar como root
    • Ex: login roberto
  • groupadd: adiciona um grupo
    • Ex: groupadd ger: cria o grupo ger
  • groupdel: remove um grupo
    • Ex: groupdel ger: remove o grupo ger


Atividade

Esta parte da atividade cada aluno executa individualmente em sua máquina, fazendo uso da devida máquina virtual.

  1. Crie um usuário com o nome de jose usando o comando adduser.
  2. Dê ao usuário jose a senha jose123.
  3. Confirme a correta criação do usuário jose.
     tail /etc/passwd
    
  4. Confirme se o diretório home de jose foi criado corretamente dentro de /home.
  5. Logue utilizando o usuário jose.login jose</syntaxhighlight>
  6. Crie o grupo turma.
  7. Crie o diretório manoel em /home.
  8. Crie um usuário com o nome de manoel usando o comando useradd. Deve-se ao criar o usuário definir os seguintes parâmentros:
    1. Pertencer ao grupo turma;
    2. O diretório home deve ser /home/manoel;
    3. Configurar o shell do usuário como sendo /bin/bash;
    4. Observar qual a diferença entre os comandos adduser e useradd.
       useradd -g turma -d /home/manoel -s /bin/bash manoel
      
  9. Dê ao usuário manoel a senha mane123.
     passwd manoel
    
  10. Acrescente, por comandos, ao perfil do usuário seu nome completo e endereço: Manoel da Silva, R. dos Pinheiros, 2476666.
     usermod -c "Manoel da Silva, R. dos Pinheiros, 2476666" manoel
    
  11. Verifique o arquivo /etc/passwd e confirme se o usuário manoel está OK.
  12. Mude, por comandos, o diretório home do manoel de /home/manoel para /home/contas/manoel.
     usermod -d /home/contas/manoel manoel
    
  13. Verifique o arquivo /etc/passwd e confirme a alteração.
  14. Logue como manoel e verifique as mensagens na tela.
     login manoel
    
  15. Crie o diretório /home/contas e dentro de contas crie o diretório manoel. Tente logar novamente.
  16. Mude o login do manoel para manoelsilva.
     usermod -l manoelsilva manoel
    
  17. Torne o usuário manoelsilva capaz de executar comandos com sudo
  18. Logue como manoelsilva
  19. Estando logado como manoelsilva, remova o usuário jose
  20. Ainda logado como manoelsilva, desative sua interface de rede
  21. Teste a comunicação pela rede, que não deve funcionar. Em seguida, reative a interface de rede.
  22. Deslogue de manoelsilva
  23. Remova os usuários criados, inclusive seus diretórios home
  24. Remova os grupos criados

07/04: Projeto 2: Permissões

Aula 17

Há 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:

  1. Esquema de permissões;
  2. Número de ligações do arquivo;
  3. Nome do usuário dono do arquivo;
  4. Nome do grupo associado ao arquivo;
  5. Tamanho do arquivo, em bytes;
  6. Mês da criação do arquivo; Dia da criação do arquivo;
  7. Hora da criação do arquivo;
  8. Nome do arquivo;

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). A figura a seguir destaca as classes de permissões mostradas em uma listagem de diretório.

Pji-Permissoes2.png


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:

  • 1 d se o arquivo for um diretório; -se for um arquivo comum;
  • 2,5,8 r se existe permissão de leitura; - caso contrário;
  • 3,6,9 w se existe permissão de alteração; - caso contrário;
  • 4,7,10 x se existe permissão de execução; - caso contrário;

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:

  • chmod: muda as permissões de acesso (também chamado de modo de acesso). Somente pode ser executado pelo dono do arquivo ou pelo superusuário
    • Ex: chmod +x /home/usuario/programa : adiciona para todos os usuários a permissão de execução ao arquivo /home/usuario/programa
    • Ex: chmod -w /home/usuario/programa : remove para todos os usuários a permissão de escrita do arquivo /home/usuario/programa
    • Ex: chmod o-rwx /home/usuario/programa : remove todas as permissões de acesso ao arquivo /home/usuario/programa para todos os usuários que não o proprietário e membros do grupo proprietário
    • Ex: chmod 755 /home/usuario/programa : define as permissões rwxr-xr-x para o arquivo /home/usuario/programa
  • chown: muda o proprietário de um arquivo. Somente pode ser executado pelo superusuário.
    • Ex: chown roberto /home/usuario/programa: faz com que o usuário roberto seja o dono do arquivo
  • chgrp: muda o grupo dono de um arquivo. Somente pode ser executado pelo superusuário.
    • Ex: chgrp users /home/usuario/programa: faz com que o grupo users seja o grupo dono do arquivo /home/usuario/programa

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:

  • umask 022: tira a permissão de escrita para group e demais usuários
  • umask 027: tira a permissão de escrita para group, e todas as permissões para demais usuários

Atividade

  1. Crie a partir do /home 3 diretórios, um com nome aln (aluno), outro prf (professor) e o último svd (servidor).
  2. Crie 3 grupos com os mesmos nomes acima.
  3. Crie 3 contas de usuários pertencentes ao grupo aln: aluno1, aluno2, aluno3. Estas contas deverão ter seus diretórios homes criados por comando dentro do diretório /home/aln/. Por exemplo para o aluno1 teremos /home/aln/aluno1. Configure a shell dos usuários como /bin/bash.
  4. Crie 3 contas pertencentes ao grupo prf: prof1, prof2, prof3. Estas contas deverão ter seus diretórios homes criados por comando dentro do diretório /home/prf/. Configure a shell dos usuários como /bin/bash.
  5. Crie 3 contas pertencentes ao grupo svd: serv1, serv2, serv3. Estas contas deverão ter seus diretórios homes criados por comando dentro do diretório /home/svd/. Configure a shell dos usuários como /bin/bash.
  6. Crie senhas para os usuários.
  7. Logue com o usuário aluno1 e crie um arquivo chamado aluno1.txt, executando o comando:
    echo "Teste aluno1" > aluno1.txt
    
    ... e saia do usuário aluno1.
  8. Os diretórios dos alunos, e todo o seu conteúdo, devem ser visíveis e editáveis aos membros do próprio grupo, visíveis mas não apagáveis a todos os demais usuários da rede.
  9. Logue com a conta aluno2. Faça um ls -l dentro do diretório home do usuário aluno1. Faça um cat no arquivo aluno1.txt.
  10. Posteriormente, tente fazer o seguinte comando dentro do diretório de aluno1:
    echo "Teste aluno2" >> aluno1.txt
    
    Foi possível executar este comando? Se não, por quê?
  11. Deslogue do usuário aluno2
  12. Logue com prof1 e crie um arquivo chamado prof1.txt, executando o comando:
    echo "Teste prof1" > prof1.txt
    
    Saia do usuário prof1.
  13. Os diretórios dos professores e servidores, devem ser mutuamente visíveis, mas não apagáveis, entre os membros dos grupos professores e servidores mas não deve ser sequer visível aos membros do grupo alunos.
  14. Logue com um outro usuário prof e teste se você consegue listar o conteúdo do diretório home do usuário prof1, exibir o conteúdo do arquivo criado no diretório de prof1 e escrever algo neste mesmo arquivo.
  15. Logue com o usuário servidor1 e faça um ls -l dentro do diretório home do usuário prof1. Dê um cat no arquivo prof1.txt que está destro deste diretório. Tente editar este arquivo.
  16. Logue com um usuário aluno e faça um ls -l dentro do diretório home do usuário prof1. Foi possível executar este comando? Se não, por quê?

ATENÇÃO: TESTE PRÓXIMA 4A FEIRA (12/04)

O próximo teste focará em:

  • usuários e grupos
  • permissões

12/04: Projeto 2: Permissões

Aula 18

19/04: Projeto 2: Processos e Instalação de softwares

Aula 19

Aula passada vimos como usuários e grupos podem ser usados para organizar e proteger o acesso a recursos mantidos pelo sistema operacional (arquivos, programas, dispositivos de entrada e saída, ...). Hoje estudaremos o que são processos, como obter informações sobre eles e como terminá-los. Além disso, veremos também como processos podem usar suas entrada e saída padrão para receber dado para processar e apresentar resultados, e também para se comunicarem.


Processos

Já vimos que sistemas operacionais modernos, como Linux, FreeBSD, Windows, e Android, são capazes de executar múltiplos programas ao mesmo tempo. No caso dos sistemas operacionais Unix, e o Linux pertence a essa família, processos são programas em execução. Um programa contém instruções e dados armazenados em um arquivo. Ao ser executado um arquivo, cria-se um processo. O sistema operacional carrega as instruções e dados em memória RAM, e faz o processador executá-las. Múltiplos processos podem ser criados a partir do mesmo arquivo de programa, sendo executados de forma independente. Os detalhes de como manter todos os processos em memória, e revezar suas execuções de forma a parecer que são simultâneos, são responsabilidade do sistema operacional.


Vários utilitários (programas auxiliares) existem para obter informações do sistema operacional sobre processos e memória. Alguns trabalham em modo texto, como:

  • ps: lista os processos existentes
  • pstree: lista os processos existentes mas de forma hierárquica
  • top: lista os processos mais ativos, junto com informações globais sobre uso dos recursos no sistema operacional (memória, processador, memória virtual, quantidade de processos, carga de trabalho)
  • atop: o mesmo que top, mas com maior detalhamento do uso de recursos mantidos pelo sistema operacional
  • mpstat: mostra estatísticas de uso do processador
  • free: mostra o uso de memória
  • vmstat: mostra o uso de memória, discos e processador no último intervalo de tempo.


Pji-procs.png
Alguns processos mostrados com o comando ps au


Existem também utilitários no modo gráfico. Por exemplo, no Ubuntu há o "Monitor do sistema". No Debian existe também esse aplicativo se o ambiente gráfico em uso for o Gnome.


Para nosso propósito, é importante saber que:

  • Cada processo possui um usuário e grupo dono, que são obtidos do usuário que o criou. Essas duas informações são usadas para fazer o controle de acesso a arquivos e diretórios, comparando-os com suas permissões.
  • Cada processo possui um número chamado de PID (Process IDentifier) que o identifica no sistema.
  • A memória RAM utilizada por um processo é deu uso exclusivo: nenhum processo consegue acessar (ler ou modificar) a memória de outro processo.
  • Processos podem ser pausados ou mesmo terminados. Há dois programas para terminar processos:
    • kill: termina um ou mais processos informados por seus PID. Uso básico:
      # Solicita ao processo com PID 1234 que termine (esse processo pode ignorar e continuar executando)
      kill 1234
      
      # Mata sumariamente o processo 1234
      kill -9 1234
      
    • killall: termina um ou mais processos informados por seus nomes, por seus usuários donos, entre outras possibilidades. Uso básico:
      # Solicita ao processo chamado firefox que termine (ele pode ignorar)
      killall firefox
      
      # Mata sumariamente o processo firefox
      killall -9 firefox
      

Atividade

  1. Experimente matar alguns processos, seja pelo PID ou pelos seus nomes, e ver o que acontece ... Lembre que para isso se usam os programas kill ou killall.
  2. (RaspberryPI) Copie este programa para seu computador. Em seguida execute-o:
    ./teimoso
    
    ... e tente matá-lo.
    • (PC ou Virtualbox) Copie este programa para seu computador. Em seguida compile-o:
      gcc -o teimoso teimoso.c
      
      ... e então execute-o:
      ./teimoso
      
      Tente em seguida matá-lo !

Instalação de software

A instalação de software pode ser feita de diferentes maneiras:

  • A partir do software em formato de código-fonte: envolve transferir o código-fonte do seu repositório, e então compilá-lo. Isso requer um maior conhecimento técnico, e é uma habilidade esperada para um Técnico que atue na área de Telecomunicações.
  • A partir do software já preparado (compilado): essa forma é mais simples, pois basicamente implica obter o software compilado e copiá-lo para dentro do seu sistema. É também a prática mais comum, por ser mais rápida, fácil e menos trabalhosa. Todas as distribuições Linux (e também o FreeBSD, entre outras variantes de Unix) provêem alguma forma de instalar softwares dessa maneira. Esses sistemas criam o conceito de pacote de software, que é um arquivo especial contendo todos os arquivos do software a ser instalado, e todas as informações necessárias para que a instalação tenha sucesso (versão, dependências, e outras).

No escopo desta disciplina de Projeto Integrador, são usados pacotes de software. Mas nada impede que se demonstre como seria realizar uma instalação a partir do código-fonte, caso exista a curiosidade.

No Ubuntu Linux (e também nas distribuições originadas no Debian), o sistema de pacotes de software se chama dpkg (Debian Package). Existem diferentes formas de instalar e remover sofware, dentre elas:

  1. Diretamente a partir dos arquivos de pacote de software: esses arquivos têm extensão .deb, e devem ser instalados por meio do programa dpkg. Os arquivos .deb devem ser obtidos manualmente pelo usuário, podendo ser copiados de DVDs do sistema, ou obtidos de servidores na rede. Para removê-los, deve-se usar também o dpkg.
  2. Obtendo automaticamente pacotes de software de repositórios: essa forma de administrar os pacotes é muito mais fácil, pois os pacotes de software são obtidos de servidores de pacotes na rede. Ela se baseia num sistema de gerenciamento de pacotes chamado de APT, e pode ser realizada por meio dos aplicativos apt-get ou aptitude (este é ainda mais fácil). Existem também versões gráficas para esses gerenciadores de pacotes.

Instalação manual com dpkg

Para instalar pacotes de software manualmente, primeiro devem-se obter os respectivos arquivos de instalação. Cada pacote de software está contido em um arquivo com extensão .deb. Esses arquivos podem ser obtidos dos CD e DVD de instalação, ou de repositórios na Internet. Exemplos:


Cada arquivo de instalação deve ser instalado da seguinte forma:

dpkg -i nome_do_pacote.deb

Se o pacote de software não puder ser instalado, uma mensagem de erro é apresentada. Uma causa para esse problema é existirem dependências em relação a outros pacotes de software, os quais devem então ser instalados previamente.


A remoção de um pacote de software pode ser feita assim:

dpkg -r nome_do_pacote

Se o pacote a ser removido for dependência para outros pacotes instalados, a remoção será abortada.


A listagem de todos os pacotes instalados pode ser obtida com este comando:

dpkg-query -l

A listagem dos arquivos instalados por um pacote é mostrada com este outro comando:

dpkg-query -L nome_do_pacote


Informações detalhadas sobre um pacote podem ser mostradas assim:

dpkg-query -p nome_do_pacote

Obtenção automática de software

Os pacotes de softwares dos sistemas operacionais Ubuntu e Debian são organizados e disponibilizados em repositórios, que são servidores na Internet onde há cópias dos arquivos de instalação desses pacotes. Os repositórios são configurados durante a própria instalação do sistema, ficando registrados no arquivo /etc/apt/sources.list. Esse arquivo pode ser modificado para incluir ou remover repositórios, quando necessário.


Um resumo dos comandos que podem ser usados com apt-get:

  • apt-get update: atualiza o catálogo de pacotes de software conhecidos. Isso implica consultar os repositórios configurados e transferir as listas de pacotes lá existentes. Isso é importante para ter acesso a versões atualizadas dos pacotes de software.
  • apt-get install nome_do_pacote: instala o pacote de software chamado nome_do_pacote. Se houver dependências de outros pacotes, eles também serão instalados.
  • apt-get remove nome_do_pacote: remove o pacote de software chamado nome_do_pacote. se outros pacotes dependerem desse pacote, eles também serão removidos.
  • apt-get clean: remove as cópias dos arquivos de pacotes de software transferidos e não mais necessários.
  • apt-get upgrade: atualiza todos os pacotes de software para suas versões mais recentes, caso existam.


Um resumo dos comandos que podem ser usados com aptitude:

  • aptitude update: mesmo que apt-get update
  • aptitude install nome_do_pacote: mesmo que apt-get install
  • aptitude remove nome_do_pacote: mesmo que apt-get remove
  • aptitude search nome: lista todos os pacotes de software conhecidos cujos nomes contenham nome

Atividade

Execute os passos seguintes tanto com instalação manual quanto automática de software.

  1. Instale estes softwares:
    • mplayer
    • mencoder
    • handbrake
    • pppoe
    • hostapd
    • vlan
  2. Após instalá-los, obtenha suas descrições. Veja também as descrições destes outros softwares já instalados:
    • bash
    • iproute2
    • iptables
    • tcpdump
  3. Liste todos os softwares instalados.
  4. Remova os softwares instalados nos passos anteriores
  5. Existe um projeto de software chamado ownCloud que, entre outras coisas, implementa um serviço parecido com Dropbox. Veja este guia de instalação do ownCloud, e note que isso implica adicionar um repositório ao seu sistema operacional. Experimente seguir as instruções de instalação ali contidas.
  6. Descubra como se podem instalar softwares em modo gráfico.

26/04: Projeto 2: acesso remoto ao computador

Aula 20

Atividade sobre Instalação de softwares

  1. Obtenha uma lista de todos os softwares instalados: dpkg-query -l</syntaxhighlight>
  2. Baixe este pacote
  3. Instale este pacote manualmente usando o comando dpkg; dpkg -i nome_pacote.deb</syntaxhighlight>
  4. Obtenha a descrição deste pacote e a observe: dpkg-query -p nome_pacote</syntaxhighlight>
  5. Desinstale este pacote usando comando dpkg: dpkg -r nome_pacote</syntaxhighlight>
  6. Instale o pacote openssh-server: apt-get install openssh-server </syntaxhighlight>
  7. Obtenha a descrição deste pacote e a observe: dpkg-query -p nome_pacote</syntaxhighlight>
  8. Desinstale este pacote usando o comando: apt-get: apt-get remove nome_pacote</syntaxhighlight>

Acesso remoto ao computador

Um dos objetivos do projeto é adquirir familiaridade com a operação do sistema operacional. Após a instalação do seu computador, pode-se aproveitar a oportunidade para experimentar algumas ações comuns de serem feitas nesse tipo de sistema. Dentre elas, o acesso e administração remota de um computador é de grande utilidade.


O acesso remoto a um computador com sistema Linux (e Unix em geral) pode ser feito de diversas maneiras. Alguns métodos possibilitam executar aplicativos gráficos remotamente, ou mesmo abrir toda a área de trabalho (desktop). Outros possibilitam somente obter um terminal de texto. Neste experimento o segundo tipo de acesso será usado, por ser mais simples, rápido e representativo.

O acesso remoto a um terminal de texto atualmente se faz com um aplicativo chamado SSH (Secure Shell). Seu uso básico é bastante simples, bastando informar o endereço IP do computador onde se deseja fazer o acesso. Além disso, é necessário possuir uma conta de usuário nesse computador.

  1. No seu computador execute este comando para instalar o serviço SSH:
    sudo apt-get install openssh-server
    
  2. Descubra o endereço IP do seu computador.
  3. Abra um terminal em outro computador do laboratório, e conecte-se no novo computador usando o SSH:
    ssh usuario@IP_do_computador_alvo
    
  4. Experimente executar o pluma por meio desse acesso com SSH. Veja o resultado na tela gráfica do computador alvo. Execute-o desta forma:
    env DISPLAY=:0 gedit
    
  5. Termine a conexão executando este comando:
    exit
    
  6. Conecte novamente porém com este comando:
    ssh -X usuario@IP_do_computador_alvo
    
  7. Agora execute este programa:
    gedit
    
    ... e use-o para editar algum arquivo. Onde está esse arquivo que foi editado ?
  8. Experimente executar este comando pelo SSH:
    sudo poweroff
    
  9. Outros comandos úteis para serem usados remotamente:

Agora que vocês já sabem como acessar remotamente um computador que rode Linux, experimentem acessar trocar arquivos entre a máquina remota e a máquina local. Para isso, é utilizado o comando scp. Abaixo são apresentados alguns exemplos de uso do scp:

Exemplos de uso do comando scp
# Copia o arquivo teste.txt (que está na máquina local) para o diretório pessoal do aluno no computador 200.135.233.75
# Note que "." é o diretório de destino no computador remoto, que corresponde ao diretório de trabalho
# acessado pelo scp ... como o acesso foi realizado como usuário aluno,
# "." corresponde ao diretório pessoal do aluno
scp teste.txt aluno@200.135.233.75:.

# Faz o inverso ... copia o arquivo teste.txt da máquina remota para o diretório atual da máquina local
scp aluno@200.135.233.75:teste.txt .

# Agora copia todos os arquivos com extensão mp3 para o diretório "Downloads" 
# no computador remoto
scp *.mp3 aluno@200.135.233.75:Downloads/

# Por fim, copia todos os arquivos .mp3 do computador remoto de volta para seu computador,
# para dentro do subdiretório "Musicas"
scp "aluno@200.135.233.75:Downloads/*.mp3" Musicas/

03/05: Projeto 2: configuração de rede

Aula 21
  • configuração manual e permanente
  • revisar: endereços IPv4, máscara, rota default, servidor DNS (já visto em RCO)

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

aluno@M1:~> ifconfig -a
ppp0      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)

eth0      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)
aluno@M1:~>

Configuração manual e temporária

Para configurar uma interface de rede (que fica automaticamente ativada):

aluno@M1:~> ifconfig eth0 192.168.1.100 netmask 255.255.255.0

Para desativar uma interface:

aluno@M1:~> ifconfig eth0 down

Para ativar uma interface:

aluno@M1:~> ifconfig eth0 up

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.

aluno@M1:~> ifconfig eth0 192.168.10.0 netmask 255.255.0.0
aluno@M1:~> netstat -rn
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 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U         0 0          0 lo
dayna@dayna:~>


Usualmente, é suficiente definir uma única rota adicional para um computador, chamada de rota default (ou rota padrão). Essa rota tem o seguinte significado: se o destino não estiver em minha própria subrede, e nenhuma outra rota específica existir para a subrede onde se encontra, então repasse o pacote para o roteador indicado. Em um computador Linux isso pode ser feito assim:

# adiciona a rota default, que passa pelo roteador 192.168.10.100
route add default gw 192.168.10.100


Para que o acesso a rede esteja completo, falta apenas configurar um servidor DNS para ser possível a tradução de nomes de domínio para endereços IP. Esta configuração pode ser feita da seguinte forma:

# Editar o arquivo /etc/resolv.conf
vi /etc/resolv.conf

#Editar o seu conteúdo e inserir a linha abaixo
nameserver 200.135.37.65


Além de toda a configuração básica apresentada acima, pode-se associar mais de um endereço a uma mesma interface de rede. Isto se chama IP alias:

aluno@M1:~> ifconfig eth0:0 192.168.1.110 netmask 255.255.255.0
aluno@M1:~> ifconfig eth0:1 192.168.2.100 netmask 255.255.255.0
aluno@M1:~> ifconfig -a
eth0      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

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

eth0: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
aluno@M1:~>

Configuração permanente

Todo 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 e Debian, 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 eth0
iface lo inet loopback
        address 127.0.0.1
        netmask 255.0.0.0

# a interface ethernet eth1
iface eth0 inet static
	address 192.168.1.100
	netmask 255.255.255.0
	gateway 192.168.1.254
        dns-nameservers 200.135.37.65

Esses arquivo é lido pelos scripts ifup e ifdown. Esses scripts servem para ativar ou parar interfaces específicas, fazendo todas as operações necessárias para isto:

# Ativa a interface eth0
ifup eth0

# Desativa a interface eth0
ifdown eth0

Para ativar, desativar ou recarregar as configurações de todas as interfaces de rede:

# desativa todas as interfaces de rede
sudo /etc/init.d/networking stop

# ativa todas as interfaces de rede
sudo /etc/init.d/networking start

# recarrega as configurações de todas as interfaces de rede
sudo /etc/init.d/networking restart

O que todo host deve possuir

Com o que se fez até o momento, pode-se concluir que todo host (computador, tablet, smartphone, ..., qualquer dispositivo que rode aplicações da Internet) precisa de:

  • Endereço IP e máscara de rede: um host precisa de um endereço para que possa se comunicar com outros hosts. A máscara de rede informa o tamanho da subrede IP em que ele se encontra.
  • Rota default (padrão): para se comunicar com hosts de outras subredes, é preciso enviar os pacotes para um roteador que saiba encaminhá-los a seus destinos. O roteador default (ou padrão) é um roteador para quem se destinam todos esses pacotes. Tecnicamente ele corresponde à rota para o destino 0.0.0.0/0.
  • Endereço IP do servidor DNS: usuários costumam endereçar hosts e servidores por seus nomes de domínio, e não por seus endereços IP. Isso é muito mais fácil de memorizar do que os endereços numéricos. Como explicado em aula, nomes de domínio são análogos a nomes de assinantes em um catálogo telefônico. No entanto, as aplicações precisam dos endereços IP para se comunicarem. O servidor DNS faz a tradução de nome de domínio para endereço IP, e é usado pelas aplicações transparentemente (isso é, você não percebe que isso ocorre). O endereço desse servidor deve ser configurado em cada host, para que se possam traduzir nomes de domínio.

05/05: Projeto 2: Rotas

Aula 22

Como visto anteriormente, cada dispositivo em uma rede precisa ter um endereço IP para que possa se comunicar com outros dispositivos. Porém isso não é suficiente: os dispositivos devem saber que direção devem enviar mensagens para que cheguem até cada outro dispositivo. Se o dispositivo de destino estiver na mesma rede, então basta transmitir o pacote a ele diretamente. Mas e se ele estiver em outra rede ? Por exemplo, e se um computador no laboratório de Redes 1 quiser se comunicar com outro que está na reitoria do IFSC ? Como esse pacote deve ser transmitido nesse caso?


Pji-projeto2-rotas.png


Antes de prosseguir na investigação desse assunto, é necessário uma visão geral sobre redes de computadores e a Internet. Isso deve ajudar a entender como as comunicações acontecem nessa grande rede.


No diagrama que mostra simplificadamente a rede do projeto 2, a rede externa é representada como uma nuvem. Isso significa que sua estrutura interna é desconhecida, ou não é relevante mostrá-la. No caso da Internet, na verdade seria impossível apresentar toda sua estrutura, pois essa rede hoje em dia é gigantesca, além de estar sempre em mutação. Mas ao menos um esboço da rede do Ifsc pode ser apresentado, como se pode ver a seguir. Ao visualizá-la, deve-se novamente imaginar como é possível encaminhar pacotes através dela, de forma que cheguem a seus destinos.


Ifsc.png
Uma visão geral da rede do Ifsc (e bem simplificada !)


Em primeiro lugar, deve-se imaginar como a Internet está implantada (ao menos do ponto de vista das subredes). A palavra internet significa rede composta por redes, e, no caso da Internet, cada uma das redes que a constitui é chamada de subrede. Se alguém pudesse ver o mapa da Internet, pareceria uma grande malha, com milhares de fios (enlaces) se entrelaçando. Nas junções desses fios estão equipamentos que roteiam (direcionam) pacotes a seus destinos. Os equipamentos finais, que são usados por pessoas para rodas os aplicativos de rede, estão na borda de toda essa malha ... nas pontas dos fios. No fim, isso parece um grande mapa, e como tal ele pode ser percorrido por um ou mais caminhos para se ir de um ponto a outro.


Um mapa da Internet (bem abstrato ...) Rede Ipê: a Rede Nacional de Pesquisa que originou a Internet no Brasil
Internet-map.png Rede-ipe-2014.jpg


Essa analogia do mapa pode ser experimentada usando o Google Maps. Experimente traçar caminhos entre o IFSC-SJ e vários destinos (mesmo em outras cidades), e visualize como ele descobre o caminho. Observe também que critério é usado para escolher o caminho ... pois é normal que exista mais de uma opção.

Mas o que isso tem a ver com redes ? Muita coisa: a forma com que o Google Maps descobre caminhos se baseia nos mesmos conceitos usados para descobrir rotas entre dispositivos na Internet. E voltando a redes de computadores, também é possível descobrir que caminho os pacotes percorrem para ir de um ponto a outro na Internet.

Experimento:: use o programa traceroute para descobrir os caminhos percorridos por seus pacotes. Teste-o com vários possíveis destinos:

  • www.ufsc.br
  • www.unicamp.br
  • www.brasil.gov.br
  • www.nasa.gov
  • english.pravda.ru
  • www.china.org.cn
  • finland.fi

O que significam as informações mostradas por esse programa ?


Estes outros aplicativos descobrem rotas e as mostram sobre um mapa mundial.

Rotas no Linux

Cada computador ligado a Internet possui uma tabela de rotas. É por meio de tal tabela que ele sabe como transmitir os pacotes para cada destino. Em seu computador, você pode visualizar essa tabela da seguinte forma:

# Isto funciona em qualquer *nix que se preze ...
netstat -rn


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. Por exemplo, se uma interface de rede foi configurada com o endereço IP 192.168.10.1/16, sua tabela de rotas pode se apresentar assim:

aluno@M1:~> ifconfig eth1 192.168.10.1 netmask 255.255.0.0
aluno@M1::~> netstat -rn
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


Usualmente, é suficiente definir uma única rota adicional para um computador, chamada de rota default (ou rota padrão). Essa rota tem o seguinte significado: se o destino não estiver em minha própria subrede, e nenhuma outra rota específica existir para a subrede onde se encontra, então repasse o pacote para o roteador indicado. Em um computador Linux isso pode ser feito assim:

# adiciona a rota default, que passa pelo roteador 192.168.10.100
route add default gw 192.168.10.100


Outra forma de adicionar essa rota é:

# este comando tem o mesmo efeito que o anterior ...
route add -net 0.0.0.0/0 gw 192.168.10.100


Por fim, uma rota para um destino qualquer pode ser feita assim (supondo que a rede de destino seja 191.36.9.0/24):

# este comando define que para chegar à rede 191.36.9.0/24 
# deve-se usar o gateway 192.168.1.1
route add -net 191.36.9.0/24 gw 192.168.1.1


Isso não parece complicado, e à primeira vista realmente não é :-) Ao se instalar um novo equipamento em uma rede, seja um computador, tablet, ponto de acesso ou smart TV, basta configurá-lo com a rota default para que possa se comunicar com a Internet. Na verdade, nem isso normalmente é necessário, pois esses equipamentos são capazes de se autoconfigurarem como mágica (mais tarde veremos como !). Porém existe uma matemática interessante por trás de como essas rotas funcionam, e vale dar uma olhada.

Rotas, prefixos de rede e máscaras

Uma rota serve para informar como se chega a um determinado destino. Um destino pode ser um único endereço IP, ou uma subrede (que contém um conjunto de endereços IP). Para que um pacote IP chegue a um destino, deve-se transmiti-lo para o próximo roteador em direção a esse destino. Esse próximo roteador também deve conhecer uma rota para tal destino, repetindo o mesmo processo (reveja o experimento com 'traceroute). Ao menos duas informações compõem cada rota:

  • O próximo roteador, expressado por um endereço IP: o endereço IP do próximo roteador (também chamado de gateway, que significa portal em inglês), o qual deve pertencer à mesma subrede do equipamento que o especifica em uma rota.
  • O destino, que é expressado como uma subrede: Uma subrede é representada por um prefixo de rede e uma máscara. O prefixo são os N bits mais significativos comuns a todos os endereços IP contidos em uma subrede (lembre que um endereço IP tem 32 bits). A máscara informa quantos bits tem o prefixo. A combinação de prefixo de rede e máscara funciona da seguinte forma:

Imagine que exista uma subrede contendo os endereços de 192.168.2.0 até 192.168.2.255. Se representarmos esses endereços em binário, podemos ver que os 24 bits mais significativos são os mesmos para todos os endereços:


Pji-prefixo1.png


A máscara de rede tem a forma de um endereço IP, porém com bits 1 na parte correspondente ao prefixo, e 0 no resto. Assim, para o exemplo acima a máscara de rede é 255.255.255.0. Outra forma de representar a máscara é simplesmente informar o tamanho em bits do prefixo, e no exemplo a máscara seria 24. Juntando o prefixo e a máscara, a subrede pode ser representada de uma destas duas formas:

  • 192.168.2.0/255.255.255.0
  • 192.168.2.0/24


Agora imagine que o prefixo tenha 28 bits, como mostrado nesta figura:


Pji-prefixo2.png


Por ter um prefixo mais longo, o tamanho dessa subrede é menor. Isso significa que ela contém menos endereços IP, tanto que o primeiro endereço é 192.168.2.0 e o último é 192.168.2.15. Essa subrede poderia ser representada por:

  • 192.168.2.0/255.255.255.240
  • 192.168.2.0/28


Aproveitando esse exemplo, pode-se mostrar uma outra subrede que, apesar de não parecer, é diferente da anterior:


Pji-prefixo3.png


Essa outra subrede contém endereços entre 192.168.2.16 e 192.168.2.31. Essa subrede poderia ser representada por:

  • 192.168.2.16/255.255.255.240
  • 192.168.2.16/28

Exercícios

Resolva estes exercícios sobre subredes, prefixos e máscaras.

  1. O tamanho de uma subrede é definido pela quantidade de endereços IP que ela contém. Quais os tamanhos de cada subrede mostrada nos exemplos da seção anterior ?
  2. Sejam as subredes A: 192.168.2.48/28, B: 192.168.2.64/26, C: 192.168.2.192/27, D: 192.168.2.128/29 e E: 192.168.2.0/27. Informe em qual dessas subredes se encontram estes endereços IP:
    • 192.168.2.126
    • 192.168.2.25
    • 192.168.2.62
    • 192.168.2.200
    • 192.168.2.100
    • 192.168.2.80
  3. Informe qual o tamanho de cada uma das subredes do exercício anterior.
  4. Informe quais o primeiro e último endereços IP de cada uma daquelas subredes.
  5. A subrede 192.168.2.0/24 foi subdividida em subredes de tamanho 32. Liste todas as subredes que são possíveis definir com essas características (informe prefixo e máscara).
  6. A subrede 192.168.2.0/24 foi subdividida em subredes com máscara 26. Liste todas as subredes que são possíveis definir com essas características (prefixo e máscara), informando também seus tamanhos.
  7. Uma subrede do câmpus é 172.18.128.0/18. Calcule seu tamanho, seu endereço inicial e final.
  8. Calcule o tamanho, endereço inicial e final da rede sem-fio do IFSC.
  9. Use este simulador (IPKit) para criar as seguintes redes e definir as rotas que nelas devem existir:
    • OBS: antes de usar esse simulador execute este comando em um terminal:
      sudo apt install icedtea-7-plugin
      
      ... e depois reinicie o Firefox.


PJI2-rotas-Rede1.jpg
Rede 1
PJI2-rotas-Rede2.jpg
Rede 2
PJI2-rotas-Rede3.jpg
Rede 3
PJI2-rotas-Rede4.jpg
Rede 4


Esse exercício pode também ser realizado com um emulador de rede chamado Netkit2:

10/05: Projeto 2: Rotas

Aula 23

Hoje serão implantadas duas redes para aplicar conhecimentos sobre roteamento estático. As redes serão virtualizadas, o que agiliza a montagem de cada cenário, usando o software Netkit2. Esse software está disponível nos computadores do laboratório, no menu Aplicativos->Educacional. As redes a serem implantadas já estão prontas, sendo descritas por arquivos específicos usados por esse software.


Atividade 1

Nesta atividade devem-se configurar os endereços IP dos computadores da rede, e as rotas necessárias para que todos computadores consigam se comunicar mutuamente. As subredes ser configuradas conforme mostrado na figura a seguir.

PJI1-Proj2-20161-lan1.jpg


Sendo assim:

  1. A partir de cada subrede tente se comunicar com computadores de outras subredes. Caso não funcione, investigue o porquê (ex: por onde passam os pacotes ?)
  2. Defina a rota padrão do seu computador, a qual deve apontar o último endereço IP válido da sua subrede (esse é o computador do professor)
  3. Tente acessar um endereço qualquer na Internet (ex: 8.8.8.8). Caso não funcione, investigue o porquê (ex: por onde passam os pacotes ?)
  4. Use o traceroute para entender como cada computador se comunica com computadores de outras subredes, e com computadores fora do Ifsc.


Atividade 2

Nesta outra atividade, a rede a ser usada possui esta topologia:

PJI1-Proj2-20161-lan2.jpg


Assim como na atividade 1, os computadores nessa rede devem conseguir se comunicarem com a Internet, e também se comunicarem entre si.

12/05: Projeto 2: Rotas (continuação)

Aula 24

17/05: Projeto 2: Rotas (continuação)

  • Realizar a avaliação docente através deste link
Aula 25

19/05: Projeto 2: Implantação das redes locais das equipes

Aula 26

Cada equipe deve implantar sua própria rede local, composta pelo computador, um roteador e ponto de acesso sem-fio, e um ou mais dispositivos (hosts) adicionais. A rede portanto deve ficar parecida com o diagrama apresentado no início do projeto 2:

Pji1-projeto2.png


Por questões de disponibilidade, usaremos um equipamento que combina as funções de roteador e ponto de acesso (AP). Usaremos também um switch para interligar o computador de cada equipe e esse roteador.


O cenário no laboratório deve ser o seguinte:

Proj2-20142-lan.png

Equipamentos de interligação para pequenas redes locais (LAN)

Uma LAN serve para interconectar equipamentos (computadores, servidores, roteadores, ...) relativamente próximos entre si. As distâncias envolvidas são tipicamente de algumas dezenas de metros, podendo chegar em alguns casos a até poucas centenas de metros. Essas redes apresentam como características:

  • altas taxas de transmissão: o usual é 1 Gbps (1 bilhão de bits por segundo, que equivalem a cerca de 125 milhões de bytes por segundo). A geração anterior das LANs Ethernet operava a 100 Mbps (100 milhões de bits por segundo, ou dez vezes mais lento que as LANs de 1 Gbps), e ainda se encontram dispositivos que operam nessa taxa de transmissão.
  • baixo custo: as interfaces de rede dos equipamentos são baratas (algumas dezenas de R$), assim como os equipamentos de interconexão (switches) e cabos.
  • alta qualidade de transmissão: essas redes são virtualmente isentas de erros de transmissão. Quando eles ocorrem, é sinal de má-instalação ou defeito em equipamentos.

Hoje em dia a tecnologia de rede usada para criar LANs se chama Ethernet (o nome oficial é IEEE 802.3, que é o padrão que a define).

LANs são muito difundidas. São usadas em redes domésticas, redes de pequenos escritórios, grandes redes corporativas, redes em escolas, e possivelmente outros ambientes. A rede do IFSC, que interliga os laboratórios e os servidores do câmpus, é composta de algumas LANs interconectadas. Em todos esses casos, a configuração usual das LANs envolve o uso de:

  • dispositivos com interfaces de rede Ethernet: dispositivos são computadores, roteadores, e demais equipamentos que se comunicam através da LAN.
  • switches Ethernet para interligar os dispositivos: switches funcionam como concentradores (na verdade, comutadores), onde todos os dispositivos são conectados por meio de cabos.
  • cabos e conectores: os cabos usados são do tipo par-trançado, porque dentro deles existem quatro pares trançados de fios. Para conectá-los se usam conectores RJ-45. Esses cabos devem ter comprimento máximo de 100m.


Para criar uma LAN, deve-se usar um switch com uma quantidade de portas igual ou maior que a quantidade de dispositivos a serem interligados. A figura abaixo mostra uma pequena LAN com um switch:


Pji1-Lan1.png


Em uma LAN, switches podem também ser interligados. Isso na prática aumenta a quantidade de dispositivos que podem existir na LAN, e também as distâncias entre eles (lembre que cada cabo tem um comprimento máximo da ordem de 100m):

Pji1-Lan2.png


Se a LAN for composta de apenas dois dispositivos, então um switch se torna desnecessário. Assim, os dispositivos podem ser conectados diretamente:

Pji1-Lan3.png

Atividade

  1. Usando os equipamentos fornecidos implante a rede local da sua equipe. Siga atentamente o diagrama que mostra como sua rede se relaciona com a rede do laboratório.
  2. Configure sua rede para que os hosts que nela estão possam se comunicar com os hosts das outras redes, e também com a rede externa (Internet). Dica: revise as rotas em sua rede
  3. Acrescente um switch à sua rede, conectando-o em uma das portas amarelas do roteador (essas portas fazem parte de um switch embutido). Teste a comunicação (ex: ping 8.8.8.8) a partir do Rpi, ora conectando-o em um switch, ora em outro. Há alguma diferença ?
  4. Acrescente um outro computador à sua rede, de forma que ele fique em um switch e o Rpi em outro. Configure um endereço IP nesse novo computador, e em seguida teste sua comunicação com o Rpi. Verifique se a comunicação funciona.
  5. Execute o wireshark no Rpi, ativando a captura na interface ethernet. Em seguida faça um ping para 8.8.8.8 a partir do outro computador. O wireshark mostra os pacotes transmitidos e recebidos ?
  6. Ainda com o wireshark no Rpi, execute um ping do outro computador para o próprio Rpi. O que o wireshark apresenta ?
  7. Agora conecte esse computador do outro lado do roteador de sua rede, mantendo o mesmo endereço IP. Teste a comunicação com o Rpi. Explique o resultado.

24/05: Projeto 2: a rede de cada equipe

Aula 27

Dando continuidade à implantação da rede de cada equipe, hoje devem-se investigar:

  • a configuração automática de rede dos hosts
  • o uso de NAT no roteador
  • o funcionamento básico de alguns equipamentos da rede

Configuração automática de hosts

Na prática ninguém precisa se preocupar em configurar seus dispositivos com as informações de rede vistas na aula anterior. As pessoas acessam a rede e por mágica tudo isso é configurado automaticamente. Basta pensar no acesso à rede sem-fio do Ifsc, e mesmo nas redes de suas casas ou locais de trabalho, seja sem-fio ou cabeada. A configuração manual somente é necessária quando se instalam servidores ou outros equipamentos que formam a infraestrutura das redes. No caso geral, um serviço especial chamado de DHCP (Dyamic Host Configuration Protocol - Protocolo de Configuração Dinâmica de Host) provê a configuração automática.


DHCP (Dynamic Host Configuration Protocol) é um protocolo para obtenção automática de configuração de rede, usado por computadores que acessam fisicamente uma rede. Esses computadores são tipicamente máquinas de usuários, que podem usar a rede esporadicamente (ex: usuários com seus laptops, com acesso via rede cabeada ou sem-fio), ou mesmo computadores fixos da rede. O principal objetivo do DHCP é fornecer um endereço IP, a máscara de rede, o endereço IP do roteador default e um ou mais endereços de servidores DNS. Assim, um novo computador que acesse a rede pode obter essa configuração sem a intervenção do usuário.


Para esse serviço deve existir na rede ao menos um servidor DHCP, que pode estar em um roteador, ponto de acesso sem-fio, ou mesmo em um outro computador. Quer dizer, em um desses equipamentos pode haver um programa que envia mensagens de configuração automática a novos dispositivos que entrem na rede.


Um computador que precise obter sua configuração de rede envia mensagens DHCPDISCOVER em broadcast. Um servidor DHCP, ao receber tais mensagens, responde com uma mensagem DHCPOFFER também em broadcast, contendo uma configuração de rede ofertada. O computador então envia novamente em broadcast uma mensagem DHCPREQUEST, requisitando o endereço IP ofertado pelo servidor. Finalmente, o servidor responde com uma mensagem DHCPACK, completando a configuração do computador cliente. Como a configuração tem um tempo de validade (chamado de lease time - tempo de aluguel), o cliente deve periodicamente renová-la junto ao servidor DHCP, para poder continuar usando-a. O diagrama abaixo mostra simplificadamente esse comportamento:

Pji1-Dhcp.jpeg


Essa troca de mensagens entre clientes e servidor DHCP ocorre somente dentro da mesma rede local. Portanto um cliente não consegue em princípio obter sua configuração de rede de um servidor DHCP que esteja em outra rede local (isso é, se existir um ou mais roteadores entre eles).

Questão: como o servidor DHCP diferencia os clientes em uma rede ? Para entender esta pergunta, faça este experimento:

  1. Ative dois hosts na rede do laboratório, e anote os endereços que cada um obteve.
  2. Desligue ambos os hosts.
  3. Agora ative apenas um deles, e observe o endereço IP obtido.
  4. Faça o mesmo com o segundo host.
  5. Houve diferença entre os endereços obtidos em cada etapa ?

Uso de NAT no roteador


Endereços IP são números de 32 bits, o que significa existirem pouco mais de 4 bilhões de diferentes endereços possíveis (exatamente 4.294.967.296 endereços). Parece muito, porém os endereços IP disponíveis estão praticamente esgotados. Não significa que existam mais de 4 bilhões de equipamentos de rede usando esses endereços, mas sim que todas as subredes distribuídas já contêm quase todos esses endereços. Quer dizer, se uma empresa recebe o direito de usar uma subrede com máscara /24 (255.255.255.0, o que resulta em uma subrede com 256 endereços), todos os endereços ali contidos não podem ser reaproveitados por outras empresas ou organizações, mesmo que não nem todos estejam sendo de fato usados. Por isso nos anos 1990 os orgãos que administram os endereços da Internet tomaram duas iniciativas para lidar com o esgotamento de endereços IP disponíveis.


A primeira iniciativa foi desenvolver uma nova versão do protocolo IP, a qual usaria endereços nem maiores e virtualmente inesgotáveis. Isso fez surgir o protocolo IPv6, cujos endereços têm 128 bits. A quantidade de endereços possíveis é tão grande, que torna difícil compará-la com coisas conhecidas. Para ter uma ideia, existem em torno de endereços IPv6 (a quantidade exata é 340.282.366.920.938.463.463.374.607.431.768.211.456 endereços), ou 340 trilhões de trilhões de trilhões ... Por mais que se abuse na forma com que esses endereços devem ser distribuídos, supõe-se que eles nunca se esgotem (?!). Porém o projeto desse novo protocolo demorou vários anos, e ainda hoje ele não foi adotado em larga escala na Internet.


A segunda iniciativa, publicada em 1994, se chamou NAT (Network Address Tanslation - Tradução de Endereço de Rede) e teve por objetivo criar uma forma de reaproveitar endereços IP. Para isso, algumas subredes ficaram reservadas, não sendo distribuídas para nenhum empresa ou organização, e são elas:

  • 10.0.0.0/8
  • 192.168.0.0/16
  • 172.16.0.0/12

A ideia é que redes com computadores que só acessam a Internet, mas não são servidores, usem essas subredes (ou parte delas). Essas subredes não são roteáveis, o que significa que os roteadores da infraestrutura da Internet não as conhecem e não sabem como encontrá-las. Por fim, para que computadores dessas redes consigam acessar a Internet, deve nelas existir ao menos um roteador que possua um endereço IP roteável (chamado também de IP válido). Esse roteador deve também possuir uma função especial que modifique os endereços IP de origem contidos nos pacotes que saem em direção a Internet. O endereço IP de origem desses pacotes deve se tornar o endereço IP roteável do roteador. Com isso, os servidores na Internet que receberem esses pacotes poderão respondê-los, pois o endereço de origem é roteável. A figura a seguir ilustra o funcionamento do NAT.


Pji1-Nat2.png
Uma rede com roteador NAT


  1. Dentro da rede interna, pacotes que saem têm endereço de origem da rede interna (ex: 10.0.0.5)
  2. Ao atravessarem o roteador, seus endereços IP de origem são substituídos pelo endereço IP roteável do roteador (no caso, 14.1.23.5)
  3. O servidor na Internet recebe um pacote que parece ter vindo do roteador NAT, pois seu endereço de origem é 14.1.23.5. O pacote de resposta desse servidor é então endereçado para esse IP.
  4. O pacote de resposta chega ao roteador, que reescreve seu endereço IP de destino para o endereço IP original da rede interna


Hoje em dia todos roteadores, mesmo os mais simples, têm a função NAT. Para que o NAT funcione, basta acessar a interface de gerenciamento do equipamento e ativá-lo. De fato, na maioria desses roteadores o NAT já vem ativado de fábrica. Com isso eles podem ser instalados facilmente, possibilitando que computadores de suas redes acessem a Internet. O NAT funcionou tão bem para o usuário médio da Internet, que pode ter sido um fator significativo para o atraso na adoção do novo protocolo IPv6.

Experimentos com NAT

O IFSC usa NAT ? Descubra por meio deste site:


A rede instalada aula passada está com NAT desativado. Ative o NAT no roteador e teste a comunicação entre os computadores de sua rede e:

  • O computador do professor (192.168.1.1)
  • O servidor DNS do Google (8.8.8.8)
  • Um servidor web à sua escolha
  • Os computadores das outras equipes


Há alguma diferença em relação à rede sem NAT ? Caso afirmativo, qual ? E que implicações pode ter o NAT no roteamento em uma rede ?

Atividade

Agora que seus roteadores usam NAT, investigue a comunicação entre computadores de diferentes equipes. Um simples ping de uma equipe para outra é suficiente. Investigue também o acesso externo com SSH ao computador da equipe. O objetivo é conseguir acessá-lo com SSH mesmo estando fora da rede da equipe.


Dicas:

  • Leiam o manual do equipamento
  • Pesquisem sobre termos tais como DMZ, redirecionamento de port (port redirection) e virtual server. Sempre associem esses termos à palavra-chave NAT em seus buscas.
  • Desenhem suas redes, evidenciando os endereços IP envolvidos nos equipamentos e as aplicações usadas para os testes.

26/05: Projeto 2: a rede de cada equipe (continuação)

Aula 28

31/05: Projeto 2: estabelecendo o enlace WAN

Aula 29

O próximo passo do projeto 2 envolve estabelecer o enlace WAN da rede de cada equipe. Através desse enlace a rede da equipe pode acessar a Internet. Alguns detalhes devem ser entendidos para que essa comunicação funcione a contento. A ideia é que a rede fique assim:


Pji1-Projeto3-final.png


Nessa rede, a infraestrutura de acesso ADSL é provida pelo IFSC, tendo os professores como técnicos responsáveis. O enlace ADSL oferece um único IP para cada equipe, o qual ficará associado à interface externa (WAN) do roteador ADSL. Por fim, não é necessária autenticação para a ativação desse enlace.

Implante sua rede usando o roteador ADSL, e use-o para acessar a Internet. Experimente também o seguinte:

  • Meça qual a taxa de download máxima por esse enlace.
  • Meça a taxa de upload máxima por esse enlace.
  • Estando fora de sua rede, acesse o seu computador Kodi com o aplicativo SSH.

Uma introdução a ADSL


ADSL (Asymetric Digital Subscriber Line) é uma tecnologia para provimento de enlace de dados para assinantes de linhas telefônicas residenciais. Ao contrário da modems analógicos (ex: V.92), ADSL não está limitado à largura de banda de canal de voz (~ 4kHz). Com isso, podem-se obter taxas de dados muito superiores, dependendo da versão de ADSL em uso. A tabela abaixo ilustra os vários padrões ADSL existentes e suas características.


Adsl-taxas.png
Tabela de versões de ADSL e suas características.
Obtido em http://en.wikipedia.org/wiki/Asymmetric_digital_subscriber_line#ADSL_standards


ADSL consegue obter taxas de dados muito superiores às de modems analógicos (que chegavam no máximo a 56 kbps) porque na verdade não usa um canal de voz. A ideia é usar a fiação telefônica para estabelecer um enlace de dados entre o assinante residencial e a operadora, mas não a rede telefônica em si. Por isso que com ADSL pode-se ter o enlace de dados e falar ao telefone ao mesmo tempo. Para isso, na central onde chega a linha do assinante é feita uma separação entre o sinal de dados e o de voz: o de dados vai para uma rede de dados, e o de voz segue pela infraestrutura de telefonia. Em consequência, é necessário haver uma rede de dados separada da rede telefônica. A figura a seguir ilustra um enlace ADSL para um assinante residencial, evidenciando os componentes da infraestrutura da rede dados.


Dsl-architecture.png


A separação entre os canais de voz e de dados, feita por um filtro passa-baixa, está destacada na figura abaixo:

Adsl-model.png

Na infraestrutura ADSL, cabem destacar alguns elementos:

  • modem ADSL: equipamento responsável pela ponta do enlace do lado do assinante, fazendo os encapsulamentos das PDUs dos protocolos envolvidos nesse enlace, e a modulação do sinal digital resultante.
  • DSLAM (DSL Access Multiplexer): multiplexador de acesso ADSL, que recebe as linhas dos assinantes do lado da operadora. Esse componente faz a intermediação entre os assinantes e a rede de dados da operadora. Dentre suas atribuições, destacam-se a modulação do sinal das linhas dos assinantes, a limitação das taxas de downstream e upstream de acordo com o contratado pelos assinantes, e as conversões de protocolos de enlace (quando necessárias) para a rede da operadora. No entanto.
  • splitter: filtro que separa os sinais de voz e de dados. São usados tanto do lado do assinante quanto no DSLAM.
  • AC (concentrador de acesso): equipamento que concentra as pontas dos enlaces de dados dos assinantes no lado da rede da operadora.

A parte da infraestrutura ADSL dentro da rede de dados da operadora inclui equipamentos DSLAM (muitos deles), um ou mais AC e as redes de comunicação para interligá-los. Note-se que quem dá acesso de fato à Internet é o AC. A figura abaixo ilustra esses componentes.

Dslam-infra.png

O enlace de dados entre o equipamento do assinante e a rede da operadora pode ser feita de diferentes formas. Esse enlace é visto pelo assinante como seu enlace para a Internet - i.e. ele obtém seu endereço IP fornecido pela operadora. Os tipos de enlace de dados ADSL mais usados são:

  • PPPoE (PPP over Ethernet): cria um enlace ponto-a-ponto com protocolo PPP, cujos quadros são encapsulados em quadros Ethernet. Esta é a forma mais utilizada para assinantes residenciais.
  • PPPoA (PPP over ATM): cria um enlace ponto-a-ponto com protocolo PPP, cujos quadros são encapsulados em mensagens AAL5 da arquitetura ATM.
  • EoA (Ethernet over ATM): cria um enlace Ethernet, cujos quadros são encapsulados em mensagens AAL5 da arquitetura ATM.


O enlace PPPoE funciona como se tivesse um link ponto-a-ponto entre o roteador ADSL e um concentrador de acesso (AC). Quer dizer, parece que existe um fio ligando diretamente esses dois equipamentos, apesar de na realidade existir toda uma infraestrutura entre os dois. Isso pode ser visualizado na figura abaixo. Em cada ponta desse link PPPoE há um endereço IP usado pelos respectivos equipamentos.

Enlace-pppoe.png

ATIVIDADE

Cada equipe deve estabelecer seu enlace WAN usando ADSL. Em seguida, deve validar seu computador na rede, de forma que possa ser acessado com SSH de fora da sua rede.

Configurações ADSL

Cada link ADSL deve ter seu IP manualmente configurado, o qual deve ser um IP válido fornecido à equipe pelo provedor (professores).

Os seguintes parâmetros dos modems ADSL devem ter estes valores:

  • Port: 0
  • VPI: 8
  • VCI: 35
  • Encapsulamento: LLC/SNAP
  • Modo: PPPoE
  • User: usuario1
  • Password: senha1
  • NÃO ativar firewall.
  • Ativar NAT


02/06: Projeto 2: estabelecendo o enlace WAN

Aula 30

A aula de hoje será destinada a configuração do link WAN em diversos cenários.


A implantação da rede de cada equipe pode ser feita segundo três modelos básicos:

1. Roteador ADSL em modo PPPoE: neste modelo, o roteador ADSL opera de fato como roteador. Ele estabelece um enlace IP com a operadora usando um protocolo chamado PPPoE (ver a visão geral sobre ADSL para maiores detalhes). O endereço IP fornecido pela operadora fica associado à interface WAN do roteador ADSL. A rede interna forma uma rede local (LAN).

PJI1-Proj2-caso1.jpg

2. Roteador ADSL em modo bridge: neste modelo, o roteador ADSL opera na realidade como um modem ADSL. Ele apenas faz a codificação dos dados entre a LAN e o enlace ADSL estabelecido entre ele e o DSLAM. Isso significa que o endereço IP fornecido pela operadora deve ser associado a outro equipamento conectado à interface LAN do modem ADSL. Esse outro equipamento (no caso mostrado na figura a seguir representado pelo roteador/AP TP-Link) deve fazer a negociação do enlace IP usando o protocolo PPPoE. Esse outro roteador é que faz o papel de gateway para a rede rede interna (LAN). Maiores detalhes são fornecidos na próxima seção desta aula.

PJI1-Proj2-caso2.jpg

3. Roteador ADSL em modo bridge e PC como roteador: este modelo é uma variação do modelo 2. Ao invés de usar o AP TP-Link como roteador, usa-se o computador. Isso implica usar um software específico no Linux para torná-lo capaz de estabelecer o enlace PPPoE. O endereço IP fornecido pela operadora fica ao final associado à uma interface de rede desse computador. Esse computador deve idealmente ter duas interfaces de rede.

PJI1-Proj2-caso3.jpg

Como o modelo 1 já foi implantado na aula passada, hoje serão experimentados os modelos 2 e 3.

Como configurar a interface sem-fio de forma estática
auto wlan0
iface wlan0 inet static
  wpa-ssid nome-da-rede
  wpa-psk senha-da-rede
  address IP_da_interface
  netmask máscara-de-rede

Modo bridge: Uma outra forma de fazer o link WAN com ADSL

Aula passada vimos como implantar um enlace WAN com ADSL. Hoje faremos uma outra investigação sobre a infraestrutura da rede como um todo.


O link ADSL implantado até o momento explorou o roteador ADSL para criar o link e interligar a rede interna com a Internet através dele. A figura abaixo mostra o papel do roteador ADSL, e como fica o link para Internet (em vermelho pontilhado).


Enlace-pppoe.png


O link ADSL é denominado enlace PPPoE na figura, porque esse link funciona como um enlace ponto-a-ponto especial (daí o nome PPPoE = Point-to-Point over Ethernet). Apenas para ilustrar, PPP é nome de um tipo de enlace usado entre dois equipamentos ligados por um cabo, e é usado, por exemplo, em acesso discado e em link de dados 3G. No caso do PPPoE, parece que se cria um enlace PPP, mas por baixo há mais do que um cabo entre os equipamentos (pela figura aparece toda uma rede entre eles ...). Os detalhes técnicos de como isso funciona de fato deve ser visto na 2a e 3a fases do curso. No momento o que interessa é saber que para estabelecer um link ADSL típico é necessário usar esse protocolo PPPoE.

O link ADSL feito até agora usou o roteador para estabelecer o enlace PPPoE. Porém há outra forma de fazer esse enlace: deixar o roteador ADSL operando em modo bridge (ponte) e usar outro equipamento para fazer o enlace PPPoE. Na rede das equipes, o próprio computador da equipe pode fazer esse papel. Esse outro cenário ficaria como mostrado abaixo:


Projeto2-adsl-bridge.png


O uso de modo bridge tem algumas vantagens:

  • O endereço IP fornecido pelo provedor fica no equipamento interno usado para fazer o enlace PPPoE: isso possibilita um maior controle sobre as comunicações entre a rede interna e externa, pois roteadores ADSL costumam ser funcionalmente limitados (por isso são tão baratos !).
  • Aumenta a quantidade de comunicações simultâneas entre rede interna e Internet: isso é uma consequência de o equipamento interno poder ter maior capacidade computacional que o roteador ADSL. Em particular, roteadores ADSL suportam uma quantidade limitada de sessões NAT simultâneas, devido à pequena quantidade de memória RAM disponível (novamente, por isso são baratos ;-). Tal limitação não existe para um computador com Linux.
  • Aplicações P2P (dentre outras) podem funcionar melhor: se for usado um computador para fazer o enlace PPPoE, programas nele executados podem se comunicar mais facilmente com a Internet. Isso se dá porque as comunicações entre esse computador e a Internet não são modificadas por NAT - e NAT atrapalha alguns tipos de comunicação, tais como P2P e VoIP.

... e desvantagens:

  • O equipamento interno precisa ser capaz de criar enlaces PPPoE: se for usado um computador, ele deve ter um software capaz de estabelecer esse tipo de enlace. Esse software precisaria assim ser instalado e devidamente configurado.
  • O equipamento interno precisa estar sempre ligado: para que o link para a Internet esteja sempre ativado, o equipamento interno precisa também ser mantido ligado. Se for usado um computador, isso significa um gasto maior de energia (mas talvez não seja significativo).
  • O equipamento interno fica mais exposto à Internet: como esse equipamento está diretamente ligado à Internet, há uma chance maior que seja invadido debido a essa exposição. Portanto tal equipamento deve ser protegido, bloqueando tentativas de acesso externas (algo nem sempre fácil de fazer). O uso de softwares para firewall torna-se essencial.


Para perceber as diferenças, vamos implantar o link para Internet com ADSL em modo bridge.

Preparação de um computador Linux para usar PPPoE

Em sistemas Linux baseados na distribuição Debian há duas maneiras de criar um enlace PPPoE:

  • Com o Network-Manager: o network-manager é um aplicativo que auxilia o estabelecimento de enlaces em geral (cabeado, sem-fio, discado, ...). Ele é acessado normalmente por uma applet na barra de aplicativos, no topo da tela.
  • Editando os arquivos de configuração de rede: essa forma é um pouco mais complicada, mas funciona em qualquer sistema Linux. A seguir há uma explicação sobre como realizá-la.

A forma manual de estabelecer o enlace PPPoE segue estes passos:

  1. Instale o software necessário:
    sudo apt-get install pppoe
    
  2. Edite o arquivo /etc/ppp/peers/adsl, que deve ficar com este conteúdo:
    pty "/usr/sbin/pppoe -I eth0 -T 80 -m 1452 -C pji"
    noipdefault
    usepeerdns
    defaultroute
    hide-password
    lcp-echo-interval 20
    lcp-echo-failure 3
    connect /bin/true
    noauth
    persist
    mtu 1492
    noaccomp
    user usuario1
    default-asyncmap
    
  3. Edite o arquivo /etc/ppp/chap-secrets e acrescente o seguinte:
    usuario1   *   senha1
    
  4. Ative o enlace PPPoE executando o seguinte comando:
    sudo pppd call adsl
    
  5. Ative o encaminhamento de pacotes entre interfaces do seu PC: sendo o roteador da sua rede, ele deve ser capaz de fazer o encaminhamento de pacotes entre rede interna e externa:
    sudo sysctl -w net.ipv4.ip_forward=1
    
  6. Ative o NAT em seu PC: como ele agora é o roteador da sua rede, então ele precisará ser também o tradutor NAT:
    sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
    

Algumas informações sobre qualidade do link ADSL

Dicas obtidas em um forum

Começando Perfil de conexão ADSL ou Atenuação , é uma sequência de valores necessários para uma conexão via ADSL, cada provedor tem um perfil minimo para liberar a conexão de usuário que varia de acordo com a velocidade contratada vai de 500kbps até 32000kbps ou seja é o sinal que esta chegando até o modem que ira manter a conexão estabilizada.


Para visualizar seu perfil, basta digitar o IP do seu modem no seu navegador, colocar usuário e senha que logo inicialmente irá aparecer:

Snr Margin (Db)
Attenuation
OutPut Power
Attainable Rate (KBPS)
Rate (KBPS)

Explicação para cada ítem:

  • SNR MARGIN: Margem de Sinal de ruido
Valor Descrição
5db ou menos impossível conectar sujeito a muitas quedas
8db a 13db Nível regular
14db a 22db Nível Muito bom
23db a 28db Excelente
29db a 35db Raramente ( Apenas em servidores dedicados ou fibra ótica )
  • TABELA DE ATENUAÇÃO: perda de potência do sinal
Taxa de dados Distância Atenuação aproximada
24Mbps 200 Mts entre 5 e 8 db
20Mbps 500 Mts entre 10 e 13 db
15Mbps 1500 Mts entre 19 e 23 db
10Mbps 1900 Mts entre 25 e 27 db
5Mbps 2600 Mts entre 29 e 33 db
2Mbps 3500 Mts entre 34 e 39 db

OBS: Dados baseados no padrão brasileiro


O perfil ou atenuação mínima pode variar de acordo com local e velocidade. Por exemplo, em condomínios que possuem Dslam integrados ( 2 Operadoras ), o perfil pode variar de 555kbps a 766kbps, permitindo velocidade máxima de até 2Mbps.

Já em varias regiões que possuem cabeamento aéreo por cabo normal ou fibra, o perfil pode variar de 7600kbps até 32000kbps permitindo velocidade maxima de até 100Mbps.

quando ocorrer lentidão ou quedas faça o seguinte:


Abra seu navegador Digite Ip do modem eX: 192.168.1.1 logue e entre na pagina inicial e veja qual sua margem de ruido


se ela estiver baixa verifique seu cabeamento interno, muitas vezes esses problemas são causados por falta de isolamento em emendas, ou emendas mal feitas que estão encostando uma na outra, verifique também sua tomada padrão e seu cabo de RJ11 veja se a tomada não está com os fios juntos, eo rj11 não esta muito esticado ou oxidado no conector, Caso esteja tudo ok, com sua fiação interna, entre em contato com o Suporte Técnico de seu provedor e solicite um técnico e informe que o problema está no cabeamento, no caso sera necessário repassar a fiação externa e interna que é o recomendado, lembrando que a vida útil de um cabo telefônico externo e de ate 5 anos, porem uma ou duas vezes dependendo da região que você mora sera necessário troca-lo motivos: Linhas de Pipa, Cabos enroscados em galhos podem ter cortes que causa oxidação interna trazendo problemas na sua conexão.


FEC CRC HEC


o Fec Hec é uma sequência de erros na transmissão de dados que pode ocorrer do Dslam até a caixa aérea e da caixa aérea até a tomada padrão em muitos casos o modem também pode apresentar esses erros, geralmente no DSLAM o fec hec ocorre nas portas de distribuição pode ser por super aquecimento ou cabo de jumper queimado ou mal ligado na porta, que leva o erro até a caixa aérea, ja no cabeamento do cliente pode ser a oxidação do cabo, emendas, cortes por linhas de pipas, no modem o problema muitas vezes é por aquecimento por ex. colocar roteador em baixo e modem em cima, gera um super aquecimento na placa do modem que pode ocasionar quedas e lentidão.

Nesse caso mantenha um aparelho longe do outro em ambiente fresco.

Rede local sem-fio padrão IEEE 802.11 (WiFi)

Uma rede local sem-fios (WLAN - Wireless Local Area Network) serve para conectar dispositivos usando sinal de rádio. Hoje em dia estão tão difundidas que não se imagina um lugar sem cobertura por ao menos uma dessas redes, cuja tecnologia se chama WiFi (ou IEEE 802.11, nome oficial do padrão). As pessoas as utilizam para conectar seus smartphones e tablets, além de laptops e mesmo equipamentos diversos (media centers, impressoras, câmeras fotográficas,TVs, e mesmo estações meteorológicas, entre outros). Todos esses dispositivos fazem uso de uma infraestrutura relativamente simples.


Uma WLAN é implantada usando um equipamento especial chamado de ponto-de-acesso (AP - Access Point). Um AP transmite periodicamente (10 vezes por segundo) uma pequena mensagem que informa os dispositivos ao redor sobre o nome da rede sem-fio por ele controlada. O alcance típico do sinal do AP é de algumas dezenas de metros. Assim, dispositivos que recebam essa mensagem (chamada de beacon) podem vir a saber que existe essa rede, e se conectarem a ela. Uma vez conectado, um dispositivo pode se comunicar por intermédio do AP. Como usualmente um AP é instalado de forma a estar conectado a uma LAN, os dispositivos a ele conectados podem se comunicar também com a Internet. A figura abaixo ilustra uma pequena WLAN com seu AP provendo conectividade a dispositivos sem-fio, além de estar conectado a um switch de uma LAN.

Pji1-projeto2.png


Várias gerações das redes WiFi já foram lançadas, e cada nova geração aumenta significativamente a taxa de transmissão máxima da rede. Atualmente (geração IEEE 802.11ac) essas redes conseguem se comunicar a taxas de transmissão de até 1.3 Gbps. Isso depende do modelo do AP e das interfaces de rede dos dispositivos que usam a rede sem-fio. Na prática, a taxa de transmissão que um dispositivo consegue, no máximo, é um pouco menor que a metade da taxa nominal (ex: para uma rede a 300 Mbps, essa taxa deve ser pouco superior a 100 Mbps). Se houver mais dispositivos, essa taxa de transmissão cai ainda mais, pois eles precisarão compartilhar o canal de comunicação com o AP. Porque isso acontece será visto mais tarde no curso. Por curiosidade, a tabela abaixo mostra as taxas de transmissão máximas das diferentes gerações das redes WiFi.

Geração Ano de lançamento Taxa de transmissão máxima
IEEE 802.11 1997 2 Mbps
IEEE 802.11a 1999 54 Mbps
IEEE 802.11b 2000 11 Mbps
IEEE 802.11g 2003 54 Mbps
IEEE 802.11n 2009 600 Mbps
IEEE 802.11ac 2013 3.39 Gbps (agregada de até 6.77 Gbps)
IEEE 802.11ax 2019 ?? aprox. 10 Gbps


Uma WLAN possibilita que qualquer dispositivo no alcance do sinal do AP possa a ele se conectar. Isso tem um porém, pois pessoas podem usar indevidamente uma rede sem-fio. Para evitar esse mau-uso, as WLANs possuem um modo de segurança, sendo WPA2-PSK (ou WPA-PSK, WPA Personal, WPA Pessoal) o recomendado para pequenas redes. Basicamente pode-se fazer com que:

  • somente pessoas que conheçam uma determinada senha tenham acesso à rede
  • todas as comunicações da rede sem-fio sejam encriptadas (protegidas). Com isso se alguém estiver monitorando as transmissões de uma rede sem-fio (e isso é muito fácil de fazer !), não conseguirá entender nada.

Resumindo, para instalar um AP é necessário configurar os seguintes parâmetros:

  • SSID (nome da rede): um breve texto com o nome da rede
  • Canal: o canal de comunicação, parecido com os canais das estações de rádio. Pode haver mais de um AP no mesmo canal, porém quanto mais dispositivos se comunicam por um canal, menor a velocidade da rede por eles percebida.
  • Segurança: WPA2-PSK, com uma senha que deve ter no mínimo 8 caracteres. Recomenda-se que essa senha seja aleatória (ou não seja uma palavra que possa ser deduzida por quem tente invadir sua rede).

Experimente investigar os parâmetros de um AP de verdade usando este emulador:


Assim, para instalar uma nova rede sem-fio, basicamente deve-se usar um AP. Ele deve ser conectado a uma rede cabeada para ter acesso a Internet. Por fim, o AP precisa ser devidamente configurado para denominar a rede por ele criada, e também o modo de segurança para uso da rede sem-fio.

Atividade

Implante sua rede sem-fio conforme as recomendações da seção anterior. Em seguida, use-a para acessar o Rpi e a Internet. Por fim, faça as seguintes verificações:

  • Identifique o endereço IP e demais configurações de rede obtidas na rede sem-fio, assim como o método para obtenção
  • Trace a rota entre o Rpi e o dispositivo sem-fio ... quantos saltos são necessários para chegar até seu dispositivo ? O que se conclui sobre a intermediação feita pelo AP ?
  • Meça a taxa de transferência (velocidade da rede) a partir da rede sem-fio, e compare-a com a da rede cabeada.
  • Acrescente outro dispositivo à sua rede sem-fio, e repita a medição da taxa de transferência, porém simultaneamente a partir de ambos dispositivos

07/06: Projeto 2: estabelecendo o enlace WAN (continuação)

Aula 31

09/06: Projeto 2: estabelecendo o enlace WAN (continuação)

Aula 32

14/06: Projeto 2: a rede de dados e a rede telefônica

Aula 33

No final do projeto 2, um serviço telefônico será adicionado à rede implantada até então. Esse serviço fará uso de aparelhos telefônicos convencionais e também dispositivos capazes de fazer chamadas de voz utilizando a rede de dados (ex: smartphones, computadores com softphones). Além disso, o serviço de voz a ser agregado à rede será implantado com diferentes tecnologias (convencional e por meio da rede de dados). A figura a seguir ilustra o acréscimo a ser feito inicialmente à rede:

Pji1-Projeto3-geral.png

Para começar, cada equipe deve instalar um telefone IP, e prepará-lo para uso. O objetivo é cada equipe conseguir fazer chamadas a qualquer das outras equipes.

Uma introdução a redes telefônicas

Uma rede telefônica pode ser vista de forma (muito) simplificada na figura abaixo. O objetivo desse diagrama é evidenciar alguns elementos existentes na borda dessa rede:

  • os assinantes com seus telefones e PBX (um tipo de central telefônica privativa)
  • o laço local, que é o par de fios metálicos que chega ao assinante
  • a interface FXO, que liga o PBX a um tronco analógico.
  • a interface FXS, que fornece a linha telefônica a telefones de ramais.

PJI1-Rede-relefonica-simples.png


Uma coisa importante a notar é que cada linha telefônica tem um número de assinante (o número de telefone). Esse número é fisicamente vinculado a essa linha, portanto qualquer aparelho telefônico a ela ligado irá atender por esse número. Outra coisa a se observar é que a rede telefônica tem uma infraestrutura exclusiva para o transporte das chamadas (quer dizer, toda a fiação e interligação de centrais mundo afora).


A figura abaixo mostra um diagrama simplificado de uma rede telefônica baseada em VoIP (Voz sobre IP). Alguns elementos importantes são:

  • o servidor SIP, que funciona como uma central telefônica para essa rede.
  • o telefone IP, que é um aparelho telefônico capaz de se comunicar diretamente por essa rede.
  • o ATA (Adaptador de Telefone Analógico), que possibilita usar essa rede com um telefone analógico convencional.
  • a infraestrutura da rede de dados, que possibilita a comunicação entre os telefones IP e o servidor SIP (e, claro, o transporte das chamadas)

Pji1-Rede-sip1.png


Na rede acima, o número de assinante usado por um telefone IP (ou ATA) é registrado no servidor SIP. Assim, qualquer telefone IP ou ATA pode personificar um determinado número de assinante, bastando que se registre nesse servidor. Outra diferença em relação à rede telefônica convencional é o uso da rede de dados (Internet) para a realização de chamadas. Portanto, não há uma rede exclusiva para o transporte das chamadas.

Por fim, ambas redes podem conviver e chamadas podem sair de uma rede e se destinar à outra. A figura abaixo mostra um exemplo simplificado de como essas redes podem se interligar.

Pji1-Rede-sip-pstn.png

Instalação de um telefone IP ou ATA

Tanto um telefone IP quanto um ATA são hosts de uma rede TCP/IP. Portanto, como todo host, eles precisam de algumas definições. Além disso, devem ser configuradas algumas informações específicas da rede telefônica VoIP:

  • O número do telefone, chamado de usuário SIP ou conta SIP.
  • A senha para verificação do usuário SIP: essa senha é utilizada para autorizar o usuário SIP junto ao servidor SIP. Lembre que o servidor SIP funciona como uma central telefônica para o serviço de voz a ser implantado.
  • O endereço do servidor SIP: alguns aparelhos pedem também os endereços do servidor de registro e proxy, que usualmente são os mesmos. O servidor SIP a ser usado deve ser o do provedor VoIP que fornece o serviço telefônico VoIP contratado (ver algumas opções no Brasil).
  • O domínio da rede telefônica VoIP a que ele pertence: isso é opcional em nosso experimento, porém em uma rede VoIP de fato tal informação é essencial.


Basicamente as informações acima são necessárias em qualquer telefone IP, ATA, softphone, ou dispositivo que use a rede telefônica VoIP. Porém cada equipamento tem suas particularidades, como se descobrirá no laboratório hoje.

Atividade

Hoje cada equipe deve conseguir ativar um telefone IP, e usá-lo para fazer chamadas para outras equipes.

Há dois tipos de telefone no laboratório:

  • Telefone IP: possuem toda a funcionalidade necessária para fazer chamadas de voz sobre a rede de dados (VoIP)
  • Telefones convencionais + ATA: a funcionalidade para fazer chamadas sobre a rede de dados é fornecida pelo ATA (Adaptador de Telefone Analógico). A ele se conecta um telefone analógico convencional, e com isso se conseguem fazer e receber chamadas de voz.

Em ambos os casos, devem-se configurar esses dispositivos com algumas informações:

  • Usuário: o número de ramal (ou mesmo de telefone). Use 1000+número de sua equipe (ex: equipe 1 usa 1001).
  • Senha: a senha para registro do dispositivo na central telefônica VoIP
  • Servidor SIP: endereço IP da central telefônica VoIP (no caso, 192.168.1.101)
  • Endereço IP: o endereço IP a ser usado pelo telefone ou ATA
  • Gateway: o roteador default do telefone ou ATA (no caso, o gateway da sua rede)

Tanto o ATA quanto o telefone IP podem ser configurados pelo teclado ou por uma página web. Ao menos o endereço IP precisa ser definido para acessar a página web. Cada modelo de equipamento tem suas particularidades, que estão explicadas em seus manuais.

Após configurar os equipamentos, teste a chamada entre equipes.

Extra: usando a rede telefônica VoIP com os smartphones

Os smartphones são capazes de fazerem chamados usando a rede telefônica VoIP que implantamos. Eles precisam de um app capaz de fazer e receber chamadas SIP (isso se chama softphone). Para Android alguns softphones são:

  • Zoiper
  • Linphone
  • CSipSimple
  • SIPdroid
  • PortGo

A configuração desses app é muito parecida com a de telefones IP ou ATA, mas mais simples.

21/06: Projeto 2: instalação dos PBX das equipes

Aula 34

Nesta etapa do projeto 2, cada equipe deve ter o seu PBX IP capaz de fazer chamadas entre telefones e softphones. Lembrem que um PBX IP pode ser entendido como um pequena central telefônica privada capaz de fazer chamadas telefônicas através da Internet. Esse tipo de PBX usa alguma tecnologia VoIP (Voice over IP - Voz sobre IP) para fazer chamadas e transmitir a voz digitalizada entre os telefones. Na nossa instalação, a tecnologia usada se chama modelo SIP. Com esses recursos, pretende-se criar uma rede telefônica privativa em laboratório, em que todas as equipes podem fazer chamadas entre si, como mostrado na figura a seguir.

Pji1-projeto3-pbxs.png
Exemplo da rede telefônica no laboratório entre duas equipes. As linhas tracejadas mostram as etapas para o estabelecimento de uma chamada desde a Equipe A até Equipe B

Para realizar as atividades, serão usados alguns blocos de montagem:

  • PBX IP: um computador com software Asterisk devidamente instalado e configurado deve fazer o papel de PBX. Existem outros softwares capazes de transformarem um computador em PBX IP, tais como http://www.freeswitch.org Freeswitch] e Snep (este útlimo na verdade é composto por um Asterisk e uma interface de administração, mas ainda tem muitos bugs).
  • Telefones IP: telefone IP é o aparelho que contém todas as funcionalidades para fazer e receber chamadas VoIP. Ele tem as teclas para discagem, o bocal, e embute um pequeno computador para se comunicar pela rede.
  • ATA: o Adaptador de Telefone Analógico (ATA) é usado para tornar um telefone analógico capaz de fazer chamadas VoIP. O ATA contém um pequeno computador e interface de rede.
  • Softphone: um telefone IP implementado em software. Como ele pode-se transformar um computador, tablet ou smartphone em telefone IP capaz de fazer chamadas pela rede telefônica VoIP implantada. Exemplos de softphone são Jitsi (para computadores) e Zoiper (para tablets e smartphones Android).
  • Provedor SIP: este é um PBX IP especial, que tem papel de interconectar outros PBX IP e, possivelmente, prover acesso a PSTN. No nosso caso, ele vai interligar os PBX das equipes.

Atividade 1: rede telefônica VoIP de cada equipe

Cada equipe deve ter seu PBX IP instalado.

O primeiro passo é conseguir fazer chamadas entre telefones IP e softphones da própria equipe. Sendo assim, deve-se garantir que a rede IP esteja funcionando adequadamente:

  1. Roteador ADSL:
    1. Rede externa: interface WAN com endereço dinâmico (fornecido pelo provedor com PPPoE).
    2. Rede interna: interface LAN com endereço fixo.
    3. Roteamento: rota padrão definida diretamente pelo PPPoE.
    4. NAT ativado.
  2. Roteador Wireless
    1. Rede externa:interface WAN com endereço fixo na mesma faixa da LAN do Roteador ADSL.
    2. Rede interna: interface LAN com endereço fixo.
    3. Serviço DHCP para a LAN: faixa de endereços que não conflite com os endereços do roteador e servidor (central).
    4. Roteamento: rota padrão para o roteador ADSL
  3. Servidor (Central):
    1. Rede: interface com endereço fixo.
    2. Roteamento: rota padrão para o roteador Wireless.

Elementos básicos do Asterisk


Asterisk: uma solução completa de PABX baseado em software, permitindo ligar o mundo IP ao mundo da rede pública de telefonia comutada.


Basicamente dois componentes do Asterisk precisam ser entendidos para poder usá-lo:

  • Plano de discagem: o plano de discagem define como cada chamada deve ser processada. As instruções de processamento residem no arquivo de configuração /etc/asterisk/extensions.conf. O fluxo de processamento de chamadas pode ser visto resumidamente abaixo:

    Asterisk-fluxo.png
  • Canais: cada telefone SIP deve ter seu identificador cadastrado no Asterisk. O identificador pode tanto ser um número, análogo a um ramal, ou uma string alfanumérica. No terminologia do Asterisk, cada telefone SIP é chamado de canal SIP, e deve estar declarado em /etc/asterisk/sip.conf. Há outros tipos de canais além de SIP, os quais possibilitam integrar telefones analógicos e troncos digitais ao PBX.

Instalação do Asterisk

Instale o Asterisk no computador do centro de midia, e configure-o para possibilitar chamadas entre ramais da equipe:

  1. Instale o Asterisk:
    sudo apt-get install asterisk
    
  2. As configurações do Asterisk ficam no subdiretório /etc/asterisk. Precisaremos renomear alguns arquivos de configuração, pois iremos substitui-los por outros:
    cd /etc/asterisk
    sudo mv sip.conf sip.conf.old
    sudo mv extensions.conf extensions.conf.old
    
  3. Crie o arquivo /etc/asterisk/sip.conf, e nele grave o seguinte conteúdo:
    ; o ramal 1000
    [1000]
    username=1000
    secret=542431
    type=friend
    insecure=port,invite
    disallow=all
    allow=gsm
    allow=ulaw
    allow=alaw
    context=default
    host=dynamic
    qualify=yes
    directmedia=no
    
    ; o ramal 1001
    [1001]
    username=1001
    secret=542431
    type=friend
    insecure=port,invite
    disallow=all
    allow=gsm
    allow=ulaw
    allow=alaw
    context=default
    host=dynamic
    qualify=yes
    directmedia=no
    
  4. Crie o arquivo /etc/asterisk/extensions.conf, e nele grave o seguinte conteúdo:
    [default]
    ; qualquer número de destino com quatro dígitos é comutado automaticamente
    exten=>1000,1,Dial(SIP/1000)
    exten=>1001,1,Dial(SIP/1001)
    
  5. Reinicie o Asterisk:
    sudo service asterisk restart
    
  6. Crie um ramal para cada telefone IP ou softphone de sua equipe. Não esqueça de definir uma senha não óbvia para o seu ramal !
  7. Ative os telefones IP ou softphones, registrando-os no seu PBX IP. Você precisará do endereço IP do seu PBX, e do número de ramal com respectiva senha. Essas informações precisarão ser configuradas no telefone ou softphone.
  8. Teste chamadas entre esses telefones.
  9. Experimente acrescentar o seguinte a /etc/asterisk/extensions.conf:
    exten=>999,1,Answer()
    same=>n,wait(1)
    same=>n,Playback(tt-monkeys)
    same=>n,Wait(1)
    same=>n,Hangup()
    
    Em seguida execute este comando:
    sudo service asterisk restart
    
    ... e experimente chamar o número 999.
  10. Agora baixe este arquivo de som e grave-o em /var/tmp. Em seguida, modifique o plano de discagem para que a extensão 999 fique assim:
    exten=>999,1,Answer()
    same=>n,wait(1)
    same=>n,Playback(/var/tmp/vol2)
    same=>n,Wait(1)
    same=>n,Hangup()
    
    Em seguida execute este comando:
    sudo service asterisk restart
    
    ... e experimente chamar novamente o número 999.

23/06: Projeto 2: interligando os PBX das equipes

Aula 35

Continuando a implantação da rede telefônica, precisamos interligar os PBX das equipes:

Pji1-projeto3-pbxs.png


Atividade 1: rede telefônica VoIP entre as equipes

Nesta atividade, serão feitos acréscimos às configurações dos PBX IP para que chamadas entre equipes sejam possíveis. Para isso será necessário que cada equipe crie um tronco entre seu PBX IP e o Provedor SIP. Um tronco funciona como uma associação entre dois PBX, a qual serve para transportar chamadas. Um tronco é implantado como um par de canais SIP (ou usuários SIP):

  • um canal SIP serve para enviar chamadas através do tronco. No exemplo abaixo é o canal SIP ParaProvedor.
  • outro canal SIP é usado para receber chamadas vindas pelo tronco. No exemplo abaixo esse canal é equipeX.


A criação do tronco segue estes passos:

  1. Adicione um tronco com tecnologia SIP para o provedor. Isso implica acrescentar o seguinte ao arquivo /etc/asterisk/sip.conf:
    [general]
    externip=IP_externo_da_sua_equipe
    register=>equipeX:senhaX@192.168.1.101
    
    ; devem-se informar as redes privativas onde está o Asterisk (pode haver mais de uma ... basta repetir o 
    ; atributo localnet para cada subrede). Isso é importante para que o Asterisk saiba quando usar o IP
    ; público (para telefones fora de sua rede) ou privativo (telefones dentro de sua rede)
    localnet=prefixo/máscara
    
    ; Substitua X pelo número de sua equipe
    
    [equipeX]
    type=peer
    secret=senhaX
    host=192.168.1.101
    disallow=all
    allow=ulaw
    allow=alaw
    allow=gsm
    directmedia=no
    context=tronco; chamadas recebidas por este canal SIP serão encaminhadas de acordo com a seção "tronco" no plano de discagem
    qualify=yes
    insecure=invite,port
    
  2. Substitua o conteúdo de /etc/asterisk/extensions.conf pelo seguinte:
    [default]; aqui se processam as chamadas que vêm dos ramais internos
    exten =>_ZXXX,1,Dial(SIP/${EXTEN})
    same=>n,Hangup()
    
    ; esta regra possibilita que se chamem números das outras equipes
    exten => _0ZZXXX,1,Dial(SIP/equipeX/${EXTEN:1})
    same=>n,Hangup
    
    [tronco] ; aqui se processam as chamadas vindas do tronco
    exten =>_ZXXX,1,Dial(SIP/${EXTEN})
    same=>n,Hangup()
    
  3. Teste as chamadas entre equipes.

Plano de discagem com extensões genéricas

Extensões podem ser representadas de forma compacta com padrões de extensões. Com esse recurso, muitas extensões podem ser atendidas com um único conjunto de regras, evitando um plano de discagem repetitivo. Por exemplo, se uma empresa possui ramais entre 100 e 199, o plano de discagem pode ser escrito assim:

exten=>_1XX,1,Dial(SIP/${EXTEN})
same=>n,Hangup

A extensão _1XX contida na primeira linha está escrita como um padrão (pattern), pois inicia com o caractere _. Os caracteres que seguem _ indicam cada dígito que deve aparecer para satisfazer essa extensão. Nesse exemplo, deve aparecer 1 seguido de dois dígitos quaisquer entre 0 e 9 (é esse o significado do caractere X). Desta forma, essa extensão atende qualquer número entre 100 e 199. Por fim, o número de fato chamado é armazenado na variável ${EXTEN}, que pode assim ser usada dentro da regra de discagem.

Alguns caracteres têm significado especial em padrões, como mostrado no exemplo (caractere X). A tabela abaixo lista esses caracteres:

Caractere Descrição
X Qualquer dígito entre 0 e 9
Z Qualquer dígito entre 1 e 9
N Qualquer dígito entre 2 e 9
[13-6] Qualquer dígito entre os colchetes (no exemplo, 1,3,4,5,6)
. Qualquer sequência de um ou mais dígitos
! Qualquer sequência de zero ou mais dígitos

28/06: Projeto 2: Conclusão e avaliação

Aula 36

30/06: Projeto 2: Conclusão e avaliação

Aula 37