| 1 |
<!-- Debian Network Administartor's Manual - Overview of TCP/IP -->
|
| 2 |
|
| 3 |
<chapt id="tcpip">
|
| 4 |
|
| 5 |
<heading>TCP/IP</heading>
|
| 6 |
|
| 7 |
<p>
|
| 8 |
autor = Duncan C Thomson <email>duncan@sciuro.demon.co.uk</email>
|
| 9 |
</p>
|
| 10 |
|
| 11 |
<p>
|
| 12 |
topics = protocolo IP, protocolo TCP, direcciones IP, interfaces IP, Enrutado
|
| 13 |
</p>
|
| 14 |
|
| 15 |
|
| 16 |
<sect>Introducción
|
| 17 |
<p>TCP/IP, como su nombre sugiere, son dos protocolos,
|
| 18 |
en los que esta basada la mayor parte de Internet. Internet
|
| 19 |
está construida físicamente por una gran cantidad de tecnologías de
|
| 20 |
telecomunicaciones, desde un lento modem que conecta a través de
|
| 21 |
Ethernet, hasta redes conmutadas basadas en tecnología ATM de alta velocidad,
|
| 22 |
un gran número de aplicaciones funcionan sobre ellos - el WEB y el correo
|
| 23 |
electrónico son sólo dos de todas ellas, los protocolos que manejan
|
| 24 |
todo son IP (Internet Protocol o Protocolo de Internet), y, quizás el más
|
| 25 |
importante en uso, TCP (Transmission Control Protocol o Protocolo de Control
|
| 26 |
de Transmisiones). Otro Protocolo, UDP, es usado en vez de TCP por algunas
|
| 27 |
aplicaciones, especialmente en redes LAN, pero en Internet es TCP/IP , el
|
| 28 |
modelo por el que se rige todo.</p>
|
| 29 |
|
| 30 |
<p>diagrama: Varias redes físicas, IP, TCP y UDP, aplicaciones</p>
|
| 31 |
|
| 32 |
<p>Este capítulo describe en primer lugar las bases de las redes IP,y luego
|
| 33 |
describirá algunas de las más avanzadas características del TCP/IP disponibles
|
| 34 |
para el usuario de Debian.</p>
|
| 35 |
</sect>
|
| 36 |
|
| 37 |
<sect>Direcciones IP
|
| 38 |
|
| 39 |
<p>Cada ordenador conectado directamente a Internet (o a cualquier red basada
|
| 40 |
en IP) está identificado por una dirección IP. La dirección IP consta de cuatro
|
| 41 |
bytes largos, y normalmente se escribe con 4 números en decimal separados por
|
| 42 |
puntos, como se puede ver en el siguiente ejemplo.
|
| 43 |
<list>
|
| 44 |
<item>10.34.92.111</item>
|
| 45 |
<item>127.0.0.1</item>
|
| 46 |
<item>172.19.220.2</item>
|
| 47 |
<item>192.168.50.109</item>
|
| 48 |
</list>
|
| 49 |
<p>La dirección IP típicamente identifica dos cosas. Primero, identifica
|
| 50 |
la red en la que se encuentra un ordenador. Y segundo, identifica
|
| 51 |
un ordenador en esa red. Ambos componentes de información residen
|
| 52 |
en una dirección IP,y pueden ser llamados: la <em>parte de la red</em>
|
| 53 |
y la <em>parte del puesto</em>.
|
| 54 |
Hay dos valores especiales de la parte del puesto que deberían ser
|
| 55 |
mencionados aquí - si la parte del puesto son todos ceros ("0"), la dirección
|
| 56 |
se refiere a toda la red (es decir, será una <em>dirección de la red</em> en
|
| 57 |
vez de una <em>dirección de puesto</em>). En cambio, si la parte del puesto
|
| 58 |
son todos unos ("1"), la dirección se referirá a todos los puestos de la red
|
| 59 |
(es decir, será una dirección <em>broadcast</em>).</p>
|
| 60 |
|
| 61 |
<p>A fin de indentificar cuál es la parte que corresponde a la parte del
|
| 62 |
puesto y cuál a la de la red, existen dos métodos a usar. El primero ( y el
|
| 63 |
original) es más sencillo pero más difícil de entender, así que pasemos a ver
|
| 64 |
cómo funciona. La dirección IP está dividida entre un número de <em>clases</em>,
|
| 65 |
y cada clase nos mostrará cómo dividir cada una de las dos partes de la dirección IP.
|
| 66 |
<taglist>
|
| 67 |
<tag>Clase A</tag>
|
| 68 |
<item>Una clase A de direcciones IP tiene como primer byte un número entre 1
|
| 69 |
y 126. El primer byte de una clase A de direcciones IP identifica la red,
|
| 70 |
y los siguientes tres bytes identifican al puesto en esa red.</item>
|
| 71 |
<tag>Clase B</tag>
|
| 72 |
<item>Una clase B de direcciones IP tiene como primer byte un número entre 128
|
| 73 |
y 191. Sus primeros dos bytes identifican la red,y los siguientes dos bytes al
|
| 74 |
puesto en esa red.</item>
|
| 75 |
<tag>Clase C</tag>
|
| 76 |
<item>Una clase C de direcciones IP tienes como primer byte un número entre 192
|
| 77 |
y 223. Sus primeros tres bytes identifican la red, y el siguiente byte identifica
|
| 78 |
al puesto en esa red.</item>
|
| 79 |
</taglist></p>
|
| 80 |
|
| 81 |
<p>De esta lista se puede sacar la conclusión de que las direcciones IP
|
| 82 |
que van desde el 224 hacia arriba no se usan. A no ser que estemos en otras
|
| 83 |
clases, en las que no se usan IP´s normales, aunque esto no es tema de discusión
|
| 84 |
en esta sección.</p>
|
| 85 |
|
| 86 |
<p>También habrá notado que las direcciones IP que comienzan por 127 no se han
|
| 87 |
nombrado, estas direcciones son conocidas como direcciones <em>loopback</em> o
|
| 88 |
de retorno, y pueden ser usadas para probar el TCP/IP sin estar conectado en ese
|
| 89 |
momento a una red.</p>
|
| 90 |
|
| 91 |
<p>Esto está muy bien pero, ¿que sucedería si quisiéramos dividir una clase C de
|
| 92 |
direcciones en varias redes? Entonces es cuando usaríamos el segundo método para
|
| 93 |
averiguar cuáles son las diferentes partes de una dirección IP. Este método
|
| 94 |
especifica en una dirección IP, una <em>máscara de red</em>, en la cuál son unos
|
| 95 |
("1") en la parte de la red, y ceros ("0") en la parte del puesto.
|
| 96 |
Así que, por ejemplo, las máscaras de red de serie para las distintas clases son
|
| 97 |
las siguientes:
|
| 98 |
<taglist>
|
| 99 |
<tag>Clase A</tag>
|
| 100 |
<item>255.0.0.0</item>
|
| 101 |
<tag>Clase B</tag>
|
| 102 |
<item>255.255.0.0</item>
|
| 103 |
<tag>Clase C</tag>
|
| 104 |
<item>255.255.255.0</item>
|
| 105 |
</taglist></p>
|
| 106 |
|
| 107 |
<p>Esto no nos da ninguna información adicional de la que nos dan las clases.
|
| 108 |
Pero la flexibilidad que nos permite usar máscaras de red, es la de elegir
|
| 109 |
arbitrariamente la división entre las partes de la red y la del puesto - por
|
| 110 |
ejemplo una máscara de red como 255.255.255.192 nos permitirá dividir una clase C
|
| 111 |
en cuatro partes, cada una de ellas de 62 direcciones para puestos. ¿Confundido?
|
| 112 |
estudiemos el ejemplo con más detalle.</p>
|
| 113 |
|
| 114 |
<p>Supongamos que tenemos una red en clase C con dirección IP que comienza por
|
| 115 |
192.168.50 . Si convertimos la máscara de red 255.255.255.192 a binario,
|
| 116 |
podemos ver en el último byte, que los primeros dos bits son uno("1")(esto es,
|
| 117 |
están incluidos en la parte de la red de la dirección) y los últimos seis bits
|
| 118 |
son ceros ("0") (éstos forman parte de la parte del puesto). Así que usando la
|
| 119 |
dirección IP que le hemos dado, unido a su máscara de red, hemos dividido nuestra
|
| 120 |
red en cuatro, con <em>direcciones de red</em> dadas por configuración, estos
|
| 121 |
dos bits pueden tener las siguientes cuatro posibles combinaciones (00, 01, 10, 11)
|
| 122 |
mientras que se mantenga la parte del puesto a cero
|
| 123 |
(para indentificar a la red):
|
| 124 |
<list>
|
| 125 |
<item>192.168.50.0</item>
|
| 126 |
<item>192.168.50.64</item>
|
| 127 |
<item>192.168.50.128</item>
|
| 128 |
<item>192.168.50.192</item>
|
| 129 |
</list></p>
|
| 130 |
|
| 131 |
<p>Ahora ya sabemos de donde vienen nuestras direcciones de red.
|
| 132 |
¿Y qué hay de las direcciones de puesto? Las tendremos en la configuración
|
| 133 |
de la parte del host en cada <em>subred</em> que irán los valores desde
|
| 134 |
el 000001 hasta el 111110 (recuerda - con todo unos será la dirección de
|
| 135 |
broadcast). Ésto nos dá un total de 62 puestos por cada red con direcciones:
|
| 136 |
<list>
|
| 137 |
<item>192.168.50.1 - 192.168.50.62</item>
|
| 138 |
<item>192.168.50.65 - 192.168.50.126</item>
|
| 139 |
<item>192.168.50.129 - 192.168.50.190</item>
|
| 140 |
<item>192.168.50.193 - 192.168.50.254</item>
|
| 141 |
</list></p>
|
| 142 |
|
| 143 |
<p>En Linux, si no indicamos que máscara de red estamos usando, se asumirá
|
| 144 |
normalmente por el software que queremos usar la máscara de red por defecto
|
| 145 |
para esa clase particular de direcciones.
|
| 146 |
Sólo haría falta especificar una máscara de red, si estás utilizando una que
|
| 147 |
no es estandar para una clase particular de direcciones IP.
|
| 148 |
Pero tampoco pasa nada si la especificas.</p>
|
| 149 |
|
| 150 |
<p>Cada dirección IP debería ser <em>única</em> en Internet, o cualquier
|
| 151 |
dirección de red a la que te conectes. Esto significa que no puedes asignar
|
| 152 |
direcciones IP al azar para tus puestos, porque la mayor parte de las
|
| 153 |
direcciones IP se están usando en Internet. Así que para obtener un
|
| 154 |
conjunto de direcciones IP legales para tus puestos, tendrás acceso a través
|
| 155 |
de un ISP (Internet Service Provider o Proveedor de Servicios de Intenet).
|
| 156 |
Si no tienes asignado un rango de direcciones , deberias usar un rango de
|
| 157 |
direcciones IP <em>privadas</em>, utilizadas para estar fuera de internet
|
| 158 |
o para pruebas. Ten cuidado, ya que no podrás conectarte a Internet
|
| 159 |
directamente desde una red, necesitarás utilizar una forma de NAT
|
| 160 |
(Network Address Translation o Traducción de Direcciones de Red) para hacer
|
| 161 |
esto. Los rangos de direcciones IP utilizados para uso privado son:
|
| 162 |
<list>
|
| 163 |
<item>10.0.0.0: una sóla red de clase A</item>
|
| 164 |
<item>172.16.0.0 - 172.31.0.0: 16 redes de clase B</item>
|
| 165 |
<item>192.168.0.0 - 192.168.255.0: 256 redes de clase C</item>
|
| 166 |
</list></p>
|
| 167 |
|
| 168 |
</sect>
|
| 169 |
|
| 170 |
<sect>Configuración del Interdace IP
|
| 171 |
|
| 172 |
<p>Una vez que sabemos lo que es una dirección IP, desemos usarla para uno
|
| 173 |
de nuestros puestos, tendremos que traer una de nuestras NIC´s (Network
|
| 174 |
Interface Card o Tarjeta de Interface de Red) y asignarle una dirección de
|
| 175 |
red (y posiblemente con su respectiva máscara de red). En la mayor parte
|
| 176 |
de los sistemas Debian esto se hace en la instalación y rara vez tendrás
|
| 177 |
que cambiar en un sistema sencillo.</p>
|
| 178 |
|
| 179 |
<p>El comando <prgn>ifconfig</prgn> es el que se encarga de asignar las
|
| 180 |
direcciones IP a las NIC´s. Hay un gran número de interfaces de red
|
| 181 |
diferentes soportadas por el kernel de Linux,como las que pasamos
|
| 182 |
a enumerar:
|
| 183 |
<taglist>
|
| 184 |
<tag>Loopback</tag>
|
| 185 |
<item>El interface loopback (<tt>lo</tt>), normalmente es configurado para
|
| 186 |
la dirección IP 127.0.0.1</item>
|
| 187 |
<tag>Ethernet</tag>
|
| 188 |
<item>Los interfaces Ethernet (con nombres como <tt>eth0</tt>, <tt>eth1</tt>,
|
| 189 |
<tt>eth2</tt>) son usados para las tarjetas Ethernet</item>
|
| 190 |
<tag>PPP</tag>
|
| 191 |
<item>El PPP (Point-to-Point Protocol o Protocolo Punto a Punto), es usado
|
| 192 |
como plataforma de otros protocolos, incluido IP, sobre toso tipo de
|
| 193 |
lineas serie (modem-nulo, modem, RDSI). Tiene nombres como <tt>ppp0</tt>,
|
| 194 |
<tt>ppp1</tt></item>
|
| 195 |
<tag>Token Ring</tag>
|
| 196 |
<item>A los dispositivos Token Ring se acceden a través de nombre como <tt>tr0</tt>,
|
| 197 |
<tt>tr1</tt></item>
|
| 198 |
<tag>Dummy</tag>
|
| 199 |
<item>Los controladores de red dummy son usados para sistemas que tienen
|
| 200 |
una interface de red que no siempre es, para mantener un interfaz de red
|
| 201 |
permanente para una dirección importante. Los nombres de dispositivos son
|
| 202 |
de tipo <tt>dummy</tt>, o <tt>dummy0</tt>, <tt>dummy1</tt>, y siguientes.</item>
|
| 203 |
</taglist>
|
| 204 |
Hay gran cantidad de otros dispositivos de red sopotados, como SLIP, PLIP
|
| 205 |
(Líneas serie y paralelo IP), dispositivos `shaper' para controlar el tráfico
|
| 206 |
de ciertos interfaces, la abilidad de tener varias direcciones IP asignadas a
|
| 207 |
un sólo dispositivo, como las frame relay, AX.25, X.25, ARCnet, LocalTalk
|
| 208 |
y más. Aunque aquí nos concentraremos en uno de los más comunes - el
|
| 209 |
interfaz Ethernet.</p>
|
| 210 |
|
| 211 |
<p> En muchos casos , si quieres que el kernel cargue automáticamente
|
| 212 |
ciertos controladores de dispositivo, puede requerir que hagas cambios
|
| 213 |
en tu fichero <prgn>/etc/conf.modules</prgn> o <prgn>/etc/modules</prgn>.
|
| 214 |
Por ejemplo , para cargar automáticamente el controlador NE2000, tendríamos
|
| 215 |
la linea:
|
| 216 |
<example>
|
| 217 |
alias eth0 ne
|
| 218 |
</example>
|
| 219 |
en tu fichero <prgn>/etc/conf.modules</prgn>.</p>
|
| 220 |
|
| 221 |
<p>La manera más sencilla de llamar a <prgn>ifconfig</prgn> es teclear
|
| 222 |
su nombre:
|
| 223 |
<example>
|
| 224 |
# /sbin/ifconfig
|
| 225 |
lo Link encap:Local Loopback
|
| 226 |
inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0
|
| 227 |
UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
|
| 228 |
RX packets:18584 errors:0 dropped:0 overruns:0 frame:0
|
| 229 |
TX packets:18584 errors:0 dropped:0 overruns:0 carrier:0
|
| 230 |
Collisions:0
|
| 231 |
</example>
|
| 232 |
Que devuelve la información sobre los interfaces configurados en ese
|
| 233 |
momento. Si deseamos activar un interfaz Ethernet con la dirección
|
| 234 |
192.168.50.23, especificaríamos el nombre de interfaz y la dirección
|
| 235 |
IP en el comando <prgn>ifconfig</prgn>:
|
| 236 |
<example>
|
| 237 |
# /sbin/ifconfig eth0 192.168.50.23
|
| 238 |
# /sbin/ifconfig
|
| 239 |
lo Link encap:Local Loopback
|
| 240 |
inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0
|
| 241 |
UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
|
| 242 |
RX packets:18584 errors:0 dropped:0 overruns:0 frame:0
|
| 243 |
TX packets:18584 errors:0 dropped:0 overruns:0 carrier:0
|
| 244 |
Collisions:0
|
| 245 |
|
| 246 |
eth0 Link encap:Ethernet HWaddr 00:00:E8:C5:64:2A
|
| 247 |
inet addr:192.168.50.23 Bcast:192.168.50.255 Mask:255.255.255.0
|
| 248 |
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
|
| 249 |
RX packets:55 errors:0 dropped:0 overruns:0 frame:0
|
| 250 |
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
|
| 251 |
Collisions:7
|
| 252 |
Interrupt:10 Base address:0x300
|
| 253 |
</example>
|
| 254 |
Como podemos ver en el ejemplo, <prgn>ifconfig</prgn> nos da ahora
|
| 255 |
información sobre el nuevo interfaz, incluida la máscara de red, las
|
| 256 |
estadísticas de red, e información sobre el controlador de red en sí
|
| 257 |
mismo. <prgn>ifconfig</prgn> también permite la especificación de una
|
| 258 |
máscara de red cuando el interfaz está configurado, por ejemplo:
|
| 259 |
<example>
|
| 260 |
# /sbin/ifconfig eth0 192.168.50.23 netmask 255.255.255.192
|
| 261 |
</example>
|
| 262 |
Por último, para desactivar un interfaz, usaremos la siguiente invocación
|
| 263 |
de <prgn>ifconfig</prgn>:
|
| 264 |
<example>
|
| 265 |
# /sbin/ifconfig eth0 down
|
| 266 |
</example>
|
| 267 |
Toda la información disponible de las opciones de <prgn>ifconfig</prgn> se
|
| 268 |
encuentra en la página de manual - <manref name="ifconfig" section="8">.</p>
|
| 269 |
|
| 270 |
<p>Si configuras la dirección IP de tu puesto en la instalación de
|
| 271 |
Debian GNU/Linux, deberías encontrar que el comando <prgn>ifconfig</prgn>
|
| 272 |
se arranca automáticamente en el inicio del sistema. Este trabajo lo
|
| 273 |
realiza el fichero <prgn>/etc/init.d/network</prgn>. Si miramos este
|
| 274 |
fichero veremos un número de líneas similares a éstas:
|
| 275 |
<example>
|
| 276 |
IPADDR=192.168.50.23
|
| 277 |
NETMASK=255.255.255.0
|
| 278 |
BROADCAST=192.168.50.255
|
| 279 |
ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST}
|
| 280 |
</example>
|
| 281 |
Aquí es donde la configuración del interfaz Ethernet toma lugar. Bajo
|
| 282 |
éstas líneas, deberíamos ver otra con la configuración del interfaz
|
| 283 |
looback, y veríamos un número de líneas el las que aparece la llamada
|
| 284 |
al comando <prgn>route</prgn>. Este programa, y sus funciones, son
|
| 285 |
objeto de la siguiente sección.</p>
|
| 286 |
</sect>
|
| 287 |
|
| 288 |
<sect>Bases del Enrutado IP
|
| 289 |
<p>Una vez que el interfaz de red ha sido configurado,es necesario que
|
| 290 |
le digamos al kernel de Linux donde mandar la información para varios
|
| 291 |
puestos en la red IP. El kernel mantiene una tabla, llamada una
|
| 292 |
<em>tabla de enrutado</em>, en la cuál hay una lista de nñumeros de
|
| 293 |
puestos o direcciones de red, junto con información de cómo mandar los
|
| 294 |
paquetes IP a sus destinatarios.</p>
|
| 295 |
|
| 296 |
<p>El comando <prgn>route</prgn> es usado para examinar o actualizar
|
| 297 |
esta tabla. Si el único interfaz configurado es el looback, este
|
| 298 |
comando usado por sí sólo dará normalmente una salida como la que
|
| 299 |
se muestra a continuación:
|
| 300 |
<example>
|
| 301 |
# /sbin/route
|
| 302 |
Kernel IP routing table
|
| 303 |
Destination Gateway Genmask Flags Metric Ref Use Iface
|
| 304 |
127.0.0.0 * 255.0.0.0 U 0 0 2 lo
|
| 305 |
</example>
|
| 306 |
<p>Éste nos dice que ningún tráfico proveniente del identificador de
|
| 307 |
red 127 debería ser enrutado a la interfaz loopback (<tt>lo</tt>). La
|
| 308 |
columna `genmask' especifica, de alguna manera una máscara de red, por
|
| 309 |
ésto esta tabla de enrutado debería ser usada para designar cualquier
|
| 310 |
dirección IP que comience por el número 127, sin importar lo que le siga.</p>
|
| 311 |
|
| 312 |
<p>Si nuestro puesto está conectado a una red Ethernet, entonces
|
| 313 |
debemos asegurarnos que la tabla de enrutado de kernel sabe a dónde
|
| 314 |
mandar la información. Si asumimos que hemos configurado nuestro puesto
|
| 315 |
para ser 192.168.50.23, con una máscara de red por defecto para una
|
| 316 |
clase C, el siguiente comando añadirá una entrada para nuestra red local:
|
| 317 |
<example>
|
| 318 |
# /sbin/route add -net 192.168.50.0
|
| 319 |
# /sbin/route
|
| 320 |
Kernel IP routing table
|
| 321 |
Destination Gateway Genmask Flags Metric Ref Use Iface
|
| 322 |
127.0.0.0 * 255.0.0.0 U 0 0 2 lo
|
| 323 |
192.168.50.0 * 255.255.255.0 U 0 0 137 eth0
|
| 324 |
</example>
|
| 325 |
<p>Ésto le dice al kernel que cualquier dirección IP que comience por
|
| 326 |
192.168.50 está en nuestra red local Ethernet, y que debería ser enrutada
|
| 327 |
a través del interfaz 'eth0'. Si estuviéramos usando una máscara de red
|
| 328 |
no estandar, esto puede ser especificado por la opción de la línea de
|
| 329 |
comandos del comando <prgn>route</prgn>:
|
| 330 |
<example>
|
| 331 |
/sbin/route add -net 192.158.50.0 netmask 255.255.255.192
|
| 332 |
</example>
|
| 333 |
<p>Un comando como los de arriba debería de ser suficiente si tu red
|
| 334 |
TCP/IP consiste sólo en una red simple, sin conectarla a ningún otro
|
| 335 |
sitio. De todas maneras, la mayore fuerza del TCP/IP son sus
|
| 336 |
habilidades para el <em>trabajo en red en Internet</em>, y normalmente
|
| 337 |
una red basda en IP consiste en más de una red. Así que para enrutar
|
| 338 |
paquetes IP de tus puestos a otras redes, será necesario especificar
|
| 339 |
puestos de <em>gateway o puerta de enlace</em> (también llamados
|
| 340 |
<em>routers</em>) que tratan de mandar información a esas otras redes.
|
| 341 |
Hay entonces dos posibilidades.</p>
|
| 342 |
|
| 343 |
<p>La primera es que queremos enrutar paquetes IP a una red específica,
|
| 344 |
y sabemos la dirección del puesto gateway o router que entrega la
|
| 345 |
información a esa red. Supongamos, por ejemplo, que ese es el puesto
|
| 346 |
192.168.50.1 en nuestra red, que es una router de la red 172.20.0.0
|
| 347 |
(una red de clase B). Las siguientes opciones del comando <prgn>route</prgn>
|
| 348 |
lo especifican:
|
| 349 |
<example>
|
| 350 |
# route add -net 172.20.0.0 gw 192.168.50.1
|
| 351 |
</example>
|
| 352 |
<p>Nuestra tabla de enrutado ya contiene una entrada que nos dice cómo
|
| 353 |
mandar la información a 192.168.50.1 (en nuestra red local), cualquier
|
| 354 |
tráfico de la red remota 172.20.0.0 se mandado a este puesto, que lo
|
| 355 |
entegará paropiadamente.</p>
|
| 356 |
|
| 357 |
<p>La otra posibilidad es que usamos un cierto gateway como una
|
| 358 |
<em>default route</em> - una ruta usada por los paquetes IP que no
|
| 359 |
corresponden con las leyes de nuestra tabla de enrutado. Si por
|
| 360 |
ejemplo, el puesto con dirección IP 192.168.50.254 es nuestro router
|
| 361 |
al resto del mundo (Internet, poe ejemplo), usaremos el comando
|
| 362 |
<prgn>route</prgn> como sigue :
|
| 363 |
<example>
|
| 364 |
# /sbin/route add default gw 192.168.23.254
|
| 365 |
</example>
|
| 366 |
<p>Ahora, echemos un vistazo a la tabla de enrutado:
|
| 367 |
<example>
|
| 368 |
# /sbin/route
|
| 369 |
Kernel IP routing table
|
| 370 |
Destination Gateway Genmask Flags Metric Ref Use Iface
|
| 371 |
127.0.0.0 * 255.0.0.0 U 0 0 2 lo
|
| 372 |
192.168.50.0 * 255.255.255.0 U 0 0 137 eth0
|
| 373 |
172.20.0.0 192.168.50.1 255.255.0.0 UG 1 0 7 eth0
|
| 374 |
default 192.168.50.254 0.0.0.0 UG 1 0 36 eth0
|
| 375 |
</example>
|
| 376 |
<p>Expliquemos la tabla empezando desde arriba:
|
| 377 |
<enumlist>
|
| 378 |
<item>En primer lugar hemos especificado una dirección loopback para
|
| 379 |
todas las direcciones del tipo 127.*.*.*</item>
|
| 380 |
<item>Luego, hemos especificado como alcanzar todos los puestos de
|
| 381 |
nuestra, identificados como 192.168.50.*</item>
|
| 382 |
<item>Después, hemos dado una ruta a todos los puestos de la red
|
| 383 |
(172.20.*.*) conectados al puesto 192.168.50.1, que es un router
|
| 384 |
(o gateway) para esa red</item>
|
| 385 |
<item>Y finalmente, hemos especificado que el puesto 192.168.50.254
|
| 386 |
repartirá todo el tráfico restante</item>
|
| 387 |
</enumlist>
|
| 388 |
</p>
|
| 389 |
<p>Por ahora, no nos hemos ficjado el significan los acrónimos
|
| 390 |
`flags', `metric' y `ref'.</p>
|
| 391 |
|
| 392 |
<p>Echemos una mirada a un típico fichero <prgn>/etc/init.d/network</prgn>,
|
| 393 |
configurado por la instalación de Debian en un puesto conectado a
|
| 394 |
una red Ethernet normal:
|
| 395 |
<example>
|
| 396 |
#! /bin/sh
|
| 397 |
ifconfig lo 127.0.0.1
|
| 398 |
route add -net 127.0.0.0
|
| 399 |
IPADDR=192.168.50.23
|
| 400 |
NETMASK=255.255.255.0
|
| 401 |
NETWORK=192.168.50.0
|
| 402 |
BROADCAST=192.168.50.255
|
| 403 |
GATEWAY=192.168.50.254
|
| 404 |
ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST}
|
| 405 |
route add -net ${NETWORK}
|
| 406 |
[ "${GATEWAY}" ] && route add default gw ${GATEWAY} metric 1
|
| 407 |
</example>
|
| 408 |
<p>Las primeras línes de este shell script configuran el interfaz
|
| 409 |
loopback, y lo añaden como una entrada a la tabla de enrutado. La
|
| 410 |
definición de las variables siguientes asignan una dirección IP a
|
| 411 |
nuestro puesto, la máscara de red, la dirección de nuestra red, la
|
| 412 |
dirección broadcast y la dirección de nuestro router por defecto.
|
| 413 |
Finalmente, nuestro interfaz de red es configurado con <prgn>ifconfig</prgn>,
|
| 414 |
y dos llamadas al comando <prgn>route</prgn> añadiendo entradas para
|
| 415 |
nuestra red local y luego para el gateway por defecto.</p>
|
| 416 |
|
| 417 |
<p>Ahora puedes ver las direcciónes ( de red y de puestos) en la
|
| 418 |
salida del comando <prgn>route</prgn> no aparecen como direcciones
|
| 419 |
IP, sino con nombres. Los nombres de redes pueden ser configurados
|
| 420 |
en el fichero <prgn>/etc/networks</prgn> (que es normalmente
|
| 421 |
configurado por las rutinas de configuración de red de Debian en la
|
| 422 |
instalación), y los nombre de los puestos son incluidos en el fichero
|
| 423 |
<prgn>/etc/hosts</prgn> y en el DNS (Domain Name Service o Servicio
|
| 424 |
de Nombres de Dominio). Ahora pasamos a ver que es un DNS y que es
|
| 425 |
lo que hace.</p>
|
| 426 |
|
| 427 |
</sect>
|
| 428 |
|
| 429 |
<sect>Servicio de Nombres de Dominio (DNS)
|
| 430 |
<p>Cada computadora conectada a Internet, o a cualquier red que usa IP
|
| 431 |
como su protocolo de red, tiene una dirección IP, con el fin de que la
|
| 432 |
información pueda ser enrutada hacia y desde ella. Las direcciones IP
|
| 433 |
son un poco difíciles de recordar por los humanos, y por esta razón,
|
| 434 |
a cada puesto se le asigna también un nombre. Cuando se instala Debian
|
| 435 |
esta es una de las preguntas que se le hacen - Cuál es el nombre que se
|
| 436 |
le dará a su puesto.</p>
|
| 437 |
|
| 438 |
<p>El nombre de tu ordenador será almacenado en pocas localizaciones.
|
| 439 |
Puedes averiguar el nombre de tu ordenador tecleando el comando
|
| 440 |
<prgn>hostname</prgn>, que devuelve el valor del archivo
|
| 441 |
<prgn>/etc/hostname</prgn>.
|
| 442 |
Si estás conectado a Internet, este nombre tendrá normalmente varias
|
| 443 |
partes, separadas por puntos, por ejemplo:
|
| 444 |
<example>
|
| 445 |
debian.anon.com
|
| 446 |
</example>
|
| 447 |
El nombre de tu ordenador es sólo la primera parte de éste- el resto
|
| 448 |
es conocido como el <em>nombre de dominio</em> - que en este caso es
|
| 449 |
la parte <tt>anon.com</tt>. Seguramente habrá varios ordenadores con
|
| 450 |
el mismo nombre en Internet, cada uno único en su propio dominio.
|
| 451 |
Sin un dominio, normalmente una persona es responsable de dar los
|
| 452 |
nombres a cada ordenador, y administrar la base de datos que maneja
|
| 453 |
todos los nombre y direcciones de los ordenadores en el esedominio.
|
| 454 |
Este sistema es conocido como DNS, y es como una agenda telefónica
|
| 455 |
- puedes buscar un ordenador por su nombre y averiguarás su dirección
|
| 456 |
IP.</p>
|
| 457 |
|
| 458 |
<p>Antes de que existiera el DNS, la gente tenía que memorizar las
|
| 459 |
direcciones IP para usar Internet, y los nombres sólo eran conocidos
|
| 460 |
por un conjunto reducido de ordenadores - normalmente en una red local,
|
| 461 |
y tal vez uno o dos ordenadores a los que estaban permanentemente
|
| 462 |
conectados a nuestro puesto. Estos nombre se almacenaban en un sólo
|
| 463 |
fichero - <prgn>/etc/hosts</prgn> - y en el que normalmente se encontraba
|
| 464 |
el nombre y la dirección de nuestro propio ordenador que son añadidos el
|
| 465 |
la instalación de Debian.</p>
|
| 466 |
|
| 467 |
<p>El DNS es un sitema moderadamente complejo, en el que entraremos con más
|
| 468 |
detalles más tarde, a través del sotfware (<prgn>bind</prgn>) que permite
|
| 469 |
manejar tu propio dominio DNS.</p>
|
| 470 |
|
| 471 |
<p>Ahora veremos como funciona el DNS desde el punto de vista del cliente
|
| 472 |
- es decir desde el punto de vista de un puesto que sólo necesita localizar
|
| 473 |
puestos, diferente del que los provee el servicio DNS.</p>
|
| 474 |
|
| 475 |
<p>Cuando un puesto con Debian necesita localizar el nombre de computador
|
| 476 |
a fin de encontrar su dirección IP, se usan una serie de rutinas de la
|
| 477 |
librería de C llamadas <em>resolver</em>. Las rutinas resolver, consultan
|
| 478 |
en primer lugar el fichero <prgn>/etc/nsswitch.conf</prgn>, el cuál, en la
|
| 479 |
entrada para <tt>hosts</tt> listará los lugares en los que el resolver
|
| 480 |
comprobará en orden para averiguar la dirección IP. Aquí caben tres
|
| 481 |
posibilidades, si hay presentes más de uno, el resolver comprobará cada
|
| 482 |
uno de ellos en orden. Éstan son:
|
| 483 |
<taglist>
|
| 484 |
<tag>ficheros
|
| 485 |
<item>Comprueba el fichero <prgn>/etc/hosts</prgn> por cualquier entrada
|
| 486 |
con el nombre de puesto requerido
|
| 487 |
<tag>nis
|
| 488 |
<item>Comprueba la base de datos NIS (que explicaremos más tarde) buscando
|
| 489 |
el nombre de puesto requerido
|
| 490 |
<tag>dns
|
| 491 |
<item>Comprueba el Sericio de Nombre de Dominio
|
| 492 |
</taglist>
|
| 493 |
Un contenido típico en el fichero <prgn>/etc/nsswitch</prgn> puede ser:
|
| 494 |
<example>
|
| 495 |
hosts: files dns
|
| 496 |
</example>
|
| 497 |
Esto nos dice que el resolver comprobará primero el fichero <prgn>/etc/hosts</prgn>
|
| 498 |
y luego consultará al DNS.</p>
|
| 499 |
|
| 500 |
<p>El DNS es configurado por el fichero <prgn>/etc/resolv.conf</prgn>.
|
| 501 |
Éste fichero especifica normalmente dos cosas, cual es el dominio en que
|
| 502 |
se encuentra nuestro ordenador, y segundo, una lista de servidores de
|
| 503 |
nombre a los que preguntar información. Un ejemplo prodría ser:
|
| 504 |
<example>
|
| 505 |
domain anon.org
|
| 506 |
nameserver 172.19.0.1
|
| 507 |
nameserver 172.19.5.1
|
| 508 |
</example>
|
| 509 |
La primera línea le dice a la librería resolver si preguntamos por un
|
| 510 |
puesto y no especificamos un nombre de dominio, éste debería ser
|
| 511 |
<tt>anon.org</tt> añadido a él - es decir la librería resolver lo
|
| 512 |
buscaría, asumiendo que el puesto está en tumismo dominio.
|
| 513 |
Las dos líneas siguientes que comienzan con <tt>nameserver</tt>
|
| 514 |
especifican la dirección IP de los puestos que consultaría usando DNS.
|
| 515 |
Éstos deberían estar siempre con direcciones IP - sin nombres - por
|
| 516 |
razones obvias.</p>
|
| 517 |
|
| 518 |
<p>La mayor parte de las utilidades en red buscarán automáticamente
|
| 519 |
la dirección IP del puesto si especificas un nombre, pero si quieres
|
| 520 |
consultar directamente al DNS, el paquete <tt>dnsutils</tt> contiene
|
| 521 |
un programa llamado <prgn>nslookup</prgn>.
|
| 522 |
<prgn>nslookup</prgn> puede ser usado tanto, de una vez, dando el
|
| 523 |
nombre del puesto que estás buscando, con la posibilidad de argumentos
|
| 524 |
en línea de comandos, o interactivamente, siplemente tecleando
|
| 525 |
<prgn>nslookup</prgn> . El modo interactivo permite hacer un número de
|
| 526 |
búsquedas y tiene una ayuda limitada.</p>
|
| 527 |
|
| 528 |
<p><prgn>nslookup</prgn>, como otros programas de consulta de DNS y el
|
| 529 |
software que provee los servicios de DNS, serán descritos en más
|
| 530 |
detalle más adelante.</p>
|
| 531 |
|
| 532 |
<p>Para más información sobre DNS, por favor lee <ref id="bind">.
|
| 533 |
|
| 534 |
</sect>
|
| 535 |
|
| 536 |
<sect>Solucíon de problemas con ICMP y IP
|
| 537 |
</sect>
|
| 538 |
|
| 539 |
<sect>TCP y UDP
|
| 540 |
</sect>
|
| 541 |
|
| 542 |
<sect>Servidores, Demonios y el Superservidor
|
| 543 |
</sect>
|
| 544 |
|
| 545 |
|
| 546 |
</chapt>
|
| 547 |
|
| 548 |
<!-- Keep this comment at the end of the file
|
| 549 |
Local variables:
|
| 550 |
mode: sgml
|
| 551 |
sgml-omittag:t
|
| 552 |
sgml-shorttag:t
|
| 553 |
sgml-minimize-attributes:nil
|
| 554 |
sgml-always-quote-attributes:t
|
| 555 |
sgml-indent-step:2
|
| 556 |
sgml-indent-data:t
|
| 557 |
sgml-parent-document:"network-administrator.sgml chapt sect"
|
| 558 |
sgml-exposed-tags:nil
|
| 559 |
sgml-local-catalogs:"/usr/lib/sgml/catalog"
|
| 560 |
sgml-local-ecat-files:nil
|
| 561 |
End:
|
| 562 |
-->
|
| 563 |
|