Neste artigo mostrarei como fiz para dividir o tráfego de uma empresa entre dois links ADSL ligados em um mesmo servidor utilizando iptables e iptoute2.
Neste artigo mostrarei como fiz para dividir o tráfego de
uma empresa em dois links ADSL ligados em um mesmo servidor
utilizando iptables e iproute2. Como no meu caso
o grande problema era o acesso aos e-mails que ficam em um
provedor externo, dividi o tráfego de maneira que acessos POP
e SMTP saíssem por um dos links e o restante dos serviços por
outro. Nada impede que você personalize o script abaixo de
maneira que atenda às suas necessidades.
A configuração do meu servidor e dos meus links é a seguinte:
Ambiente testado:
Distribuição: Fedora Core 2
2 links ADSL de 1,5 Mb
A máquina possui 3 interfaces de rede:
Intranet: eth0 - 192.168.100.0/24
ADSL1: eth1 - 10.0.0.1/24 - Gateway: 10.0.0.138
ADSL2: eth2 - 10.1.1.2/24 - Gateway: 10.1.1.1
Neste exemplo, os serviços de e-mail passam pelo ADSL2 e os
demais serviços pelo ADSL1. O gateway padrão da máquina é o
10.0.0.138 (do ADSL1). Não há configuração de gateway específico
por interface. Segue o script que efetua a divisão dos links:
#!/bin/sh
# Interface da Intranet
IF_LAN='eth0'
# Interfaces ADSL
IF_ADSL1='eth1'
IF_ADSL2='eth2'
# Gateways dos ADSL (IPs dos roteadores)
GW_ADSL1='10.0.0.138'
GW_ADSL2='10.1.1.1'
# Mascarar saídas para os dois ADSL
------------------------------------------------------------
iptables -t nat -A POSTROUTING -o $IF_ADSL1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o $IF_ADSL2 -j MASQUERADE
# Marca com "2" os pacotes que saem pelas portas 25 (SMTP) e 110 (POP)
------------------------------------------------------------
iptables -t mangle -A PREROUTING -i $IF_LAN -p tcp --dport 25 -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -i $IF_LAN -p tcp --dport 110 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p tcp --dport 25 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p tcp --dport 110 -j MARK --set-mark 2
# Joga serviços de e-mail (pacotes marcados com 2) para o ADSL2
------------------------------------------------------------
ip rule add fwmark 2 table 20 prio 20
ip route add default via $GW_ADSL2 dev $IF_ADSL2 table 20
# Atualiza tabela de roteamento
# ------------------------------------------------------------
ip route flush cache
#1Comentário enviado por removido em 09/07/2004 - 13:39h
Cara muito loko, estava querendo fazer umas paradas dessas, demorooo vou implementar aqui no trampo... Parabéns cara !!!
#2Comentário enviado por lacierdias em 14/07/2004 - 08:44h
Cara mandou muito bem irmão....parada animal....rs
#3Comentário enviado por gustavo_marcon em 07/08/2004 - 17:22h
Excelente artigo cara... Mas fiquei com uma dúvida, se o modem não for roteador, e a autenticação PPPOE precisar ser feita no servidor como fica? Tem como fazer as duas autenticações PPPOE no mesmo server?
#4Comentário enviado por rjacomel em 08/08/2004 - 12:33h
Sinceramente não sei se é possível duas autenticações PPPoE no mesmo servidor... Mas caso isto seja possível, o princípio do artigo continua o mesmo...
Ricardo Jacomel
#5Comentário enviado por bygga em 08/10/2004 - 10:27h
Cara muito bom o teu artigo, mas e se eu quiser que passe todo o trafego pelos dois não e-mails por um e o resto pelo outro é só não colocar as regras para os e-mails...
Att,
Mário Henrique.
#6Comentário enviado por rjacomel em 08/10/2004 - 11:24h
Desta maneira você teria que fazer um balanceamento dos links. Recomendo que você acesse o link abaixo, que explica como fazer este balanceamento automático.
#7Comentário enviado por pogo em 06/01/2005 - 09:29h
kra, muito bom o artigo! vou implementar aqui na empresa... vlw!
#8Comentário enviado por butkam em 08/03/2005 - 12:44h
será que tem como eu colocar.. ao invés de porta.. colocar por ip???
tipo assim... alguns ips saem pelo link adsl 1 e outros saem pelo link adsl 2.... criando 2 arquivos com os ips... aqui é tudo estático.
ass.: butkam
#9Comentário enviado por alessandro lelli em 29/05/2005 - 14:12h
Eh possivel colocar dois links, sendo um ADSL e outro cabo(net)
Alessandro lellis
#10Comentário enviado por marcosfnet em 07/11/2005 - 11:03h
Amigos, já tenho um Link ADSL 800kbps num servidor Conectiva 10 servindo como gateway de uma rede com 30 computadores, só que está lento o acesso, eu queria colocar mais 01 Link de 800kbps no mesmo servidor, ai o link ia ficar 1.6mbps, ai resolveria meu problema, será que tem como vocês me passarem as coordenadas para fazer isso. Tipo assim:
eth0 = 192.168.1.1 - Entrada ADSL 01
eth1 = 192.168.1.2 - Entrada ADSL 02
eth2 = 192.168.0.1 - Gateway com link final de 1.6mbps
Obrigado!
#11Comentário enviado por lanna_cf em 09/02/2006 - 11:31h
Bom dia,
fiz o balanceamento e esta ok, mas estou tento problemas p/ acessar um servidor que esta atras do firewall pela porta 3389 (Terminal Services).
alguem sabe pq?
[]`s
Lanna
#12Comentário enviado por W@P em 10/04/2006 - 09:48h
E podemos tambem redirecionar o trafego de programas p2p para um dos links sem preojudicar a navegação.
Muito bom o artigo
#13Comentário enviado por gustao em 01/07/2006 - 00:33h
Valeu pelo artigo !!!
so que estou com o mesmo caso do <gustavo_marcon> ...
nos modems um é router e outro bridge ...
o pppoe seta umas rotas doidas la ...
tipo para sair para o modem router, sai beleza ...
mais para sair para o bridge nao sai nem a pau ...
parece que ele da conflito com as rotas ...
cume q nois cuncerta isso ???
valeu !!
#14Comentário enviado por removido em 24/11/2006 - 13:43h
Cara, show de bola seu artigo, só que achei dois problemas.
Primeiro é que o linux não navega, ou seja, os clientes navegam blz, mais o linux fica em looping. Como corrijir?
Segundo, se o cabra acessa um e-mail no hotmail, não consegue, pois diz estar em conflito, o que fazer?
Cordialmente
Joabes
#15Comentário enviado por fontebon em 07/12/2006 - 22:55h
Muito bom ...vou testar...
Uma pergunta: Posso marcar pacotes que vem pela porta 80 e mandar sair pelo meu melhor link e deixar o resto que e meio transparente para o usuario saindo pelo outro link?
Outra coisa preciso mecher nas configuracoes do iproute? tipo rt_tables?
Ou e so alterar os ips e rodar o seu script?
#16Comentário enviado por rjacomel em 08/12/2006 - 09:27h
No meu script marco os pacotes SMTP (25/TCP) e POP3 (110/TCP) para que saiam pelo segundo link. Você pode fazer isto com HTTP, apenas marcando a porta 80/TCP.
#17Comentário enviado por hugodcs em 07/03/2007 - 22:55h
Existe uma forma de conseguir acessar um servidsor atravez de dois links diferentes?
Ex. Tenho um servidor com velox e link embratel, tento acessar de fora ( outro lugar da internet) pelo velox e/ou pelo link ?
Já tentei marcar os pacotes mas a volta do pacote não vem marcada, ai não tem como eu filtrar!!!
Agradesso desde agora!
#18Comentário enviado por gzanatta00 em 04/04/2007 - 21:17h
amigo tenho um link de 1 mb que entra e roteia pela eth0, e a eth1 sai pra minha rede com ip 10.1.1.0, quero colocar um adsl pra ajudar na porta eth2, mas eu quero definir que o ip 10.1.1.50 navegue pelo link e o 10.1.1.60 navegue pelo adsl, como eu faco, se vc souber de um artigo me indique
#19Comentário enviado por alphamax em 05/05/2008 - 12:07h
cara se eu quiser fazer esse esquema com apenas uma placa respondendo para 2 link te internet tipo:
imaginemos dois links indo para um switch; vai... um speedy e um virtua e apenas um cabo indo do swuitch para e eth0, a qual também responde para a interface "virtual" eth0:1
eth0 200.200.x.y (speedy)
e
eth0:1 200.200.y.x (virtua)
será que funcionaria?
pois em meu pc já não tem mais espaço para espetar PCI, digamos que é um caso bastante especial.
Valew,bom topico
#20Comentário enviado por NADALETO em 17/05/2008 - 18:09h
17 DE MAIO DE 2008
JAÚ SP
Necessito conetar 2 pcs, em média distância, usando em cada um um modem adsl e estes sejam ligados por um par de fios. A ligação também poderá ser feita via LP da companhia telefônica local.
#21Comentário enviado por removido em 20/05/2009 - 21:31h
Parabens Novamente, exelente!
Abracos
Flw
#22Comentário enviado por jokerman em 09/09/2009 - 16:06h
Caro Ricardo,
parabens pelo artigo. Muito bom! Implementei com sucesso...Só estou tendo um pouco de dificuldade para marcar no link2 pacotes que "entram" na rede.
Por exemplo; faço ssh na 22. Utilizo o seu exeplo e crio um PREROUTING para a porta 22. FUNCIONA! Faço ssh para outra maquina e saio pelo link2.
Agora, qual seria a regra para determinar que quem tentar entrar no servidor via ssh utilize também o llink2??
#23Comentário enviado por metall em 16/09/2009 - 13:16h
PARABENS AI rjacomel
Legitima Receita de BOLO.....
Perfect.
Teria uma Duvida ai no Script fala de Saida... certo...
e como ficaria a partede de Entrada....
Exemplo.... faço um requisicao num Lugar X ele vai sair pelo LINK 2 ai presico que a resposta tambem volte pelo Link 2
Como seria o Procedimento para isso?
Desde já Agradecemos sua Receita...
#24Comentário enviado por jeff.jno em 19/09/2009 - 00:54h
Parabéns pelo artigo,
Está bem claro e consiso. Acho que vai me ajudar bastante. Por acaso alguem saberia me dizer, se teria como eu marcar apenas um endereço interno para utilizar a "ADSL2" e o restante para utilizar a "ADSL1"?
#25Comentário enviado por jokerman em 05/11/2009 - 12:53h
Caro Ricardo,
parabéns pelo artigo. Pra mim funcionou tudo ok no CentOS 5.2, EXCETO....o squid!
Na verdade, pelos testes que eu fiz observei que todo o direcionamento que eu faço, vale para as estações, mas não para o proprio servidor.
Como teste fiz o seguinte:
Criei uma regra para a porta 23, para que o meu telnet para fora, saisse pelo LINK2:
100.100.1.100, ETH2
Se eu vou na estaçao de trabalho da rede e abro um putty, faço o telnet normal e vejo pelo "w" que realmente eu "vim" do ip ligado
na ETH2. Ate aí tudo bem.
Se eu tento fazer um telnet estando logado no proprio servidor, ele simplesmente trava.
Ora, como a origem do squid é o proprio servidor está acontecendo com ele o mesmo travamento.
A minha pergunta seria a seguinte: como criar regras no iptables para determinar a mudança de trafego não só para o que vem das estações de trabalho , mas também para o que vem do proprio servidor?
(tentei utilizar o comando tcp_outgoing_address no squid.conf mas nao funcionou....)
Agradecido.
#26Comentário enviado por fernanda.falcon em 07/03/2011 - 10:13h
Bom Dia,
Estou com um problema... Fiz as configurações e qdo me conecto via terminal server ele entra pela eth2 e se conecta na estação, mas qdo ele muda de link para a eth1(onde está meu outro link) a conexão com o terminal services cai.Preciso descobrir uma maneira de mesmo o link alterando a conexão se identifica pela porta pela qual foi aberta.
Muito Obrigada.
#27Comentário enviado por fontebon em 07/03/2011 - 17:43h
Talvez marcando pacotes na porta 3389 para ela sai sempre por um link.
#28Comentário enviado por joaopaulobiesek em 31/01/2014 - 11:00h
Bom dia,
muito bom gostei muito so que eu queria, fazer algo parecido sera que poderia me ajudar?
rjacomel, e possivel colocar o servidor para indentificar que quando caio um link ele puxa o outro?
tenho 2 link um de 10mb e um de 2mb um embratel e outro velox. so que o velox cai muito ai quando o velox caise ele jogase o trafego da rede toda no embratel de 2mb e possivel ??
Preferências de cookies
Usamos cookies essenciais para manter o site funcionando. Cookies de estatísticas e anúncios só serão carregados se você permitir.