Conceptos sobre redes e sistemas operativos

De Manuais Informática - IES San Clemente.
Ir a la navegación Ir a la búsqueda

Introdución

No capítulo anterior introduciuse TCP/IP como un conxunto de protocolos abertos que permiten a execución de servizos de Internet. Neste capítulo estúdanse diferentes aspectos do sistema operativo GNU/Linux necesarios para a configuración e administración básica destes servizos. En concreto trátanse os seguintes conceptos:

  • Direccionamento e enrutamento en IP
  • Configuración dunha rede TCP/IP en GNU/Linux
  • Instalación de software
  • Arranque e parada de servizos

Direccionamento en IP

Direccións IP

As direccións IP permiten identificar un equipo en Internet, así como a subrede á que pertence. Cada interface de rede (NIC ou Network Interface Card, é dicir, a tarxeta de rede) dun equipo ten polo menos unha dirección IP, aínda que esta pode cambiar, non como no caso das direccións MAC. Se unha máquina ten dúas interfaces de rede terá dúas direccións IP.

Unha dirección IP represéntase con 4 bytes en decimal separados por puntos. Por exemplo:

194.83.153.100


Aprende.png
INTERÉSACHE


O Internet Network Information Center ou InterNIC (actual ICANN) adícase á tarefa de asignar rangos de direccións IP. Na actualidade, esta entidade delega a responsabilidade da asignación de direccións a entidades rexionais (en España, a red.es)

Un enderezo IP divídese en dúas partes:

  • Unha parte identifica o número de rede (identificador de rede)
  • Outra parte identifica o número de equipo dentro desa rede (identificador de equipo)

Existen tres clases de direccións IP (A, B e C) en función do número de equipos e redes que poden direccionar:

  • Clase A. Reservan o primeiro byte (8 bits) para o identificador da rede e os tres restantes (24 bits) para identificadores de equipos. O primeiro bit do primeiro byte vale 0. Polo tanto, só pode haber 2^7 direccións de clase A con 2^24 equipos cada unha (xa non se asignan direccións deste tipo). Por exemplo:
Direccíon IP: 30.1.2.3
Identificador de rede (o primeiro byte): 30
Identificador de equipo (os tres bytes seguintes): 1.2.3


  • Clase B. Teñen 2 bytes para redes e 2 bytes para equipos. Os dous primeiros bits do identificador de rede sempre valen 10 (en binario), xa que logo, pode haber 16.384 redes (2^14) con 65.536 estacións cada unha. De clase B tampouco queda ningunha dirección libre para asignar. Por exemplo:
Dirección IP: 140.1.2.3
Identificador de rede: 140.1
Identificador de equipo dentro desa rede: 2.3


  • Clase C. Reservan 3 bytes (24 bits) para o identificador de rede e 1 byte (8 bits) para o identificador de estación. Os tres primeiros bits do identificador de rede teñen o valor 110 (en binario). Por exemplo:
Dirección IP: 194.144.35.5
Identificador de rede: 194.144.35
Identificador de equipo dentro desa rede: 5

Hai menos direccións IP útiles das posibles, xa que algunhas están reservadas. Unha vez que se coñece unha dirección é fácil saber se corresponde a unha rede de clase A, B ou C:

Ip4.jpg

Na imaxe anterior non hai ningunha dirección que empece con tres bits 111. Estas direccións (chamadas clase D e clase E) son de propósito especial e non se asignan a máquinas concretas.

Máscaras de rede

O concepto de máscara é fundamental para entender o funcionamento das redes IP. A máscara permite a unha estación decidir se o destino ao que debe transmitir se atopa dentro da mesma LAN ou nunha LAN remota. Neste último caso debe delegar a súa transmisión a algún equipo da súa mesma LAN (o encamiñador) para que se encargue de facer chegar o paquete ao seu destino.

O que determina se dous equipos están na mesma LAN é o identificador de rede. O identificador de rede dunha dirección IP non está determinado polo primeiro byte da dirección IP (ou primeiros), senón pola máscara. A máscara son 4 bytes que oscilan entre 0 e 255 cada un separados por puntos, como nunha dirección IP. Por medio da máscara definimos os bits que identifican a rede (bits a 1 da máscara) e os que identifican a estación (bits a 0). Así, o identificador de rede é a parte da dirección IP que encaixa cos bits a 1 da máscara (AND lóxico). Analogamente, o identificador de equipo é a parte da dirección IP que encaixa cos bits a 0 da máscara (OR lóxico). Vexámolo cuns exemplos:

Obter o identificador de rede e identificador de equipo dun enderezo IP
Exemplo I: 
  Enderezo IP: 69.51.117.3 (01000101.51.117.3)
  Máscara: 255.0.0.0 (11111111.0.0.0)
  Rede: 69.0.0.0
  Equipo: 51.117.3

Exemplo II:
  Enderezo IP: 69.51.117.3
  Máscara: 255.255.0.0
  Rede: 69.51.0.0
  Equipo: 117.3

Exemplo III:
 Enderezo IP: 69.51.117.3
 Máscara: 255.255.255.0
 Rede: 69.51.117.0
 Equipo: 3

Para que dous equipos se poidan comunicar entre si no nivel de rede deben pertencer á mesma rede IP, senón terán que comunicarse a través dun encamiñador. Para comprobar se dous equipos pertencen ou non á mesma LAN basta con aplicarlles a máscara de rede ás súas direccións IP mediante un AND lóxico e así obteremos o identificador da rede. Vexámolo cun exemplo:

Exemplo: 
Se temos dúas estacións coas direccións:
- EquipoI: 147.83.153.100
- EquipoII: 147.83.153.200, 
- Máscara de rede 255.255.255.0
Podemos ver que están na mesma LAN, aplicándolle a máscara:
- Equipo I: 10010011.01010011.10011001.01100100
- Máscara:  11111111.11111111.11111111.00000000
------------------------------------------------
AND:        10010011.01010011.10011001.00000000

O identificador de rede é, en ambos casos, 147.83.153.0. Se facemos un OR lóxico entre a parte que está a 0 da máscara e a dirección IP obteriamos o identificador do equipo.

Con todo, no exemplo anterior, se a máscara fose, por exemplo, 255.255.255.128, deduciriamos que non están conectadas á mesma LAN. Vexámolo. Para o equipo I:

- Equipo I: 10010011.01010011.10011001.01100100
- Máscara:  11111111.11111111.11111111.10000000
------------------------------------------------
AND:        10010011.01010011.10011001.00000000

O identificador de rede é:

147.83.153.0

Para o equipo II:

- Equipo II: 10010011.01010011.10011001.11001000
- Máscara:   11111111.11111111.11111111.10000000
------------------------------------------------
AND:         10010011.01010011.10011001.10000000

O identificador de rede é:

147.83.153.128

Unha notación alternativa para a máscara é proporcionar o número de bits con valor 1 da mesma. Así pois, a máscara 255.255.255.0 é unha máscara de 24 bits e a 255.255.255.128 é unha máscara de 25 bits. É habitual ver unha dirección co engadido da máscara e coa seguinte notación:

147.83.153.100/24

Direccións especiais

Existen algunhas direccións IP de propósito especial. Todas as direccións dos seguintes rangos son privadas:

10.0.0.0/8
Da 172.16.0.0/16 á 172.31.0.0/16
Da 192.168.0.0/24 á 192.168.255.0/24

Asemade, as clases D e E están reservadas.

Subnetting

Cando un administrador dunha rede recibe o encargo de xestionar un conxunto de direccións, é posible que necesite configurar internamente diferentes LAN con este conxunto. Xa vimos que isto se fai coa máscara de rede. Por exemplo, podemos usar máis bits dos que corresponderían para a máscara nunha rede de clase C (25 bits en lugar de 24 que sería o "normal" ou máscara natural). Isto permite crear máis redes “roubando” bits aos bits correspondentes aos equipos. Poderemos direccionar menos equipos pero cunha única dirección IP teremos máis redes. A isto chámaselle subnetting e ás redes que se crean utilizando esta técnica chámaselles subredes.

Por exemplo, a dirección 212.45.10.0/27 permite crear 8 subredes distintas dentro da rede de clase C 212.45.10.0 porque rouba 3 bits do identificador de estación, xa que a máscara natural sería de 24 bits, é dicir, 212.45.10.0/24, e 2^3 = 8 redes. Xa que logo, as subredes posibles serían:

000
001
010
011
100
101
110
111

Dentro de cada subrede, a dirección con todos os bits a 0 (coincide co identificador de rede) e a dirección con todos os bits a 1 (coincide coa dirección de broadcast) non se usan.

Supernetting

Se en lugar de roubar bits da parte da dirección IP que identifica aos equipos, collemos bits da parte da dirección IP que identifica ás redes estaremos facendo supernetting. O mecanismo é idéntico ao anterior pero ás redes resultantes chamaráselles superredes. Ambas técnicas, subnetting e supernetting, dan lugar ao que se chama Classless Inter-Domain Routing (CIDR) ou direccións IP sen clase.

Encamiñamento

O encamiñamento ou enrutamento permite dirixir o tráfico cara a outras estacións remotas noutras LAN. A un router (tamén chamado encamiñador, porta de enlace ou gateway) chegan paquetes que serán encamiñados por unha ou outra liña en función da súa táboa de encamiñamento. Así como un condutor, para acadar o seu destino, pode atravesar moitas rotondas, un paquete IP, para acadar o seu destino, pode atravesar moitos routers.

Polo tanto, o routing lévase a cabo a partir de táboas de encamiñamento con información que permite a interconexión das distintas redes. Cada router ten unha táboa de encamiñamento que podería ter o seguinte aspecto:

UD2 1.jpg

A primeira columna da táboa anterior destination indica que destinos son alcanzables. O funcionamento é o seguinte: cando desde o noso equipo desexamos mandar un paquete IP a un equipo noutra rede aplícaselle á dirección IP de destino a máscara que se atoma da terceira columna (genmask). Se tras aplicarlla obtemos como resultado a dirección IP da rede da columna destination dito paquete será enviado polo encamiñador da columna gateway. Neste caso a columna gateway ten o valor 0.0.0.0 o cal quere dicir que será enviado polo mesmo equipo. A columna Iface indica a interface de rede que se usará. No exemplo, estamos falando dun equipo, probablemente un router, con tres tarxetas, eth0, eth1, eth2.

Tamén, cada equipo conectado a unha rede IP necesita unha táboa de encamiñamento para saber se unha determinada dirección está ou non na súa rede e enviar o paquete ao router, en caso de que non sexa así.

Para engadir rutas á taboa consulta o apartado sobre o comando route.


Aprende.png
INTERÉSACHE


ip_forward. Para que unha máquina Linux poida comportarse como un router ten que ter a variable ip_forward a 1. Para poder modificar esa variable previamente hai que se facer root. Iso conséguese mediante o seguinte comando su -, e tras introducir a clave tecléase:

echo 1 > /proc/sys/net/ipv4/ip_forward

Configuración da rede en Ubuntu

Normalmente, a configuración da rede pode realizarse a través de aplicacións gráficas, como en MS-Windows. Con todo, neste apartado veremos como facelo desde a liña de comandos que é o método máis frecuente cando configuramos, por exemplo, un servidor. O seguinte aplícase ao sistema operativo Ubuntu, sendo moi similar para outras distribucións (Debian, OpenSuse, etc.).

Moitos dos aspectos de configuración relacionados coas interfaces de rede están no ficheiro /etc/network/interfaces. Se o computador non ten dispositivos ethernet este ficheiro só conterá a interface loopback, tal e como se amosa a continuación:

# Este ficheiro describe as interfaces de rede dispoñibles no sistema
# e como activalas. Para máis información: man interfaces.

# A interface de rede loopback
auto lo
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0

Para ver o ficheiro de interfaces pódese teclear o seguinte:

more /etc/network/interfaces

Configuración mediante DHCP

Se o computador ten só un dispositivo ethernet, eth0, que se activa automaticamente ao arrincar o sistema e que se configura mediante un servidor DHCP, o ficheiro interfaces terá dúas liñas máis::

auto eth0
iface eth0 inet dhcp

A primeira liña indica que o dispositivo eth0 se activa automaticamente durante o arrinque do sistema. A segunda liña indica que a interface (“iface”) eth0 ten unha dirección IPv4. Se remplazamos “inet” con “inet6” teríamos unha dirección IPv6. Se o servidor DHCP está correctamente configurado non se precisa facer nada máis para ter a rede funcionando. O servidor DHCP proporcionará o encamiñador por defecto (gateway), a dirección IP e os servidores DNS. Para editar o ficheiro interfaces pódese usar o editor de textos vim tecleando o seguinte:

sudo vim /etc/network/interfaces

Para máis información sobre o vim consulta as páxinas de manual tecleando:

man vim

Tamén se poden configurar os parámetros anteriores mediante a ferramentas dhclient pero os cambios non se manterán se apagamos o computador.

Configuración manual permanente

Se non temos un servidor DHCP hai que configurar os parámetros anteriores manualmente. O ficheiro /etc/network/interfaces úsano os scrpits de configuración ifup/ifdown.

Direccións IP: o ficheiro interfaces

Supoñamos que queremos asignar a dirección IP 192.168.0.2 ao dispositivo eth1, cunha máscara natural 255.255.255.0. O encamiñador por defecto é o 192.168.0.1. Habería que editar o ficheiro /etc/network/interfaces para que incluíra o seguinte información:

auto eth1
iface eth1 inet static
	address 192.168.0.2
	netmask 255.255.255.0
	gateway 192.168.0.1

Se se quere incluír un gateway para unha determinada rede, é dicir, que non sexa o encamiñador por defecto, utilízase o comando up dentro do ficheiro interfaces para establecer a ruta, tal e como se ve no seguinte exemplo:

iface eth1 inet static
	address 192.168.0.2
	netmask 255.255.255.0

up route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth1

A sintaxe é similar á empregada polo comando route pero precedido de up.

Servidor de nomes: o ficheiro resolv.conf

A continuación hai que especificar o servidor DNS cales serán os servidores DNS. Esta información está almacenada no ficheiro /etc/resolv.conf, que ten o seguinte aspecto:

search iessanclemente.net
nameserver 192.168.0.1
nameserver 4.2.2.2

A palabra search engade o dominio iessanclemente.net ás consultas para tentar resolver os nomes dentro da nosa rede. Por exemplo, se o noso dominio é iessanclemente.net e tentamos facer un ping ao equipo pc1 dentro da nosa rede, non será necesario teclear o nome completo, é dicir, ping pc1.iessanclemente.net, senón que automaticamente a consulta DNS será pc1.iessanclemente.net se tecleamos ping pc1. A palabra nameserver especifica os servidores DNS que se usarán para resolver nomes a direccións IP. Pode haber varios servidores DNS e consultaranse na orde especificada.

Se o servidor DNS se obtén dinamicamente mediante DHCP as entradas no ficheiro resolv.conf se sobrescribirán.

O ficheiro hosts

O ficheiro /etc/hosts contén direccións IP e os seus correspondentes nomes de equipo. Cando o computador tenta averiguar a dirección IP dun equipo primeiro acudirá a este ficheiro antes que ao servidor de nomes DNS. Xa que logo, se a dirección IP está no ficheiro /etc/hosts o DNS non se usará (isto pode cambiarse editanto o ficheiro /etc/nsswitch.conf.

Se a nosa rede ten computadores con direccións IP que non están no DNS recoméndase engadilas ao ficheiro /etc/hosts.

Reinicio manual do servizo de rede

En calquera momento podemos reiniciar o servizo de rede tecleando o seguinte:

sudo /etc/init.d/networking restart

Configuración manual non permanente

Tamén se poden configurar os parámetros anteriores mediante as ferramentas ifconfig e route pero os cambios non se manterán se apagamos o computador. Ademais, tamén hai que configurar o ficheiro resolv.conf co DNS, tal e como se especificou anteriormente.

O comando ifconfig

O comando ifconfig permítenos establecer e comprobar a configuración dunha interface de rede. Se executamos o comando sen parámetros (ou co parámetro -a) proporcionaranos información relativa a todas as interfaces de rede:

ifconfig -a

Se se especifica unha interface de rede informarase unicamente da configuración de dito dispositivo:

ifconfig eth0

En caso de adxuntar a dirección IP, máscara de rede/subrede e dirección de broadcast, serán asignadas á interface especificada.

ifconfig eth0 192.168.121.48 netmask 255.255.255.224 broadcast 192.168.121.63

A sintaxe é a seguinte:

ifconfig interface_de_rede dirección_IP netmask máscara dirección_de_broadcast.

Co parámetro up/down podemos habilitar/deshabilitar a interface de rede:

ifconfig eth0 down

O comando route

O comando route permite establecer as regras de encamiñamento que serán consultadas polo noso equipo para decidir por que interface de rede enviar os paquetes coa finalidade de que cheguen ao seu destino. Para coñecer ditas regras execútase o seguinte comando:

route -n

Algunhas regras da táboa de encamiñamento configúranse automaticamente cando traballamos co comando ifconfig. A sintaxe do comando é a seguinte:

route add/del -net/host dirección_IP netmask máscara gw gateway dev interface_de_rede

Por exemplo, para que o noso equipo se poida comunicar cos equipos da rede 172.22.0.0/16 (net 172.22.0.0, netmask 255.255.0.0) supoñendo que o noso gateway sexa o 192.168.100.2 na interface eth3, teclearemos o seguinte comando:

route add -net 172.22.0.0 netmask 255.255.0.0 gw 192.168.100.2 dev eth3

Instalación de software

Nas distribucións GNU/Linux o software vén en paquetes. Polo tanto, a instalación e desinstalación de servizos realízase mediante un xestor de paquetes. En Ubuntu, podemos acceder a el en modo gráfico (Synaptic) ou en modo comando (apt). Hai que ter en conta que só se pode abrir un xestor de paquetes ao mesmo tempo e precísanse permisos de administrador para poder executalo.

Para poder facer o seu traballo o xestor de paquetes accede a repositorios de software que conteñen miles de programas dispoñibles para instalar. Podemos engadir repositorios ao xestor de paquetes pero hai determinados repositorios que só funcionarán se temos conexión a Internet. Os repositorios usan unha clave GPG para asinar dixitalmente os ficheiros que proporcionan. Isto permite asegurar que non foron manipulados por terceiros.

O Synaptic

Synaptic é un xestor de paquetes avanzado que traballa en modo gráfico. Para lanzalo hai que premer en System → Administration → Synaptic Package Manager.

Se se coñece o nome do paquete que se quere instalar ou desinstalar só hai que buscalo premendo no botón Search. Pódense buscar paquetes a partir da súa descrición. Por exemplo, todos os paquetes que mencionen a palabra "arcade" ou "bioloxía".

Para instalar un paquete hai que premer na caixa de verificación á súa esquerda e marcalo para instalar (ou desmarcalo para desintalalo).

Para que os cambios se fagan efectivos hay que premer non botón Apply. Se pechamos a ventá, sen máis, os paquetes non se instalarán.

O APT (Advanced Packaging Tool)

É o xestor de paquetes en modo texto. Expóñense a continuación algúns exemplos de uso frecuente:

Para actualizar a lista de paquetes (os repositorios):

sudo apt-get update

Para instalar todas as actualizacións de paquetes:

sudo apt-get upgrade

Para buscar un paquete:

apt-cache search package

Para instalar un paquete:

sudo apt-get install package

Para desinstalar un paquete:

sudo apt-get remove package

Para ver outras opcións do comando apt:

apt-get help

Instalación dun único paquete

O método preferible para instalar e desinstalar paquetes é a través do xestor de paquetes. Con todo, nalgúns casos isto non será posible. Se o que queremos instalar é un paquete .deb podemos usar o seguinte comando:

//Instala un paquete
sudo dpkg -i paquete.deb

//Desinstala un paquete
sudo dpkg -r nome_paquete

Existen outro tipo de paquetes, os RPM (Red Hat Package Manager). Para poder instalalos en Ubuntu, que usa paquetería .deb, hai que convertilos co programa alien, tal e como se amosa a continuación:

sudo alien package_file.rpm

Ás veces o software vén empaquetado no que se chaman tarballs (.tar, .tgz, .tar.gz ou .tar.bz2). Neste caso, o primeiro que hai que facer é descomprimir o tarball e seguir as instrucións específicas para a súa instalación:

tar xfvz nome_tarball

Arranque e parada de servizos

O arranque e parada de servizos pódese facer manualmente ou automaticamente ao iniciar o sistema.

Arranque manual

No primeiro caso, o servizo normalmente se atopa na ruta /etc/init.d/<nome_do_servizo. Así, por exemplo, se queremos arrancar, parar ou reiniciar o servizo DHCP haberá que escribir o seguinte:

// Arrancar o servidor DHCP
     root@esi-desktop:/# /etc/init.d/dhcp3-server start

// Parar o servidor DHCP
     root@esi-desktop:/# /etc/init.d/dhcp3-server stop

// Reiniciar o servidor DHCP
     root@esi-desktop:/# /etc/init.d/dhcp3-server restart

Arranque automático

Cando Linux arranca, pode facelo de 7 modos distintos, numerados do 0 ao 6. A estes modos denomínaselles niveis de execución e son os seguintes:

  • Nivel 0 (Halt): Apaga o sistema
  • Nivel 1 (Monousuario): Permite entrar no sistema como root sen clave e en modo texto.
  • Nivel 2 (Multiusuario completo): Modo multiusuario en modo gráfico e con rede.
  • Nivel 3-5 : Igual que o 2 (noutras distros distintas a Ubuntu/Debian isto non é así)
  • Nivel 6 (Reboot): Reinicia o sistema.

En función do nivel de execución, existe a posibilidade de configurar que servizos deben iniciarse de forma automática, para iso é necesario crear uns enlaces simbólicos nos cartafoles /etc/rcN.d (onde N é un número de 0 a 6 que indica o nivel de execución de linux) que apunten ao script de inicio do servizo que se atopa en /etc/init.d/. Ditos enlaces deberán ter un nome un pouco especial xa que deberán comezar coa letra 'S' de Start (arrancar) seguida dun número de dúas cifras (para establecer a orde de arranque dos servizos) e do nome do servizo, exemplo: S20samba ou S30nfs. Se o que nos interesa é que o servizo non arranque, a primeira letra deberá ser unha K de Kill (deter) en lugar dunha S, exemplo: K20samba ó K30nfs.

Estes enlaces pódense crear co comando update-rc.d. Exemplo, se desexamos que o servizo samba se arranque cando o servidor inicia nos niveis 3, 4 e 5 e non arranque cando inicia nos niveis 1, 2 e 6, executaremos o seguinte comando (ollo, non esquecer o punto do final (.) ao escribir o comando):

// Crear enlaces para inicio automático do servizo
# update-rc.d samba start 20 3 4 5 . stop 20 1 2 6 .

Desta forma crearanse enlaces simbólicos de arranque con nome S20samba nos cartafoles /etc/rc3.d, /etc/rc4.d e /etc/rc5.d e de parada con nome K20samba nos cartafoles /etc/rc1.d,/etc/rc2.d e /etc/rc6.d. O número 20 indica a prioridade. Serve para arrancar ou parar antes uns servizos que outros xa que os scripts procésanse por orde alfabético. Pódese utilizar calquera número entre 10 e 99.

Se por algunha razón o comando update-rc.d non crea as ligazóns porque xa están creadas, existe a posibilidade de eliminalos coa opción '-f' (forzado) e acto seguido volver a crealos:

// Eliminación forzosa de ligazóns para inicio automático do servizo
# update-rc.d -f samba remove

// Volver crear enlaces para inicio automático do servizo
# update-rc.d samba start 20 3 4 5 . stop 20 1 2 6 .

Para coñecer o nivel de execución actual podemos usar o comando runlevel e para cambiar o nivel de execución podemos usar o comando telinit.

Para crear un enlace a un init script coas opcións por defecto pódese teclear o seguinte:

sudo update-rc.d script_iptables defaults

No exemplo anterior supoñemos que o script se chama script_iptables. Ten que estar copiado no directorio /etc/init.d e ter permisos de execución:

sudo chmod u+x script_iptables

--Arribi 12:58 21 ene 2009 (GMT)