Buscar

Manual completo do Debian GNU_Linux

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 540 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 540 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 540 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

0
1 Manual Completo de Redes de Computadores com Debian GNU/Linux
Nota
Todo o material está fundamentado em uma distribuição GNU/Linux Debian 10 de 32 bits
por ter maior portabilidade com equipamentos antigos, caso queira atuar com a versão 64
bits deve-se estar atento a problemas não conhecidos pois não foi homologado.
Versão WEB deste material sempre atualizado (trabalho todos os dias neste
documento):
https://docs.google.com/document/d/14S8MAcjspdbBWsja-Ijb_GQfs4C1PzJ
mDcTJ3bYXyeQ/edit?usp=sharing
Inscreva-se no canal AIEDONLINE no Youtube clicando
neste link.
Contato pelo Telegram: https://t.me/joinchat/Plabo1TylY2GEPJQ1eJ9IQ
Como obter o certificado de conclusão do curso de Sistemas Operacionais e
Redes de Computadores, é gratuito: https://youtu.be/Yehl7DKsXOg
Também não deixe de acompanhar o desenvolvimento do nosso segundo
material: Hacker, entre a luz e as trevas neste link:
https://docs.google.com/document/d/17R67zmmJw46yMGYpqt9WOjdo4mLC
BjNQbmCNcQuLDlc/edit?usp=sharing
https://docs.google.com/document/d/14S8MAcjspdbBWsja-Ijb_GQfs4C1PzJmDcTJ3bYXyeQ/edit?usp=sharing
https://docs.google.com/document/d/14S8MAcjspdbBWsja-Ijb_GQfs4C1PzJmDcTJ3bYXyeQ/edit?usp=sharing
https://www.youtube.com/c/aiedonline?sub_confirmation=1
https://www.youtube.com/c/aiedonline?sub_confirmation=1
https://t.me/joinchat/Plabo1TylY2GEPJQ1eJ9IQ
https://youtu.be/Yehl7DKsXOg
https://docs.google.com/document/d/17R67zmmJw46yMGYpqt9WOjdo4mLCBjNQbmCNcQuLDlc/edit?usp=sharing
https://docs.google.com/document/d/17R67zmmJw46yMGYpqt9WOjdo4mLCBjNQbmCNcQuLDlc/edit?usp=sharing
2 Manual Completo de Redes de Computadores com Debian GNU/Linux
Sumário
Sumário 2
Links para Download 13
1 Considerações e Ambiente (finalizado) 15
1.1 Tecnologias utilizadas e Download de arquivos 15
1.2 Importando e configurando uma Máquina Virtual 16
1.3 Criando uma Virtual Machine a partir de uma instalação 18
1.4 Validação de práticas por meio de Robô e suporte 31
1.5 Configuração do Adaptador de rede no VirtualBox 34
1.5.1 Adaptador em NAT 35
1.5.2 Modo Bridge 36
1.5.3 Rede Interna 36
1.6 Divisão dos Capítulos 37
1.7 Curso gratuito com certificado 37
2 Arquitetura e Sistema Operacional (atuando) 42
2.1 Arquitetura de um computador 42
2.1.1 North and Southbridge 43
2.1.2 Acesso direto à memória 43
2.1.3 Memória Volátil (RAM) 44
2.1.4 Arquiteturas de CPU 44
2.2 Sistema Operacional 46
2.2.1 Gerenciamento de processo 46
2.2.2 Gerencimaento de memória 46
2.2.3 Sistema de Arquivos 46
2.2.4 Sistema de E/S 46
2.3 Estrutrua de Dados 46
2.3.1 Tipos básicos de estruturas 47
2.3.2 Tipos complexos 47
3 Virtualização (finalizado) 48
3.1 Recursos do capítulo 48
3.2 Introdução a Virtualização 48
3.3 Hypervisors 49
3.4 Tipos de virtualização 50
3.4.1 Virtualização de desktop 50
3.4.2 Virtualização de rede 51
3.4.3 Virtualização de armazenamento 51
3.4.4 Virtualização de dados 51
3.4.5 Virtualização de aplicativos 51
3.4.6 Virtualização de CPU 52
3.4.7 Virtualização de GPU 52
3.4.8 Virtualização de nuvem 53
3.6 Práticas da aula 53
3.6.1 Prática 98a917ce 01: Criando o ambiente da aula 53
3 Manual Completo de Redes de Computadores com Debian GNU/Linux
4 Sistema de arquivos no GNU/Linux e principais diretórios 54
4.1 Recursos do capítulo 54
4.2 Virtual File System 55
4.3 Diretórios padrões de um GNU/Linux Debian 57
4.4 Conceito de i-node 61
4.5 Tipos de arquivos 63
4.6 Navegando no sistema de Arquivos (cd, pwd, ls) 69
4.7 Copiando e movendo arquivos (mv e cp) 71
4.8 Lendo e editando arquivos (cat, tac, more, sed, tail, split, nano, vim) 74
4.9 Obtendo informações sobre o arquivo (file, cksum, cmp) 78
4.10 Criando e removendo diretórios e arquivos (touch, rm, mkdir, rmdir) 80
4.11 Permissão de acesso e dono (chmod, chown, chgrp) 82
4.12 SetUID, SetGID e Sticky Bits 85
4.12.1 Bit SetUID 86
4.12.2 Bit SetGID 86
4.12.3 Bit Sticky 87
4.13 Link simbólico e Hard Link (ln e ln -s) 87
4.13.1 Hard Link 88
4.13.2 Symbolic links 89
4.14 Práticas da aula de Sistema de Arquivos 90
4.14.1 Prática 8e9c361c 01: Criando diretórios e arquivos no GNU/Linux 91
4.14.2 Prática 8e9c361c 02: Copiando arquivo, removendo arquivo e movendo
arquivo 92
4.14.3 Prática 8e9c361c 03: Criar links 93
4.14.4 Prática 8e9c361c 04: Diretório e arquivos com permissão especial 94
5 Usuários GNU/Linux (finalizado) 95
5.1 Recurso do Capítulo 95
5.2 Multitarefas 95
5.3 Usuários do GNU/Linux 96
5.4 O arquivo /etc/passwd 97
5.5 O arquivo /etc/shadow 99
5.6 Arquivo /etc/group 100
5.7 Adicionando usuários no GNU/Linux com adduser 101
5.8 Adicionando grupos com adduser e addgroup 102
5.9 Editando um usuário com usermod 103
5.9.1 Adicionar um usuário a um grupo 103
5.9.2 Alterar o grupo default do usuário 103
5.9.3 Alteração das informações do usuário 104
5.9.4 Alterando um diretório inicial do usuário 104
5.9.5 Mudando um Shell Padrão do Usuário 105
5.9.6 Alterando um UID de usuário 105
5.9.7 Alterar um nome de usuário 105
5.9.8 Definir uma data de expiração do usuário 105
5.9.9 Bloqueio e desbloqueio de uma conta de usuário 106
4 Manual Completo de Redes de Computadores com Debian GNU/Linux
5.10 Alterando a senha de um usuário 106
5.10.1 Altere sua senha de usuário 107
5.10.2 Alterar a senha de outro usuário 108
5.10.3 Forçar o usuário a alterar a senha no próximo login 108
5.11 Obtendo informações de usuários com finger 108
5.12 Práticas do capítulo usuários GNU/Linux 109
5.14.1 Prática fcb0b800 01: Criando usuários e grupos 109
5.14.2 Prática fcb0b800 02: Editando usuários 110
5.14.3 Prática fcb0b800 03: Alterar arquivo passswd e shadow 111
5.14.4 Prática fcb0b800 04: Usuário tomcat para o serviço tomcat 112
6 Formatando e montando um dispositivo de bloco no GNU/Linux 113
6.1 Recursos do capítulo 113
6.2 Adicionando um novo disco no VirtualBox 113
6.3 Dispositivo especial de bloco 115
6.4 Tabela de Partição 116
6.5 BIOS e UEFI 117
6.6 Tipos de sistemas de arquivos Linux 118
6.6.1 Padrão ext2 118
6.6.2 Padrão ext3 119
6.6.3 Padrão ext4 120
6.7 Listando dispositivos especiais de bloco com lsblk 120
6.8 Obtendo informações sobre dispositivos de Bloco com blkid 122
6.9 Criando partições em discos com fdisk 122
6.10 Listar Partições no GNU/Linux 123
6.11 Criando Tabela de Partição 123
6.12 Formatando uma partição para uso com mkfs 125
6.13 Montando e desmontando um dispositivo no Sistema de Arquivos com mount e
umount 126
6.14 O arquivo /etc/fstab 127
6.15 Prática do capítulo de Formatação 130
6.15.1 Prática 8b65b431 01: Adicionando um novo disco 130
6.15.2 Prática 8b65b431 02: Adicionando um cdrom 131
7 Gerenciamento de Processos no GNU/Linux (atuando) 132
7.1 Recursos do capítulo 132
7.2 Arquivos executáveis 132
7.3 Compiladores 134
7.3.1 Tipos de compiladores 134
7.3.2 Compilando Versus Interpretando 134
7.4 Criando um executável com GCC 135
7.4.1 O GCC – GNU Compiler Collection 136
7.4.2 Compilação no GCC 137
7.4.3 Assembler do Código no gcc 138
7.4.4 Linker do código com as bibliotecas 138
7.5 A implementação de threads no Linux 140
5 Manual Completo de Redes de Computadores com Debian GNU/Linux
7.5.1 Threads de kernel 141
7.5.2 Implementando uma thread em C++ 141
7.6 Criando e gerenciando processos filho em C++ 142
7.6.1 Função fork() 142
7.6.2 Aguardando finalização de procedimento filho com wait() e waitpid() 144
7.6.3 Executando comandos de Shell com system() popen() e exec() 148
7.7 Sinais POSIX 150
7.7.1 Enviando um sinal para um processo 152
7.7.2 Tratando sinais em processos 154
7.8 Escalonamento (Scheduling) 159
7.8.2 Policy 160
7.8.3 Prioridade de Processo 161
7.8.4 Timeslice (Quantum) 161
7.8.5 Preempção de processo 162
7.8.6 A política de agendamento em ação 162
7.8.7 O Algoritmo do Schedule 163
7.8.8 Runqueues 163
7.8.9 Matrizes de prioridade 165
7.8.10 Recalculando timeslice 166
7.8.11 Schedule 167
7.8.12 Calculando a Prioridade e o timeslice 167
7.8.13 Dormir e acordar 169
6.8.14 Preempção e troca de contexto 171
7.8.15 Preempção do usuário 171
7.8.16 Preempção de kernel 172
7.8.17 Tempo real (real-time) 173
7.8.18 Chamadas do sistema relacionadas aoagendador 174
7.9 Comunicação Inter-Processo 174
7.10 Comando top 175
7.10.1 Comandos interativos 175
7.10.2 Ordenação 176
7.10.3 Header do comando top 176
7.10.4 Listagem do comando top 177
7.10.5 Exibir processo de usuário específico 177
7.10.6 Salvar resultados do comando top 177
7.11 Comando ps 177
7.12 Comando kill e pkill 177
7.13 Práticas do capítulo 178
7.13.1 Prática prc0001 01: Listar processos python 178
8 Configurando interface de Redes em Linux (finalizado) 179
8.1 Recursos do capítulo 179
8.2 Faixas de IPs reservados para LAN 179
8.2.1 Definindo uma configuração para a LAN 179
8.2.2 Segmentação da LAN 180
6 Manual Completo de Redes de Computadores com Debian GNU/Linux
8.3 Comando lspci 181
8.4 Comando ip 181
8.5 Arquivo /etc/network/interfaces 183
8.6 Comando Netstat 184
8.7 Realizando download com CURL ou WGET 187
8.8 Práticas do capítulo 187
8.8.1 Prática 0002 checkpoint03: Configurando o arquivo de Interfaces 187
8.8.2 Prática 0002 checkpoint04: Configurando por comandos 188
8.8.3 Prática 0002 checkpoint05: Baixando arquivos com wget 189
9 Instalação de Programas e pacotes (finalizado) 190
9.1 Recursos do capítulo 190
9.2 Comando make 190
9.2.1 Arquivo Makefile 191
9.3 Instalação de baixo nível 194
9.3.1 Criando um pacote .deb com dpkg-deb 194
9.3.2 Instalando um pacote com dpkg -i 197
9.3.3 Obtendo informações de pacotes instalados 198
9.3.4 Removendo pacotes com dpkg 198
9.4.5 Log de operações do dpkg 199
9.4.6 Procurar nos meta-dados do pacote 199
9.4 Instalação de alto nível 199
9.4.1 Arquivo de repositórios sources.list 200
9.4.2 Adicionando PPA com add-apt-repository (falta) 202
9.4.3 Listando todos os pacotes de um repositório 202
9.4.4 Atualizando pacotes com APT 203
9.4.5 Adicionando pacotes com APT 203
9.4.5 Removendo pacotes com AP 204
9.5 Práticas do capítulo 204
9.5.1 Prática 092900 01: Criando e instalando um pacote 204
9.5.2 Prática 092900 02: Removendo um pacote com dpkg 205
9.5.4 Prática 092900 03: Instalando o pacote net-tools com apt 205
10 Shell Script e Bash (finalizado) 207
10.1 Recurso do Capítulo 207
10.2 Como criar um script no Linux 207
10.2.1 Variável de ambiente PATH 208
10.3 O Interpretador /bin/bash 208
9.3.1 Variáveis do ambiente (Environment) 208
10.4 Como criar um script 209
10.5 Shell Script BASH /bin/bash 211
10.5.1 Declarações Globais 212
10.5.2 Parando um Script 212
10.5.3 Descritores Input, Output e Error no Linux 213
10.5.3.1 Redirecionando o output 213
10.5.3.2 Redirecionando o input 214
7 Manual Completo de Redes de Computadores com Debian GNU/Linux
10.5.3.3 Redirecionando error 214
10.5.3.4 Redirecionando o output e o error 214
10.5.3.5 Anexando em arquivos existentes 215
10.5.3.6 Suprimindo o output ou error 215
10.5.4 Uso de comandos no script 215
10.5.5 Variáveis 216
10.5.6 Variáveis Predefinidas 219
10.5.7 Exports 219
10.5.7 Arrays 221
10.5.8 Expressões e test 222
10.5.9 Comando if 226
10.5.10 Comando case 227
10.5.11 Comando while 228
10.5.12 Comando until 229
10.5.13 Comando for 230
10.6 Práticas do capítulo 231
10.6.1 Prática 8ab001 01: Imprimindo na tela 231
10.6.2 Prática 8ab001 02: Uma variável 231
10.6.3 Prática 8ab001 03: Imprimindo mas com python2 232
10.6.4 Prática 8ab001 04: Script que valida par ou ímpar com if 233
10.6.5 Prática 8ab001 05: Script que valida se um número é maior que 10 234
11 Python para Sistemas Operacionais (atuando) 235
11.1 Listando versões de Python no Linux 235
11.2 Python em modo interativo 236
11.3 Python em scripts 237
11.4 Importando módulos Python 237
11.5 Módulo OS, SYS e SHUTIL 240
11.5.1 Dados do Sistema Operacional e do Environment 240
11.5.2 Comandos clássicos GNU/Linux e Windows no python 243
11.5.3 Trabalhando com PATH 244
11.5.4 Manipulando arquivos 247
11.6 Módulo subprocess 248
11.6.1 subprocess.run() 249
11.6.2 subprocess.popen() 251
11.5 Scripts profissionais em Python 252
11.5.1 Trabalhando com parâmetros 253
11.5.2 Output profissional 257
11.5.3 Manipulando arquivos 261
11.5.4 Instalando dependências 261
11.5.5 Obtendo dados do Sistema Operacional 262
11.5.6 Controlando a execução do script 262
11.5.7 Adicionando documentação no man 262
11.6 Práticas do capítulo 262
11.6.1 Prática py0001 checkpoint01: Preparando o ambiente 263
8 Manual Completo de Redes de Computadores com Debian GNU/Linux
11.6.2 Prática py0001 checkpoint02: Imprimindo o usuário corrente do Environment
263
11.6.3 Prática py0001 checkpoint03: Criando uma hash em MD5 do primeiro
argumento 264
11.6.4 Prática py0001 checkpoint04: Listando usuários com shell /bin/bash 264
11.6.5 Prática py0001 checkpoint05: Persistir um arquivo 265
12 Adicionando um serviço na inicialização do GNU/Linux (atuando...) 266
12.1 Recurso do Capítulo 266
12.2 Passos executados pela BIOS ou UEFI 266
12.3 MBR e GPT 268
12.4 Bootloaders 268
12.4.1 GNU GRUB 269
13 Agendamento de tarefas com cron, crontab e at no GNU/Linux (finalizado) 270
13.1 Recurso do Capítulo 270
13.2 Daemon cron e comando crontab 270
13.2.1 Daemon cron 270
13.2.1 Comando crontab 271
13.2.2 Formato de entradas cronjob na crontab de usuário 273
13.2.3 A crontab do sistema 274
13.2.4 Execuções de comandos 275
13.2.5 Permissão de acesso ao crontab 275
13.3 Comando at 276
13.3.1 Criando um agendamento com at 276
13.3.2 Especificando o tempo de execução 277
13.3.3 Listagem de tarefas pendentes 278
13.3.4 Removendo trabalhos pendentes 278
13.3.5 Restringindo usuários 278
13.4 Práticas do capítulo 279
13.4.1 Prática 4d4f6ae 01: Instalação do comando apt e um agendamento 279
13.4.2 Prática d7a527b 01: Um script de backup 279
14 Openssh-server (finalizado) 280
14.1 Recurso do Capítulo 280
14.2 Introdução OpenSSH e Protocolo SSH 280
14.2 Instalando e configurando o openssh-server 285
14.3 Instalando o serviço SSH 286
14.4 Acessando o terminal por uso de cliente SSH 287
14.4 Transferindo arquivos 289
14.5 Práticas do capítulo 291
14.5.1 Prática 57671beb 01: Configurando o serviço Openssh-server 291
15 Serviço de Internet com Gateway (finalizado) 293
15.1 Recurso do Capítulo 293
15.2 Configurando o ambiente virtual e a rede virtual no VirtualBox 293
15.3 Configurando as Interfaces de rede 298
15.4 Configurando o servidor Gateway 303
9 Manual Completo de Redes de Computadores com Debian GNU/Linux
15.5 Monitorando tráfego da rede interna 308
15.6 Práticas do capítulo 309
15.6.1 Prática acb1b800 01: Configurando interfaces de rede do Gateway 309
15.6.2 Prática acb1b800 02: Ativando o serviço de Gateway 310
15.6.3 Prática acb1b800 03: Configurando a interface de rede do Cliente 311
16 Serviço WEB com Tomcat e Java (finalizado) 313
16.1 Recurso do Capítulo 314
16.2 Instalando o Java no Linux Terminal 314
16.3 Criando um ambiente seguro para seu container 315
16.4 Instalar o Tomcat 315
16.5 Configurando as permissões para o serviço 318
16.6 Adicionando o Tomcat na inicialização do Linux 318
16.7 Configurar a interface de gerenciamento da Web do Tomcat 321
16.8 Acessando a interface da Web 324
16.8.1 Raiz do Tomcat 325
16.8.2 Gerenciador de aplicativos da web Tomcat 325
16.9 Prática do capítulo 325
16.9.1 Prática 0001 tomcat: Configurando o serviço WEB com Tomcat e Java 325
17 Serviço WEB com Apache e PHP (finalizado) 327
17.1 Recurso do Capítulo 328
17.2 Instalando e configurando o Apache2 328
17.3. Instalando certificado digital 330
17.4 Testando o PHP Instalado 332
17.5 Prática do capítulo 333
17.5.1 Prática bn13la21 01: Configurando o serviço WEB com Apache e PHP 334
18 Serviço DHCP (finalizado) 335
18.1 Recurso do Capítulo 337
18.2 No VirtualBox 337
18.3 Instalando e Configurando o DHCP Server 338
18.3.1 Configurando o IP do servidor DHCP 338
18.3.2 Instalando o servidor DHCP 340
18.3.3 Arquivos de Configuração do Serviço DHCP 342
18.4 Configurando Debian Cliente 346
18.5 Práticas do capítulo 347
18.5.1 Prática 57t90021 01: Validando o serviço DHCP 348
18.5.2 Prática 57t90021 02: Cliente DHCP 349
19 Serviço DNS com Bind9 (finalizado) 350
19.1 Recursos do capítulo 351
19.2 Configurando o nome das máquinas 351
19.3 Instalando recursosem ns1 e ns2 352
19.4 Configurando Vincular ao Modo IPv4 em ns1 e ns2 352
19.5 Configurando o servidor DNS primário em ns1 353
19.5.1 Configurando o Arquivo de Opções 353
19.5.2 Configurando o Arquivo Local 354
10 Manual Completo de Redes de Computadores com Debian GNU/Linux
19.5.3 Criação do arquivo de zona de encaminhamento 355
19.5.4 Criando o (s) arquivo (s) de zona reversa 357
19.5.5 Verificando a sintaxe de configuração do BIND 358
19.6 Configurando o servidor DNS secundário ns2 359
19.7 Cliente Debian host1 361
19.8 Práticas do capítulo de DNS com GNU/Linux 363
19.8.1 Prática 1ae1b810 01: Validando a configuração do servidor ns1 363
19.8.2 Prática 1ae1b810 01: Validando a configuração do servidor ns2 364
19.8.3 Prática 1ae1b810 03: Validando a configuração no host1 364
20 Iptables e Firewall e UFW (atuando) 366
20.1 Recursos do capítulo 367
20.2 A organização das regras 367
20.3 Fluxo de pacotes de rede e hook points para tabela NAT 368
20.3.1 Source NAT e Masquerading 368
20.3.2 Destination NAT 369
20.3.3 Transparent Proxying 369
20.3.4 Balanceamento de carga 370
20.4 Fluxo de pacotes de rede e tabela filtering 370
20.5 Firewalls de rede 371
20.5.1 Filtrando requisição entre redes - um firewall para Internet 371
20.5.2 Permitindo acesso a um Processo local 373
20.5.3 Permitindo a saída de pacotes 374
20.5.4 Permitindo conexão de processos locais com processos locais 375
20.5.5 Alterando as regras padrões para negação 375
20.5.6 Limpando regras 376
20.5.7 Monitorando portas com nmap 376
20.6 UFW (falta) 378
20.7 Práticas do capítulo 378
20.7.1 Prática ipt0001 checkpoint01: Configurando uma rota FORWARD para um
container WEB 378
21 Serviço NTP (finalizado) 380
21.1 Recursos do capítulo 381
21.2 Instalação do servidor NTP (máquina NtpServer) 382
21.3 Configuração do servidor NTP 382
21.3.1 Brasil br.pool.ntp.org 382
21.3.2 Restringindo acesso ao NTP Server local 383
21.4 Monitorando 384
21.5 Configuração do Cliente 385
21.5.1 Criando um script de inicialização 386
21.6 Práticas do capítulo 387
21.6.1 Prática i0721ax 01: Configurando o serviço NTP 387
21.6.2 Prática i0721ax 02: Configurando o cliente 388
22 Samba (finalizado) 390
22.1 Recursos do capítulo 391
11 Manual Completo de Redes de Computadores com Debian GNU/Linux
22.2 Configurando o servidor Samba 391
22.3 Acessando o recurso 395
22.3.1 Acessando com o cliente gráfico no MAC OS 395
22.3.2 Acessando com o cliente gráfico no Ubuntu GNU/Linux 397
22.3.3 Acessando com o cliente gráfico no Windows 398
22.4 Práticas do capítulo 399
22.4.1 Prática 927a3ik 01: Configurando o serviço SMB 400
22.4.2 Prática 927a3ik 02: Criando um diretório e acessando 400
23 Proxy Squid-cache (finalizado) 402
23.1 Recursos do capítulo 402
23.2 Cenário 402
23.3 Instalando o squid 404
23.4 Configurando a permissão de acesso ao Proxy 404
23.4.1 Permissão para todos que podem acessar o servidor 405
23.4.2 Permitindo acesso apenas para uma determinada rede/subrede 405
23.4.3 Permitindo acesso para apenas uma máquina específica 406
23.5 Ativando cache 406
23.6 Alterando a porta serviço proxy 407
23.7 Habilitando comunicação por portas para clientes 408
23.8 Lista de controle de acesso 408
23.8.1 Bloqueando sites 408
23.8.2 Criando uma lista de sites permitidos 411
23.9 Configurando Proxy + DHCP server 412
23.10 Configurando Clientes por Proxy Transparente para porta 80 413
23.11 SquidGuard e listas de negação 416
23.12 Validando e recarregando a configuração 419
23.13 Configurando uma máquina cliente na abordagem 1 420
23.13.1 GNU/Linux Ubuntu Gráfico 420
23.13.2 Microsoft Windows 10 421
23.13.3 GNU/Linux Debian Terminal 423
23.14 Configurando uma máquina cliente na abordagem 2 424
23.15 Configurando uma máquina cliente na abordagem 3 424
23.16 Práticas do capítulo 424
23.16.1 Prática 30x498c 01: Configurando o Squid na Abordagem 1 424
23.16.2 Prática 30x498c 02: Negando redes sociais 425
23.16.3 Prática 4a2f8c 01: Configurando o Squid para atender 192.168.200.0/24 426
23.16.4 Prática 4a2f8c 02: Bloqueando sites Pornogrâficos 427
23.16.5 Prática ccd6973c 01: Configurando Squid + DHCP 428
24 Proxy Reverso Nginx (finalizado) 430
24.1 Recursos do capítulo 432
24.2 Prática de Nginx 432
24.3 Instalando e configurando o servidor Apache2 432
24.4 Instalando o Nginx 432
24.4.1 Sites available e sites enabled 434
12 Manual Completo de Redes de Computadores com Debian GNU/Linux
24.4.2 Balanceamento de Carga 435
24.5 Configurando o hosts da máquina real 435
24.5.1 Configurando o /etc/hosts no GNU/Linux e MAC OS 436
24.5.2 Configurando o C:\windows\system32\drivers\etc\hosts no Microsoft Windows
436
24.6 Práticas do capítulo 438
24.6.1 Prática 09a378b 01: Configurando o Gateway + Nginx 438
24.6.2 Prática 09a378b 02: Configurando o serviço Apache 439
25 Serviço de mail com Postfix (finalizado) 441
25.1 Recursos do capítulo 441
25.2 Instalação e Configuração Postfix 441
25.3 Testando o serviço com TELNET 443
25.4 Enviando e-mail com PHP 444
25.5 Práticas do capítulo 446
25.5.1 Prática ptf0001 01: Configurando o servidor de e-mail postfix 446
25.5.2 Prática ptf0001 02: Enviar um e-mail com telnet 447
25.5.3 Prática ptf0001 03: Enviando e-mail com PHP 447
26 Serviço FTP (finalizado) 449
26.1 Recursos do capítulo 449
26.2 O protocolo FTP 449
26.2.1 Comunicação em modo passivo 449
26.2.2 Comunicação em modo ativo 450
26.3 Preparando o ambiente 451
26.4 Instalando o serviço FTP 451
26.5 Configuração do serviço 452
26.6 Acessando o serviço FTP 453
26.6.1 Cliente FTP gráfico FILEZILLA 453
26.6.2 Cliente FTP Command Line 454
26.7 Configurando um servidor no modo Passivo 455
26.8 Uso de certificado ssl 455
26.9 Análise da comunicação FTP 456
26.9.1 Conexão ativa 456
26.9.2 Conexão passiva 459
26.9.3 Uso de certificados 459
26.10 Práticas do capítulo 460
26.10.1 Prática ftp0001 01: Configurando um serviço FTP 460
27 Banco de Dados 461
28 Versionadores de código 461
28.1. Versionamento de código 461
28.2 Subversion 461
28.3 Git 462
27 Servidor de Virtualização 463
27 OpenVPN (ATUANDO) 470
27.1 Recursos do capítulo 470
13 Manual Completo de Redes de Computadores com Debian GNU/Linux
27.2 O ambiente 471
27.3 Easy-rsa 472
27.4 Criando certificados para uso no OpenVPN 473
27.5 Configurando o servidor Openvpn 477
27.6 Utilizando em um cliente VPN 480
28 Serviço de controle de Domínio OpenLDAP (atuando) 486
28.1 X.500 486
28.1.1 Object Entry 486
28.2 LDAP 488
28.2.1 Directory Service e Entry 488
29 Ansible (atuando) 494
LAB I Gateway completo com IPCOP (falta formatar) 495
LAB II Enterprise Service Bus (Finalizado) 515
1 Recursos do capítulo 516
2 Preparando o ambiente 516
3 Instalando e configurando o Gateway + Iptables 517
4 Instalando o WSO2 520
4.1 Instalando o Java 8 521
4.2 Instalando o WSO2 522
4.4 Segurança do serviço 524
4.5 Gerar um script de inicialização 526
4.6 Utilizando o painel do Enterprise Service Bus 527
4.6.1 Acessando a interface de manutenção 527
5 Instalando o Apache um provedor de dados 528
6 Configurando um serviço no ESB 529
7 Testando o serviço 533
8 Práticas do capítulo 534
8.1 Prática esb001 01: Configurando o Gateway 534
8.2 Prática esb001 02: Configurando o Enterprise Service Bus 535
8.3 Prática esb001 03: Configurando o serviço WEB com Apache e PHP 536
Referências 538
9.6.3 Prática 8ab001 03: Imprimindo mas com python2 538
Links para Download
No texto os links abaixo serão referenciados pelo número, são estes:
Link 1 - Download do VirtualBox 6:
http://www.aied.com.br/site/pages/redirecionar.php?id=8ddf9d44-e504-e5fa-d062-a494bbf7b
579
http://www.aied.com.br/site/pages/redirecionar.php?id=8ddf9d44-e504-e5fa-d062-a494bbf7b579
http://www.aied.com.br/site/pages/redirecionar.php?id=8ddf9d44-e504-e5fa-d062-a494bbf7b579
14 Manual Completo de Redes de Computadores com Debian GNU/Linux
Link 2 - Imagem do Instalador do sistema operacional escolhido
- Imagem ISO do Debian 10.6 64 bits:
https://cdimage.debian.org/cdimage/archive/10.12.0/amd64/iso-cd/debian-10.12.0-a
md64-netinst.iso
Link 3 - Virtual Machine- VM com o Debian 10.6 e 64 bits VERSÃO 5 instalado e pronto:
Debian_10_64bits_root_123456_usuario_123456_ver5.ova
Observação: A VM (32 bits) acima está com aied versão 7, basta executar ele 1 vez e ele se
auto atualiza. Já a VM (64 bits) já está atualizada, recomendo a 64 bits então.
O capítulo 1 aborda o uso destes arquivos e como o leitor deve utilizar o ambiente.
https://cdimage.debian.org/cdimage/archive/10.12.0/amd64/iso-cd/debian-10.12.0-amd64-netinst.iso
https://cdimage.debian.org/cdimage/archive/10.12.0/amd64/iso-cd/debian-10.12.0-amd64-netinst.iso
https://drive.google.com/file/d/1GKGIx3zKwmBGg4di2IB5aXRzlmD4qy1g/view?usp=sharing
15 Manual Completo de Redes de Computadores com Debian GNU/Linux
1 Considerações e Ambiente (finalizado)
Neste capítulo os autores descrevem como preparar o ambiente e observações importantes
que o leitor deve estar atento antes de iniciar as práticas do material. Mas antes de
confirmar se seu equipamento permite virtualização, veja a mídia externa.
Ativando a Virtualização do Processador da Intel | PT - BR:
https://youtu.be/CSNRi9HhWi8
1.1 Tecnologias utilizadas e Download de arquivos
Para iniciar vamos utilizar o seguinte ambiente devidamente configurado:
● VirtualBox versão (preferência 6.1 mas pode instalar versões mais atuais) para
virtualizar as práticas;
● Debian versão 10 32bits ou 64bits Terminal para operar as práticas que são todas
em GNU/Linux;
● Putty e WinSCP para acessar remotamente as máquinas virtuais caso queira usar
recurso CTRL+C e CTRL+V;
O processo de instalação do VirtualBox é fácil, entre no site e veja que em Downloads a
versão Windows está bem visível, clique e sem nenhum tipo de cadastro obtenha a
VirtualBox para ser instalada.
O padrão de instalação é Next > Next > Finish, sem complexidade tecnológica envolvida na
instalação padrão. A única observação que deve ser feita é que precisa ser um
administrador da máquina para instalar, mas isso é trivial para este curso. Esta é a interface
do VirtualBox 6.
https://youtu.be/CSNRi9HhWi8
16 Manual Completo de Redes de Computadores com Debian GNU/Linux
Agora o leitor deve obter a Imagem virtual que será utilizada para criar em cada prática as
máquinas virtuais, neste material será adotado um Debian 10.6 de 32 bits, será usado 32
bits para se manter compatibilidade com as máquinas dos alunos, pois nem toda máquina é
capaz de virtualizar uma Virtual Machine de 64 bits.
O leitor pode obter a imagem do sistema operacional e fazer sua própria instalação, mas
deve estar atento a versão, pois a plataforma GNU/Linux sofre constantes evoluções e
naturalmente arquivos podem deixar de existir ou serem alterados.
Neste ponto do material você deve fazer o download dos seguintes links que estão na
tabela de Links: Link 1, Link 2 e Link 3.
Se o leitor quiser fazer sua própria Virtual Machine então deve instalar o Robô Tutor AIED
conforme o tópico 1.4 deste material, caso utilize uma Virtual Machine distribuída aqui então
o Robô Tutor AIED não precisará instalar pois já está instalado.
1.2 Importando e configurando uma Máquina Virtual
O processo de importação é simples, cada prática vai iniciar passando detalhes da
configuração, tal como Adaptador de Rede, quantidade de Memória, USB, etc..
Após fazer download do Link 3, no VirtualBox vá até o menu principal e pressione File >
Import Appliance...
Você deverá escolher o arquivo .ova que obteve no Link 3 e editar a configuração conforme
cada prática pede, recomendo que antes de iniciar uma prática esteja atento a isso.
17 Manual Completo de Redes de Computadores com Debian GNU/Linux
O usuário e a senha estão em Description, conforme figura abaixo.
Repare que a Virtual Machine possui 2 usuário, como deve ser1, veja o vídeo onde a é
explicado da importância de se ter um usuário diferente do root no recurso de mídia abaixo.
Usuários Linux Parte 1: https://youtu.be/wRSXIIfwMgg
Usuários Linux Parte 2: https://youtu.be/h2PUbJ2u1uI
Alguns problemas podem ocorrer, o mais grave é a impossibilidade do Hardware de fazer a
virtualização, algumas máquinas possuem na BIOS a configuração adequada de
virtualização, caso precise adaptar acesse o SETUP e faça a configuração conforme
descrição do fabricante de seu computador.
Outro problema que pode ocorrer é o USB Controller, caso tenha problemas, pode
desabilitar pois não vamos precisar em nossas aulas deste recurso e você poderá transferir
arquivos pela rede ou por SSH.
1 Não é referência a The Mandalorian
https://youtu.be/wRSXIIfwMgg
https://youtu.be/h2PUbJ2u1uI
18 Manual Completo de Redes de Computadores com Debian GNU/Linux
Para isso clique na máquina virtual e em configurações da máquina virtual escolha a opção
USB conforme figura acima, desmarque a opção “Enable USB Controller”.
1.3 Criando uma Virtual Machine a partir de uma instalação
Caso não queira atuar com a máquina virtual oferecida, o leitor pode criar sua própria
máquina virtual, utilizando para isso o Link 2 descrito na tabela de links. Caso queira operar
com outra distribuição ou versão não garantimos a compatibilidade do layout dos arquivos
pois o GNU/Linux está sempre em evolução.
No menu principal clique em Machine > New ou pressione o borrão azul conforme figura
abaixo.
Dê um nome sugestivo, e selecione Type Linux e Version Debian (32-bit) conforme figura
abaixo para a VM oferecida no Link 2.
Clique em Next >, no próximo passo informe que precisará de 1024 MB de memória, isso é
suficiente para um GNU/Linux Debian 10, no Debian 9 eram precisos apenas 512 MB de
memória.
19 Manual Completo de Redes de Computadores com Debian GNU/Linux
Na próxima sequência de telas, crie um arquivo .vdi de 18GB, mas fique tranquilo que ele
vai criar um arquivo pequeno, este arquivo se expande com o passar do tempo, mas nossas
práticas são curtas e as VMs criadas são apagadas.
Após criar a Virtual Machine, é só selecionar ela na lista e clicar em Start conforme figura
abaixo.
Selecione a ISO apropriada, obtida no Link 2 e inicie o processo de instalação do
GNU/Linux.
20 Manual Completo de Redes de Computadores com Debian GNU/Linux
Proceda com a instalação conforme o seguinte recurso de vídeo:
Como instalar um GNU/Linux por terminal: https://youtu.be/uIf7ip5KaSw
Durante a inicialização o primeiro passo é escolher o mono não gráfico para evitar o uso
desnecessário de memória.
O GNU/Linux foi desenvolvido e testado em Inglês, então evite escolher Portugues do Brasil
no próximo passo, saiba que uma coisa é a linguagem do Sistema Operacional, outra coisa
é a Localização do seu computador.
https://youtu.be/uIf7ip5KaSw
21 Manual Completo de Redes de Computadores com Debian GNU/Linux
Agora no próximo passo vamos localizar a nossa máquina no Brasil, para isso escolha
Other > South America > Brazil conforme figura abaixo.
O próximo passo é escolher o Charset do sistema operacional, tanto o Python quanto o
Mysql agradecem o uso de UTF-8 e o padrão de charset English.
22 Manual Completo de Redes de Computadores com Debian GNU/Linux
No próximo passo deve-se definir qual o nome do host que será utilizado, deve-se definir
nomes únicos na rede para garantir que quando este host for mapeado pelo servidor DNS
não tenhamos ambiguidade de máquinas na rede.
Na figura abaixo será solicitado um domínio, ou seja, se a máquina está sob controle de um
agente LDAP, exemplo: Microsoft Active Directory e OpenLDAP.
23 Manual Completo de Redes de Computadores com Debian GNU/Linux
Embora o root seja um usuário que possui restrição de logon, deve-se definir uma senha
robusta para que outros usuários ... ou executar em seu nome o comando SUDO ou o
comando SU.
Após informar a senha do usuário ROOT, então o instalador deverá solicitar um nome de
usuário, informe que quer criar o usuário chamado2: usuario
2 Todas as práticas do material estão direcionadas ao GNU/Linux Debian 10 e para o usuário usuario.
24 Manual Completo de Redes de Computadores com Debian GNU/Linux
25 Manual Completo de Redes de Computadores com Debian GNU/Linux
26 ManualCompleto de Redes de Computadores com Debian GNU/Linux
27 Manual Completo de Redes de Computadores com Debian GNU/Linux
28 Manual Completo de Redes de Computadores com Debian GNU/Linux
O próximo passo é escolher quais pacotes serão instalados pelo gerenciador tasksel, veja
que foi apenas marcado a opção “Standard System Utilities”, só…….
29 Manual Completo de Redes de Computadores com Debian GNU/Linux
A escolha da forma em que vamos formatar o disco deverá ser o modo automático e todo o
disco conforme figura abaixo, após o aluno completar parte do curso será demonstrado
como realizar a formatação por meio de fdisk e a devida explanação sobre formatação
lógica.
Sim, vamos utilizar o GRUB para carregar a imagem do sistema operacional GNU/Linux.
30 Manual Completo de Redes de Computadores com Debian GNU/Linux
E escolha o sistema de arquivo recém criado com a imagem do GNU/Linux selecionando a
opção sda.
Várias práticas precisam de comandos que precisam de privilégios, não recomendo o uso
da conta do usuário privilegiado root, recomendo o uso de SUDO, para isso siga a
configuração do sudo conforme recurso de vídeo:
Instalando o SUDO e configurando: https://youtu.be/_B5zdj0871o
Após a instalação e configuração do SUDO (ver tópico: Instalando e configurando o SUDO)
execute a configuração do Aied conforme tópico: Validação de práticas por meio de Robô e
suporte.
https://youtu.be/_B5zdj0871o
31 Manual Completo de Redes de Computadores com Debian GNU/Linux
1.4 Validação de práticas por meio de Robô e suporte
Como na educação a distância mediada pela Internet o modelo de transferência de
conhecimento em grande parte é assíncrona, faz-se referência até ao Tanenbaum neste
momento, a validação das práticas devem ser realizadas por intermédio de um agente
dotado de validadores que são capazes de explicar ao aluno o ponto em que está errando.
Aied.com.br desenvolveu um conjunto de ferramentas que validam as práticas dos alunos
realizadas neste material, e naturalmente abrangendo os erros clássicos observados nos
últimos anos, trata-se de um agente que envia dados para um servidor de validação, e por
este motivo é importante que só seja instalado dentro de uma Máquina Virtual e para fins
educacionais.
Instalando o Robô de validação de práticas GNU/Linux AIED acessando este link.
Quando se obtém a Máquina Virtual disponível no Link 3 todo o ambiente já está
devidamente instalado e configurado, nenhuma ação será necessária, mas, caso parta de
uma nova instalação do Debian 10 32 bits pelo Link 2, então é necessário instalar o Robô
de validação, para isso obtenha o script de instalação com o comando wget descrito no
código abaixo.
1. wget -O /tmp/install.py
http://www.aied.com.br/linux/download/install.py
Onde em 1:
wget é o comando que faz uma requisição HTTP e obtém o arquivo de instalação;
-O (OOOOOHHHHH maiúsculo)parâmetro que informa onde será salvo o arquivo
bem como o nome;
Veja no terminal.
O que tem no arquivo de instalação? vamos descrever:
1. #!/usr/bin/python3
2.
3. # o aluno baixa este script e este script faz a instalacao
4. import os;
5. import sys
6. import platform
7.
8. machine2bits = {'AMD64': 64, 'x86_64': 64, 'i386': 32, 'x86': 32,
'i686' : 32}
http://www.aied.com.br/site/pages/redirecionar.php?id=009bf1c1-8dcd-2e4d-67c6-e74771b49b53
32 Manual Completo de Redes de Computadores com Debian GNU/Linux
9. os_version = machine2bits.get(platform.machine(), None)
10.
11.
12. os.system("apt install libjsoncpp-dev -y");
13. os.system("apt install g++ -y");
14. os.system("rm -r /etc/aied");
15. os.system("rm -r /etc/aied");
16. os.system("mkdir /etc/aied");
17. os.system("wget -O /tmp/aied.tar.gz
http://www.aied.com.br/linux/download/aied_"+ str(os_version) +".tar.gz" );
18. os.system("tar -xzvf /tmp/aied.tar.gz -C /etc/aied/");
19. os.system("rm /usr/sbin/aied");
20. os.system("rm /usr/bin/aied.py");
21. os.system("ln -s /etc/aied/aied_"+ str(os_version) +" /usr/bin/aied");
22. os.system("chmod +x /etc/aied/aied_" + str(os_version) );
Onde;
As linhas 14, 15, 16, 19 e 20 limpam possíveis versões anteriores do AIED;
As linhas 12 e 13 instalam dependências do programa AIED que é escrito em Linguagem C;
A linha 17 faz download do binário;
A linha 18 descompacta o arquivo em /etc/aied/;
A linha 21 cria um link simbólico para aied_(VERSÃO DO OS) no diretório de comandos;
Então agora que conhece o script, execute utilizando o Python (TEM QUE ESTAR COMO
ROOT ou UTILIZE SUDO):
1. sudo python3 /tmp/install.py
O procedimento deverá ser executado.
Para testar o ambiente é simples, digite o comando:
sudo aied validar 0000 ola
Onde:
aied é o programa escrito em Linguagem C obtido com o auxílio do instalador;
33 Manual Completo de Redes de Computadores com Debian GNU/Linux
validar é a ação que o programa deverá executar;
0000 ola é o script utilizado para validação pela ferramenta, é o clássico hello
world, estes dados serão informados durante as práticas e em destaque.
Veja na imagem abaixo que o script 000 ola se chama “Validação do mecanismo, é um teste
apenas” e o mais importante, é exibido uma informação de Atenção.
Respeitando o aluno e mesmo sabendo que este script está sendo executado em uma
Máquina Virtual isolada é informado os comando que serão executados pelo script e que o
resultado da saída destes comandos serão enviados para o servidor de validação
aied.com.br.
Se for aceito então o procedimento executa as operações citadas, que no exemplo acima é
apenas um comando e envia para validação.
Na figura acima, após ser executado o comando é enviado então para o servidor de
validação que fez a validação e no item 1.1 confirmou que está tudo OK ao utilizar a cor
VERDE.
Algumas práticas serão muito complexas, este mecanismo poderá ajudar o aprendiz a
localizar erros difíceis de serem localizados pois executam uma série de testes, como no
exemplo abaixo.
34 Manual Completo de Redes de Computadores com Debian GNU/Linux
Observe que se um item não for satisfeito então o validador informa com um texto curto
como resolver e que se o aluno quiser existe um arquivo de dica específico para este
problema, geralmente um texto curto de menos de 1 lauda, com o objetivo de ser dinâmico.
1.5 Configuração do Adaptador de rede no VirtualBox
Nas práticas será comum a configuração de redes entre as máquinas virtuais e a própria
rede física do aluno. Para configurar uma placa de rede de uma máquina virtual, primeiro
deve-se conectar ela na rede, para isso selecione a máquina virtual e clique em
configurações.
Depois na aba REDE, selecione os adaptadores, o correto é configurar somente a
quantidade exata de adaptadores que é requisitado por prática.
35 Manual Completo de Redes de Computadores com Debian GNU/Linux
As configurações necessárias para o livro serão:
● Adaptador em modo NAT;
● Adaptador em modo Bridge;
● Adaptador em modo Rede Interna;
Mas estas configurações, mesmo demonstradas abaixo, serão solicitadas por prática, afinal
cada prática é diferente uma da outra.
1.5.1 Adaptador em NAT
Uma configuração padrão é a que menos exige do leitor é a configuração em modo NAT,
nesta configuração a Virtual Machine não acessa diretamente a rede LAN do usuário e fica
confinada em uma rede interna do VirtualBox com um gateway virtual.
Esta configuração é ideal quando não é preciso acessar nenhum serviço na Virtual Machine
como um serviço na rede local, ou seja, quando ela fica isolada dentro do Host mas com
acesso aos serviços da rede.
Configurando o adaptador em NAT https://youtu.be/f72vyMnyl9s
Neste cenário a Máquina Real fica isolada da Máquina Virtual não havendo comunicação
entre estas, ideal para cenários onde é necessário se preservar a segurança.
http://www.aied.com.br/site/pages/redirecionar.php?id=05fef735-c718-574b-ffba-9cc5c0f072db
36 Manual Completo de Redes de Computadores com Debian GNU/Linux
1.5.2 Modo Bridge
Com o Adaptador em Bridge o VirtualBox usa um driver de dispositivo real em seu host
físico para se conectar na rede local real, para isso utilizaum driver denominado driver de
filtro de rede.
Isso permite que o VirtualBox intercepte dados da rede física ou envie dados para ela,
criando efetivamente uma nova interface de rede no software.
Quando uma máquina virtual está usando essa nova interface virtual, parece ao sistema
host como se a máquina virtual estivesse fisicamente conectado à interface por meio de um
cabo de rede real.
O host pode enviar dados para a máquina virtual por meio dessa interface e receber dados
dele, isso significa que você pode configurar o roteamento ou a ponte entre a máquina
virtual e o resto da sua rede.
Configurando o adaptador em bridge https://youtu.be/GzCgHd5wJxI
1.5.3 Rede Interna
As redes internas são criadas automaticamente conforme necessário, não há configuração
central. Cada rede interna é identificada simplesmente por seu nome (ID).
Quando houver mais de um Adaptador virtual ativo com a mesma ID de rede interna, o
driver de suporte do VirtualBox conectará automaticamente as placas e atuará como um
switch de rede.
Utiliza-se esta rede para fazer uma configuração de LAN privada virtual entre as máquinas
virtuais.
http://www.aied.com.br/site/pages/redirecionar.php?id=c9b29b80-f34a-0173-094f-09764d1e216c
37 Manual Completo de Redes de Computadores com Debian GNU/Linux
Configurando o adaptador em rede interna https://youtu.be/1OgTzFyO_Vk
1.6 Divisão dos Capítulos
Este material engloba toda a prática de Linux bem como sua implementação em uma rede
de computadores, consumindo e disponibilizando serviços, segmento este conteúdo em 2
momentos que devem ser seguidos conforme a prática se revelou ao longo dos anos, são
estes:
Sistemas Operacionais prático com GNU/Linux: Conteúdo sobre o GNU/Linux em
si, este naturalmente isolado, para isso deve-se aplicar do capítulo 2 ao capítulo 13;
Redes de Computadores prático com GNU/Linux: Conteúdo sobre como o
GNU/Linux se comporta em uma rede de computadores e como estes interagem
consumindo ou prestando serviços na rede, aplica-se do capítulo 14 em diante;
1.7 Curso gratuito com certificado
O material conta com um Ambiente Virtual de Aprendizagem (AVA) próprio, neste ambiente
o aluno pode entregar as práticas e por meio de automação a ferramenta vai validar todos
os exercícios, o link do ambiente é: http://universidadegratuitaead.com.br/aied
Realize o cadastro, os campos abaixo não poderão ser alterados depois pois um aluno
poderia emitir certificado para várias pessoas se isso fosse possível, então os dados que
utilizar neste formulário de cadastro serão utilizados para gerar o certificado.
http://www.aied.com.br/site/pages/redirecionar.php?id=290a3fb7-6d7b-d7d3-0521-5605a71502cf
http://universidadegratuitaead.com.br/aied
38 Manual Completo de Redes de Computadores com Debian GNU/Linux
Após cadastrar pode realizar o login direto, pois não há necessidade de confirmar e-mail,
pode-se até utilizar e-mail avulso se quiser. Ao entrar, caso queira realizar as disciplinas
deste livro, então clique em Cadastro disciplina isolada conforme figura abaixo.
Será necessário usar um código, o material é dividido em duas disciplinas, conforme tópico
Divisão dos Capítulos.
Os códigos são:
5AX31P Sistemas Operacionais prático com GNU/Linux;
7Tz289A Redes de Computadores prático com GNU/Linux;
39 Manual Completo de Redes de Computadores com Debian GNU/Linux
Digite o código e clique em Cadastrar, pronto, agora pode acessar Minhas Turmas (ver
menu abaixo) e acessar a disciplina que acaba de se cadastrar.
ATENÇÃO: Na explicação o autor vai utilizar como exemplo a disciplina de Redes de
Computadores prático.
Acesse a disciplina, na tela inicial da disciplina o aluno encontra uma lista de aulas que
deve realizar, no exemplo abaixo, pressione o link da primeira aula.
A aula deve ser iniciada, cada aula exige que o aluno fique no mínimo 3 horas, afinal tem
texto para se ler, práticas para se fazer e dúvidas para se tirar com outros membros.
40 Manual Completo de Redes de Computadores com Debian GNU/Linux
Toda aula o aluno encontra uma descrição da aula, e uma lista de atividades para se fazer,
então o aluno deve clicar uma a uma, acessar a atividade e realizar a prática.
Cada prática GNU/LINUX tem um código individual (por aluno), conforme figura abaixo,
após o aluno realizar o que se deve fazer (ver figura abaixo) esse código individual deve ser
digitado no GNU/LINUX para validar a prática.
Veja, na figura abaixo, após realizar a prática completa, o código individual foi digitado.
O robô de validação vai executar seu procedimento e no final, no GNU/Linux vai exibir a
saída básica com o resultado do aluno.
41 Manual Completo de Redes de Computadores com Debian GNU/Linux
Se o aluno atualizar a página WEB do aied (da prática), então a ferramenta deverá exibir
esse total de acertos também na interface WEB.
Veja que na interface WEB aparece o mesmo resultado. Considere assim a prática
entregue.
42 Manual Completo de Redes de Computadores com Debian GNU/Linux
2 Arquitetura e Sistema Operacional (atuando)
2.1 Arquitetura de um computador
Um PC é composto de placas de circuito impresso que interconectam vários componentes e
fornecem conectores para dispositivos periféricos. A placa principal neste tipo de sistema, a
placa-mãe, fornece as conexões que permitem a comunicação dos componentes do
sistema.
Esses canais de comunicação são normalmente chamados de barramentos de computador.
Esta seção destaca os componentes e barramentos com os quais um investigador deve
estar familiarizado. A Figura abaixo ilustra como os diferentes componentes discutidos
nesta seção são normalmente organizados.
Os dois componentes mais importantes da placa-mãe são o processador, que executa os
programas, e a memória principal, que armazena temporariamente os programas
executados e seus dados associados. O processador é comumente referido como unidade
central de processamento (CPU). A CPU acessa a memória principal para obter suas
instruções e, em seguida, executa essas instruções para processar os dados.
Ler da memória principal costuma ser dramaticamente mais lento do que ler da própria
memória da CPU. Como resultado, os sistemas modernos aproveitam várias camadas de
memória rápida, chamadas caches, para ajudar a compensar essa disparidade. Cada nível
de cache (L1, L2 e assim por diante) é relativamente mais lento e maior do que seu
predecessor. Na maioria dos sistemas, esses caches são integrados ao processador e a
cada um de seus núcleos. Se os dados não forem encontrados em um determinado cache,
eles devem ser buscados no cache de próximo nível ou na memória principal.
A CPU depende de sua unidade de gerenciamento de memória (MMU) para ajudar a
encontrar onde os dados estão armazenados. A MMU é a unidade de hardware que traduz
o endereço que o processador solicita para seu endereço correspondente na memória
principal. Conforme descreveremos mais adiante neste capítulo, as estruturas de dados
para gerenciar a tradução de endereços também são armazenadas na memória principal.
43 Manual Completo de Redes de Computadores com Debian GNU/Linux
Como uma determinada tradução pode exigir várias operações de leitura de memória, o
processador usa um cache especial, conhecido como buffer lookaside de tradução (TLB),
para a tabela de tradução MMU. Antes de cada acesso à memória, o TLB é consultado
antes de solicitar à MMU para realizar uma operação de tradução de endereço cara.
2.1.1 North and Southbridge
A CPU depende do controlador de memória para gerenciar a comunicação com a memória
principal. O controlador de memória é responsável por mediar solicitações potencialmente
simultâneas de memória do sistema do (s) processador (es) e dispositivos. O controlador de
memória pode ser implementado em um chip separado ou integrado no próprio
processador.
Em PCs mais antigos, a CPU conectava-se à ponte norte (hub controlador de memória)
usando o barramento frontal e a ponte norte conectada à memória principal por meio do
barramento de memória. Dispositivos (por exemplo, placas de redee controladores de
disco) foram conectados por meio de outro chip, chamado ponte sul ou hub controlador de
entrada / saída, que tinha uma única conexão compartilhada com a ponte norte para acesso
à memória e à CPU.
Para melhorar o desempenho e reduzir os custos dos sistemas mais novos, a maioria dos
recursos associados ao hub do controlador de memória agora estão integrados ao
processador. A funcionalidade restante do chipset, previamente implementada na ponte sul,
está concentrada em um chip conhecido como hub controlador da plataforma.
2.1.2 Acesso direto à memória
Para melhorar o desempenho geral, a maioria dos sistemas modernos fornece aos
dispositivos de E/S a capacidade de transferir diretamente os dados armazenados na
memória do sistema sem intervenção do processador. Esse recurso é chamado de acesso
direto à memória (DMA). Antes de o DMA ser introduzido, a CPU era totalmente consumida
durante as transferências de E/S e frequentemente agia como intermediária. Em
arquiteturas modernas, a CPU pode iniciar uma transferência de dados e permitir que um
controlador DMA gerencie a transferência de dados, ou um dispositivo de E/S pode iniciar
uma transferência independente da CPU.
Além de seu impacto óbvio no desempenho do sistema, o DMA também tem ramificações
importantes para a análise forense de memória. Ele fornece um mecanismo para acessar
diretamente o conteúdo da memória física de um dispositivo periférico sem envolver o
software não confiável em execução na máquina. Por exemplo, o barramento PCI oferece
suporte a dispositivos que atuam como mestres de barramento, o que significa que eles
podem solicitar o controle do barramento para iniciar transações. Como resultado, um
dispositivo PCI com funcionalidade bus master e suporte DMA pode acessar a memória do
sistema sem envolver a CPU.
Outro exemplo é a interface IEEE 1394, comumente conhecida como Firewire. O chip
controlador de host IEEE 1394 fornece um barramento de expansão serial ponto a ponto
destinado a conectar dispositivos periféricos de alta velocidade a um PC. Embora a
44 Manual Completo de Redes de Computadores com Debian GNU/Linux
interface IEEE 1394 seja normalmente encontrada nativamente apenas em sistemas de
ponta, você pode adicionar a interface a ambos desktops e laptops usando placas de
expansão.
2.1.3 Memória Volátil (RAM)
A memória principal de um PC é implementada com memória de acesso aleatório (RAM),
que armazena o código e os dados que o processador acessa e armazena ativamente. Em
contraste com o armazenamento de acesso sequencial normalmente associado a discos, o
acesso aleatório se refere à característica de ter um tempo de acesso constante,
independentemente de onde os dados estão armazenados na mídia. A memória principal na
maioria dos PCs é RAM dinâmica (DRAM). É dinâmico porque aproveita a diferença entre
um estado carregado e descarregado de um capacitor para armazenar um pouco de dados.
Para que o capacitor mantenha esse estado, ele deve ser atualizado periodicamente - uma
tarefa que o controlador de memória normalmente executa.
A RAM é considerada memória volátil porque requer energia para que os dados
permaneçam acessíveis. Assim, exceto no caso de ataques de inicialização a frio
(https://citp.princeton.edu/research/memory), depois que um PC é desligado, a memória
volátil é perdida. Esta é a principal razão pela qual a tática de resposta a incidentes "puxar a
tomada" não é recomendada se você planeja preservar as evidências sobre o estado atual
do sistema.
2.1.4 Arquiteturas de CPU
Como mencionado anteriormente, a CPU é um dos componentes mais importantes de um
sistema de computador. Para extrair com eficácia a estrutura da memória física e
compreender como o código malicioso pode comprometer a segurança do sistema, você
deve ter um conhecimento sólido do modelo de programação que a CPU fornece para
acessar a memória. Embora a seção anterior tenha enfocado a organização física do
hardware, esta seção enfoca a organização lógica exposta ao sistema operacional. Esta
seção começa discutindo alguns tópicos gerais que pertencem às arquiteturas de CPU e,
em seguida, destaca os recursos relevantes para a análise de memória.
Em particular, esta seção enfoca a organização de 32 bits (IA-32) e 64 bits (Intel 64),
conforme especificado no Intel 64 and IA-32 Architecture Software Developer.
Para que a CPU execute instruções e acesse os dados armazenados na memória principal,
ela deve especificar um endereço único para esses dados. Os processadores discutidos
neste livro aproveitam o endereçamento de bytes e a memória é acessada como uma
sequência de bytes. O espaço de endereço se refere a um intervalo de endereços válidos
usados para identificar os dados armazenados em uma alocação finita de memória. Em
particular, este livro se concentra em sistemas que definem um byte como uma quantidade
de 8 bits. Este esquema de endereçamento geralmente começa com o byte 0 e termina no
deslocamento do byte final de memória na alocação.
O único espaço de endereço contínuo exposto a um programa em execução é conhecido
como espaço de endereço linear. Com base nos modelos de memória discutidos no livro e
45 Manual Completo de Redes de Computadores com Debian GNU/Linux
seu uso de paginação, usamos os termos endereços lineares e endereços virtuais
alternadamente. Usamos o termo espaço de endereço físico para nos referir aos endereços
que o processador solicita para acessar a memória física.
A arquitetura IA-32 geralmente se refere à família de arquiteturas x86 que oferecem suporte
à computação de 32 bits. Em particular, ele especifica o conjunto de instruções e o
ambiente de programação para os processadores de 32 bits da Intel. O IA-32 é uma
pequena máquina endian que usa endereçamento de bytes. O software executado em um
processador IA-32 pode ter um espaço de endereço linear e um espaço de endereço físico
de até 4 GB. Como você verá posteriormente, você pode expandir o tamanho da memória
física para 64 GB usando o recurso IA-32 Physical Address Extension (PAE). Esta seção e
o restante do livro enfocam a operação de modo protegido da arquitetura IA-32, que é o
modo operacional que fornece suporte para recursos como memória virtual, paginação,
níveis de privilégio e segmentação. Este é o estado principal do processador e também o
modo em que a maioria dos sistemas operacionais modernos são executados.
A arquitetura IA-32 define uma pequena quantidade de memória extremamente rápida,
chamada de registradores, que a CPU usa para armazenamento temporário durante o
processamento. Cada núcleo do processador contém oito registros de uso geral de 32 bits
para realizar operações lógicas e aritméticas, bem como vários outros registros que
controlam o comportamento do processador. Esta seção destaca alguns dos registros de
controle relevantes para a análise de memória.
O registro EIP, também conhecido como contador de programa, contém o endereço linear
da próxima instrução a ser executada. A arquitetura IA-32 também possui cinco registros de
controle que especificam a configuração do processador e as características da tarefa de
execução. CR0 contém sinalizadores que controlam o modo de operação do processador,
incluindo um sinalizador que ativa a página CR1 é reservado e não deve ser acessado. CR2
contém o endereço linear que causou uma falha de página. CR3 contém o endereço físico
da estrutura inicial usada para tradução de endereço. Ele é atualizado durante as mudanças
de contexto quando uma nova tarefa é agendada. CR4 é usado para habilitar extensões
arquitetônicas, incluindo PAE.
Os processadores IA-32 implementam dois mecanismos de gerenciamento de memória:
segmentação e paginação. A segmentação divide o espaço de endereço linear de 32 bits
em vários segmentos de comprimento variável. Todas as referências de memória IA-32 são
endereçadas usando um seletor de segmento de 16 bits, que identifica um descritor de
segmento específico e um deslocamento de 32 bits no segmento especificado. Um descritor
de segmento é uma estruturade dados residente na memória que define a localização,
tamanho, tipo e permissões para um determinado segmento. Cada núcleo do processador
contém dois registros especiais, GDTR e LDTR, que apontam para tabelas de descritores
de segmento, chamadas de Tabela de Descritores Globais (GDT) e Tabela de Descritores
Locais, respectivamente. Os registros de segmentação CS (para código), SS (para pilha) e
DS, ES, FS e GS (cada um para dados) devem sempre conter seletores de segmento
válidos.
Embora a segmentação seja obrigatória, os sistemas operacionais discutidos neste livro
ocultam o endereçamento segmentado, definindo um conjunto de segmentos sobrepostos
46 Manual Completo de Redes de Computadores com Debian GNU/Linux
com endereço de base zero, criando assim a aparência de um único espaço de endereço
linear "plano" contínuo. No entanto, as proteções de segmentação ainda são aplicadas para
cada segmento e descritores de segmento separados devem ser usados para referências
de código e dados.
A paginação fornece a capacidade de virtualizar o espaço de endereço linear. Ele cria um
ambiente de execução no qual um grande espaço de endereço linear é simulado com uma
quantidade modesta de memória física e armazenamento em disco. Cada espaço de
endereço linear de 32 bits é dividido em seções de comprimento fixo, chamadas de páginas,
que podem ser mapeadas na memória física em uma ordem arbitrária. Quando um
programa tenta acessar um endereço linear, esse mapeamento usa diretórios de páginas
residentes na memória e tabelas de páginas para converter o endereço linear em um
endereço físico. No cenário típico de uma página de 4 KB, conforme mostrado na Figura
1-2, o endereço virtual de 32 bits é dividido em três seções, cada uma delas usada como
um índice na hierarquia da estrutura de paginação ou na página física associada.
A arquitetura IA-32 também suporta páginas de 4 MB, cuja tradução requer apenas um
diretório de página. Ao usar diferentes estruturas de paginação para diferentes processos,
um sistema operacional pode fornecer a cada processo a aparência de um ambiente de
programação única por meio de um espaço de endereço linear virtualizado. A Figura 1-3
mostra uma divisão mais detalhada dos bits que traduzem um endereço virtual em um
deslocamento na memória física.
2.2 Sistema Operacional
2.2.1 Gerenciamento de processo
2.2.2 Gerencimaento de memória
2.2.3 Sistema de Arquivos
2.2.4 Sistema de E/S
2.3 Estrutrua de Dados
47 Manual Completo de Redes de Computadores com Debian GNU/Linux
2.3.1 Tipos básicos de estruturas
2.3.2 Tipos complexos
48 Manual Completo de Redes de Computadores com Debian GNU/Linux
3 Virtualização (finalizado)
A virtualização usa software para criar uma camada de abstração sobre o hardware do
computador que permite que os elementos de hardware de um único computador -
processadores, memória, armazenamento e muito mais - sejam divididos em vários
computadores virtuais, comumente chamados de Máquinas Virtuais (VMs).
Cada VM executa seu próprio sistema operacional (SO) e se comporta como um
computador independente, embora esteja sendo executado em apenas uma parte do
hardware do computador subjacente real.
3.1 Recursos do capítulo
Todo o conteúdo externo ao texto pode ser obtido no link abaixo.
Os recursos externos podem ser obtidos neste link.
3.2 Introdução a Virtualização
A idéia de abstração é comum na área da Computação, veja que segundo Tanenbaum o
Sistema Operacional (SO) é uma abstração do hardware e naturalmente uma simplificação
da complexidade do Hardware. Em outro capítulo Tanenbaum afirma que estas abstrações
permite que se faça um isolamento de processos em "Caixas de Areia" utilizando
abstrações em abstrações.
A Virtualização de Sistemas Operacionais permite:
● Que se crie ambientes controlados para testes e experimentações;
● Isolar aplicações com algum risco negativo para o ambiente;
● Se execute aplicações legadas para Sistemas Operacionais descontinuados;
● Redução de parque de computadores reais com uso de Virtualização;
● Upgrade de sistemas;
● Aprendizado;
Hoje, a virtualização é uma prática padrão na arquitetura de TI corporativa. É também a
tecnologia que impulsiona a economia da computação em nuvem. A virtualização permite
que os provedores de nuvem atendam aos usuários com seu hardware físico de
computador existente; ele permite que os usuários da nuvem comprem apenas os recursos
de computação de que precisam, quando precisam, e escalem esses recursos de maneira
econômica conforme suas cargas de trabalho aumentam.
A virtualização traz vários benefícios para operadoras de data center e provedores de
serviços:
Eficiência de recursos: antes da virtualização, cada servidor de aplicativo exigia sua
própria CPU física dedicada - a equipe de TI comprava e configurava um servidor separado
para cada aplicativo que desejava executar. (TI preferia um aplicativo e um sistema
49 Manual Completo de Redes de Computadores com Debian GNU/Linux
operacional (SO) por computador por motivos de confiabilidade.) Invariavelmente, cada
servidor físico seria subutilizado. Por outro lado, a virtualização de servidor permite executar
vários aplicativos - cada um em sua própria VM com seu próprio sistema operacional - em
um único computador físico (normalmente um servidor x86) sem sacrificar a confiabilidade.
Isso permite a utilização máxima da capacidade de computação do hardware físico.
Gerenciamento mais fácil: substituir computadores físicos por VMs definidas por software
torna mais fácil usar e gerenciar políticas escritas no software. Isso permite que você crie
fluxos de trabalho automatizados de gerenciamento de serviços de TI. Por exemplo,
ferramentas automatizadas de implantação e configuração permitem que os
administradores definam coleções de máquinas virtuais e aplicativos como serviços, em
modelos de software. Isso significa que eles podem instalar esses serviços repetidamente e
de forma consistente, sem incômodos e demorados, e configuração manual sujeita a erros.
Os administradores podem usar políticas de segurança de virtualização para impor certas
configurações de segurança com base na função da máquina virtual. As políticas podem até
aumentar a eficiência dos recursos desativando as máquinas virtuais não utilizadas para
economizar espaço e capacidade de computação.
Tempo de inatividade mínimo: travamentos do sistema operacional e de aplicativos
podem causar tempo de inatividade e prejudicar a produtividade do usuário. Os
administradores podem executar várias máquinas virtuais redundantes lado a lado e fazer
failover entre elas quando surgem problemas. Executar vários servidores físicos
redundantes é mais caro.
Provisionamento mais rápido: comprar, instalar e configurar hardware para cada
aplicativo consome muito tempo. Desde que o hardware já esteja instalado, o
provisionamento de máquinas virtuais para executar todos os seus aplicativos é
significativamente mais rápido. Você pode até automatizá-lo usando um software de
gerenciamento e incorporá-lo aos fluxos de trabalho existentes.
As máquinas virtuais (VMs) são ambientes virtuais que simulam uma computação física na
forma de software. Eles normalmente incluem vários arquivos contendo a configuração da
VM, o armazenamento para o disco rígido virtual e alguns instantâneos da VM que
preservam seu estado em um determinado momento.
3.3 Hypervisors
Um hipervisor é a camada de software que coordena as VMs. Ele serve como uma interface
entre a VM e o hardware físico subjacente, garantindo que cada um tenha acesso aos
recursos físicos de que precisa para executar. Também garante que as VMs não interfiram
umas com as outras interferindo no espaço de memória ou nos ciclos de computação umas
das outras.
Existem dois tipos de Hypervisors:
● Os hypervisors tipo 1 ou “bare-metal” interagem com os recursos físicos
subjacentes, substituindo o sistema operacional tradicional por completo. Eles
geralmente aparecem em cenários de servidor virtual.
● Os hypervisors tipo 2 são executados como um aplicativoem um sistema
operacional existente. Mais comumente usados em dispositivos terminais para
executar sistemas operacionais alternativos, eles carregam uma sobrecarga de
50 Manual Completo de Redes de Computadores com Debian GNU/Linux
desempenho porque devem usar o sistema operacional host para acessar e
coordenar os recursos de hardware subjacentes.
3.4 Tipos de virtualização
Nesta seção, abordaremos os seguintes tipos de virtualização:
● Virtualização de desktop
● Virtualização de rede
● Virtualização de armazenamento
● Virtualização de dados
● Virtualização de aplicativos
● Virtualização de data center
● Virtualização de CPU
● Virtualização de GPU
● Virtualização Linux
● Virtualização de nuvem
3.4.1 Virtualização de desktop
A virtualização de desktop permite que você execute vários sistemas operacionais de
desktop, cada um em sua própria VM no mesmo computador.
Existem dois tipos de virtualização de desktop, a infraestrutura de desktop virtual (VDI)
executa vários desktops em VMs em um servidor central e os transmite para usuários que
fazem login em dispositivos thin client. Desta forma, o VDI permite que uma organização
forneça a seus usuários acesso a uma variedade de sistemas operacionais a partir de
qualquer dispositivo, sem instalar sistemas operacionais em nenhum dispositivo.
A virtualização de desktop local executa um hipervisor em um computador local,
permitindo ao usuário executar um ou mais sistemas operacionais adicionais naquele
computador e alternar de um sistema operacional para outro conforme necessário, sem
alterar nada no sistema operacional principal.
51 Manual Completo de Redes de Computadores com Debian GNU/Linux
3.4.2 Virtualização de rede
A virtualização de rede usa software para criar uma “visão” da rede que um administrador
pode usar para gerenciar a rede a partir de um único console. Ele abstrai elementos e
funções de hardware (por exemplo, conexões, switches, roteadores, etc.) e os abstrai em
software executado em um hipervisor. O administrador da rede pode modificar e controlar
esses elementos sem tocar nos componentes físicos subjacentes, o que simplifica
drasticamente o gerenciamento da rede.
Os tipos de virtualização de rede incluem rede definida por software (SDN), que virtualiza
hardware que controla o roteamento de tráfego de rede (chamado de "plano de controle") e
virtualização de função de rede (NFV), que virtualiza um ou mais dispositivos de hardware
que fornecem uma rede específica (por exemplo, um firewall, balanceador de carga ou
analisador de tráfego), tornando esses dispositivos mais fáceis de configurar, provisionar e
gerenciar.
Wellington, falar de GNS3
3.4.3 Virtualização de armazenamento
A virtualização de armazenamento permite que todos os dispositivos de armazenamento na
rede - sejam eles instalados em servidores individuais ou unidades de armazenamento
autônomas - sejam acessados e gerenciados como um único dispositivo de
armazenamento.
Especificamente, a virtualização de armazenamento agrupa todos os blocos de
armazenamento em um único pool compartilhado, a partir do qual eles podem ser atribuídos
a qualquer VM na rede, conforme necessário. A virtualização de armazenamento facilita o
provisionamento de armazenamento para VMs e aproveita ao máximo todo o
armazenamento disponível na rede.
3.4.4 Virtualização de dados
As empresas modernas armazenam dados de vários aplicativos, usando vários formatos de
arquivo, em vários locais, desde a nuvem até hardware e sistemas de software no local. A
virtualização de dados permite que qualquer aplicativo acesse todos esses dados -
independentemente da fonte, formato ou localização.
As ferramentas de virtualização de dados criam uma camada de software entre os
aplicativos que acessam os dados e os sistemas que os armazenam. A camada traduz a
solicitação de dados de um aplicativo ou consulta conforme necessário e retorna resultados
que podem abranger vários sistemas. A virtualização de dados pode ajudar a quebrar os
repostiŕorios de dados quando outros tipos de integração não são viáveis, desejáveis ou
acessíveis.
3.4.5 Virtualização de aplicativos
A virtualização de aplicativos executa o software do aplicativo sem instalá-lo diretamente no
sistema operacional do usuário. Isso difere da virtualização de desktop completa
52 Manual Completo de Redes de Computadores com Debian GNU/Linux
(mencionada acima) porque apenas o aplicativo é executado em um ambiente virtual - o
sistema operacional no dispositivo do usuário final é executado normalmente. Existem três
tipos de virtualização de aplicativos:
Virtualização de aplicativo local: O aplicativo inteiro é executado no dispositivo endpoint,
mas é executado em um ambiente de tempo de execução em vez de no hardware nativo.
Streaming do aplicativo: o aplicativo reside em um servidor que envia pequenos
componentes do software para serem executados no dispositivo do usuário final quando
necessário.
Virtualização de aplicativo baseada em servidor O aplicativo é executado inteiramente
em um servidor que envia apenas sua interface de usuário ao dispositivo cliente.
Virtualização de data center abstrai a maior parte do hardware de um data center em
software, permitindo que um administrador divida um único data center físico em vários data
centers virtuais para clientes diferentes.
Cada cliente pode acessar sua própria infraestrutura como serviço (IaaS), que seria
executada no mesmo hardware físico subjacente. Os data centers virtuais oferecem uma
entrada fácil na computação baseada em nuvem, permitindo que uma empresa configure
rapidamente um ambiente de data center completo sem comprar hardware de infraestrutura.
3.4.6 Virtualização de CPU
A virtualização da CPU (unidade central de processamento) é a tecnologia fundamental que
torna possíveis os hipervisores, as máquinas virtuais e os sistemas operacionais. Ele
permite que uma única CPU seja dividida em várias CPUs virtuais para uso por várias VMs.
No início, a virtualização da CPU era totalmente definida por software, mas muitos dos
processadores de hoje incluem conjuntos de instruções estendidas que suportam a
virtualização da CPU, o que melhora o desempenho da VM.
3.4.7 Virtualização de GPU
Uma GPU (unidade de processamento gráfico) é um processador multi-core especial que
melhora o desempenho geral da computação, assumindo o processamento gráfico ou
matemático pesado. A virtualização de GPU permite que várias VMs usem todo ou parte do
poder de processamento de uma única GPU para vídeo mais rápido, inteligência artificial
(IA) e outros aplicativos gráficos ou matemáticos.
As GPUs de passagem disponibilizam toda a GPU para um único sistema operacional
convidado.
As vGPUs compartilhadas dividem os núcleos físicos da GPU entre várias GPUs virtuais
(vGPUs) para uso por VMs baseadas em servidor.
Virtualização Linux
O Linux inclui seu próprio hipervisor, chamado de máquina virtual baseada em kernel
(KVM), que suporta extensões de processador de virtualização da Intel e AMD para que
você possa criar VMs baseadas em x86 a partir de um sistema operacional Linux host.
53 Manual Completo de Redes de Computadores com Debian GNU/Linux
Como um sistema operacional de código aberto, o Linux é altamente personalizável. Você
pode criar VMs executando versões do Linux personalizadas para cargas de trabalho
específicas ou versões com segurança reforçada para aplicativos mais confidenciais.
3.4.8 Virtualização de nuvem
Conforme observado acima, o modelo de computação em nuvem depende da virtualização.
Ao virtualizar servidores, armazenamento e outros recursos físicos de data center, os
provedores de computação em nuvem podem oferecer uma variedade de serviços aos
clientes, incluindo o seguinte:
Infraestrutura como serviço (IaaS): recursos virtualizados de servidor, armazenamento e
rede que você pode configurar com base em seus requisitos.
Plataforma como serviço (PaaS): ferramentas de desenvolvimento virtualizadas, bancos
de dados e outros serviços baseados em nuvem que você pode usar para construir seuspróprios aplicativos e soluções baseados em nuvem.
Software como serviço (SaaS): aplicativos de software que você usa na nuvem. SaaS é o
serviço baseado em nuvem mais abstraído do hardware.
3.6 Práticas da aula
Nesta sessão o aluno deve realizar as práticas na sequência, caso ocorra problemas é
possível que o mesmo deva ter a conhecimento para desfazer, isto já é levado em
consideração.
3.6.1 Prática 98a917ce 01: Criando o ambiente da aula
Nesta prática o aluno deve utilizar instalar os softwares necessários e instalar o Debian:
1. Faça download (ver tópico de links neste Livro):
a. VirtualBox;
b. Cd de instalação do Debian;
2. Instale o Debian e configure da seguinte forma (utilize este link
https://youtu.be/uIf7ip5KaSw):
a. English;
b. usuário: usuario
c. senha: 123456
3. Instale o sudo, utilize este link: https://youtu.be/_B5zdj0871o
4. Instale o programa aied, utilize este link: https://youtu.be/dG6Reqp2ukc
Execute o robô de validação aied conforme comando abaixo.
sudo aied validar 98a917ce checkpoint01
https://youtu.be/uIf7ip5KaSw
https://youtu.be/_B5zdj0871o
https://youtu.be/dG6Reqp2ukc
54 Manual Completo de Redes de Computadores com Debian GNU/Linux
4 Sistema de arquivos no GNU/Linux e principais
diretórios
ATENÇÃO WELLINGTON, ADICIONAR STAT
Um sistema de arquivos GNU/Linux é uma coleção estruturada de arquivos em uma
unidade de armazenamento secundário, uma partição é um segmento da memória e
contém alguns dados específicos e em nossa máquina, pode haver várias partições da
memória.
Sistema de Arquivos no Linux Teoria e prática completa - Parte 1
O sistema de computador de uso geral precisa armazenar dados sistematicamente para
que possamos acessar facilmente os arquivos em menos tempo. Ele armazena os dados
em sistemas secundários de armazenamento, tal como um HD, um SSD, Pendrive, etc..
O computador salva os dados no armazenamento principal3 (Memória RAM) e ele pode
perder os dados se for desligado, o armazenamento de dados é preferido em sistemas
secundários que em comparação com a RAM padrão não perde dados após um
desligamento.
Escrita em um sistema de arquivos
4.1 Recursos do capítulo
Todo o conteúdo externo ao texto pode ser obtido no link abaixo.
Os recursos externos podem ser obtidos neste link.
3 No início os processos foram projetados para serem executados por inteiro na posição 0 de uma
memória, e naturalmente isto exige que todos os dados estejam nesta, o aluno deve ler o capítulo 1
do livro: Sistemas Operacionais Modernos do autor Tanenbaum.
https://www.youtube.com/watch?v=8AQVVeJbvEI
http://www.aied.com.br/site/pages/recurso.php?id=b70bde2f-3894-408a-45c1-4f98a9ad912a
55 Manual Completo de Redes de Computadores com Debian GNU/Linux
4.2 Virtual File System
O sistema de arquivos GNU/Linux é geralmente uma camada embutida de um sistema
operacional Linux usada para lidar com o gerenciamento de dados do armazenamento. Isso
ajuda a organizar o arquivo no armazenamento em disco. Ele gerencia o nome do arquivo,
o tamanho do arquivo, a data de criação e muito mais informações sobre um arquivo.
O sistema de arquivos do GNU/Linux tem uma estrutura de arquivos hierárquica, pois
contém um diretório raiz e seus subdiretórios e todos os outros diretórios podem ser
acessados a partir do diretório raiz a partir de comandos de navegação, um detalhe
importante é que uma partição geralmente possui apenas um sistema de arquivos.
Camada de abstração que ofusca a complexidade do hardware
Um sistema de arquivos é projetado de forma que possa gerenciar e fornecer espaço para
dados de armazenamento não voláteis. Todos os sistemas de arquivos exigiam um
namespace que é uma metodologia de nomenclatura e organização. O namespace define o
processo de nomenclatura, o comprimento do nome do arquivo ou um subconjunto de
caracteres que podem ser usados para o nome do arquivo. Ele também define a estrutura
lógica dos arquivos em um segmento de memória, como o uso de diretórios para organizar
os arquivos específicos. Depois que um namespace é descrito, uma descrição de
metadados deve ser definida para esse arquivo específico.
No GNU/Linux a montagem do sistema de arquivo está codificada na biblioteca fs.h e com
esta biblioteca pode-se montar ou desmontar qualquer hardware devidamente acoplado e
operacional.
1. #include <linux/fs.h>
2.
3. extern int register_filesystem(struct file_system_type *);
4. extern int unregister_filesystem(struct file_system_type *);
Quando uma solicitação é feita para montar um sistema de arquivos em um diretório em seu
namespace, o Virtual File System chamará o método mount() apropriado para o sistema de
arquivos específico.
A estrutura de dados precisa oferecer suporte a uma estrutura de diretório hierárquica; esta
estrutura é usada para descrever o espaço em disco disponível e usado para um
56 Manual Completo de Redes de Computadores com Debian GNU/Linux
determinado bloco. Também contém outros detalhes sobre os arquivos, como tamanho do
arquivo, data e hora de criação, atualização e última modificação.
Além disso, ele armazena informações avançadas sobre a seção do disco, como partições
e volumes. Os dados avançados e as estruturas que eles representam contêm as
informações sobre o sistema de arquivos armazenado na unidade; é distinto e independente
dos metadados do sistema de arquivos.
O sistema de arquivos Linux contém uma arquitetura de implementação de software do
sistema de arquivos em duas partes. Considere a imagem abaixo:
Na figura acima o Virtual File System fornece um único conjunto de comandos para o kernel
e os desenvolvedores acessarem o sistema de arquivos. Este sistema de arquivos virtual
requer o driver de sistema específico para fornecer uma interface com o sistema de
arquivos.
O sistema de arquivos requer uma API para acessar as chamadas de função para interagir
com os componentes do sistema de arquivos, como arquivos e diretórios. API facilita tarefas
como criação, exclusão e cópia de arquivos. Ele facilita um algoritmo que define a
organização dos arquivos em um sistema de arquivos.
1. struct super_operations {
2. struct inode *(*alloc_inode)(struct super_block *sb);
3. void (*destroy_inode)(struct inode *);
4. void (*dirty_inode) (struct inode *, int flags);
5. int (*write_inode) (struct inode *, int);
6. void (*drop_inode) (struct inode *);
7. void (*delete_inode) (struct inode *);
8. void (*put_super) (struct super_block *);
9. int (*sync_fs)(struct super_block *sb, int wait);
10. int (*freeze_fs) (struct super_block *);
11. int (*unfreeze_fs) (struct super_block *);
12. int (*statfs) (struct dentry *, struct kstatfs *);
13. int (*remount_fs) (struct super_block *, int *, char *);
14. void (*clear_inode) (struct inode *);
15. void (*umount_begin) (struct super_block *);
57 Manual Completo de Redes de Computadores com Debian GNU/Linux
16. int (*show_options)(struct seq_file *, struct dentry *);
17. ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t);
18. ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t);
19. int (*nr_cached_objects)(struct super_block *);
20. void (*free_cached_objects)(struct super_block *, int);
21. };
Onde:
alloc_inode: este método é chamado por alloc_inode() para alocar memória para struct
inode e inicializá-lo;
destroy_inode: este método é chamado por destroy_inode() para liberar recursos alocados
para struct inode;
dirty_inode: este método é chamado pelo VFS para marcar um inode sujo e naturalmente
poderá ser descartado.
write_inode: este método é chamado quando o VFS precisa gravar um inode no disco;
drop_inode: chamado quando o último acesso ao inode é descartado, elimina o inode;
delete_inode: chamado quando o VFS deseja excluir um inode;
put_super: chamado quando o VFS deseja liberar o superbloco (ou seja, desmontar);
sync_fs: chamado quando o VFS está gravando todos os dados sujos associados a um
superbloco;
freeze_fs: chamado quando o VFS está bloqueando um sistema de arquivos e forçando-o a
um estado consistent;
unfreeze_fs: chamado

Continue navegando