Configurando 2 (dois) links ADSL no mesmo servidor
Nesse artigo mostrarei como configurar, iniciar e autenticar 2 (dois) links ADSL em um mesmo servidor, além de fazermos um balanceamento nesses links aliviando muito o tráfego de nossa rede. Falaremos também um pouco sobre roteamento avançado em Linux, pois iremos usar esse incrível recurso disponível para fazer o balanceamento.
Parte 5: Fazendo o NAT e adicionando rotas na tabela
Primeiramente devemos mexer em algumas variáveis de kernel. O seguinte comando ativa o roteamento no kernel:
# echo 1 > /proc/sys/net/ipv4/ip_forward
O procedimento abaixo desliga o rp_filter, que é um filtro contra pacotes IP "marcianos". Esses pacotes são aqueles que deveriam ter chegado por uma interface, porém chegam por outra. O rp_filter visa detectar pacotes spoofados, o que é uma boa idéia. Porém, no nosso caso, os pacotes podem ir e voltar por mais de uma interface, a filtragem do "cartesiana" do rp_filter falha. Portanto, temos que desligá-lo e reforçarmos as segurança das interface privadas com regras de firewall criadas por nós. Iremos fazer esse desligamento criando um script chamado "rc.marcianos" com o seguinte conteúdo e sem seguida execute esse script:
NOTA: Nada vai acontecer quando você executar esse script, por isso não se assuste.
# echo 1 > /proc/sys/net/ipv4/ip_forward
O procedimento abaixo desliga o rp_filter, que é um filtro contra pacotes IP "marcianos". Esses pacotes são aqueles que deveriam ter chegado por uma interface, porém chegam por outra. O rp_filter visa detectar pacotes spoofados, o que é uma boa idéia. Porém, no nosso caso, os pacotes podem ir e voltar por mais de uma interface, a filtragem do "cartesiana" do rp_filter falha. Portanto, temos que desligá-lo e reforçarmos as segurança das interface privadas com regras de firewall criadas por nós. Iremos fazer esse desligamento criando um script chamado "rc.marcianos" com o seguinte conteúdo e sem seguida execute esse script:
NOTA: Nada vai acontecer quando você executar esse script, por isso não se assuste.
#!/bin/bash
# liberar marcianos
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
/usr/bin/echo 0 > $i
done
# liberar marcianos
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
/usr/bin/echo 0 > $i
done
Inserindo uma rota na nova tabela de roteamento
Lembra que lá no início nós criamos uma tabela de roteamento chamada "velox2"?! Agora nós vamos inserir um rota nessa tabela, para depois então inserirmos uma regra nela. Mas antes vamos listar o conteúdo dela:
# ip route show table velox2
Como vimos, não existe nenhuma rota na tabela de roteamento velox2. Agora vamos inserir uma rota default nessa tabela e em seguida visualizar novamente o conteúdo dessa tabela de roteamento:
# ip route add default dev ppp1 via 200.217.76.56 table velox2 # ip route show table velox2
default via 200.217.72.56 dev ppp1
Pronto, a rota já foi criada nessa tabela. Falta apenas inserirmos uma regra para essa rota que acabamos de criar na tabela de roteamento velox2.
Inserindo uma regra na nova tabela de roteamento
Primeiramente, vamos marcar todos os pacotes provenientes da LAN com destino aos serviços http com a seguinte regra de iptables e logo em seguida irei inserir uma regra nessa tabela de roteamento. Observe a seqüência de comandos:
# iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 80 -j MARK --set-mark 1
Bom, a tabela tem uma rota, os pacotes já estão marcados, mas nenhum pacote vai cair nela, pois não há regras para isso, então temos que colocá-la:
# ip rule add fwmark 1 lookup velox2
Depois de qualquer mudança nas tabelas de roteamento, e necessário digitarmos o comando abaixo para as novas regras vigorarem.
# ip route flush cached
Tudo pronto, agora só falta fazer o NAT para que as máquinas da LAN possam acessar a internet, sendo que os pacotes com destino a porta 80 sairão pela interface ppp1 e os demais sairão pela interface ppp0.
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# iptables -t nat -A POSTROUTING -o ppp1 -j MASQUERADE
Já viu algo sobre dobrar a banda?
Abraços....