Introdução à Engenharia de
Computadores e Telemática
Guião das Aulas Práticas
Departamento de Eletrónica, Telecomunicações e Informática
Universidade de Aveiro
20122013
Conteúdo
1 Introdução ao UNIX
1.1
1.2
1.3
1.4
A relevância do sistema operativo Linux .
O Arranque, Login e Logout . . . . . . . .
A Linha de Comandos UNIX . . . . . . .
1.3.1 Interfaces de texto e grácas . . . .
1.3.2 Execução de comandos . . . . . . .
1.3.3 Edição de um comando . . . . . . .
1.3.4 Navegação no Sistema de Ficheiros
1.3.5 Manipulação de cheiros . . . . . .
1.3.6 Ajuda On-line . . . . . . . . . . . .
Edição de cheiros de texto . . . . . . . .
1.4.1 Procura de texto . . . . . . . . . .
2 Conceitos elementares de HTML
2.1
2.2
2.3
2.4
Protocolo HTTP . . . . . . . . . .
2.1.1 Objeto retornado . . . . . .
2.1.2 Parâmetros num URL . . .
Documentos HTML . . . . . . . . .
2.2.1 Marcas (tags ) . . . . . . . .
2.2.2 Comentários . . . . . . . . .
2.2.3 Parametrização de marcas .
2.2.4 Estruturação de documentos
2.2.5 Hiper-referências . . . . . .
2.2.6 Imagens . . . . . . . . . . .
Conteúdos dinâmicos . . . . . . . .
Exploração de um servidor HTTP .
3 Ferramentas colaborativas
3.1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Acesso remoto via SSH . . . . . . . . . . . .
3.1.1 Estabelecimento da sessão . . . . . .
3.1.2 Transferência de cheiros . . . . . . .
3.1.3 Autenticação por chaves . . . . . . .
3.1.4 Reencaminhamento do protocolo X11
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
4
4
5
5
6
8
8
11
12
12
14
15
16
17
17
17
18
19
19
19
22
22
23
23
25
26
26
27
28
29
3.2
Git .
3.2.1
3.2.2
3.2.3
3.2.4
3.2.5
3.2.6
3.2.7
3.2.8
3.2.9
. . . . . . . . . . . . . . . . . . . . . . . . . .
Introdução . . . . . . . . . . . . . . . . . . .
Repositório: Monitorização dos conteúdos de
Introdução ao blob . . . . . . . . . . . . . .
Os blobs são armazenados em trees . . . . .
De que são feitas as trees . . . . . . . . . . .
Commits . . . . . . . . . . . . . . . . . . . .
Outros nomes para commit . . . . . . . . .
Índice: o intermediário . . . . . . . . . . . .
Agora muito rápido . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . .
um diretório
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
4 Redes de Computadores
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
Introdução . . . . . . . . . . . . . . . . . . . . . . . . .
Conguração de rede de um PC . . . . . . . . . . . . .
Endereços Físicos . . . . . . . . . . . . . . . . . . . . .
Tradução de nomes em endereços IP . . . . . . . . . .
Conectividade e rotas . . . . . . . . . . . . . . . . . . .
Identicação da entidade responsável por uma máquina
Transmissão de informação em redes: traceroute . . .
Transmissão de informação em redes: conteúdo HTTP
5 Instalação e exploração de máquinas virtuais
5.1
5.2
5.3
5.4
5.5
5.6
5.7
Introdução . . . . . . . . . . . . . . . . . . . . . .
Instalação de sistemas operativos . . . . . . . . .
5.2.1 Sistema live . . . . . . . . . . . . . . . . .
5.2.2 Distribuição SliTaz . . . . . . . . . . . . .
Instalação do uma máquina virtual . . . . . . . .
5.3.1 Criação de uma máquina virtual . . . . . .
5.3.2 Arranque de uma máquina virtual . . . . .
5.3.3 Instalação do SliTaz no disco rígido virtual
5.3.4 Instalação de software adicional . . . . . .
5.3.5 Módulos especiais para o sistema operativo
Duplicação de máquinas virtuais . . . . . . . . . .
Conguração de redes de máquinas virtuais . . .
Interligação de redes . . . . . . . . . . . . . . . .
Criação de uma VPN . . . . . . . . . . . . . . . .
6 Produção de documentos com LATEX
6.1
6.2
6.3
6.4
Introdução . . . . . . . . . . . . .
Ações de preparação . . . . . . .
Compilação de documentos LATEX
Caracteres especiais do LATEX . .
6.4.1 O caráter '\' . . . . . . .
.
.
.
.
.
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
30
30
33
34
35
36
38
40
42
43
47
48
49
50
50
51
52
52
53
55
57
57
57
58
58
58
62
64
70
70
72
72
75
78
83
85
85
86
86
87
6.4.2 O caráter '$' . . . . . . . . . . . . . .
6.4.3 Os carateres '{' e '}' . . . . . . . . . .
6.4.4 Os carateres '[' e ']' . . . . . . . . . .
6.4.5 O caráter '%' . . . . . . . . . . . . . .
6.4.6 O caráter '~' . . . . . . . . . . . . . .
6.5 Estrutura obrigatória de um documento . . .
6.6 Funcionalidades adicionais . . . . . . . . . . .
6.7 Dimensão das letras . . . . . . . . . . . . . . .
6.8 Estruturação de documentos . . . . . . . . . .
6.8.1 Título . . . . . . . . . . . . . . . . . .
6.8.2 Partes, capítulos, secções e parágrafos .
6.8.3 Listas de itens . . . . . . . . . . . . . .
6.8.4 Objetos utuantes: guras e tabelas .
6.8.5 Referências a partes do texto . . . . .
6.8.6 Disposição de elementos em matriz . .
6.8.7 Expressões e ambientes matemáticos .
6.9 Inclusão de guras . . . . . . . . . . . . . . .
6.10 Índices de conteúdos, de guras e de tabelas .
6.11 Referências bibliográcas . . . . . . . . . . . .
6.11.1 Ficheiro de bibliograa, BibTeX . . . .
6.11.2 Uso de citações bibliográcas . . . . .
6.11.3 Estilos de bibliograa . . . . . . . . . .
6.12 Visão global da geração de documentos LATEX
7 Programação do robô DETI PIC
7.1
7.2
7.3
7.4
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
O robô DETI PIC . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.1 Movimentação . . . . . . . . . . . . . . . . . . . . . . . .
7.2.2 Sensores . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.3 Comunicação com o exterior . . . . . . . . . . . . . . . .
O ambiente DETInchanting . . . . . . . . . . . . . . . . . . . .
7.3.1 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.3.2 Tipos de blocos . . . . . . . . . . . . . . . . . . . . . . .
7.3.3 Categorias de blocos . . . . . . . . . . . . . . . . . . . .
7.3.4 Macro-estrutura de um programa . . . . . . . . . . . . .
7.3.5 Edição de um programa . . . . . . . . . . . . . . . . . .
Programação do robô DET PIC com o ambiente DETInchanting
7.4.1 Programas com comunicação para o exterior . . . . . . .
7.4.2 Programas com sensores . . . . . . . . . . . . . . . . . .
7.4.3 programas com locomoção . . . . . . . . . . . . . . . . .
7.4.4 Programas complexos . . . . . . . . . . . . . . . . . . . .
4
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
87
87
89
89
89
89
90
92
92
92
93
94
96
97
98
99
101
103
103
103
105
106
106
111
112
112
112
112
113
114
114
114
115
116
116
117
117
117
119
120
8 Programação do robô DETI PIC (cont.)
121
9 Programação do robô DETI PIC (cont.)
123
8.1
8.2
9.1
9.2
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5
Resumo
Este guião possui um plano para cada aula prática de IECT. O objetivo destes guiões é o
de fomentar a aprendizagem de várias matérias através de experiências práticas. Durante
as mesmas os alunos devem aplicar o seu raciocínio crítico e, desejavelmente, ir mais além
na exploração de tópicos relacionados com os do guião.
2
Aula Prática 5
Instalação e exploração de máquinas
virtuais
Resumo:
-
Instalação de uma máquina virtual.
Noção de distribuição live de um sistema operativo.
Conguração do hardware de uma máquina virtual.
Replicação de máquinas virtuais.
Conguração de rede de uma máquina virtual.
Interligação de redes usando máquinas virtuais.
Criação de uma VPN PPTP.
Conteúdo
5.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Instalação de sistemas operativos . . . . . . . . . . . . . . . . .
57
57
5.2.1
Sistema live . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
5.2.2
Distribuição SliTaz . . . . . . . . . . . . . . . . . . . . . . . . . .
58
5.3 Instalação do uma máquina virtual . . . . . . . . . . . . . . . .
58
5.3.1
Criação de uma máquina virtual . . . . . . . . . . . . . . . . . .
58
5.3.2
Arranque de uma máquina virtual . . . . . . . . . . . . . . . . .
62
5.3.3
Instalação do SliTaz no disco rígido virtual . . . . . . . . . . . .
64
5.3.4
Instalação de software adicional . . . . . . . . . . . . . . . . . . .
70
5.3.5
Módulos especiais para o sistema operativo . . . . . . . . . . . .
70
5.4 Duplicação de máquinas virtuais . . . . . . . . . . . . . . . . .
5.5 Conguração de redes de máquinas virtuais . . . . . . . . . .
5.6 Interligação de redes . . . . . . . . . . . . . . . . . . . . . . . .
55
72
72
75
5.7 Criação de uma VPN . . . . . . . . . . . . . . . . . . . . . . . .
56
78
5.1 Introdução
As máquinas virtuais são hoje em dia um instrumento que permite explorar a mesma
máquina para executar vários sistemas operativos, como se de várias máquinas se tratasse.
O objetivo deste guião é o de mostrar como se pode instalar uma máquina virtual, como
se pode congurar o seu hardware e como se pode criar uma rede virtual de máquinas
virtuais.
A execução das máquinas virtuais é realizada por um software designado por virtualizador. Neste trabalho usaremos o virtualizador gratuito VirtualBox 1 , distribuído pela
Oracle.
5.2 Instalação de sistemas operativos
O processo normal de instalação de um sistema operativo é feito do seguinte modo:
1. O sistema instalador é disponibilizado num suporte móvel (CD, DVD, memória ash,
etc.), total ou parcialmente. Quando é disponibilizado parcialmente, a parte em falta
é obtida de repositórios da Internet.
2. O sistema instalador é executado logo após o arranque da máquina, sendo ativado
pelo sistema de controlo do arranque da máquina (boot loader ).
3. O sistema instalador escolhe um disco rígido da máquina, ou um conjunto de partições
de discos da máquina, para aí criar os sistemas de cheiros que irão ser usados
pelo sistema operativo que irá ser instalado. Normalmente usam-se duas partições
diferentes, uma com os cheiros que normalmente vemos no sistema de cheiros,
outra designada como swap que serve para apoio à gestão da memória virtual. Esta
última partição pode ser substituída por um cheiro.
4. Após a instalação do sistema operativo no disco rígido, a partição de arranque dessa
instalação é marcada como sendo de arranque (boot) e o sistema está pronto para
ser reiniciado. Por vezes no arranque de um sistema instalado é iniciado primeiro
um sistema de controlo dos sistema operativos a iniciar, de que é exemplo o Grub:
arranque da BIOS → seleção do dispositivo de arranque → carregamento do módulo
de arranque do dispositivo → seleção do sistema operativo a arrancar (opcional) →
arranque do sistema operativo escolhido.
5.2.1 Sistema live
Há, contudo, variantes a este processo base. Um deles consiste no arranque dos sistemas
ditos live (ou distribuições live). Os sistema live são sistemas que arrancam como os demais
mas não alteram nada na máquina de forma denitiva. Em particular, não usam qualquer
1 https://www.virtualbox.org/
57
repositório perene da máquina (v.g. discos rígidos) para guardar qualquer informação.
Portanto, estes sistemas podem-se executar em máquinas sem disco rígido.
Uma distribuição live, de que há inúmeros exemplos para Linux2 , é uma imagem de CD
(cheiro ISO) que pode ser usada para arrancar um sistema live numa máquina, a partir
do seu leitor de CD.
Atualmente muitas das distribuições live possuem uma funcionalidade 2-em-1: permitem o arranque de uma versão live normal, mas essa permite depois criar uma instalação
no disco rígido da máquina. Será esta a faceta que iremos explorar neste trabalho.
5.2.2 Distribuição SliTaz
Neste guião usaremos uma distribuição de Linux pouco habitual, por não pertencer a
nenhuma das grandes linhas base das distribuições Linux (debian, Red Hat, slackware,
gentoo, etc.): a SliTaz. A SliTaz é interessante para este trabalho porque:
1. O seu live CD tem uma dimensão reduzida (cerca de 35 MB).
2. O sistema base instalado num disco rígido não tem mais de 350 MB.
Estas dimensões são interessantes para diminuir os custos de descarga da imagem do CD,
de arranque do sistema live e de instalação do sistema numa máquina virtual. No entanto,
muito embora esta seja uma distribuição perfeitamente funcional do Linux, ela não é uma
distribuição usual e, por isso, não deverá ser considerada como regra para usar no futuro.
O cheiro ISO com a imagem de um CD de arranque da distribuição live do SliTaz está
disponível na página da Unidade Curricular3 . Deverá descarregá-lo e guardá-lo no seu PC
antes de prosseguir para a instalação de uma máquina virtual.
5.3 Instalação do uma máquina virtual
O primeiro passo para instalar uma máquina virtual consiste na instalação do virtualizador.
Os PC dos laboratórios dispõe da versão 4.2 do VirtualBox . Os alunos que usarem a
sua própria máquina poderão usar este ou outro virtualizador, mas este guião apenas
contemplará explicações para VirtualBox .
5.3.1 Criação de uma máquina virtual
Os passos para criar uma máquina virtual vão ser seguidamente indicados, acompanhados
de capturas de ecrãs exemplicativas:
2 http://en.wikipedia.org/wiki/List_of_live_CDs
3 http://www.ieeta.pt/~avz/Aulas/IECT/12-13/index-software.html
58
Inicie a execução do VirtualBox . Deverá
surgir no ecrã uma janela como a indicada
à direita. Antes de instalar qualquer máquina virtual altere a denição que o VirtualBox possui quanto ao local onde guarda
dados relativos s máquinas virtuais. Para
tal, selecione Ficheiro e no menu selecione
Preferências....
Considere apenas as denições associadas à
classe Geral. Se estiver a trabalhar num PC
do laboratório altere a denição de Pasta
pré-definida das Máquinas para /tmp; se
estiver a trabalhar no seu PC, altere para o
local que considerar mais conveniente. Feita
a alteração, feche a janela das denições.
Selecione o botão Novo para indicar que deseja criar uma nova máquina virtual. Na janela seguinte selecione o botão Avançar (ou
Next).
Escolha um nome para identicar a máquina
virtual na lista de máquinas virtuais conhecidas localmente pelo VirtualBox . quanto ao
tipo de sistema operativo, escolha Linux e
versão 2.6 (versão do núcleo, ou kernel).
59
Indique a quantidade de memória RAM de
que disporá a máquina virtual. Não escolha
mais do que 256 MB, porque não será necessário e porque quanto mais escolher, menos memória terá o sistema hospedeiro. Esta
conguração poderá ser alterada mais tarde,
não é irreversível.
Indique que pretende arrancar de um disco
rígido e que pretende criar um disco rígido
(virtual) para instalar o sistema.
Escolha um disco virtual do tipo VDI (VirtualBox Disk Image ).
Indique que pretende o disco virtual com tamanho dinâmico, para evitar que o disco virtual (um cheiro) ocupe o seu tamanho máximo à partida. Desta forma, ele terá apenas
o tamanho suciente para guardar o sistema
de cheiros da máquina virtual, sem nunca
ultrapassar o máximo indicado.
60
Indique a localização do disco virtual (como
foi dito atrás, será um cheiro do sistema de
cheiros do sistema hospedeiro) e a sua dimensão. Nesta instalação indique apenas 1
GB. É normal os virtualizadores permitirem
mais tarde aumentar o tamanho dos discos
virtuais, mas tal não será necessário neste
trabalho.
Neste momento já foi recolhida toda a informação necessária para criar um disco virtual
para a máquina virtual e o mesmo pode ser
criado em conformidade.
Neste momento já foi recolhida toda a informação necessária para criar a máquina virtual com um disco virtual de suporte, muito
embora no mesmo ainda não exista qualquer
sistema operativo (ainda não foi instalado;
isso será feito mais adiante). Para já avançamos com a criação da máquina virtual (similar a uma montagem de uma máquina física).
O aspeto do gestor de máquinas virtuais do
VirtualBox após a criação de uma máquina
virtual é o indicado à direita. Na caixa à esquerda é indicado nome (SliTaz 1) e tipo
(Linux 2.6), bem como o estado da máquina (desligada). O passo seguinte consiste
em congurar o sistema que vai arrancar na
máquina, o que é feito selecionando o botão
Definições.
61
Na caixa da esquerda da janela das denições
da máquina virtual selecione Armazenamento
(para gerir os dispositivos de armazenamento
de dados) e constate que tem dois: um
CD/DVD não denido (Vazio) associado a
um controlador IDE, e um disco rígido denido (cheiro SliTaz 1.vdi) associado a um
controlador SATA. O passo seguinte consistirá em denir um CD para a máquina virtual.
Selecione o CD indicado como Vazio, à direita surgirão informações (atributos) sobre
o dispositivo ainda não denido (nomeadamente, que estará associado a um controlador de IDE secundário). Selecione o ícone
com um disco que surge à direita e escolha
a opção Escolher um ficheiro de CD/DVD
virtual.... Aqui deverá selecionar o cheiro SliTaz-4.0.iso que descarregou no
secção 5.2.2.
Neste momento a conguração de instalação da máquina virtual está completa, o seu
hardware está denido e no leitor de CD está
acessível um CD virtual (a sua imagem ISO)
que permitirá o arranque da distribuição live
do SliTaz. Podemos terminar a alteração das
denições e iniciar a máquina virtual.
5.3.2 Arranque de uma máquina virtual
O arranque de uma máquina virtual é em tudo semelhante a uma máquina real, há uma
passagem por um ponto onde é executada uma BIOS (virtual), onde se seleciona um
dispositivo virtual de arranque (neste caso vai ser o CD) e se carrega o mesmo para executar.
Os dispositivos de interface humana (teclado, rato) do sistema hospedeiro (host ) vão
ser partilhados com a máquina virtual, também designado por sistema convidado (guest ).
Para dar a ilusão de que se está a mudar de máquina é normal criar uma associação
da entrada de dados de interface com a máquina virtual (focagem) quando se pretende
trabalhar na mesma e terminar essa associação, voltando ao sistema hospedeiro, quando
não mais for necessária. A focagem faz-se selecionando a janela da máquina virtual com
o rato ou simplesmente deslocando o rato para cima dessa janela (quando a interface da
62
máquina virtual possui um rato). Quando a focagem está ativa, na barra inferior da janela
o ícone mais à direita, que possui uma seta para baixo, apresenta a cor verde. Quando a
focagem está inativa, o que se consegue fazer retirando o rato da janela ou carregando na
tecla Ctrl da direita do teclado, a seta ca preta.
O arranque da distribuição live do SliTaz 4.0 possui os seguintes passos:
Após o arranque é mostrado um menu com
várias opções quanto ao sistema que efetivamente se quer executar a partir do CD.
Vamos escolher a primeira opção (SliTaz
Live). Caso nada seja feito, ao m de alguns segundos esta opção é selecionada por
omissão.
O passo seguinte consiste na escolha da língua por omissão do sistema. Escolha a que
mais lhe convier.
O passo seguinte consiste na indicação do teclado que está a usar. O normal, em Portugal, é usar teclados Portugueses, pelo que
deve escolher a opção pt-latin1.
63
Feitas as duas congurações anteriores, o sistema progride sem qualquer intervenção humana até atingir a plena funcionalidade, altura em que apresenta o aspeto à direita.
Neste ponto pode explorar os menus da interface gráca usando o rato.
5.3.3 Instalação do SliTaz no disco rígido virtual
Feita o arranque da distribuição live, vamos usar a mesma para criar uma instalação similar
no disco rígido virtual, o que permitirá posteriormente arrancar o sistema desse dispositivo,
dispensando o CD. A vantagem dessa opção é que posteriores alterações do sistema irão
car gravadas para utilização futura, enquanto que alterações ao sistema realizadas em
execuções live perdem-se após desligar a máquina virtual.
Para fazer a instalação usa-se a aplicação SliTaz Panel do modo que seguidamente se
descreve:
Selecione a aplicação SliTaz Panel nos ícones que se encontram no canto superior esquerdo da interface (ícone do meio).
Esta operação está reservada para o administrador, que é designado em Linux por root.
Use esse nome na caixa de texto username.
Use igualmente esse nome como senha (como
indicado na janela de interface).
64
A janela do TazPanel mostra agora a sua interface normal. Na barra de menu superior
vamos escolher a opção Install e, no menu
indicado, Install SliTaz.
Neste passo o TazPanel mostra uma interface bastante explicativa, destinada a elucidar o utente sobre o que signica o particionamento de discos e que partições são usadas
pelo SliTaz. Deslocando a janela para baixo
aparece o botão Execute Gparted, que irá
criar as partições no disco virtual.
A aplicação GParted mostra um disco não
alocado (i.e., sem estar a uso). Para o usar
é preciso primeiro criar uma tabela de partições no mesmo; só após isso se podem denir
partições dentro desse disco. Escolha a opção
Device da barra superior e a opção Create
Partition Table.... A mensagem de aviso
indica que irá apagar toda a informação presente no disco, mas tal não é um problema,
porque o disco virtual está vazio.
65
O passo seguinte consiste na criação de uma
partição no disco virtual para aí instalar o
sistema operativo. Para isso, selecione a área
sombreada com o rato e selecione o ícone New.
Na janela que surge, que indica a ocupação
total do disco virtual por uma partição do
tipo ext2, mantenha os valores indicados e
selecione o botão Add.
Após a denição da partição é preciso registála na tabela de partições. Para isto selecionase com o botão direito do rato a linha com a
ordem de criação da partição que aparece na
caixa inferior do GParted e escolhe-se a opção Aplly All Operations. A mensagem
de aviso avisa uma vez mais do facto de se
perderem informações presentes no disco virtual, mas, como já se viu antes, o disco está
vazio.
66
Uma vez criada a partição, o aspeto da aplicação GParted é o apresentado à direita.
Podemos terminar a aplicação selecionando
o opção GParted da barra superior e escolhendo a opção Quit.
Vamos agora selecionar o botão Continue
installation para instalar o sistema operativo na partição recém criada.
Neste passo a primeira ação fundamental
a realizar consiste na indicação da partição onde o sistema operativo irá ser instalado, que irá ser a partição antes criada
(/dev/sda1).
67
O segundo passo fundamental a realizar consiste na especicação da senha do utilizador tux, o utilizador inicial da máquina (este
nome pode ser alterado). Não se esqueça de
colocar exatamente a mesma senha na caixa
de conrmação. Nas caixas acima também
pode ser mudada a senha do utilizador root,
o administrador do Linux.
O último passo fundamental a realizar consiste na indicação da instalação do carregador
de arranque Grub.
Uma vez feitas estas congurações pode-se
prosseguir para a instalação do sistema operativo e do sistema de arranque Grub no disco
rígido virtual.
68
Os passos realizados durante a instalação vão
sendo mostrados à medida que ela ocorre, até
ser indicada a terminação da instalação. O
sistema agora está pronto para arrancar do
disco rígido virtual.
Terminada a instalação, vamos selecionar
o botão Instalation complete. You can
now restart (reboot) para reiniciar o sistema. Entretanto o CD virtual foi desligado
da máquina virtual.
Após o reinício surge a interface do Grub apenas com uma opção: a do sistema que acabou
de ser instalado. Se nada for feito ele arrancará por omissão ao m de alguns segundos.
Depois do arranque apresentará as interfaces
já antes vistas de conguração da língua local
e do teclado, após o que se iniciará até ser
apresentada a interface gráca de login.
69
5.3.4 Instalação de software adicional
O sistema operativo anteriormente instalado é minimalista, pelo que precisaremos de instalar algumas componentes adicionais. Para isso usaremos a ferramenta de gestão de pacotes
tazpkg a partir do interpretador de comandos. Para esse m, depois de fazer login, inicie
uma consola com o interpretador de comandos (ícone no canto superior esquerdo) e execute
a seguinte sequência de comandos.
Mude o utilizador para o administrador (root) porque iremos administrar a máquina. A
senha que o comando pedirá é a de root (será igualmente root se não a mudou no
processo de instalação).
$ su Carregue a lista de pacotes disponíveis para o seu sistema operativo:
$ tazpkg recharge
Procure na lista de pacotes algum que possua uma versão mais avançada do editor vi
(nomeadamente, o editor vim):
$ tazpkg search vim
Instale um dos pacotes listados (o vim, por exemplo):
$ tazpkg get-install vim
É normal que o sistema instalado a partir da versão live tenha algumas componentes
desatualizadas. Para as atualizar execute o seguinte comando:
$ tazpkg upgrade
De seguida, necessitamos de obter e instalar um cliente de VPN que nos permitirá executar as restantes questões do guião.
$ tazpkg get-install pptpclient
5.3.5 Módulos especiais para o sistema operativo
É normal os virtualizadores disponibilizarem módulos especiais para os sistemas convidados
usufruírem de funcionalidades especiais dos hospedeiros. Uma dessas funcionalidades é a
capacidade de usar diretorias do hospedeiro a partir da máquina virtual.
A instalação dos módulos especiais faz-se através de um CD virtual disponibilizado
pelo próprio virtualizador. No caso do VirtualBox , isso consegue-se da seguinte forma:
numa máquina virtual ativa, selecionar a opção Dispositivos da barra superior da janela
e escolher a opção Instalar Adições de Convidado....
70
Após o passo anterior, o CD virtual cará acessível numa subdiretoria de /media após
a sua montagem, manual pelo utilizador, ou automática por ferramentas de navegação pelo
sistema de cheiros.
A instalação dos módulos adicionais segue então os seguintes passos, sempre atuando
como root, como antes. Em primeiro lugar é preciso instalar algumas ferramentas e
cheiros de desenvolvimento que serão necessários para produzir os módulos especiais:
$
$
$
$
tazpkg
tazpkg
tazpkg
tazpkg
get-install
get-install
get-install
get-install
bzip2
gcc
make
linux-module-headers
Feito isto, monta-se o CD no sistema de cheiros:
$ mount /media/cdrom
Mudando para a diretoria raiz do CD, executa-se a aplicação de instalação dos módulos
especiais:
$ cd /media/cdrom
$ ./VBoxLinuxAdditions.run
No nal deste comando, que durante a sua execução pode apresentar alguns erros não
graves, os módulos especiais foram criados e alguns estão já instalados (os seus nomes
começam por vbox):
$ lsmod
Uma deles, o módulo vboxsf, é o que permite aceder a diretorias do sistema de cheiros
do hospedeiro.
Vamos agora denir uma partilha de uma diretoria do hospedeiro para uma máquina
virtual e aceder a essa diretoria através da máquina virtual. Na janela da máquina virtual
selecione a opção Dispositivos da barra superior da janela e escolha a opção Pastas
Partilhadas.... Selecione o botão à direita que possui o sinal '+', indique a localização
da diretoria (pasta) e o nome que lhe quer dar para efeitos de partilha (vamos assumir que
escolhe o nome XPTO). Finalmente, antes de terminar indique se quer apenas permitir ler
da diretoria partilhada (para a proteger de escritas involuntárias ou maliciosas), e se quer
tornar permanente a partilha (i.e., se a partilha continuará ativa em execuções futuras da
máquina virtual).
Feita esta conguração, feche as janelas da mesma e volte ao interpretador de comandos
da máquina virtual, onde deverá executar o seguinte comando:
$ mount -t vboxsf XPTO /mnt
Este comando indica que a diretoria exportada pelo hospedeiro através do módulo vboxsf
e com o nome XPTO deverá ser montada (i.e., estar acessível a partir de) da diretoria /mnt.
Após a execução deste comando poderá constatar que tem acesso à diretoria do hospedeiro
mudando para a mesma e listando ou listando o seu conteúdo:
71
$ cd /mnt
$ ls -la
Esta funcionalidade de partilha é muito útil para desenvolvimento de componentes que
precisam de ser vistas por diversas máquinas. Por exemplo, podemos ter uma aplicação
em rede, com um cliente a correr numa máquina e um servidor noutra, e ambos podem
ser máquinas virtuais na mesma máquina hospedeira, e as aplicações cliente e servidor
podem ser desenvolvidas no hospedeiro e exportadas através destes sistemas de cheiros
tanto para o cliente como para o servidor.
5.4 Duplicação de máquinas virtuais
A duplicação de máquinas virtuais é uma tarefa trivial, uma vez que não requer hardware
adicional. Como as máquinas virtuais se executam sobre hardware virtual, e a criação
deste último não tem limites, é possível duplicar as máquinas e, dessa forma, criar rapidamente um conjunto de máquinas homogéneas e com um sistema à partida igual (depois
cada um pode evoluir separadamente).
Uma máquina virtual como a que criámos anteriormente é completamente descrita por
dois cheiros:
• Ficheiro .vbox. Este cheiro possui fundamentalmente uma descrição textual do
hardware virtual da máquina virtual.
• Ficheiro .vdi. Este cheiro é o disco virtual usado pela máquina virtual.
Para duplicar uma máquina virtual basta duplicar estes dois cheiros e registar a nova
máquina na lista de máquinas conhecida pelo gestor de máquinas virtuais do VirtualBox .
Este processo manual pode ser transparentemente realizado através de própria interface
deste gestor, que permite clonar máquinas virtuais.
Exercício 5.1
Usando a interface do gestor de máquinas virtuais do VirtualBox clone a máquina virtual
antes criada. A clonagem inclui várias perguntas, tente perceber o que é perguntado e
responder da forma que considerar mais acertada. Depois de clonar a máquina virtual
observe o que de novo apareceu na diretoria onde se guardaram os dados da máquina
virtual anterior.
5.5 Conguração de redes de máquinas virtuais
Os virtualizadores permitem que as máquinas virtuais possuam uma ou mais interfaces
(ou adaptadores) de rede. Essas interfaces podem estar ligadas a redes diferentes, podem
estar relacionadas ou não com interfaces reais e podem realizar ou não transformações no
tráfego que por elas passa.
72
Para o sistema operativo de uma máquina virtual as interfaces de rede virtuais (i.e.
aquelas que são fornecidas pelo virtualizador e não são usadas através de outras interfaces,
como USB) são sempre interfaces de redes cabladas. Mesmo quando a interface real é uma
rede sem os, a interface virtual que a usar irá sempre aparecer à máquina virtual como
uma interface de rede cablada. Num sistema Linux tal signica que a interface terá sempre
o nome ethX, onde X é um número (0, 1, 2, etc.).
Vamos agora descrever sumariamente os diferentes tipos de interfaces (adaptadores,
na terminologia do VirtualBox ) que se podem escolher para uma máquina virtual (ver
Figura 5.1). Estes tipos são os facultados pelo VirtualBox , mas outros virtualizadores
fornecem algo muito similar.
NAT. Este é o tipo escolhido por omissão na instalação de uma máquina virtual. Este
modo permite que a máquina virtual interaja com a rede a que o hospedeiro está
ligado como se do hospedeiro se tratasse. No entanto, este tipo tem implícitas algumas limitações, como a incapacidade de se iniciarem interações de uma qualquer
máquina (real ou virtual) para a máquina virtual e o facto de alguns protocolos não
conseguirem passar através da interface. Esta interface modica o tráfego que ui
através de si.
Bridged .
Este tipo permite que a máquina virtual se ligue à rede através de uma interface
que funciona um pouco como uma réplica de uma dada interface real. Uma interface
bridged X relativa a uma interface Y usa a interface Y para comunicar mas, para
um observador externo ao hospedeiro, existem aparentemente duas interfaces, X
e Y . Casos há, porém, em que o observador externo não consegue perceber que
existem duas interfaces, mas sim que existem dois endereços IP associados à mesma
interface (um endereço usado pelo hospedeiro, outro usado pela máquina virtual).
Tal acontece, por exemplo, quando a interface real é uma interface sem os 802.11.
Rede interna. Este tipo permite ligar a uma rede virtual, interna ao hospedeiro. Esta
rede só está acessível às máquinas virtuais executadas no hospedeiro pelo mesmo
virtualizador. Estas redes são identicadas por um nome que é atribuído na sua
criação. Por omissão, o VirtualBox disponibiliza uma rede com o nome intnet.
Adaptador apenas do hospedeiro (host-only). Este tipo é similar ao anterior mas
a rede interna, virtual, é ligada também a uma interface virtual do hospedeiro.
Duas máquinas virtuais a executar no mesmo hospedeiro e usando interfaces conguradas como NAT não conseguem interagir entre si. Aliás, é fácil de vericar que estas interfaces, que podem ser conguradas automaticamente pelo VirtualBox (através de DHCP)
possuem o mesmo endereço IP.
Exercício 5.2
Inicie a execução das duas máquinas virtuais e execute o comando ifconfig numa consola.
Obtenha o endereço IP da interface ethX e verique se são ou não iguais nas duas máquinas.
73
NAT
Bridged
Interna
Host-only
Figura 5.1: Modelos de rede permitidos pelo VirtualBox e relação com interfaces reais e
virtuais da máquina hospedeira ou das máquinas virtuais.
74
Para conseguirmos que duas máquinas virtuais geridas pelo mesmo virtualizador consigam comunicar entre si é preciso usar outros tipos de interfaces; vamos experimentar com
uma rede interna.
Exercício 5.3
Vamos designar as duas máquinas como M1 e M2. Em cada uma delas altere o tipo de
interface de NAT para interna, usando o botão Dispositivos da barra situada na parte
superior da janela de cada das máquinas virtuais. Esta alteração não provoca nenhuma
alteração ao nível do sistema operativo das máquinas virtuais, no entanto a partir desse
momento ambas as máquinas possuem uma conguração das suas interfaces de rede que não
faz sentido (nomeadamente, estão exatamente com a mesma conguração, o que impede
que consigam comunicar entre si).
Como o VirtualBox por omissão não disponibiliza o serviço de DHCP para redes internas, as interfaces irão ser reconguradas manualmente. Para esse efeito execute (em
cada uma das máquinas) a aplicação SliTaz Netbox Manager (Applications→System
Tools→Configure networking). Após introduzir a senha de administração (root) escolha a folha Static IP, altere o valor do endereço IP (10.0.0.1 para M1, 10.0.0.2 para
M2), apague o endereço IP da Gateway (porque a não tem) e o endereço IP do DNS server
(idem). Para terminar a conguração selecione o botão Start. Mudando para uma consola
pode vericar que a alteração foi efetuada usando o comando ifconfig.
Após esta conguração as máquinas virtuais podem comunicar entre si, muito embora
estejam isoladas da Internet (estão numa rede IP isolada). A conectividade entre as máquinas pode ser vericada através do comando ping. Na máquina M1 execute o seguinte
comando:
$ ping 10.0.0.2
este comando envia uma mensagem à máquina com o IP indicado, a qual responderá,
mostrando desta forma que conseguem comunicar. O valor apresentado à frente de time"=
é o intervalo de tempo entre o envio de uma mensagem e a chegada da sua resposta. Em
M2 poderá executar o comando recíproco:
$ ping 10.0.0.1
5.6 Interligação de redes
A Internet é construída ligando redes e estabelecendo rotas entre redes para os pacotes IP,
as quais indicam para onde se deve enviar um pacote para que o mesmo chegue a um dado
destino. Nesta parte do guião será ensinada uma forma elementar de encaminhamento,
que consiste no envio de um pacote que chega por uma interface de rede de uma máquina
para a rede ligada a outra interface de rede de outra máquina. O objetivo nal será o
de conseguir que as duas máquinas M1 e M2 consigam comunicar com uma rede exterior,
ligada à maquina hospedeira.
75
Figura 5.2: Interfaces de rede usadas para ligar as máquinas da rede interna intnet a uma
rede cablada exterior através de M1.
Nesse sentido, M1 irá dispor de duas interfaces de rede (Ia e Ib ); Ia será uma interface
ligada a uma rede privada, à qual está ligada também a máquina M2; Ib será uma interface
ligada a uma rede exterior, acessível à máquina hospedeira (ver Figura 5.2). Para esta
última interface vamos usar o tipo NAT.
Como o VirtualBox não permite adicionar interfaces de rede com as máquinas virtuais
em funcionamento (ao contrário de outros virtualizadores), é preciso encerrar M1 primeiro,
o que pode ser feito selecionando o botão no canto superior direito da sua interface e
escolhendo em seguida Shutdown system: halt.
Feito isto, adicione uma nova interface de rede NAT à máquina virtual a partir do
gestor de máquinas virtuais do VirtualBox . Após esta conguração inicie a máquina virtual, faça login, inicie uma consola e verique quantas interfaces de rede possui com o
comando ifconfig. Neste momento ainda não verá nada de novo, porque o SliTaz não
ativa automaticamente novas interfaces de rede.
Inicie a aplicação de gestão de rede que usou antes (SliTaz Netbox Manager) e observe
a presença de uma interface ethX não ligada (não iniciada); esta interface é a que foi antes
adicionada. Memorize o seu nome (vamos assumir que é eth1) e saia desta aplicação.
Numa consola execute os seguintes comandos:
$ su $ ifconfig eth1 up
$ udhcpc -i eth1
O primeiro comando muda para modo de administração, o segundo ativa a interface de
rede e o terceiro indica que a mesma deverá ser congurada com DHCP. Feito isto, poderá executar o comando ifconfig para vericar que já possui as duas interfaces de rede
(mais a loopback ) ativas e corretamente conguradas. Para o vericar execute os seguintes
comandos:
76
$ ping 10.0.0.2
$ ping www.ua.pt
O sucesso do primeiro comando mostra que consegue comunicar com M2 através da rede
interna; o sucesso do segundo comando mostra que consegue comunicar com a rede exterior.
Para além disso, a máquina M1 neste momento é capaz de usar serviços DNS exteriores
para resolver (traduzir) nomes DNS (como www.ua.pt) para endereços IP.
Encaminhamento de pacotes
Porém, a máquina M2 ainda não consegue fazer estas duas coisas: comunicar com redes
exteriores e usar serviços DNS exteriores. Porquê? Porque não foi congurada de forma a
saber que esse m tem de usar M1. Mas isso não chega, porque a máquina M1 também
tem de ser instruída que deverá funcionar como encaminhador de pacotes de M2 que lhe
chegam por Ib . e que não lhe são destinados, para o exterior através de Ia . Por outras
palavras, é preciso indicar a M1 que os pacotes que lhe chegarem através de Ib (vindos
da rede privada) e que não lhe sejam destinados devem ser reencaminhados (ou roteados)
para a rede exterior via Ia .
A conguração de M2 faz-se adicionando o que se designa por rota por omissão. Tal
não é mais do que uma regra que diz o que fazer com um pacote quando o mesmo se destina
a uma máquina que não pertence às redes conhecidas (neste caso, apenas a rede interna
intnet). Essa rota é adicionada com o comando route.
Numa consola da máquina M2 execute os seguintes comandos:
$ ip route add default via 10.0.0.1
Esta regra indica que todos os pacotes para os quais não se souber como se enviam para
o seu destino devem ser encaminhados para o gateway com o endereço IP 10.0.0.1. Este
gateway não é mais do que a máquina M1, que está ligada à rede interna que une M1 a
M2. É, portanto, uma máquina diretamente acessível a M2. Designa-se por gateway uma
máquina que faz a interligação entre duas redes, tal como M1 está a fazer.
O passo seguinte consiste em indicar a M1 que deve operar como um gateway. Por
omissão as máquinas Linux não operam como tal, mesmo quando possuem várias interfaces
de rede. Para o fazer é necessário congurar a parte do núcleo do sistema operativo que
gere a comunicação IP, o que é feito através do sistema de cheiros especial designado por
/proc. Para indicar que M1 deve encaminhar pacotes entre interfaces (i.e. fazer forward
de pacotes) execute o seguinte comando:
$ echo 1 > /proc/sys/net/ipv4/ip_forward
Este comando irá mudar uma variável lógica do núcleo do sistema operativo que indica se
o mesmo deve ou não encaminhar pacotes IPv4 entre interfaces diferentes. Se o seu valor
for 0 (falso), não encaminha, se for 1 (verdadeiro), encaminha.
Feito isto já deveria ser possível comunicar entre M2 e a rede exterior. E, de facto,
é, mas os pacotes conseguem apenas sair, não havendo porém resposta do exterior. A
77
explicação desse facto sai um pouco do âmbito deste trabalho, está relacionada com uma
faceta particular da interfaces NAT do VirtualBox , mas o problema pode ser resolvido
através de uma alteração dos pacotes de M2 antes serem enviados por M1 para a interface
NAT. Execute, então, os seguintes comandos em M1:
$ tazpkg get-install iptables
$ iptables -A POSTROUTING -t nat -s 10.0.0.0/24
-o eth1 -j SNAT --to-source 10.0.3.15
Este último comando assume, como acima se referiu, que a interface NAT é a eth1. Se
não for deverá adaptar o comando em conformidade. Uma vez mais, a explicação destes
comandos será omitida por sair do âmbito deste trabalho.
Neste momento é possível comunicar sem qualquer problema entre M2 e o exterior.
Sabendo que o endereço IP da máquina www.ua.pt é 193.136.173.25, execute o seguinte
comando em M2:
$ ping 193.136.173.25
Se conseguir realizar o comando com sucesso, então M2 tem conectividade para www.ua.pt,
logo à rede exterior.
Para terminar este exemplo de encaminhamento falta apenas tratar do aspeto do acesso
ao DNS exterior por parte de M2. Neste momento a máquina M2 não é capaz de traduzir
nomes DNS para endereços IP, porque não sabe onde se deve dirigir para o fazer (falta-lhe
a indicação de onde está um servidor DNS). Quando a conguração é feita por DHCP
tal é realizado automaticamente, mas a conguração da interface de M2 foi feita de modo
manual e essa questão foi ignorada.
Para fazer esta conguração manual vamos usar os mesmos dados que M1 usa, criados
pela sua conguração automática (por DHCP) da sua interface NAT. Execute o seguinte
comando em M1:
$ cat /etc/resolv.conf
Em M2, edite este mesmo cheiro e coloque exatamente o mesmo conteúdo. Feito isto, já
pode usar nomes DNS em M2, execute por isso o seguinte comando em M2:
$ ping www.ua.pt
Se conseguir realizar o comando com sucesso, então M2 está a usar corretamente um
servidor DNS para resolver o nome www.ua.pt.
5.7 Criação de uma VPN
Uma VPN (do inglês Virtual Private Network) permite criar uma rede entre um ou mais
dispositivos de forma virtual, isto é, sem envolver sicamente os dispositivos e recorrendo
a conetividade que estes já têm entre si. As VPN são pois redes criadas no topo de outras
78
redes (overlays) e que conferem aos seus utilizadores diversos benefícios tais como segurança
do canal de comunicação, privacidade, conetividade a recursos protegidos ou como meio
de ultrapassar barreiras (rewalls). Neste guião iremos estabelecer uma VPN entre uma
máquina virtual anteriormente criada e o servidor iect.av.it.pt.
Existem diversas tecnologias para estabelecer uma VPN, entre as quais se destacam o
IPSec, L2TP, OpenVPN e o PPTP. Neste guião iremos nos focar no último uma vez que se
trata da tecnologia usada pela VPN da Universidade de Aveiro. O PPTP (Point-to-Point
Tunnelling Protocol) é uma tecnologia inicialmente desenvolvida pela Microsoft e como
tal muito popular em ambientes de pequena e média dimensão (e.x. PMEs). O protocolo
encontra-se descrito no RFC 2637 e assenta no uso de um canal de controlo TCP no
porto 1723 e da transmissão de dados num túnel GRE (Generic Routing Encapsulation).
Os pacotes transportados no túnel GRE são por sua vez pacotes PPP (Point-to-Point
Protocol) que garantem a correta transmissão de dados entre os extremos do túnel.
Neste guião é assumida a preexistência de um servidor PPTP devidamente congurado.
Na eventualidade de desejar replicar a conguração desde servidor, deverá consultar http:
//poptop.sourceforge.net/dox/debian-howto.phtml.
No resto deste guião iremos usar a máquina que até aqui designámos como M2. Porém,
antes de a usar vamos alterar-lhe a interface de rede para o tipo bridged e vamos congurar
a interface de rede (assumindo que é eth0) do seguinte modo:
$ ifconfig eth0 192.168.10.XY/24
$ route add default gw 192.168.10.254
onde X deverá ser o número de turma (1 a 5) e Y o número de bancada (1 a 9). Caso os
dois alunos de cada grupo estejam a realizar este guião usando pelo menos uma máquina
própria, deverá acrescentar um 1 antes de XY. Este procedimento serve apenas para evitar
que duas máquinas usem o mesmo endereço IP.
Após esta conguração verique se consegue contactar corretamente a rede exterior usando
o seguinte comando:
$ ping www.ua.pt
O passo seguinte consiste na instalação dos pacotes de software necessários à exploração
do PPTP, o que é feito com os seguintes comandos:
$ tazpkg get-install pptpclient
$ tazpkg get-install pptpclient-extra
$ tazpkg get-install ppp
Pode, então, iniciar a criação da VPN executando o seguinte comando:
$ pppd pty "pptp iect.av.it.pt --nolaunchpppd" lock
nodetach noauth nobsdcomp nodeflate usepeerdns refuse-eap refuse-mschap
defaultroute require-mppe-128 name "aluno" remotename PPTP password "lixo"
e deverá obter algo semelhante a:
79
Using interface ppp0
Connect: ppp0 <--> /dev/pts/0
CHAP authentication succeeded
MPPE 128-bit stateless compression enabled
not replacing existing default route via 192.168.8.254
Cannot determine ethernet address for proxy ARP
local IP address 192.168.0.100
remote IP address 192.168.0.1
Vamos analisar esta informação. A VPN pressupõe a criação de uma nova interface de rede
(virtual) que no nosso caso tem o nome de ppp0. De seguida temos informação que a nossa
autenticação junto do servidor usando as credenciais aluno/lixo tiveram sucesso usando
o protocolo de autenticação CHAP (Challenge-Handshake Authentication Protocol ). É-nos
dada informação que a nossa VPN irá utilizar compressão stateless e cifra de pacotes MPPE
(Microsoft Point-to-Point Encryption) de 128-bit, esta compressão irá permitir aumentar
a quantidade de informação útil transmitida entre o cliente e o servidor com a mesma
quantidade de largura de banda disponível. Por m, é-nos dada informação respeitante
as congurações de rede, o script não fez qualquer alteração em relação à default gateway
(ou router de saída), o IP na interface virtual do cliente (ppp0) é o 192.168.0.100, e o
IP na interface remota (no servidor VPN) é o 192.168.0.1. É de realçar que a VPN faz
a atribuição do endereço IP, não sendo necessário recorrer a conguração manual ou via
DHCP.
Vamos agora analisar que alterações ocorreram ao nível do sistema operativo. Antes
de tal, é necessário libertar a linha de comandos usando o CTRL-Z que irá fazer o Stop do
processo da VPN. De seguinda o comando bg irá colocar em background o mesmo processo.
Isto faz com que o cliente de VPN continue a executar.
Comecemos por analisar a lista de interfaces usando o comando:
$ ip address show
Deverá reparar que existe uma nova interface com o nome ppp0 e cujas propriedades são
algo diferentes das demais interfaces, pois é desprovida de endereço de nível 2 (Ethernet
Address) e não tem endereço de broadcast (anal é uma ligação ponto a ponto).
Analisemos de seguida a tabela de encaminhamento:
$ ip route show
Aqui chama-se a atenção para 2 entradas:
...
193.136.92.155 via 192.168.8.254 dev eth3 src 192.168.8.200
192.168.0.1 dev ppp0 proto kernel scope link src 192.168.0.100
...
80
A primeira entrada serve de garantia que qualquer que seja a rota por omissão (default
gateway) o servidor VPN será sempre alcançado através do router da rede local. A segunda
entrada estabelece que a comunicação com o outro extremo do túnel criado pelo VPN
deverá ser feita com o endereço de origem atribuído pela VPN. Descortinando estas duas
entradas, podemos dizer que podemos chegar ao servidor iect.av.it.pt através do seu
endereço real via o router local ou diretamente para o endereços 192.168.0.1 através do
túnel.
Neste momento podemos aceder de forma segura a recursos no servidor iect.av.it.pt,
mas poderemos estar bloqueados de aceder a outros serviços. Vamos experimentar com
um simples serviço que nos responderá com um echo. Este serviço só irá funcionar para
clientes de VPN pois não está disponível ao público.
Podemos tentar ligar ao endereço público:
$ telnet iect.av.it.pt 50000
Trying 193.136.92.155...
Eventualmente haverá um timeout denotando incapacidade de comunicar com o servidor.
Por sua vez, acedendo ao endereço privado e restrito aos clientes da VPN (e escrevendo
ola mundo):
$ telnet 192.168.0.1 50000
Trying 192.168.0.1...
Connected to vpn001.ras.ua.pt (192.168.0.1).
Escape character is '^]'.
ola mundo
ola mundo
Connection closed by foreign host.
Ambos endereços se referem ao mesmo servidor, no entanto um é o endereço na rede pública
que tem uma rewall à sua frente, e outro é o endereço privado apenas disponível a quem
se encontrar devidamente autenticado e conectado através da VPN que estabelecemos
previamente.
A nossa VPN é já útil para aceder a recursos no servidor da VPN, mas caso pretendamos
aceder a outros recursos na rede do servidor é necessário congurar uma nova regra na
nossa tabela de encaminhamento. Antes, vamos conrmar que não nos é possível aceder
ao servidor barbrady.av.it.pt no serviço de HTTP usando o comando curl.
$ tazpkg get-install curl
$ curl barbrady.av.it.pt:8080
curl: (7) couldn't connect to host
De seguida, vamos congurar uma regra que envie todo o trafego com destino ao servidor
barbrady.av.it.pt via VPN.
81
$ ip route add 193.136.92.239 via 192.168.0.1
Tentando de novo aceder ao serviço:
$ curl barbrady.av.it.pt:8080
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body><h1>Serviço Privado</h1>
<p>Este conteúdo só é acessível através da VPN</p>
</body></html>
Se tiver um navegador disponível (e.g. Midori) poderá também tentar aceder a http:
//barbrady.av.it.pt:8080. Por último, pode-se dar o caso de pretender que todos os
seus pacotes sejam enviados através da VPN, para tal necessita de acrescentar uma regra
que conrme a interface da VPN como a default. Uma vez que já existe tal regra (que
encaminha todos os pacotes para a gateway da rede local) é necessário primeiro remover
tal regra.
$ ip route del default via 192.168.10.254
$ ip route add default via 192.168.0.1
Desta feita todos os seus pacotes, exceção feita aos que se destinam ao IP publico da VPN
por ressalva da regra inserida pelo script que lançou a VPN, serão enviados para o exterior
através do túnel da VPN e encaminhados via a rede do servidor VPN.
82
Download

Instalação e exploração de máquinas virtuais5ª aula prática