Vous êtes sur la page 1sur 6

GustavoHenrique.

net

About

Contact

Roteamento em Linux com 2 links de internet


By gustavohenrique | Linux | 8 Comments

Type your search and hit enter

Introduo
Como primeiro artigo sobre Linux, vou abordar um pouco sobre roteamento de pacotes usando iproute e iptables. Imagine um cenrio onde h um servidor que compartilha a internet para a rede interna, atuando como gateway, e por algum motivo foi contratado mais um link de internet. Ou ento h 2 ou mais servidores proxy e se deseja definir para qual deles cada IP da rede interna deve seguir caminho. Outro cenrio seria separar a parte de navegao dos demais servios (msn, emule, e-mail), cada uma usando um link diferente. Nesse artigo vou demonstrar que o Linux proporciona maneiras simples e eficientes de implementar esse tipo de roteamento. As distribuies utilizadas foram ubuntu server 5.04 e 5.10 e debian lenny.

Tags
admin

Django extjs firewall grails


mod_wsgi moeda brasileira mudanas

jquery KingHost liberaes


modelform

Linux manual model


mysql

nvel de servio oo PagSeguro pdf php PIL pisa problemas

proxy python qa qos

real relacionamento roteamento

service desk shell script sites tdd tipsforlinux traducao ubicomp ubuntu urllib virtualhost Webservices wikipedia xsol __init__

Recent Posts
Configurando um servidor LDAP no CentOS 6.2 Introduo ao padro MVC no Ext JS 4 Virtualizao com KVM Autenticao Facebook no Grails Grails com Sqlite3 no Ubuntu 11.04 Deploy no tomcat usando django-jython Deploy mltiplas verses do Django no Nginx com VirtualEnv Comandos bsicos do Git Introduo ao Apache Wicket Feliz 2011

Funcionamento
No exemplo em questo, o servidor que vou configurar um gateway compartilhando a internet para vrios clientes. O iptables realiza uma marcao para todos os pacotes oriundos de cada IP cliente e o iproute determina para qual link os pacotes devero ser encaminhados de acordo com a marcao feita. Vou usar a marcao 1 para pacotes via link1, marcao 2 para pacotes serem encaminhados para o link2 e a rota principal do prprio gateway ser pelo link1.

Instalao
O iptables e iproute so pacotes presentes em quase todas as distribuies. Na maioria o iptables instalado por padro. Nesse caso, vou instalar apenas o iproute, via apt-get, que o gerenciador de pacotes padro das distribuies debian e ubuntu. s u d oa p t g e ti n s t a l li p r o u t e 2

Archives
Select Month

Criando a tabela de roteamento


Vou criar 2 tabelas chamadas link1 e link2, adicionando duas linhas no final do arquivo / e t c / i p r o u t e 2 / r t _ t a b l e s , ficando assim: r o o t @ g a t e w a y #c a t/ e t c / i p r o u t e 2 / r t _ t a b l e s 2 5 5l o c a l 2 5 4m a i n 2 5 3d e f a u l t 0u n s p e c 2 5 0l i n k 1 2 5 1l i n k 2 Agora vou criar o script r o t a s , dentro do diretrio / e t c / i n i t . d / , que utiliza o iproute para definir as rotas.

Categories
Select Category

My tweets
Public Domain, a documentary about the problems of Rio de Janeiro http://t.co/UcTUoPRo 2012-10-10 Adobe has released "Source Code Pro", a new open source font designed for software developers http://t.co/AHxrVP9W #protip 2012-09-28 http://t.co/9TlbWvWN #protip 2012-09-27

r o o t @ g a t e w a y #v i m/ e t c / i n i t . d / r o t a s contedo do script: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
# ! / b i n / b a s h #D E F I N I C A OD O SG A T E W A Y S( I P sF I C T I C I O S ) G W _ L I N K 1 = 1 8 9 . 1 2 . 3 4 . 1 G W _ L I N K 2 = 2 0 0 . 5 6 . 7 8 . 1 #P L A C A SD ER E D E E T H _ L I N K 1 = e t h 1 E T H _ L I N K 2 = e t h 2 f u n c t i o ns t a r t ( ){ #L i m p aoc a c h ed er o t a s i pr o u t ef l u s hc a c h e #P a c o t e sc o mm a r c a c a o1v a op a r aol i n k 1 i pr u l ea d df w m a r k1p r i o2 0t a b l el i n k 1 #P a c o t e sc o mm a r c a c a o2v a op a r aol i n k 2 i pr u l ea d df w m a r k2p r i o2 0t a b l el i n k 2 #A s s o c i aar o t ad ol i n k 1ai n t e r f a c ed er e d eet a b e l ac o r r e s p o n d e n t e s i pr o u t ea d dd e f a u l tv i a$ G W _ L I N K 1d e v$ E T H _ L I N K 1t a b l el i n k 1 #A s s o c i aar o t ad ol i n k 1ai n t e r f a c ed er e d eet a b e l ac o r r e s p o n d e n t e s i pr o u t ea d dd e f a u l tv i a$ G W _ L I N K 2d e v$ E T H _ L I N K 2t a b l el i n k 2 #A d i c i o n aar o t ap a d r a oa ol i n k 1 r o u t ea d dd e f a u l tg w$ G W _ L I N K 1 e c h o" T a b e l ad er o t e a m e n t oc r i a d a . " } f u n c t i o ns t o p ( ){ #L i m p aoc a c h e i pr o u t ef l u s hc a c h e #D e l e t aa sr e g r a sd ea c o r d oc o ma sm a r c a c o e s i pr u l ed e lf w m a r k2 i pr u l ed e lf w m a r k3 #D e l e t aar o t ap a d r a o r o u t ed e ld e f a u l t e c h o" L i m p e z ad at a b e l ad er o t e a m e n t oc o n c l u i d a . " } c a s e$ 1i n ' s t a r t ' )s t a r t ;e x i t; ; ' s t o p ' )s t o p ;e x i t; ; ' r e s t a r t ' )s t o p ;s t a r t ;e x i t; ; * )s t a r t ;e x i t; ; e s a c

10 things IT architects should consider when choosing data storage technologies http://t.co/6BjGXICI 2012-09-20 t com calor? http://t.co/d3XQQO84 201209-20 More updates...

Reparem que o que o script r o t a sfaz dizer que pacotes marcados como 1 (fwmark 1) fazem parte da tabela link1 e marcados como 2 (fwmark 2) da tabela link2. Em seguida cria uma regra dizendo que os pacotes da tabela link1 seguem pelo gateway e interface de rede correspondentes. O mesmo para a tabela link2. O prximo passo fazer a marcao dos pacotes.

Marcando os pacotes com iptables


Esse script de firewall apenas para demonstrar como fazer a marcao de

pacotes. As regras devem ser incorporadas um firewall melhor configurado e mais seguro. O iptables na verdade um software que age como frontend para manipulao do firewall do Linux, chamado de netfilter. Esse por sua vez possui uma tabela chamada m a n g l eque onde ficam armazenadas as regras de marcao de pacotes e outra chamada n a t , que contm as regras de NAT. Assim como antes, vou colocar o script dentro do diretrio / e t c / i n i t . d r o o t @ g a t e w a y #v i m/ e t c / i n i t . d / f i r e w a l l E dentro do script: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
# ! / b i n / b a s h #m o d p r o b ee hu s a d op a r ac a r r e g a rm o d u l o sd ok e r n e l M O D = $ ( w h i c hm o d p r o b e ) #i p t a b l e s I P T = $ ( w h i c hi p t a b l e s ) #I n t e r f a c e sd er e d e I _ L I N K 1 = " e t h 1 " I _ L I N K 2 = " e t h 2 " I _ L A N = " e t h 0 " f u n c t i o ns t o p ( ){ #L i m p aat a b e l am a n g l e $ I P Ttm a n g l eF $ I P Ttm a n g l eX e c h o" F i r e w a l lp a r a d o . " } f u n c t i o ns t a r t ( ){ #C a r r e g aom o d u l od ok e r n e l $ M O Di p _ t a b l e s #L i m p aa sr e g r a sa n t e r i o r e s s t o p ; #H a b i l i t ar e d i r e c i o n a m e n t od eI P e c h o1>/ p r o c / s y s / n e t / i p v 4 / i p _ f o r w a r d #C l i e n t e sp a r aol i n k 1 $ I P Ttm a n g l eAP R E R O U T I N Gs1 9 2 . 1 6 8 . 0 . 2i$ I _ L A NjM A R Ks e t m a r k1 $ I P Ttm a n g l eAP R E R O U T I N Gs1 9 2 . 1 6 8 . 0 . 4i$ I _ L A NjM A R Ks e t m a r k1 #C l i e n t e sp a r aol i n k 2 $ I P Ttm a n g l eAP R E R O U T I N Gs1 9 2 . 1 6 8 . 0 . 3i$ I _ L A NjM A R Ks e t m a r k2 $ I P Ttm a n g l eAP R E R O U T I N Gs1 9 2 . 1 6 8 . 0 . 5i$ I _ L A NjM A R Ks e t m a r k2 $ I P Ttm a n g l eAP R E R O U T I N Gs1 9 2 . 1 6 8 . 0 . 6i$ I _ L A NjM A R Ks e t m a r k2 #A p e n a san a v e g a c a ov a ip a r aol i n k 2 .E m a i l ,m s neo u t r o sv a op a r aol i n k 1q u ear o t ap a d r a o . $ I P Ttm a n g l eAP R E R O U T I N Gs1 9 2 . 1 6 8 . 0 . 7i$ I _ L A Npt c pd p o r t8 0jM A R Ks e t m a r k2 $ I P Ttm a n g l eAP R E R O U T I N Gs1 9 2 . 1 6 8 . 0 . 7i$ I _ L A Npt c pd p o r t!8 0jM A R Ks e t m a r k1 e c h o" F i r e w a l li n i c i a d o . " }

47 a s e$ 1i n 48 c ' s t a r t ' )s t a r t ;e x i t; ; 49 ' s t o p ' ) s t o p ; e x i t ; ; 50 * )s t a r t ;e x i t; ; 51 s a c 52 e Por fim, vou colocar os dois scripts para carregarem durante a inicializao do sistema. H muitas maneiras de fazer isso, ento vou fazer da mais preguiosa possvel porque isso varia de acordo com o administrador e distribuio utilizada: r o o t @ g a t e w a y # :c h m o d+ x/ e t c / i n i t . d / r o t a s r o o t @ g a t e w a y # :c h m o d+ x/ e t c / i n i t . d / f i r e w a l l r o o t @ g a t e w a y # :l ns/ e t c / i n i t . d / r o t a s/ e t c / r c S . d / S 7 9 r o t a s r o o t @ g a t e w a y # :l ns/ e t c / i n i t . d / f i r e w a l l/ e t c / r c S . d / S 8 0 f i r e w a l l

Concluso
Apenas com esses 2 scripts no ser possvel compartilhar a internet. Porm o objetivo aqui mostrar uma breve abordagem de como fazer roteamento no Linux. Artigos, dicas e scripts para compartilhar internet existem aos milhares na internet. Com uma rpida pesquisa no google e implementando o que foi descrito aqui, possvel criar um servidor de internet em Linux muito mais estvel e eficiente do que um rodando Windows. Bookmark It

Tagged as: debian, ip, iproute2, iptables, Linux, roteamento, ubuntu

8 Comments

Add your comment

muito bom isso


By: celso January 24, 2009 at 1:26 pm Reply

Bom, certamente eu poderia fazer isto: $IPT -t mangle -A PREROUTING -s 192.168.0.0/24 -i $I_LAN -p tcp dport 80 -j MARK set-mark 2 $IPT -t mangle -A PREROUTING -s 192.168.0.0/24 -i $I_LAN -p tcp dport ! 80 -j MARK set-mark 1 e ter dividida a carga entre os links correto? Estou em dvida se adquiro um router DLINK com balanceamento de carga ou se utilizo uma mquina linux.
By: Flavio January 28, 2009 at 11:21 am Reply

@Flavio, o conceito de balanceamento de carga mais amplo e depende do quanto voc usa do link para navegao. Quanto ao DLINK ou Linux, tambm depende da sua rede. A vantagem do router que pequeno, mais simples de configurar, consome menos energia e porttil. Entretanto, com um servidor linux, pode-se instalar o proxy squid que pode reduzir consideravelmente o consumo da navegao, bloquear contedo inadequado, relatrio dos sites acessados, dentre outras vantagens.
By: admin January 28, 2009 at 11:38 am Reply

muito bom o livro :>


By: celso August 17, 2009 at 12:18 am Reply

Muito bom seu artigo. parabens e obrigado.. ajudou muito.


By: Luciano souza August 10, 2010 at 3:09 pm Reply

ol! os GW_LINK1 e GW_LINK2 so os IPs da placa de rede ou do modem? qual a verso do kernel que utilizaste? necessitou alguma alterao?
By: Vinicius April 4, 2012 at 4:44 pm Reply

Vinicius, GW_LINK1 e GW_LINK2 so IPs pblicos vindos do modem. Como se trata de um post antigo, no me lembro a verso do kernel, mas o procedimento foi utilizado no ubuntu server 5.x e debian lenny com o kernel default.
By: gustavohenrique Author April 4, 2012 at 11:25 pm Reply

Grande Gustavo, ve se consegue me ajudar. Minha realidade aqui : link1 link2 lan (dentro da lan servidor windows 2k3 com ts) Eu preciso que a navegao (internet, email, etc) fosse feita pelo link 1. (At ai tudo certinho) Porem, eu preciso que minhas filiais acessem meu servidor 2k3 via ts, e gostaria que esse acesso do ts fosse feito pelo link 2.

Como eu fao isso, pois eu configuro route add default gw link1 ninguem (externo) pinga o link 2 se eu add a rota default gw link 2 a navegao feita tudo pelo link2 Como eu fao?
By: Thiago September 27, 2012 at 2:54 pm Reply

Leave your comment below!

Your Name (required)

Your Email (required)

Your Website (optional)

Submit Comment

View More Posts:

Powered by the inLine Minimal WordPress Theme

Vous aimerez peut-être aussi