Académique Documents
Professionnel Documents
Culture Documents
net
About
Contact
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
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
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.
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
8 Comments
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
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
Submit Comment