Transforme o seu Ubuntu num simples router
Recentemente um colega questionou-me se poderia transformar um simples PC num router para integrar numa pequena rede da empresa. Na prática, os equipamentos de rede que conhecemos actualmente não são nada mais que potentes computadores, “embalados” numa caixa bonita, que correm um sistema operativo especifico e que auxiliam nas diversas decisões de uma rede de dados.
Hoje vamos ensinar como transformar um Ubuntu num router.
Vamos considerar que possui uma máquina com duas ou mais placas de rede (cada uma ligada a uma rede distinta), e pretende que o seu Ubuntu seja o equipamento central, responsável pelo encaminhamento de pacotes. Com qualquer GNU/Linux, o utilizador tem a capacidade de implementar mecanismos de NAT (Network Address Translation), activar o redireccionamento de portas, dar prioridade a determinado tipo de tráfegom etc,...ou seja, dotar o sistema de funcionalidades que normalmente estão disponíveis em routers. Vamos a isso!
Cenário
Vamos então considerar que o nosso Ubuntu irá funcionar como router, permitindo que os PC’s da rede local (com endereçamento privado) se liguem à Internet através do IP público configurado no Ubuntu (transformado em router).
Para este artigo, vamos então considerar o seguinte:
- WAN – eth0 da máquina com Ubuntu, que terá configurado um IP público
- LAN - eth1 da máquina com Ubuntu, que terá configurado um IP Privado
Nota: Para a rede LAN vamos usar a seguinte rede: 192.168.1.0/24
Configuração da máquina com Ubuntu
Passo 1 - Configuração da interface de rede eth0 - WAN
A configuração a aplicar a esta interface é a que será fornecida pelo ISP. A configuração deverá ser efectuada no ficheiro:
/etc/network/interfaces |
Passo 2 - Configuração da interface de rede eth1 – LAN
A placa eth1, como referido, funcionará como gateway para a rede local, isto é, todos as comunicações das máquinas da rede LAN para fora dessa rede (ou seja, para fora da rede 192.168.1.0/24) devem passar pelo router Ubuntu.
Na interface eth1 do router Ubuntu devem efectuar então a seguinte configuração (que deve acrescentar no ficheiro /etc/network/interfaces)
iface eth1 inet static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 |
Passo 3- Configuração do DNS
Para que haja resolução de nomes em IPs, é necessário indicar no router Ubuntu os servidores de DNS. Para este exemplo vamos usar os do Google. Para isso acedemos ao ficheiro: /etc/resolv.conf e indicamos os seguintes servidores:
nameserver 8.8.8.8 # Servidor de DNS primário nameserver 8.8.4.4 # Servidor de DNS secundário |
Passo 4 – Configuração do mecanismo de NAT + IPTables
A tradução de um endereço privado num endereço público é definido como NAT(Network Address Translation) e está definido no RFC 1631 – saber mais aqui
O IPtables é um mecanismo de segurança que permite controlar tráfego IP ao nível dos pacotes (layer 3). De uma forma geral, com o iptables podemos definir uma sequência de regras que permitem ou bloqueiam determinados serviços/aplicações. Os serviços/aplicações usam normalmente o protocolo UDP ou TCP.
Configuração
Para que as máquinas da rede privada possam aceder à Internet é necessário activar e configurar no router Ubuntu o mecanismo de tradução de endereços usado as seguintes linhas:
Nota: É importante que não tenham qualquer configuração no IPTables.
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE iptables --append FORWARD --in-interface eth1 -j ACCEPT |
Após a configuração das regras do IPTables, é necessário activar o mecanismo de encaminhamento de pacotes. Para isso basta executar o seguinte comando:
sudo echo 1 > /proc/sys/net/ipv4/ip_forward |
Após as configurações anteriores, basta reiniciar o serviço iptables.
service iptables restart |
Passo 5- Configuração das máquinas da LAN
As configurações a atribuir às máquinas da rede LAN deve ser as seguintes:
IP: 192.168.1.X (onde x pode estar entre 2 e 254)
Máscara: 255.255.255.0
Gateway: 192.168.1.1
DNS: 192.168.1.1
Para testarem se tudo está a funcionar, basta que efectuem, a partir de uma máquina da LAN, um ping para o gateway e um ping para uma máquina fora da vossa rede.
Exemplo:
ping 192.168.2.1
ping 8.8.8.8
ping www.google.com
Esperamos que tudo funciona do vosso lado. Caso contrário deixem as vossas duvidas/problema que nós temos todo o gosto em ajudar.
Este artigo tem mais de um ano
Boa ideia, mas … qual é a vantagem ? Gastar 300W/h de energia?. Um router barato gasta uns 5W … Se estiverem ligados 24h/dia … 300x24x365 … contas feitas dá cerca de 500 euros por ano 🙂 … vou pelo router comercial por hardware 🙂
Se fores por essa ordem de ideias, compras tudo 🙂 Claro que nao estamos a falar de ter isto em casa..via meter um router doméstico numa rede 20 ou 30 utilizadores 😀
Ok, reconheço que quando passei os olhos pelo artigo pensei em mim e logo numa rede doméstica com 4 a 10 utilizadores (pelo que não encontrei qualquer interesse na proposta).
Gostaria, ainda assim, de ver estudos sobre os custos energéticos das diferentes opções possíveis. Algo que o PPlware poderia ajudar lançando discussões sobre o assunto.
Tenho 3 medidores de consumo e 1 geral. A troca de uma TV CRT por LCD foi paga em 1 ano. Já só tenho 1 computador fixo em casa (um dos filhos gosta de jogos). Após algumas políticas ecológicas, em 3 anos, baixei a fatura EDP de 260 para 170 euros/mês (total de uma habitação de 4 pessoas não considerando o aumento do preço do KWh)
Já dei aulas em salas de informática com 16 computadores (no verão não se aguenta com o calor … no inverno até que não é mau … mas esse calor é certamente fatura energética)
Bem, proponho que se lance uma discussão sobre o assunto, hoje há medidores de consumo bem baratos, e seria uma medalha ecológica para o PPlware 🙂
mas isso é para uso domestico…
mete la uma coisa de 5 watts a bombar numa rede domestica…e secalhar ainda a servir dns e dhcp…hehehe isso não aguenta 😀
Pedro…o vicio em CentOS é grande 😀 ?!
“/etc/sysconfig/network-scripts/ifcfg-eth0”
“/etc/sysconfig/network-scripts/ifcfg-eth1”
cmps
quero dizer numa rede de uma empresa…
Em casa aguenta…quer dizer …vai aguentando…ficas com pouco cache para dns, mas aguenta com uns reboots pelo meio e tal 😀
cmps
Sou rendido ao Centos 🙂 eh eh eh, ja vi!
Um cara aqui do Brasil montou um pc de baixo consumo: http://forum.clubedohardware.com.br/pc-economico-internet/520709?t=520709
“PC econômico para Internet e NAS”
Tenho uma coisa dessas a funcionar numa escola de 2 e 3 ciclos , serve para dividir a rede da área administrativa da área escolar .. Tem 4 placas de rede, uma para internet, uma placa para área administrativa, outra para área escolar e ainda uma para acesso a uma vpn
Excelente…muito bem 🙂
Ca em casa mora um router raspberry pi e o consumo e inferior a 5 W. 🙂
Ora nem mais.. 🙂 O tutorial está aqui feito 🙂
Aqui feito ?
É uma boa solução para uma pequena rede ou até para uma rede doméstica onde haja a necessidade de ter um computador sempre ligado por qualquer motivo. As IPTables são uma ferramenta muito poderosa e permite fazer muita coisa (se não quase tudo). Para além disto, existem serviços que se podem colocar numa maquina destas que não existem num router “normal”. Para além do Ubuntu, existem outras distribuiçoes (por exemplo a Zentyal) que é mais simples de usar e configurar para este tipo de aplicacções.
Em relação ao problema especifico de ter um servidor deste tipo ligado em ambiente domestico em regime 24h/7, eu tenho um casa com algumas utilidades e desenvolvi uma solução em que o servidor só liga quando outros computadores estão ligados na rede, caso contrário está desligado. Reduz bastante o desperdicio de energia e é “effortless” para o utilizador.
Boas, alguem sabe +/- quanto gastará ter um pc com ubuntu server ligado 24/7? fonte de 350W, core duo 1.6ghz.
cumprimentos.
O meu é um AMD Atlhon 64 2400+ e ele gasta à volta dos 100w (medidos). Tem dois discos também.
podes sempre fazer underclock para poupares uns watts, se o deixares a 1,2Ghz ou até menos será suficiente para aguentar com o Ubuntu e gerires a tua rede toda (se somente fizer isto claro)
Ficará algo semelhante a um microTik… mas numa caixa maior (e, como já disseram, com mais consumo). Isto porque os SOs embutidos nos microTiks são linuxs alterados. Ah! E será, espero eu, bem melhor que os microTiks!
microTiks…belas máquinas! 🙂
Ui! Grandes máquinas! Sempre a fazer reset!
boas…
O alto consumo, depende da maquina que tens em mente…
Mas o exercício serve para todos os casos 😉
cmps
Claro!
Raspberry Pi ao poder!
Cumps
pero si le pones al pc con ubuntu un servidor DLNA, un Bittorrent ya la cosa es mas interesante porque u router normal aunque se pueda con openwrt siempre falla al intentar ver peliculas dos o as personas al mismo tiempo, algo que el pc ubuntu lo haria con una “tranquilidad” que daria enviadia al mejor router del mundo
Mikrotik e o resto é conversa e desperdicio de energia
@Pedro Pinto
Obrigado por mais um contributo educativo no pplw,
Concordo. O Pedro Pinto é dos melhores, ou o melhor, “artiguista” do PPLware! Parabéns e que continues assim 😉
Que ideia mais demagogica.
Só acrescentar que se pode fazer isto desde 1995 .
Acho que vale pela ideia, para se ficar com mais uma possibilidade para desenrascar qualquer coisa urgente sem outros meis ao dispor, mas acho que nao passar disso seja pra quem for.. ate pro tal “amigo” do pedro que lhe ajuda…lol
Ora nem mais 🙂
porque dizes isso?
alto debito??
Os equipamentos com bastante hardware dedicado, retiram do proc muita coisa, mas para chegares a valores desses é preciso muita fruta…
cmps
Uma fonte de 350W nao consome 350W.
Pode utilizar NO MAXIMO 350W.
easyhotspot.inov.asia tem um iso com o ubuntu 9 totalmente configurado para hotspot acho que funciona dentro da mesma coisa é só queimar o cd e instalar o SO e ligar os cabos de rede mt bom mesmo
Por favor testem o endian firewaLL Community com squid e iptables. Para mim o melhor router / proxy. Melhor mesmo que algumas soluçoes pagas e este é free. Tenho a trabalhar no meu trabalho à anos. Deem a vossa opiniao depois de testarem
hum.. obrigado pela partilha, vou testar de certeza
http://www.endian.com/us/community/download/
Já testei e “WOOooww””
muito simples de instalar/configurar e funciona bem, bons reports e faz muito bem o que diz =)
nao explorei muito mais, só vi que é simples de instalar e por a funcionar e interface do browser é muito boa tb
thanks pela partilha
Olá e Parabens Pedro pelo pelo artigo, eu tb sou fan redhat / centos (como podem ver pelo meu site)
a minha contribuiçao para este artigo, tanto quanto sei, este comando nao “resiste” um reboot:
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
isto foi uma regra que aprendi, para quem quer tirar a certificação, qualquer alteração que façam no sistema, tem de “sobreviver” a um reboot
entao (corrijam-me se estive errado), esta alteração deve ser feita aqui:
/etc/sysctl.conf
(para ubuntu deve ser um pouco diferente…)
boas..
Se for para ficar de forma persistente sim, ou com um script…uma coisa qualquer(não tão elegante).
cmps
sim, e editar /etc/sysctl.conf
adicionar “net.ipv4.ip_forward = 1”
salvar, sair
parece a mais a elegante, pelo menos para quem quer passar na certificação de Redhat ou Linux “LPI”
tambem está um bom exemplo aqui: http://www.ducea.com/2006/08/01/how-to-enable-ip-forwarding-in-linux/
Acho que é a opção mais correcta…se for para ficar de forma definitiva…
Se for para testes enquanto a coisa não se torna definitiva, podes usar a pasta virtual /proc
cmps
o sysctl serve para fazer load de configurações no kernel…e como tu disses-te, não resiste a um reboot/halt.
cmps
O ideal era arranjar um mini pc qualquer barato e com baixo consumo para isto.
Olá Pedro, bom dia.
Muito interessante sua solução e sua explicação. Queria saber se é possível usa-la e como configura-la, no seguinte cenário: Ao invés de ter um SWITCH, você ter um ROTEADOR, conectado entre o gateway, em uma rede de transporte, por exemplo, 172.16.20.0/30, e as maquinas clientes forem de diversas redes diferentes, como por exemplo: “PPINTO” – 192.168.0.0/24, “PPLWARE” – 192.168.1.0/24, “MARISA” – 192.168.2.0/24. Nesse caso, todas as redes comunicam-se entre si (ROTEADOR já esta configurado), mas elas devem passar pelo gateway UBUNTU e acessar a internet. Muito obrigado pela atenção.