NPDD/Baobáxia/RedesAutonomasMontandoRedeAutonoma
Página principal > Redes Autônomas (Felipe Fonseca e Vincenzo Tozzi-Brasil)
Conteúdo |
Montando uma Rede Autônoma
A analogia servidor/cliente, frequentemente usada para descrever a comunicação entre computadores, costuma levar a alguns equívocos de interpretação. O mais grave desses equívocos é as pessoas pensarem que seus próprios computadores só servem para acessar informação ou serviços disponíveis "na internet". A rede vira um não-lugar mistificado, uma espécie de ambiente espectral sem margens definidas onde as coisas acontecem de forma algo mágica. No entanto, toda rede tem uma materialidade: surge de processos que rodam em um ou mais computadores conectados. Esses processos compõem o que podemos chamar serviços de rede. A maioria desses serviços se baseia em uma arquitetura distribuída fundada em protocolos livres e abertos, o que significa que no limite qualquer computador ou dispositivo conectado em rede é um servidor em potencial. Isso também quer dizer que qualquer rede local, mesmo que não esteja conectada à internet, pode hospedar diversos serviços de armazenamento, compartilhamento e circulação de informação.
Este tutorial tem por objetivo demonstrar algumas dessas possibilidades, com especial ênfase na criação de serviços de rede locais com o uso de software livre. Supomos que você tenha uma familiaridade básica com o terminal de linha de comando. Vamos tratar de alguns cenários específicos:
- Transformar um computador em servidor local a partir do sistema operacional Ubuntu Linux (ou qualquer outro sistema operacional, com as devidas adaptações).
- Criar uma rede local autônoma, utilizando um sistema operacional alternativo (dd-wrt) no roteador.
- Explorar possibilidades de sincronização de arquivos em diferentes redes.
1. Transformando seu computador em um servidor
São inúmeros os serviços que podem ser implementados em uma rede local. Vamos tratar aqui dos que nos parecem ter um maior potencial para utilização em uma rede autônoma. Partimos do princípio de que você está em um computador rodando Ubuntu Linux. Para fazer essas primeiras configurações, você precisará uma conexão à internet, ou então de acesso a um repositório local. Uma vez que os serviços estejam configurados, a internet não será mais necessária. Também estamos considerando que já existe uma rede local, conectada a um hub ou roteador, para que outras pessoas possam acessar os serviços.
Antes de começar, rode o comando abaixo para atualizar seus repositórios:
$ sudo apt-get update
Costumamos também instalar alguns softwares como o Aptitude para facilitar a instalação de outros softwares, o SSH para acessar remotamente o computador via linha de comando e alguns softwares que podem ser úteis para monitorar e diagnosticar a rede.
$ sudo aptitude install aptitude ssh nmap iptraf wavemon
O computador vai baixar, instalar e configurar esses softwares. Você não precisa fazer mais nada.
1.1. Servidor LAMP
A web, ou WWW, é um dos mais versáteis serviços de rede, e justamente por isso foi uma das maiores responsáveis pela popularização da internet. Permite que se disponibilizem arquivos que podem ser acessados por qualquer navegador de internet (como o Firefox, Chrome e outros). A web baseia-se em uma linguagem estruturada chamada HTML. O servidor web mais utilizado no mundo é um software livre e aberto chamado Apache. Sua funcionalidade pode ser expandida de forma virtualmente infinita com softwares adicionais como o interpretador de hipertexto PHP e o servidor de banco de dados MySQL (esse conjunto de softwares é conhecido como LAMP - linux, apache, mysql, php). Vamos começar instalando esses softwares.
$ sudo aptitude install apache2 php5 php5-mysql mysql-server
Finalizada a instalação, você pode verificar se tudo deu certo abrindo o Firefox ou outro browser, clicando na barra de endereços dele e digitando "http://localhost" ou o IP de sua máquina (descubra o IP pelo terminal, digitando "ifconfig"). Normalmente, você será direcionado a uma página dizendo que a instalação deu certo, como "It works" ou algo parecido.
A partir do servidor LAMP, uma infinidade de serviços podem ser utilizados. Alguns exemplos são diversos sistemas livres de gestão de sites. Entre os mais conhecidos, estão:
* http://wordpress.org * http://drupal.org * http://mediawiki.org
Outros sistemas interessantes pela versatilidade ou porque usam poucos recursos do servidor são:
* http://wikkawiki.org * http://hotglue.org * http://pmwiki.org
Alguns desses sistemas necessitam configurações específicas do seu servidor LAMP (bibliotecas adicionais como php5-gd ou módulos como o mod_rewrite). Consulte a documentação dos sistemas a esse respeito.
1.2. Servidor uPNP/DLNA
O uPNP e o DLNA são um tipo de serviço web que permite o compartilhamento e a reprodução de arquivos multimídia. Novas gerações de televisores, videogames e outros aparelhos já trazem clientes uPNP instalados. Smartphones também contam com aplicativos específicos para acessar conteúdo via uPNP. Vamos usar o ushare para montar uma espécie de biblioteca multimídia baseada em uPNP no Linux.
$ sudo aptitude install ushare
São necessárias algumas configurações "manuais", no arquivo /etc/ushare.conf
$ sudo gedit /etc/ushare.conf
No editor, insira um nome para a biblioteca.
USHARE_NAME=nuboteca
Especifique também qual é a interface de rede pela qual o servidor se conecta. O padrão é eth0, a placa de rede física. Aqui na Nuvem, usei a placa wifi wlan0:
USHARE_IFACE=wlan0
Também é necessário informar onde os arquivos de mídia estão armazenados. No nosso caso, é:
USHARE_DIR=/home/zasf/zasf
Salve o arquivo e depois reinicie o servidor:
$sudo service ushare restart
1.3. Servidor de bate-papo
O IRC foi um dos primeiros formatos de bate-papo via internet a se popularizar. Por usar pouca banda de transferência de dados, funciona muito bem em lugares com conexão lenta ou instável. Os servidores de IRC também costumam exigir pouco processamento e memória, e podem ter suas funcionalidades estendidas com chatbots e outros softwares. Vamos usar o ngircd como servidor:
$sudo aptitude install ngircd
Ele já funciona por padrão, mas é interessante personalizar algumas opções, editando o arquivo de configuração.
$gksudo gedit /etc/ngircd/ngircd.conf
Vamos mudar o nome da rede, que precisa ter um ponto no meio:
Name = nuboteca.local
E também as informações de Admin:
AdminInfo1 = Nuvem AdminInfo2 = Nuvem.tk AdminEMail = nuvem@nuboteca
Também é interessante uma descrição sobre o servidor IRC.
Info = Servidor IRC da Nuvem
Salve o arquivo de configuração.
O ngircd tem também o MOTD (frase do dia), uma mensagem de boas-vindas aos usuários, que pode ser editada assim:
$ gksudo /etc/ngircd/ngircd.motd
Depois de salva a configuração, reinicie o servidor:
$ sudo service ngircd restart
Para testar o servidor IRC, instale algum cliente em sua máquina. O irssi, por exemplo, roda em linha de comando:
$ sudo aptitude install irssi
Já o Xhat funciona em modo gráfico:
$sudo aptitude install xchat
Testando: abra o software cliente de IRC. Vamos começar conectando ao servidor IRC. Digite:
/server localhost
Entre em uma sala de teste, digitando simplesmente
/join #teste
Qualquer outra pessoa em sua rede local já pode entrar no servidor IRC, trocando o endereço do servidor localhost pelo seu número de IP. Existem clientes de IRC para virtualmente todas as plataformas de computação. Além dos já citados para GNU/Linux, há o KVIrc para Mac OS e o próprio Xchat para Windows.
1.4. Rádio online
O Icecast é um software de stream multimídia, que pode ser usado para transmissões ao vivo de áudio ou vídeo. Instale o servidor com:
$sudo aptitude install icecast2
A configuração do Icecast fica em um arquivo XML. Vamos editá-la:
$gksudo gedit /etc/icecast/icecast.xml
É bom mudar as senhas que vêm por padrão:
<source-password>novasenha</source-password> <relay-password>novasenha1</relay-password>
<admin-user>admin</admin-user> <admin-password>novasenha2</admin-password>
Mude também o hostname para coincidir com o nome de seu computador:
<hostname>nuboteca</hostname>
Em geral, não é necessário criar uma configuração complexa com nomes de usuário acessados a transmissões específicas. Se for necessário, consulte os comentários no próprio arquivo de configuração, na seção <mount>.
Depois de salvar o arquivo de configuração, reinicie o servidor icecast com
$sudo service icecast2 restart
O Icecast possui uma interface web, acessível pelo browser em http://localhost:8000.
A transmissão via Icecast exige softwares específicos. Alguns exemplos são o darkice (em linha de comando, muito leve), darksnow (interface gráfica simples) e idjc (solução mais complexa, com gerenciamento de playlists e outros recursos). Consulte os tutoriais publicados pelo estudiolivre sobre a transmissão via Icecast: Darksnow+Darkice, IDJC
O Icecast também pode ser usado para transmissão de vídeo. Para isso, utilize algum software como o Theorur: http://theorur.sarava.org
1.5. Outros serviços
Com os softwares citados acima, já temos um pacote de serviços de rede bastante abrangente: web, acesso a acervo multimídia, bate-papo e transmissão ao vivo. Havendo interesse podem ser implementados muitos outros sistemas, como o editor colaborativo de documentos Etherpad, o gerenciador e reprodutor de música MPD, o servidor de telefonia sobre IP Asterisk, etc. O interessante é que esse conjunto de serviços seja adequado às necessidades locais da rede.