Transforme o seu Ubuntu num simples router

42 Comentários

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.

router_ub00

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:

  • WANeth0 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

lan_wan

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 3Configuraçã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

lan_rede

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.

Comentários

42

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Joao Araujo
    Joao Araujo

    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 🙂

    1. Avatar de Pedro Pinto

      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 😀

      1. Avatar de Joao Araujo
        Joao Araujo

        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 🙂

    2. Avatar de lmx
      lmx

      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

      1. Avatar de lmx
        lmx

        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

      2. Avatar de Pedro Pinto

        Sou rendido ao Centos 🙂 eh eh eh, ja vi!

        1. Avatar de Gabriel Brum
          Gabriel Brum

          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”

  2. Avatar de paulosousa
    paulosousa

    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

    1. Avatar de Pedro Pinto

      Excelente…muito bem 🙂

  3. Avatar de edgar
    edgar

    Ca em casa mora um router raspberry pi e o consumo e inferior a 5 W. 🙂

    1. Avatar de Pedro Pinto

      Ora nem mais.. 🙂 O tutorial está aqui feito 🙂

      1. Avatar de Moedinha
        Moedinha

        Aqui feito ?

  4. Avatar de David
    David

    É 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.

  5. Avatar de Mario
    Mario

    Boas, alguem sabe +/- quanto gastará ter um pc com ubuntu server ligado 24/7? fonte de 350W, core duo 1.6ghz.

    cumprimentos.

    1. Avatar de David
      David

      O meu é um AMD Atlhon 64 2400+ e ele gasta à volta dos 100w (medidos). Tem dois discos também.

      1. Avatar de João
        João

        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)

  6. Avatar de André Pires
    André Pires

    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!

    1. Avatar de Pedro Pinto

      microTiks…belas máquinas! 🙂

      1. Avatar de André Pires
        André Pires

        Ui! Grandes máquinas! Sempre a fazer reset!

    2. Avatar de lmx
      lmx

      boas…

      O alto consumo, depende da maquina que tens em mente…

      Mas o exercício serve para todos os casos 😉

      cmps

      1. Avatar de André Pires
        André Pires

        Claro!

        Raspberry Pi ao poder!

        Cumps

    3. Avatar de joseg
      joseg

      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

  7. Avatar de Hugo
    Hugo

    Mikrotik e o resto é conversa e desperdicio de energia

  8. Avatar de lumitoro
    lumitoro

    @Pedro Pinto
    Obrigado por mais um contributo educativo no pplw,

    1. Avatar de Rafael
      Rafael

      Concordo. O Pedro Pinto é dos melhores, ou o melhor, “artiguista” do PPLware! Parabéns e que continues assim 😉

  9. Avatar de Cruz
    Cruz

    Que ideia mais demagogica.

  10. Avatar de sebastiao
    sebastiao

    Só acrescentar que se pode fazer isto desde 1995 .

  11. Avatar de Jorge Santos
    Jorge Santos

    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

    1. Avatar de lmx
      lmx

      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

  12. Avatar de Lm
    Lm

    Uma fonte de 350W nao consome 350W.
    Pode utilizar NO MAXIMO 350W.

  13. Avatar de João Guerreiro
    João Guerreiro

    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

  14. Avatar de Sergio Pereira
    Sergio Pereira

    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

    1. Avatar de Ninja.pt

      hum.. obrigado pela partilha, vou testar de certeza
      http://www.endian.com/us/community/download/

      1. Avatar de Ninja.pt

        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

  15. Avatar de Ninja.pt

    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…)

    1. Avatar de lmx
      lmx

      boas..

      Se for para ficar de forma persistente sim, ou com um script…uma coisa qualquer(não tão elegante).

      cmps

      1. Avatar de Ninja.pt

        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/

        1. Avatar de lmx
          lmx

          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

          1. Avatar de lmx
            lmx

            o sysctl serve para fazer load de configurações no kernel…e como tu disses-te, não resiste a um reboot/halt.

            cmps

  16. Avatar de moedinha
    moedinha

    O ideal era arranjar um mini pc qualquer barato e com baixo consumo para isto.

  17. Avatar de Felipe Pereira Arantes
    Felipe Pereira Arantes

    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.