Enrutamiento avanzado y control de tráfico en Linux Bert Hubert NetherlabsBV [email protected] ThomasGraf(SectionAuthor) tgraf%suug.ch GregoryMaxwell(autordesecciones) RemcovanMook(autordesecciones) [email protected] MartijnvanOosterhout(autordesecciones) [email protected] PaulBSchroeder(autordesecciones) [email protected] JasperSpaans(autordesecciones) [email protected] PedroLarroy(autordesecciones) piotr%member.fsf.org RicardoJ.Cárdenes(traductoralcastellano) ricardo%conysis.com EnrutamientoavanzadoycontroldetráficoenLinux porBertHubert ThomasGraf(SectionAuthor) tgraf%suug.ch GregoryMaxwell(autordesecciones) RemcovanMook(autordesecciones) [email protected] MartijnvanOosterhout(autordesecciones) [email protected] PaulBSchroeder(autordesecciones) [email protected] JasperSpaans(autordesecciones) [email protected] PedroLarroy(autordesecciones) piotr%member.fsf.org RicardoJ.Cárdenes(traductoralcastellano) ricardo%conysis.com Unaintroducciónbastanteprácticaaiproute2,elcontroldetráficoyunpocodenetfilter. Historialderevisiones Revisión$Revision:1.44$$Date:2003/12/2523:21:27$ EdiciónenDocBook Revisión1.44-es 2004/12/17 Revisióndelatraducciónalcastellano Tabla de contenidos 1.Dedicatoria..........................................................................................................................................................1 2.Introducción.......................................................................................................................................................2 2.1.Descargoderesponsabilidadylicencia...................................................................................................2 2.2.Conocimientosprevios............................................................................................................................2 2.3.QuépuedehacerLinuxporusted............................................................................................................3 2.4.Notasdemantenimiento..........................................................................................................................3 2.5.Acceso,CVSyenvíodeactualizaciones................................................................................................4 2.6.Listadecorreo.........................................................................................................................................4 2.7.Disposicióndeestedocumento...............................................................................................................5 3.Introducciónaiproute2.....................................................................................................................................6 3.1.¿Porquéiproute2?...................................................................................................................................6 3.2.revisióndeiproute2.................................................................................................................................6 3.3.Prerequisitos............................................................................................................................................6 3.4.Explorarlaconfiguraciónactual.............................................................................................................7 3.4.1.ipnosmuestranuestrosenlaces..................................................................................................7 3.4.2.ipnosmuestranuestrasdireccionesIP.......................................................................................7 3.4.3.ipnosmuestranuestrasrutas......................................................................................................8 3.5.ARP.........................................................................................................................................................9 4.Reglas(basededatosdenormasderutado).................................................................................................11 4.1.Normasdeencaminamientopororigensencillas..................................................................................11 4.2.Encaminamientoconvariosenlacesdesalida/proveedores..................................................................12 4.2.1.Accesodividido........................................................................................................................13 4.2.2.Equilibriodecarga....................................................................................................................14 5.GREyotrostúneles.........................................................................................................................................16 5.1.Breveincisosobrelostúneles:..............................................................................................................16 5.2.TúnelesIPsobreIP...............................................................................................................................16 5.3.TúnelesGRE.........................................................................................................................................17 5.3.1.TúnelesIPv4.............................................................................................................................17 5.3.2.TúnelesIPv6.............................................................................................................................18 5.4.Túnelesenespaciodeusuario...............................................................................................................19 6.TúnelesIPv6conCiscoola6bone.................................................................................................................20 6.1.TúnelesIPv6..........................................................................................................................................20 7.IPsec:IPsegurasobreInternet.......................................................................................................................24 7.1.Introducciónalintercambiomanualdeclaves......................................................................................24 7.2.Intercambioautomáticodeclaves.........................................................................................................28 7.2.1.Teoría........................................................................................................................................29 7.2.2.Ejemplo.....................................................................................................................................29 7.2.3.UsodecertificadosX.509paraelintercambioautomáticodeclaves......................................32 7.3.TúnelesconIPSEC................................................................................................................................35 7.4.OtrosoftwareIPSEC.............................................................................................................................36 7.5.InteroperacióndeIPSECconotrossistemas.........................................................................................37 7.5.1.Windows...................................................................................................................................37 7.5.2.CheckPointVPN-1NG............................................................................................................37 iii 8.Enrutadomulticast..........................................................................................................................................39 9.Disciplinasdecolas(qdiscs)paragestióndelanchodebanda....................................................................41 9.1.Lascolasydisciplinasdecolaexplicadas.............................................................................................41 9.2.Disciplinasdecolasimples,sinclases..................................................................................................42 9.2.1.pfifo_fast...................................................................................................................................42 9.2.2.TokenBucketFilter..................................................................................................................44 9.2.3.StochasticFairnessQueueing...................................................................................................47 9.3.Consejossobreenquémomentousarquécola.....................................................................................48 9.4.Terminología.........................................................................................................................................49 9.5.Disciplinasdecolaconclases...............................................................................................................51 9.5.1.Elflujodentrodelasqdiscconclasesysusclases...................................................................52 9.5.2.Lafamiliaqdisc:raíces,controladores,hermanosypadres.....................................................52 9.5.3.LaqdiscPRIO...........................................................................................................................53 9.5.4.LafamosaqdiscCBQ...............................................................................................................56 9.5.5.HierarchicalTokenBucket.......................................................................................................63 9.6.Clasificarpaquetesconfiltros...............................................................................................................64 9.6.1.Algunosejemplossencillosdefiltrado.....................................................................................65 9.6.2.Todaslasórdenesdefiltradoquenecesitaránormalmente.......................................................66 9.7.Eldispositivointermediodeencolado(IMQ).......................................................................................67 9.7.1.Configuracióndeejemplo.........................................................................................................67 10.Compartirlacargasobrevariasinterfaces.................................................................................................70 10.1.Problemas............................................................................................................................................71 10.2.Otrasposibilidades..............................................................................................................................71 11.Netfiltereiproute(marcadodepaquetes)...................................................................................................73 12.Filtrosavanzadospara(re)clasificarpaquetes............................................................................................75 12.1.Elclasificadoru32..............................................................................................................................76 12.1.1.SelectorU32...........................................................................................................................76 12.1.2.Selectoresgenerales................................................................................................................77 12.1.3.Selectoresespecíficos.............................................................................................................79 12.2.Elclasificadorroute..........................................................................................................................79 12.3.Filtrosdecontrol(Policingfilters)......................................................................................................81 12.3.1.Formasdecontrol...................................................................................................................81 12.3.2.Accionesdesobrelímite..........................................................................................................82 12.3.3.Ejemplos.................................................................................................................................82 12.4.Filtrosdehashparafiltradomasivomuyrápido.................................................................................83 12.5.FiltradodetráficoIPv6........................................................................................................................85 12.5.1.¿CómoesquenofuncionanlosfiltrostcparaIPv6?..............................................................85 12.5.2.MarcarpaquetesIPv6usandoip6tables.................................................................................85 12.5.3.Usarelselectoru32parafiltrarpaquetesIPv6.......................................................................85 13.Parámetrosdereddelnúcleo........................................................................................................................87 13.1.ReversePathFiltering.........................................................................................................................87 13.2.Configuracionesoscuras......................................................................................................................88 13.2.1.ipv4genérica...........................................................................................................................88 13.2.2.Configuraciónpordispositivo.................................................................................................93 13.2.3.Normasdevecinos(Neighborpolicy)....................................................................................94 13.2.4.Configuracióndeencaminamiento.........................................................................................95 iv 14.Disciplinasdecolaavanzadasypococonocidas..........................................................................................97 14.1.bfifo/pfifo......................................................................................................................................97 14.1.1.Parámetrosyuso.....................................................................................................................97 14.2.AlgoritmoClark-Shenker-Zhang(CSZ).............................................................................................97 14.3.DSMARK............................................................................................................................................98 14.3.1.Introducción............................................................................................................................98 14.3.2.¿ConquéserelacionaDsmark?..............................................................................................98 14.3.3.PrincipiosdelosServiciosDiferenciados..............................................................................98 14.3.4.TrabajarconDsmark..............................................................................................................99 14.3.5.CómotrabajaSCH_DSMARK.............................................................................................100 14.3.6.FiltroTC_INDEX.................................................................................................................101 14.4.Qdiscdeentrada(Ingress).................................................................................................................103 14.4.1.Parámetrosyuso...................................................................................................................103 14.5.RandomEarlyDetection(RED).......................................................................................................103 14.6.GenericRandomEarlyDetection.....................................................................................................104 14.7.EmulaciónVC/ATM.........................................................................................................................105 14.8.WeightedRoundRobin(WRR)........................................................................................................105 15.Recetario.......................................................................................................................................................106 15.1.LlevarvariossitioscondiferentesSLA1...........................................................................................106 15.2.ProtegerlamáquinafrenteainundacionesSYN...............................................................................107 15.3.LimitarlatasadeICMPparaprevenirdDoS....................................................................................108 15.4.Priorizadodetráficointeractivo........................................................................................................109 15.5.Cachétransparentedewebusandonetfilter,iproute2,ipchainsysquid...........................................110 15.5.1.Diagramadeflujodeltráficotraslaimplementación...........................................................114 15.6.SortearlosproblemasdePathMTUDiscoveryconconfiguracionesdeMTUporruta...................114 15.6.1.Solución................................................................................................................................115 15.7.SortearlosproblemasdePathMTUDiscoveryconMSSClamping(parausuariosdeADSL,cable, PPPoEyPPtP)..................................................................................................................................116 15.8.Elacondicionadordetráficodefinitivo:bajalatencia,envíosydescargasrápidos...........................117 15.8.1.Porquénofuncionabienpordefecto...................................................................................117 15.8.2.Elscript(CBQ).....................................................................................................................119 15.8.3.Elscript(HTB).....................................................................................................................121 15.9.Limitarlatasaaunaúnicamáquinaomáscaradered......................................................................122 15.10.EjemplodeunasolucióndenatcompletoconQoS........................................................................123 15.10.1.Empecemosoptimizandoeseanchodebandaescaso........................................................124 15.10.2.Clasificióndepaquetes.......................................................................................................125 15.10.3.Mejoradenuestraconfiguración........................................................................................127 15.10.4.Hacertodoloanteriorduranteelarranque.........................................................................127 16.Hacerbridgesypseudo-bridgesconProxyARP......................................................................................129 16.1.Estadodelbridgingeiptables...........................................................................................................129 16.2.Bridgingyajustes(shaping)..............................................................................................................129 16.3.Pseudo-bridgesconProxy-ARP........................................................................................................129 16.3.1.ARPyProxy-ARP................................................................................................................130 16.3.2.Implementándolo..................................................................................................................130 17.Encaminamientodinámico-OSPFyBGP................................................................................................132 17.1.ConfigurarOSPFconZebra..............................................................................................................132 17.1.1.Prerequisitos.........................................................................................................................133 17.1.2.ConfiguracióndeZebra........................................................................................................134 17.1.3.EjecutarZebra.......................................................................................................................135 17.2.ConfigurarBGP4conZebra..............................................................................................................137 v 17.2.1.Mapadered(Ejemplo).........................................................................................................137 17.2.2.Configuración(Ejemplo)......................................................................................................137 17.2.3.Comprobarlaconfiguración.................................................................................................138 18.Otrasposibilidades......................................................................................................................................140 19.Otraslecturas...............................................................................................................................................143 20.Reconocimientos...........................................................................................................................................144 vi Capítulo 1. Dedicatoria Estedocumentoestádedicadoaunmontóndepersonas,yesmiintencióndevolverlesalgo.Unalistadeunos pocos: • RustyRussell • AlexeyN.Kuznetsov • LosbuenoschicosdeGoogle • ElpersonaldeCasemaInternet 1 Capítulo 2. Introducción Bienvenido,gentillector. ConestedocumentoesperoiluminarteencómohacermásconelenrutamientodeLinux2.2/2.4.Aunquela mayoríadelosusuarioslodesconozca,estánusandoherramientasquepermitenhacercosasespectaculares. Ordenestalescomorouteeifconfigenrealidadsonenvolturasrealmentedelgadasalrededordelapoderosa infraestructuradeiproute2. EsperoqueesteCómoseatanlegiblecomolosdeRustyRussell,famoso(entreotrascosas)pornetfilter. SiemprepuedelocalizarnosescribiendoalequipodelHOWTO(mailto:[email protected])(hágaloeninglés). Sinembargo,lepedimosqueconsidereenviarelmensajealalistadecorreo(vealaseccióncorrespondiente)si tienedudasquenoesténrelacionadasdirectamenteconestedocumento.Nosomosunserviciodeatención gratuita,aunqueamenudorespondamosalaspreguntasquenoshacenenlalista. AntesdequesepierdaenesteCómo,siloúnicoquedeseaeshaceruncontroldetráficosencillo,sáltesetodolo demásyvayadirectoalcapítuloOtherpossibilities,yleasobreCBQ.init. 2.1. Descargo de responsabilidad y licencia Estedocumentosedistribuyeconlaesperanzadequeseaútil,peroSINNINGUNTIPODEGARANTIA; inclusosinlasgarantíasimplícitasMERCANTILESoDEADECUACIONPARAUNPROPOSITO PARTICULAR. Enbreve,sisubackboneSTM-64sedesconfigurayempiezaarepartirpornografíaasusclientesmásestimados, noesculpanuestra.Losentimos. Copyright(c)2002byberthubert,GregoryMaxwell,MartijnvanOosterhout,RemcovanMook,PaulB. Schroederandothers.Thismaterialmaybedistributedonlysubjecttothetermsandconditionssetforthinthe OpenPublicationLicense,v1.0orlater(thelatestversionispresentlyavailableat http://www.opencontent.org/openpub/). Copieydistribuya(vendiéndolooregalándolo)estedocumentoencualquierformato.Lepedimosqueenvíe correccionesycomentariosalmantenedordeldocumento. TambiénlepedimosquesipublicaesteCómoenpapel,envíealgunasmuestrasalosautorespara“propósitosde revisión”:-) 2.2. Conocimientos previos Talcomoimplicaeltítulo,esteesunCómo“Avanzado”.Aunquenoescienciaespacialdeningunamanera,se 2 Capítulo2.Introducción asumenciertosconocimientosprevios. Aquíhayalgunasreferenciasquepuedenayudarleaaprenderalgomás: ElCómodeconceptosderedesdeRustyRussell (http://netfilter.samba.org/unreliable-guides/networking-concepts-HOWTO/index.html).Tambiéndisponedeuna versiónencastellano (http://www.insflug.org/COMOs/conceptos-de-redes-COMO/conceptos-de-redes-COMO.html). Muybuenaintroducción,queexplicaloqueesunared,ycómoseconectaconotras. RedesenLinuxCómo(PreviamenteNet-3Como) Granmaterial,aunqueunpocoexhaustivo.Leenseñaunmontóndecosasqueyadebenestarconfiguradas siescapazdeconectaraInternet.Deberíaestaren/usr/doc/HOWTO/NET3-4-HOWTO.txtperotambién lopuedeencontrarenlínea(http://www.linuxports.com/howto/networking)(yencastellanoaquí (http://www.insflug.org/COMOs/Redes-En-Linux-Como/Redes-En-Linux-Como.html)). 2.3. Qué puede hacer Linux por usted Unapequeñalistadecosasposibles: • Mejorarelanchodebandadeciertoscomputadores • MejorarelanchodebandaHACIAciertoscomputadores • Ayudarleacompartirsuanchodebandadeformajusta • ProtegersuredanteataquesDoS • ProtegeraInternetdesusclientes • Multiplexarvariosservidorescomounosolo,paraequilibriodecargaodisponibilidadmejorada • Restringirelaccesoasuscomputadores • Limitarelaccesodesususuariosaotrasmáquinas • Hacerenrutamientobasadoeneliddelosusarios(¡sí!),direcciónMAC,direcciónIPdeorigen,puerto,tipo deservicio,horadeldíaocontenido Actualmente,nomuchagenteusaestascapacidadesavanzadas.Estosucedeporvariasrazones.Mientrasquela documentaciónexistenteesexahustiva,noesmuypráctica.Elcontroldetráficoestácasisindocumentar. 2.4. Notas de mantenimiento Hayvariascosasquehabríaqueresaltarsobreestedocumento.Aunquequeloheescritoensumayoría, realmentenoqueríaquefueseasí.CreomuchoenelOpenSource,demaneraqueleanimoaquemeenvíesus impresiones,actualizaciones,parches,etc.Nodudeeninformarmedefallosdeortografíaoerrorespor antigüedad.(Nota:losiguientesólotienesentidoeneldocumentooriginal)Simiinglésparecealgoacartonado, porfavor,tengaencuentaquenosoyunhablantenativo.Siéntaselibredeenviarmesugerencias. 3 Capítulo2.Introducción Sicreequeestámejorcualificadoparamantenerunasección,opiensaquepuedecrearymantenernuevas secciones,seabienvenido.ElSGMLdeesteCómoestádisponiblevíaCVS,ymegustaríaquetrabajasemás genteenél. Comoayudaparaesto,podráencontrarvariasnotasFIXME.¡Losparchessiemprevienenbien!Cuandose encuentreconunFIXME,deberíasaberqueestáentrandoenterritoriodesconocido.Estonoquieredecirqueno hayaerroresenotraspartes,perotengaespecialcuidado.Sihacomprobadoquealgoesválido,porfavor, háganoslosaberparaeliminarlanotadeFIXME. SobreesteCómo,mevoyatomarunaseriedelibertades.Porejemplo,postulounaconexiónaInternetde 10Mbit,aunquesémuybienqueestonoesnadacomún. 2.5. Acceso, CVS y envío de actualizaciones EllugarcanónicodeesteCómoeséste(http://www.ds9a.nl/lartc). AhoradisponemosdeaccesoanónimoaCVSparatodoelmundo.Estoesbuenoporvariasrazones.Puede actualizardeformasencillaanuevasversionesdeesteCómoyenviarparchesesfácil. Másaún,permitealosautorestrabajarenelfuentedeformaindependiente,locualesbueno. $ export CVSROOT=:pserver:[email protected]:/var/cvsroot $ cvs login CVS password: [introduzca "cvs" (sin comillas)] $ cvs co 2.4routing cvs server: Updating 2.4routing U 2.4routing/lartc.db Sihahechocambiosyquierecontribuirconellos,ejecutecvs -z3 diff -uBb,yenvíeelresultadoa <[email protected]>,quenosotrospodemosintegrarlodeformasencilla.¡Gracias!Porfavor,asegúresedeque editaelfichero.db.Porcierto,losotrosficherossegeneranpartiendodeéste. SeproporcionaunMakefilequeleayudaráacrearpostscript,dvi,pdf,htmlytextoplano.Puedequenecesite instalardocbook,docbook-utils,ghostscriptytetexparaobtenertodoslosformatos. ¡Procurenoeditar2.4routing.sgml!ContieneunaversiónantiguadeesteHOWTO.Elficherocorrectoes lartc.db. 2.6. Lista de correo LosautoresrecibenuncrecientenúmerodemensajessobreesteCómo.Debidoalclarointerésdelacomunidad, sehadecididocrearunalistadecorreodondelagentepuedahablarentresísobreAdvancedRoutingandTraffic Control.Puedesuscribirsealalista(sehablaeninglés)aquí(http://mailman.ds9a.nl/mailman/listinfo/lartc). 4