SlideShare a Scribd company logo
1 of 70
Download to read offline
1

Network Applications
Capítulo 1 Introducción a las redes TCP/IP
Conceptos clave
•
•

•
•
•
•

•

La mayoría de los servicios de redes de Linux están diseñados en torno a una
relación de cliente servidor.
Las aplicaciones de servidor de red generalmente están diseñadas para
permanecer "siempre en ejecución" iniciándose automáticamente cuando el
sistema arranca y apagándose solamente cuando el sistema lo hace. Por lo
general, sólo el usuario root puede administrar procesos del servidor.
Las aplicaciones de cliente de red suelen ejecutarse únicamente cuando están en
uso y las puede iniciar cualquier usuario.
La mayoría de los servidores de red Linux y clientes se comunican mediante el
protocoloTCP/IP.
La dirección TCP/IP tanto del proceso del cliente como del proceso del servidor
consta de una dirección IP y de un puerto.
Los servidores de red suelen utilizar puertos asignados denominados puertos
"bien conocidos" como se catalogan en el archivo /etc/services. Los clientes
de red suelen utilizar puertos privilegiados de modo aleatorio. A menudo, los
puertos bien conocidos residen en el rango de puertos privilegiados por debajo
del puerto número 1024.
El comando hostname puede utilizarse para examinar la dirección IP actual de
la máquina, mientras que el comando netstat -tuna se puede utilizar para
examinar todos los puertos abiertos.

Clientes, servidores y protocolo TCP/IP
Iniciaremos nuestro cuaderno sobre las aplicaciones de redes con la introducción a los
conceptos de clientes y servidores y los aspectos básicos del protocolo TCP/IP.
Hablaremos del protocolo TCP/IP como si fuera el único protocolo disponible en
Internet. Este no es el caso pero es el protocolo más utilizado y los conceptos necesarios
para entender se amplían (o reducen) de forma natural a los otros protocolos.
La mayoría de las aplicaciones de redes actuales están diseñadas en torno a la relación
cliente-servidor. El cliente de red suele ser una aplicación que actúa en nombre de una
persona que está tratando de realizar alguna tarea en particular tal como navegar en una
URL o ejecutar el comando rdate para preguntar la hora actual a un servidor de tiempo.
El servidor de red suele ser una aplicación que ofrece servicios, tales como entregar el
contenido de las páginas web o dar la hora actual.
El diseño de (aplicaciones que actúan como) clientes de red y (aplicaciones que actúan
como) servidores de red difiere dramáticamente. Con el fin de apreciar las diferencias,
los compararemos con los agentes en una relación cliente-servidor, un cliente
comprando una barra de caramelo a un vendedor.
2

Network Applications
El servidor
Los vendedores y los servicios de red efectivos comparten las siguientes características.
Los servidores están altamente disponibles
Así como un vendedor siempre debe utilizar la registradora, incluso cuando no hay
clientes, los procesos que ejecutan servicios de red necesitan estar ejecutándose, listos
para suplir los servicios cuando se soliciten. Por lo general, los procesos que ejecutan
servicios de red se inician en el momento de arranque y continúan ejecutándose hasta
que la máquina sea apagada. En Linux (y Unix) dichos procesos se conocen como
demonios. Por lo general, sólo el usuario root puede iniciar o cerrar procesos que
funcionan como servidores de red.
Los servidores tienen sitios bien conocidos
Además de estar disponibles cuando un cliente necesita el servicio, los vendedores se
están dónde saben que los clientes los pueden encontrar. Así como los clientes pueden
buscar la ubicación de vendedores de caramelos desconocidos, en los directorios
telefónicos y encontrarlos por dirección postal, los clientes de red pueden ubicar
servidores de redes desconocidas mediante un hostname, el cual se convierte en la
dirección IP utilizada para tener acceso al servicio.
El cliente
Por el contrario, el cliente de la tienda de caramelos no necesita estar ni altamente
disponible ni ser muy conocido. Un cliente no se estará en una tienda de caramelos todo
el día por si decide comprar un caramelo. Del mismo modo, los clientes no necesitan
permanecer en sitios bien conocidos. Nuestro cliente no se queda todo el día en casa por
si alguien pasa a venderle una barra de caramelo.
Los procesos que ejecutan clientes de red son iniciados por usuarios normales y por lo
general se ejecutan todo el tiempo necesario para completar una tarea. Cuando alguien
hace un receso para ir a almorzar, cierra su navegador de red. Además, las aplicaciones
de cliente no necesitan tener direcciones fijas, pueden moverse de un lugar a otro. Más
adelante veremos esto detalladamente.
Direcciones TCP/IP
Todo proceso que participa en una conversación TCP/IP debe tener una Dirección IP,
así como cada participante en una conversación debe tener un número telefónico.
Además, todo proceso en una conversación TCP/IP debe tener un número de puerto,
cuya analogía más cercana podría ser una extensión telefónica asociada a un número de
teléfono.
Los computadores en una red se identificans con una dirección IP. La dirección IP viene
en forma de cuatro números enteros, cada uno en un rango de 0 a 255 (no es una
3

Network Applications
coincidencia que la cantidad de información pueda codificarse en un byte de memoria)
y tradicionalmente separados por puntos así como 192.168.0.3. Esta representación
suele conocerse de modo informal como un quad punteado.
Los procesos en computadores se identifican con unnúmero de puerto, el cual es un
entero entre 1 y 65535 (no es una coincidencia que la cantidad de información se
codifique en 2 bytes de memoria). Cada vez que un proceso quiere participar en una
conversación TCP/IP con otro proceso, el kernel debe asignarle primero un número de
puerto.
El protocolo TCP/IP permite dos procesos, para localizarse entre sí, cada uno se
identifica con una dirección IP y un número de puerto. La dirección IP sirve para
localizar la máquina en la que el proceso se está ejecutando (esta es la "parte del
protocolo IP") y el número de puerto se utiliza para localizar el proceso correcto en la
máquina (esta es la parte "TCP").
Sockets
Con el fin de ilustrar una transacción típica TCP/IP, examinaremos la conversación
entre el navegador de red mozilla de un estudiante fictisio ejecutándo en la máquina
station3.example.com, lo que se traduce en una dirección IP 123.45.67.89 y el servidor
de red httpd ejecutando en academy.redhat.com, lo que se traduce en una dirección IP
de 66.187.232.51. El proceso suele parecerse a lo siguiente.
1. Cuando la máquina academy.redhat.com arranca, se inicia el proceso httpd.
Primero asigna un socket, ejecuta bind al puerto 80 y comienza a listen
conexiones.
2. En algún momento más tarde, quizás minutos o días, el proceso mozilla se inicia
en la máquina station3.example.com. También asigna un socket y solicita
connect al puerto 80 de la máquina 66.187.232.51. Puesto que no pidió un
número de puerto particular, el kernel provee uno aleatorio, digamos 12345.
Como le solicita la conexión, provee su propia dirección IP y el número de
puerto (asignado de modo aleatorio) al servidor.
3. El servidor selecciona la conexión accept. El socket establecido se identifica
ahora con dirección IP y número de puerto del cliente y del servidor.
Una vez se establece el socket, los procesos mozilla y httpd pueden leer información
con read y escribir a un archivo con write de un modo tan sencillo como leer y escribir
desde un archivo, (recuerde ..."todo es un archivo", incluyendo las conexiones de red!
Para fines más prácticos, un socket es sólo otro descriptor de archivo). Los verbos
resaltados en esta sección bind (unir), listen (escuchar), connect (conectar), accept
(aceptar), e inclusoread (leer) y write (escribir) son términos bien definidos en Linux (y
Unix). También son los nombres de llamadas al sistema de programación que realizan
cada paso.
Figure 1. Un socket TCP/IP entre un navegador de red Mozilla y un servidor
Apache
4

Network Applications

En el protocoloTCP/IP, un socket se define como la combinación de una dirección IP y
el número de puerto del servidor y cliente. Por ejemplo, ¿qué sucedería si nuestro
estudiante estuviera ejecutando múltiples versiones de Mozilla, cada uno haciendo
solicitudes de academy.redhat.com? o ¿qué sucedería si múltiples usuarios estuvieran
usando la máquina station3.example.com simultáneamente todas accediendo
academy.redhat.com? ¿De qué forma mantendría en orden un servidor de red qué
conversación estaba teniendo con cuál cliente? A cada proceso de cliente se le asignaría
un número de puerto distinto y por lo tanto conversa con el demonio httpd mediante un
socket diferente.
Figure 2. Múltiples sockets TCP/IP

Más acerca de puertos
Servicios bien conocidos y el archivo /etc/services
En nuestro ejemplo, mencionamos que el proceso httpd solicitó bind al puerto 80, y en
retorno, el proceso mozilla solicitó connect al puerto 80 del servidor. ¿Cómo se
5

Network Applications
convino que el puerto 80 era el apropiado para el servidor de red? Los servicios de
Internet tradicionales tales como el servidor de red o el servidor ftp o el servidor smtp
(de correo electrónico), se conocen como servicios bien conocidos. En máquinas de
Linux y (Unix), el catálogo de servicios bien conocidos, y los puertos asignados a ellos
se mantienen en el archivo /etc/services.
Observe que tanto el cliente como el servidor necesitan concordar con el número
apropiado de puerto para que el archivo /etc/services sea tan importante en la
máquina del cliente como en la del servidor. El sólo hecho de que un servicio se liste en
el archivo /etc/services no significa que usted está ejecutando (o incluso siendo
capaz de ejecutar) ese servicio bien conocido.
Puertos privilegiados
A diferencia de los clientes, los procesos que ejecutan servidores de red suelen solicitar
el puerto al que quieren vincularse. Solamente un proceso puede vincularse a un puerto
en un tiempo determinado (¿A qué se debe esto?) Los puertos menores de 1024 se
conocen como puertos privilegiados y son tratados de modo especial por el kernel.
Únicamente los procesos ejecutándose como el usuario root pueden enlazarse a puertos
privilegiados, (esto ayuda a asegurar que si elvis tuviera una cuenta en la máquina
academy.redhat.com, no podría iniciar una versión falsa de un servidor de red que
podría distribuir información falsa). En un principio, los puertos bien conocidos y los
puertos con privilegios pretendian coincidir pero en la práctica hay más puertos bien
conocidos que privilegiados.
Determinar los servicios actuales de red TCP/IP
Uso de hostname para visualizar la dirección IP actual
El comando hostname, sin argumentos, muestra el nombre del equipo de la máquina
actual. Con la opción -i, la dirección IP de la máquina se visualiza en su lugar.
[elvis@station elvis]$ hostname
station.example.com
[elvis@station elvis]$ hostname -i
172.16.62.9

¿Qué sucede si hay múltiples direcciones IP?
El diseño del comando hostname es un poco equívoco, porque las máquinas
pueden tener fácilmente más de una dirección IP (una para cada red múltiple de
tarjetas de interfaz, por ejemplo). En dichas situaciones, no hay razón para que
cualquier dirección IP tenga prioridad sobre las otras. No obstante, por razones
históricas, el kernel mantiene el rastro de un parámetro conocido como su nombre
del equipo y el comando hostname -i presenta la dirección IP asociada con éste.
Uso del comando netstat para ver los puertos abiertos
6

Network Applications
Cuando un puerto es utilizado por un socket se le conoce como puerto abierto. El
comando netstat sirve para ver una variedad de información de redes incluyendo los
puertos abiertos.
Infortunadamente, cuando un comando es llamado sin ninguna opción la salida del
comando netstat se inunda de información poco interesante, sockets locales "Unix"
utilizados para comunicarse entre procesos en la misma máquina. Sin embargo, cuando
se llama con las siguientes opciones se ve información más interesante.
Table 1. Opciones para el comando netstat
Opción Efecto
-t

Presenta los sockets TCP

-u

Presenta los sockets UDP

-n

Presenta la dirección IP en lugar del hostname

-a

Presenta todos los sockets incluso aquellos en estado LISTEN

Muchas más opciones están disponibles, para mayor información acuda a la página de
manual netstat(8). Las siguientes opciones se escogieron, no solo porque cuando se
combinan producen una salida interesante, sino porque también son fáciles de recordar:
por ejemplo, "tuna" (atún).
Cuando se invoca con las siguientes opciones, la salida de netstat es similar a la
siguiente.
[elvis@station elvis]$ netstat -tuna
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address
Foreign Address
State
tcp
0
0 127.0.0.1:32768
0.0.0.0:*
LISTEN
tcp
0
0 0.0.0.0:777
0.0.0.0:*
LISTEN
tcp
0
0 0.0.0.0:111
0.0.0.0:*
LISTEN
tcp
0
0 0.0.0.0:6000
0.0.0.0:*
LISTEN
tcp
0
0 0.0.0.0:80
0.0.0.0:*
LISTEN
tcp
0
0 0.0.0.0:22
0.0.0.0:*
LISTEN
tcp
0
0 127.0.0.1:631
0.0.0.0:*
LISTEN
tcp
0
0 127.0.0.1:25
0.0.0.0:*
LISTEN
tcp
0
0 0.0.0.0:443
0.0.0.0:*
LISTEN
tcp
0
0 127.0.0.1:631
127.0.0.1:32769
ESTABLISHED
7

Network Applications
tcp
0
ESTABLISHED
tcp
0
ESTABLISHED
...
tcp
0
ESTABLISHED
tcp
0
TIME_WAIT
tcp
0
TIME_WAIT
...
tcp
0
ESTABLISHED
tcp
0
ESTABLISHED
udp
0
udp
0
...

0 172.16.62.9:32903

172.16.62.8:6001

0 172.16.62.9:32848

172.16.62.8:6001

0 172.16.62.9:33325

172.16.62.8:6001

0 127.0.0.1:33953

127.0.0.1:631

0 127.0.0.1:33952

127.0.0.1:631

314 127.0.0.1:32769

127.0.0.1:631

0 172.16.62.9:34387

172.16.62.8:22

0 0.0.0.0:32768
0 0.0.0.0:177

0.0.0.0:*
0.0.0.0:*

De las muchas líneas, podemos retirar aquellas asociadas con el protocolo udp y
concentrarnos en las columnas 4, 5 y 6 de las filas asociadas con tcp.
Table 2. Columnas relevantes desde la salida de netstat
Columna Título

Función

1

Protocolo

El protocolo del socket. Nos referiremos a los sockets tcp.

4

Dirección
local

La dirección IP y el número de puerto de la mitad local del
socket.

5

Dirección
extranjera

La dirección IP y el número del puerto de la mitad remota
del socket.

6

Estado

El estado de la conexión TCP. Nos referiremos a los estados
más interesantes LISTEN y ESTABLECIDO.

Direcciones especiales IP
Las siguientes direcciones IP pueden hallarse en la columna de dirección local de la
salida anterior.
Dirección
IP

Función

172.16.62.9

La dirección IP externa de la máquina tal como la reportó el comando
hostname -i.

127.0.0.1

La dirección bucle local. Cada máquina que utiliza las redes TCP/IP es
compatible con la dirección de bucle local o loopback. Las conexiones a la
máquina o desde la máquina desde esta dirección siempre se
retroalimentan a la máquina local para que la comunicación pueda ocurrir
entre dos procesos en la misma máquina. La conversación que se presenta
8

Network Applications
Dirección
IP

Función
sobre la dirección de bucle local ocurre internamente, no se expone a la
red.

0.0.0.0

Esta dirección especial IP sirve para referirse a "todas" las direcciones IP
disponibles. Cuando un proceso se enlaza a un determinado puerto, puede
elegir entre utilizar únicamente una dirección particular externa, sólo la
dirección de bucle local o todas las direcciones IP disponibles.

Sockets de escucha
Los sockets de escucha son conexiones pertenecientes a un servidor antes de que los
clientes se presenten. Por ejemplo, al final del primer paso de nuestra conexión TCP/IP
de muestra anterior, el proceso httpd tendría una conexión abierta en el estado de
escucha. Observe en la salida anterior que para las conexiones de escucha, sólo se
define la mitad de la dirección.
Conexiones establecidas
Como su nombre lo implica, los sockets establecidos tienen un proceso de cliente y un
proceso de servidor con comunicación establecida.
Uniendo esfuerzos
Ahora podemos reunir algunas de las partes para analizar unas pocas líneas extraídas de
la salida anterior.
tcp
LISTEN

0

0 0.0.0.0:80

0.0.0.0:*

Este socket está conectado a todas las interfaces en el puerto 80 en el estado de
ESCUCHA. Aparentemente esta máquina también tiene un servidor de red httpd
escuchando activamente conexiones de clientes.
tcp
LISTEN
tcp
LISTEN

0

0 127.0.0.1:631

0.0.0.0:*

0

0 127.0.0.1:25

0.0.0.0:*

Estos dos sockets están escuchando conexiones, pero sólo en la dirección de bucle local.
Deben pertenecer a servicios que esperan recibir conexiones desde otros procesos en la
máquina local pero no desde la red. Para determinar a qué servicios pertenecen estos
puertos ejecutamos un grep desde el archivo /etc/services.
[elvis@station elvis]$ grep 25 /etc/services
smtp
25/tcp
mail
smtp
25/udp
mail
timed
525/tcp
timeserver
9

Network Applications
timed
525/udp
timeserver
prospero-np
1525/tcp
privileged
prospero-np
1525/udp
[elvis@station elvis]$ grep 631 /etc/services
ipp
631/tcp
Protocol
ipp
631/ucp
Protocol

# Prospero non-

# Internet Printing
# Internet Printing

Aparentemente, cualquier proceso que haya solicitado el puerto 25 está escuchando
clientes de correo electrónico. Probablemente es el demonio sendmail. El proceso de
escucha en el puerto 631 está escuchando clientes de impresión. Probablemente es el
demonio de impresión cupsd. Ambos servicios se tratarán más adelante en este
cuaderno.
tcp
0
ESTABLISHED

314 127.0.0.1:32769

127.0.0.1:631

Esta línea refleja una conexión establecida entre dos procesos ambos en la máquina
local (observe la dirección IP de bucle local para los dos). El primero está conectado al
puerto 32769 (probablemente un puerto cliente asignado de modo aleatorio) y el
segundo al puerto 631. Algunos procesos en la máquina local deben estar
comunicándose con el demonio cupsd.
tcp
0
ESTABLISHED

0 172.16.62.9:34387

172.16.62.8:22

Nuestra línea extraída representa una conexión establecida entre lo que aparentemente
es un cliente en nuestra máquina local, conectado al servicio enlazado al puerto 22 en
nuestra máquina remota. De nuevo, trataremos de llamar a grep para buscar el servicio
bien conocido asociado con el puerto 22.
[elvis@station elvis]$ grep 22 /etc/services
ssh
22/tcp
Protocol
ssh
22/udp
Protocol
imap3
220/tcp
Access
imap3
220/udp
...

# SSH Remote Login
# SSH Remote Login
# Interactive Mail
# Protocol v3

Aparentemente, esta línea representa una conexión activa entre un cliente ssh en la
máquina local y un demonio sshd en una máquina con una dirección IP de172.16.62.8.
Ejercicios en línea
Lab Exercise
Objetivo: Familiarizarse con la configuración y actividad TCP/IP.
10

Network Applications
Estimated Time: 10 mins.
Especificaciones
1. Crear el archivo ~/lab11.1/ipaddr que contenga su dirección IP de máquina
como lo reporta el comando hostname como su única palabra.
2. Crear el archivo ~/lab11.1/listening_ports que contenga una lista de todos
los puertos menores que 1024 en su máquina actual, abiertos en el estado de
escucha, un puerto por línea.
Question 1

1. El archivo ~/lab11.1/ipaddr que contiene su dirección IP actual de la
máquina (como lo reportó el comando hostname) como su única palabra.
2. El archivo ~/lab11.1/listening_ports que incluye un listado de todos los
puertos menores de 1024 en su máquina actual, abiertos en el estado de escucha,
un puerto por línea.

Capítulo 2 Impresión Linux
Conceptos clave
•
•

•
•

•
•

Linux de Red Hat Enterprise utiliza el sistema de impresión CUPS para
administrar impresoras.
El sistema de impresión CUPS está diseñado en torno al concepto de cola de
impresión, el cual combina un directorio de almacenamiento temporal, un filtro
y un dispositivo de impresión.
Los comandos gnome-print-manager y lpstat pueden utilizarse para navegar
colas de impresión disponibles.
Los comandos lpr, lpq y lprm se utilizan para someter ("solicitar") trabajos de
impresión, averiguar por trabajos importantes y quitar trabajos de impresión
pendientes, respectivamente. Todos examinarán la variable de entorno PRINTER
para determinar la cola de impresión por defecto.
Los comandos lp y cancel se comportan de un modo similar a los comandos lpr
y lprm.
Muchas aplicaciones imprimen por entubamiento a stdin de una línea de
comando personalizable lpr.

Introducción a CUPS
Linux de Red Hat Enterprise utiliza el Sistema de Impresión Común de Unix (CUPS)
para administrar impresoras. En lugar de interactuar con la impresora directamente, los
usuarios someten las solicitudes de impresión a las colas de impresión que son
manejadas por el demonio cupsd. Las solicitudes de impresión pendientes en una cola
11

Network Applications
de impresión se conocen como trabajos de impresión. Una vez se ha sometido el trabajo
a la cola, los usuarios pueden retornar rápidamente a cualquiera de las tareas que
estaban haciendo. Si la impresora está ocupada con otro documento o no tiene papel, o
no está disponible en la red, el demonio cupsd controlará la situación y enviará (o
reenviará) el trabajo de impresión a la impresora cuando quede disponible.
El demonio cupsd utiliza el Protocolo de Impresión de Internet (IPP), el cual es una
extensión directa del protocolo HTTP, diseñado para permitir administración de cola de
impresión, a la manera de un sistema operativo independiente. Como resultado, la
administración de CUPS tiene mucho en común con la administración del servidor de
red.
La siguiente gráfica identifica los elementos que participan en la impresión Linux;
dichos elementos se tratan en detalle más adelante.
Figure 1. Infraestructura de impresión Linux.-

Colas de impresión
Una cola de impresión es una combinación de los siguientes elementos.
•

Un directorio de almacenamiento temporal donde se pueden almacenar los
trabajos pendientes.
12

Network Applications
•
•

Una serie de filtros que transforman archivos de entrada en formatos apropiados
para cualquier dispositivo secundario conectado a la cola.
Un dispositivo secundario, tal como una impresora conectada localmente o una
cola de impresión definida en una máquina remota. A continuación, se listan
algunos de los dispositivos secundarios admitidos por CUPS.
o impresoras de puerto paralelo conectadas localmente
o impresoras localmente conectadas através de un USB
o impresoras de red utilizando la interfaz LPD
o impresoras de red utilizando interfaz de JetDirect
o Colas de impresión IPP en máquinas remotas
o Colas de impresión LPD en máquinas remotas
o Servicios de impresión de red (Microsoft) SMB

La tarea fundamental que enfrenta el administrador al configurar Linux de Red Hat
Enterprise para que utilice una impresora particular o un servicio de red de impresión,
es definir y nombrar correctamente la cola de impresión para el recurso. Esto
generalmente implica identificar cuáles de los dispositivos secundarios anteriores se
utilizan para acceder al dispositivo, elegir un filtro apropiado para el dispositivo, llamar
y activar la cola de impresión.
En este curso asumiremos que ya se ha hecho todo el trabajo difícil y que las colas de
impresión disponibles para su sistema ya se han definido.
Navegar las colas de impresión disponibles: gnome-print-manager y lpstat
Las colas de impresión están disponibles ya sea porque se han definido en la máquina
local o descubierto mediante la habilidad de CUPS para navegar la red local para
impresoras publicadas.
En el entorno gráfico, gnome-print-manager puede utilizarse para identificar las colas
de impresión y controlar los trabajos de impresión sometidos a ellas. El control de
impresión puede iniciarse ya sea desde la línea de comandos o al elegir Herramientas
del Sistema: Administrador de Impresión desde el menú de aplicaciones GNOME.
Figure 1. El administrador de impresión GNOME

Cuando el entorno gráfico no está disponible, o incluso cuando lo está, el comando
lpstat se puede utilizar para escanear las colas de impresión disponibles desde la línea
de comando. La siguiente línea de comandos sirve para clasificar el comando lpstat.
Table 1. Opciones para el comando lpstat
Opción Efecto
-a

Lista estado de aceptación de todas las colas de impresión.
13

Network Applications
Opción Efecto
-o

Lista todos los trabajos importantes

-p

Lista todas las colas de impresión y si están inactivas u ocupadas.

-s

Lista el estatus de la impresora, incluída la cola por defecto y el dispositivo
secundario asociado con cada cola.

Para mayor información, vea la página de manual lpstat(1). A continuación, elvis
descubre que su cola de impresión de sistema por defecto, se llama simplemente
"printer" y que tiene varias colas de impresión disponibles, que parecen referirse a la
cola de impresión IPP en un servidor de impresora local.
[elvis@station elvis]$ lpstat -s
system default destination: printer
device
for
acct2_ire:
ipp://printsrv.example.com:631/printers/acct2_ire
device for acct_ire: ipp://printsrv.example.com:631/printers/acct_ire
device for ba: ipp://printsrv.example.com:631/printers/ba
device for checks: ipp://printsrv.example.com:631/printers/checks
device for coms: ipp://printsrv.example.com:631/printers/coms
device for exec: ipp://printsrv.example.com:631/printers/exec
...

Someter y administrar trabajos: lpr, lpq y lprm
CUPS utiliza los comandos de UNIX tradicionales para interactuar con el sistema de
impresión: lpr somete archivos e información que van a imprimirse, lpq examina el
estatus de trabajos de impresión importantes y lprm quita trabajos de impresión
pendientes en la cola. Todos los tres comandos utilizan las siguientes técnicas para
especificar qué cola de impresión utilizar en el orden especificado.
1. Si se halla la opción -P, su argumento se utiliza para especificar la cola de
impresión.
2. Si no se utiliza -P para definir la cola de impresión por defecto, entonces se
utiliza la variable de entorno PRINTER, si existe.
3. De otra manera, se utiliza el sistema de cola de impresión por defecto.
Someter trabajos con lpr
Los trabajos pueden someterse con el comando lpr. Todos los argumentos son
interpretados como archivos para someter. Si no se especifican argumentos en su lugar
se lee la entrada estándar. Las siguientes opciones sirven para clasificar el comando lpr.
Table 1. Opciones del comando lpr
Opción

Efecto

-P

Uso de la cola de impresión impresora.

impresora
14

Network Applications
Opción

Efecto

-#

Imprime # copias

-p

Representa archivos de texto con un encabezado que contiene el nombre
del archivo, nombre del trabajo y el sello de fecha.

-r

Borra los archivos de impresión nombrados después de imprimir.

A manera de ejemplo, a continuación, blondie utiliza el comando lpr para imprimir el
archivo README mediante la cola de impresiónsales.
[blondie@station blondie]$ lpr -P sales README

Control de trabajos con lpq
El comando lpq lista los trabajos pendientes en una cola. En el siguiente ejemplo,
blondie somete la salida del comando df para la impresora legal y luego examina el
contenido de la cola.
[blondie@station blondie]$ df | lpr -P legal
[blondie@station blondie]$ lpq -P legal
legal is ready and printing
Rank
Owner
Job
File(s)
active elvis
1
services
1st
blondie 5
(stdin)

Total Size
20480 bytes
1024 bytes

Eliminación de trabajos con lprm
Blondie sospecha que algo anda mal con la impresora legal y decide iniciar utilizando la
impresora sales como su impresora por defecto. Primero configura la variable de
entorno PRINTER para reflejar sus nuevas preferencias, luego utiliza el comando lprm
para quitar su trabajo de la cola legal.
[blondie@station blondie]$ export PRINTER=sales
[blondie@station blondie]$ lpq
sales is ready
no entries
[blondie@station blondie]$ lpq -P legal
legal is ready and printing
Rank
Owner
Job
File(s)
active elvis
1
services
1st
blondie 5
(stdin)
[blondie@station blondie]$ lprm 5
[blondie@station blondie]$ lpq -P legal
legal is ready and printing
Rank
Owner
Job
File(s)
active bowe
1
services
[blondie@station blondie]$ df | lpr

Total Size
20480 bytes
1024 bytes

Total Size
20480 bytes

Observe que en el primer comando lpq y el último comando lpr, la variable de entorno
PRINTER implícitamente especificó la cola de impresión sales.
15

Network Applications
Los comandos de Front End alternativos: lp y cancel
En Unix, en los días precedentes a CUPS, se implementaron dos ejecuciones paralelas
de la infraestructura de impresión. La primera utilizó los tres comandos presentados
anteriormente es decir lpr, lpq, y lprm. La segunda utilizó lp, lpstat y cancel para
tareas análogas.
Ya hemos visto que lpstat es compatible y es la herramienta preferida para descubrir
colas de impresión. Los comandos lp y cancel también están disponibles como
variaciones leves de los comandos lpr y lprm. Para mayor información, consulte la
página de manual lp(1).
Impresión dentro de aplicaciones Linux
Con frecuencia las aplicaciones Linux suelen imprimir entubando la información
directamente a la entrada estándar del comando lpr. Por lo general, las aplicaciones
permiten a los usuarios personalizar la línea de comando lpr, para que, por ejemplo, se
pueda especificar una cola de impresión diferente a la cola de impresión por defecto.
En la siguiente toma de pantalla del diálogo de impresión de la aplicación Evolution, el
campo Printer inicialmente sólo contenía un lpr, pero blondie añadió la opción -P
sales para que la salida de evolution vaya a la impresora sales.
Figure 1. Diálogo de impresión de Evolution

La interfaz de red CUPS
Por último, seríamos negligentes si abandonáramos el tema de CUPS sin mencionar la
interfaz de red nativa que el demonio cupsd brinda. Como se mencionó, la mayoría de
los clientes interactúan con el demonio cupsd mediante el protocolo IPP, el cual es una
extensión del protocolo HTTP. Debido a su parecido, el demonio cupsd se comporta en
muchas formas como el demonio de web, incluyendo el servidor de las páginas de
administración de estilo CGI.
Con el fin de ver las páginas de administración de CUPS, apunte un navegador de red
hacia la dirección de la máquina local, pero sobreescriba el puerto 80 por defecto con el
puerto de servicio bien conocido de los demonios de CUPS, 631.
http://localhost:631

El demonio cupsd retornará con una"página de inicio" de CUPS desde donde pueden
verse las impresoras y los trabajos de impresión y existe dsiponible una copiosa
documentación en línea.
Figure 1. La página de inicio de administración de CUPS
16

Network Applications
Ejercicios en línea
Lab Exercise
Objetivo: Administrar trabajos de impresión efectivamente.
Estimated Time: 10 mins.
Configuración
Su estación debería configurarse con una cola de impresión llamada rha_faux. Esta cola
de impresión se anexa a la impresora virtual en ejecución en el servidor del aula de
clase. Usted puede ver la primera página de cualquier trabajo de impresión enviado a la
impresora en el classroom server.
Si el comando lpstat -s no menciona una cola de impresión llamada rha_faux o si no
puede acceder a la página web del servidor del aula de clase, consúltele a su instructor.
Especificaciones
1. Imprima el archivo /etc/services mediante la cola de impresión rha_faux y
observe su salida. http://rha-server/cgi-bin/rha/printer.
2. Imprima el archivo /usr/share/backgrounds/tiles/floral.png mediante la
cola de impresión rha_faux y observe su salida. http://rha-server/cgibin/rha/printer.
3. Desde su navegador de red, imprima la página actual directamente a la cola de
impresión rha_faux.
Question 1

1. Tres trabajos de impresión sometidos a la cola de impresión rha_faux.

Capítulo 3 Administración de archivos de impresión
Conceptos clave
•
•
•
•
•

El formato de impresión primario en Linux es PostScript.
gs y ggv ven con anticipación los documentos PostScript.
enscript convierte archivo de texto en PostScript decorado.
ps2pdf y pdf2ps convierten de PostScript a PDF y viceversa.
mpage pueden reordenar las páginas individuales de un documento PostScript.

PostScript
17

Network Applications
En Linux, la mayoría de las impresoras esperan recibir texto ASCII o gráficas mediante
el formato PostScript. A diferencia de la mayoría de los formatos gráficos, PostScript es
un lenguaje de guiones de gran alcance, el cual se ha adaptado a la tarea de traducir
gráficas en la página impresa. La sofisticación del lenguaje PostScript le permite
realizar trabajos complejos, pero debe utilizar un intérprete para entregar archivos
PostScript como imágenes.
Muchas impresoras ejecutan intérpretes PostScript originales y se conocen como
impresoras PostScript. Cada vez que una impresora PostScript recibe un archivo de
texto que comienza con los caracteres %!PS, el resto del archivo se interpreta como un
guión PostScript, en lugar imprimirse como un texto ASCII directamente (observe la
semejanza con el mecanismo de scripts de Unix#!/bin/bash).
En Linux (y Unix) una aplicación llamada Ghostscript o simplemente gs ejecuta un
intérprete PostScript. La ejecución de un PostScript es una tarea importante y aunque
las aplicaciones en Linux pueden utilizarse para ver o manipular archivos PostScript
casi todos utilizan Ghostscript como el dispositivo secundario para realizar la traducción
real de PostScript en formatos gráficos más accesibles [1].
Entrega de gráficos PostScript con GhostScript
Cuando se invoca como el comando gs, el intérprete Ghostscript puede utilizarse para
traducir archivos PostScript directamente en la pantalla. Por ejemplo, en el siguiente
diálogo, al navegador de red mozilla se le pide imprimir la página web actual no a una
cola de impresión, sino a un archivo PostScript titulado output.ps.
Figure 1. Impresión a un archivo PostScript

Como lo ilustra el comando head, un archivo PostScript es un archivo de texto sencillo
que comienza con el "mágico" PostSript%!PS.
[elvis@station elvis]$ head output.ps
%!PS-Adobe-3.0
%%BoundingBox: 18 18 558 720
%%Creator: Mozilla PostScript module (Galeon/2003022516)
%%DocumentData: Clean8Bit
%%DocumentPaperSizes: Letter
...

La siguiente línea de comandos puede utilizarse para ver el archivo con el intérprete
Ghostscript.
[elvis@station elvis]$ gs output.ps
GNU Ghostscript 7.05 (2002-04-22)
Copyright (C) 2002 artofcode LLC, Benicia, CA. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
18

Network Applications
Loading NimbusRomNo9L-Regu font from
/usr/share/fonts/default/Type1/n021003l.pfb... 2410668 1054394 1642520
347466 0 done.
Loading NimbusSanL-Regu font from
/usr/share/fonts/default/Type1/n019003l.pfb... 2785628 1380272 1662616
358654 0 done.
...
Loading StandardSymL font from
/usr/share/fonts/default/Type1/s050000l.pfb... 4371596 2780842 1722904
370909 0 done.
>>showpage, press <return> to continue<<
GS>

El intérprete gs devuelve muchas líneas de tipos de fuente que carga, pero al final
traduce la imagen en una ventana X por separado. En la línea de comandos, el usuario
es abandonado en un intérprete de comandos interactivo Ghostscript GS> . Si el archivo
PostScript contiene páginas múltiples, un simple ENTER en el intérprete de comandos
Ghostscript visualizará la próxima página. Para aquellos que hablen PostScript, el
intérprete puede utilizarse para entregar gráficas de modo interactivo. Para aquellos que
tengan menos conocimientos, un simple quit (o CONTROL-D) hará salir al intérprete
gs.
GS>quit
[elvis@station elvis]$

Traducción de PostScript a formatos alternos
Por defecto, el intérprete gs traduce los archivos PostScript a una ventana dentro del
entorno X. Sin embargo, como lo ilusta la salida de los dispositivos disponibles del
comando gs --help, el comando ejecutable gs puede representar un gran número de
formatos gráficos.
[elvis@station elvis]$ gs --help
GNU Ghostscript 7.05 (2002-04-22)
Copyright (C) 2002 artofcode LLC, Benicia, CA. All rights reserved.
Usage: gs [switches] [file1.ps file2.ps ...]
Most frequently used switches: (you can use # in place of =)
-dNOPAUSE
no pause after page
| -q
`quiet', fewer messages
-g<width>x<height> page size in pixels
| -r<res> pixels/inch resolution
-sDEVICE=<devname> select device
| -dBATCH exit after last file
-sOutputFile=<file> select output file: - for stdout, |command for pipe,
embed %d or %ld for page #
Input formats: PostScript PostScriptLevel1 PostScriptLevel2 PDF
Available devices:
x11 x11alpha x11cmyk x11gray2 x11gray4 x11mono bmpmono bmpgray bmpsep1
bmpsep8 bmp16 bmp256 bmp16m bmp32b deskjet djet500 laserjet ljetplus
ljet2p ljet3 ljet3d ljet4 ljet4d lj5mono lj5gray cdeskjet cdjcolor
cdjmono cdj550 pj pjxl pjxl300 uniprint ijs omni bj10e bj200 bjc600
bjc800 faxg3 faxg32d faxg4 pcxmono pcxgray pcx16 pcx256 pcx24b pcxcmyk
pbm pbmraw pgm pgmraw pgnm pgnmraw pnm pnmraw ppm ppmraw pkm pkmraw pksm
pksmraw tiffcrle tiffg3 tiffg32d tiffg4 tifflzw tiffpack tiff12nc
tiff24nc psmono psgray psrgb bit bitrgb bitcmyk pngmono pnggray png16
png256 png16m jpeg jpeggray pdfwrite pswrite epswrite pxlmono pxlcolor
bbox dmprt cdj880 ap3250 appledmp atx23 atx24 atx38 bmpa16 bmpa16m
bmpa256 bmpa32b bmpamono bmpasep1 bmpasep8 ccr cdj1600 cdj500 cdj670
19

Network Applications
cdj850 cdj890 cdj970 cfax cgm24 cgm8 cgmmono cljet5pr coslw2p coslwxl
cp50 declj250 dfaxlow dfaxhigh djet500c dl2100 dnj650c eps9high eps9mid
epson epsonc escp fs600 hl1250 hl7x0 ibmpro imagen inferno iwhi iwlo iwlq
jetp3852 la50 la70 la75 la75plus lbp8 lj250 lj3100sw lj4dith ln03 lp2563
lp8000 lq850 lxm5700m m8510 mgr4 mgr8 mgrgray2 mgrgray4 mgrgray8 mgrmono
miff24 necp6 oce9050 oki182 okiibm paintjet photoex pjetxl plan9bm sgirgb
r4081 sj48 st800 stcolor sunhmono t4693d2 t4693d4 t4693d8 tek4696 xes
x11cmyk2 x11cmyk4 x11cmyk8 x11rg16x x11rg32x ljet4pjl lj4dithp dj505j
picty180 pr201 pr150 pr1000 pr1000_4 jj100 bj10v bj10vh mag16 mag256
mj700v2c mj500c mj6000c mj8000c fmpr fmlbp ml600 lbp310 lbp320 lips2p
bjc880j lips4 lips4v escpage lp2000 npdl md50Mono md50Eco md1xMono DJ630
DJ6xx DJ6xxP DJ8xx DJ9xx DJ9xxVIP AP21xx pcl3 md2k md5k stp lxm3200
lx5000 lex7000 lex5700 lex3200 lex2050 gdi epl5800 epl2050 epl2050p
alc8500 alc2000 cups cljet5 cljet5c nullpage

...

Mientras algunos de estos "dispositivos" de salida tales como jpeg y png256, se
refieren a los formatos estándar para archivos gráficos, muchos de los dispositivos se
refieren a formatos gráficos de impresoras sin PostScript o fax. La utilidad gs puede
utilizarse en modo de lote para convertir un gran número de archivos PostScript en otro
formato o filtrar un documento para impresión en una impresora sin PostScript.
El siguiente cuadro resume algunos de las opciones de Ghostscripts más utilizadas.
Table 1. Opciones comunes para Ghostscript
Opción

Efecto

-dNOPAUSE

No hace pausa y espera un RETURN después de traducir cada
página.

-dBATCH

Sale automáticamente después de traducir la última página.

-q

Opera "calmadamente" (no presenta un mensaje por cada
página traducida).

-sDEVICE=devname

Utiliza el formato de salida devname

Almacena la salida en el archivo filename. Si %d se incluye en
el nombre de archivo, se remplazará con el número de página
sOutputFile=filename
del documento multi-página.
-rresolución

Utiliza una resolución de resolución DPI (puntos por
pulgada).

A manera de ejemplo, la siguiente línea de comandos convertiría el documento
PostScript output.ps en imágenes múltiples PNG llamadas output.pagenum.PNG.
[elvis@station elvis]$ gs -dNOPAUSE -dBATCH -q -sDEVICE=png256 sOutputFile=outp
ut.%d.png output.ps
[elvis@station elvis]$ file output.*
output.1.png: PNG image data, 612 x 792, 8-bit colormap, noninterlaced
output.2.png: PNG image data, 612 x 792, 8-bit colormap, noninterlaced
output.ps:
PostScript document text conforming at level 3.0
20

Network Applications
Ver gráficas PostScript con Ghostview
A pesar de su poder, el comando gs de la interfaz de usuario aún se puede mejorar. En
lugar de utilizar directamente gs muchos usuarios prefieren utilizar la aplicación
Ghostview de GNOME, ggv, la cual ofrece un dispositivo frontal para Ghostscript más
fácil de usar.
[elvis@station elvis]$ ggv output.ps

Figure 1. Visor PostScript del Ghostview de GNOME

La aplicación Ghostview de GNOME ofrece principalmente las siguientes
características.
1. Escala dinámica: La imagen puede hacerse a escala para ajustar la anchura y
altura de la ventana o un porcentaje arbitrario.
2. Paginación: Al utilizar un panel lateral se puede navegar fácilmente un
documento multi-páginas y seleccionar páginas individuales para extraer dentro
de un archivo PostScript independiente o imprimir mediante el menú File como
se ilustra a continuación.
Figure 2. Extracción de páginas mediante el visor PostScript Ghoscript de
GNOME

En teoría, la aplicación Ghostview también sirve para ver archivos PDF. En la práctica,
ggv ocasionalmente tiene problemas interpretando documentos PDF. Pronto veremos
una aplicación más estable para visualizar los PDF. Algunos documentos PostScript
multi-páginas pueden también confundir a ggv. En casos en que ggv tiene problemas
para traducir un documento PostScript, el traductor de PostScript gs puede utilizarse
directamente.
Ver documentos PDF con xpdf
La aplicación xpdf es un simple visor de documentos PDF que sirve para ver, imprimir
o convertir documentos PDF en PostScript.
Figure 1. El visualizador de documentos PDF xpdf
21

Network Applications
Las flechas en la esquina inferior izquierda permiten al documento navegar una página
o 10 páginas al mismo tiempo. El botón del icono de impresora abre el siguiente
diálogo, el cual permite al usuario especificar una línea de comando lpr o un destino de
archivo PostScript.
Figure 2. Impresión desde xpdf

Otras alternativas para ver documentos PDF incluyen los comandos gs y ggv.
Conversión de documentos PDF
La utilidad gs puede utilizarse para convertir documentos PDF en cualquiera de los
formatos de salida listados anteriormente. Puesto que la sintaxis del comando gs puede
ser tan engorrosa, algunas utilidades frontales de línea de comando más sencillas están
disponibles para convertir PostScript en PDF: ps2pdf y amigos.
La sintaxis del comando ps2pdf es trivial, donde el primer argumento es la salida del
nombre de archivo PostScript (o un “-” para implicar la entrada estándar) y el segundo
argumento es la salida del nombre de archivo de salida PDF (o un “-” para implicar la
salida estándar).
A manera de ejemplo rápido, elvis ahora utiliza el comando ps2pdf para convertir su
archivo output.ps en formato PDF, el cual es de calidad comparable, pero mucho más
compacto.
[elvis@station elvis]$ ps2pdf output.ps output.pdf
[elvis@station elvis]$ file output.*
output.1.png: PNG image data, 612 x 792, 8-bit colormap, noninterlaced
output.2.png: PNG image data, 612 x 792, 8-bit colormap, noninterlaced
output.pdf:
PDF document, version 1.2
output.ps:
PostScript document text conforming at level 3.0
[elvis@station elvis]$ ls -s output.p*
80 output.pdf 1400 output.ps

El comando pdf2ps también existe para realizar la operación inversa.
Representación del texto para impresión con enscript
La utilidad enscript convierte archivos de texto en PostScript, a menudo representando
el texto con sintaxis resaltada (pretty printing), un encabezado o impresión de múltiples
páginas de texto por página impresa.
De un modo un poco torpe, el comando enscript envía un archivo de texto directamente
al comando predeterminado lpr, dando como resultado que los archivos enscript se
22

Network Applications
impriman inmediatamente. Puede utilizar la opción -o para especificar una salida del
archivo PostScript en su lugar.
Algunas de las opciones más comunes se encuentran en el siguiente cuadro.
Table 1. Opciones más comunes para enscript
Opción

Efecto

-o filename

Generar salida del archivo filename.

-2, -columns=num

Formatear texto en 2 (o num) columnas.

-a páginas

Solamente imprime páginas páginas. páginas pueden ser de la forma
comienzo-fin, la palabra impar o par.

Utiliza el encabezado de texto como un encabezado de página. Un
-b encabezado formato elaborado es provisto para especificar nombre de archivo,
número de página, etc.
-d impresora Envia salida a la cola de impresiónimpresora.
-E [lang]

Representa el texto con sintaxis resaltada apropiada para el lenguaje de
programación lang. Utiliza --help-pretty-print para listar los
idiomas soportados.

-G

Representa páginas con un encabezado elegante.

-r

Rota la página 90 grados.

-W lang

Genera salida en idioma lang, que puede ser de PostScript, html,
superposición o rtf.

Existen muchas más opciones. Para mayor información, consulte la página de manual
enscript(1). A manera de ejemplo, la siguiente línea de comandos traduciría el archivo
de encabezado C malloc.h como PostScript con 2 columnas por página, rotado y
representado con un encabezado elegante y una sintaxis resaltada.
[elvis@station elvis]$ enscript -r2 -E -G -o malloc.ps
/usr/include/malloc.h
[ 2 pages * 1 copy ] left in malloc.ps
[elvis@station elvis]$ ggv malloc.ps

Figure 1. Archivo de texto representado en PostScript con enscript

Reordenamiento de PostScript con mpage
23

Network Applications
El comando mpage puede utilizarse para extraer páginas desde la mitad de un
documento PostScript multi-páginas o reformatear el documento a imprimir con
múltiples páginas por hoja.
El mpage acepta PostScript o texto como entrada. El texto se traduciría en PostScript
antes de administrar. Los argumentos se consideran archivos de entrada con la salida
dirigida a la salida estándar.
Table 1. Opciones de mpage
Opción

Efecto

-o filename

Generar salida del archivo filename.

-1, -2, -4, -8

Imprimir un número especificado de páginas por hoja
impresa (4 por defecto).

-j primero[último][%intervalo]

Sólo imprime un rango especificado de páginas
incluyendo sólo los intervalo de páginas, si se
especifican.

-l

Cambia el modo de formato horizontal a vertical.

-o

Cambia a imprimir borde alrededor de cada página (por
defecto está activo).

-P [impresora]

Envía salida PostScript a la cola de impresión impresora.

-G

Representa páginas con un encabezado elegante.

-r

Rota la página 90 grados.

-G

Representa páginas con un encabezado elegante.

-W lang

Genera salida en idioma lang, que puede ser de
PostScript, html, superposición o rtf.

La siguiente línea convierte el archivo PDF RHEL3FamOverWPPdf.pdf en un archivo
PostScript e imprime cuatro páginas por hoja.
[elvis@station elvis]$ pdf2ps RHEL3FamOverWPPdf.pdf - | mpage >
rhel3.ps
[elvis@station elvis]$ ggv rhel3.ps

Figure 1. Un documento PDF convertido en PostScript (4 Up)
24

Network Applications

Ejercicios en línea
Lab Exercise
Objetivo: Practicar la salida para impresión.
Tiempo estimado: 20 minutos.
Especificaciones
1. Utilice el comando enscript para generar un documento PostScript del archivo
/usr/share/doc/bash-*/loadables/getconf.c nombre getconf.ps con dos
páginas por hoja impresa. Opcionalmente, haga que el comando enscript "pretty
print" el texto (agregando sintaxis resaltada).
2. Utilice el comando mpage para extraer las páginas 8 y 9 del archivo
getconf.ps creado anteriormente, almacénelas en un nuevo documento llamado
getconf89.ps.
(Por defecto el comando mpage imprimirá 4 hojas por páginas de salida,
confundiendo el conteo de páginas. Incluya la opción apropiada para que sólo
una página de entrada sea impresa por página de salida).
25

Network Applications
3. Utilice el comando ps2pdf para convertir el archivo getconf89.ps en un
documento PDF titulado getconf89.pdf. Compare los tamaños de los dos
documentos.
4. Cree un script de shell corto llamado ~/bin/ps2jpeg, el cual al ser llamado con
un sólo argumento especificando un archivo PostScript, utiliza el comando gs
para convertir el archivo en un documento JPEG llamado output.jpg.
Question 1

No hay elemento para calificar este ejercicio.
1. Un documento de múltiples páginas PostScript getconf.ps que contiene el
texto del archivo /usr/share/doc/bash-*/loadables/getconf.c, impreso en
2 páginas por página de salida.
2. Un documento PostScript de dos páginas getconf89.ps que contiene las
páginas 8 y 9 extraídas del documento getconf.ps.
3. El documento PDFgetconf89.pdf, el cual es el contenido del documento
PostScript getconf89.ps convertido en formato PDF.
4. Un script titulado ~/bin/ps2jpeg que cuando se invoca con un documento
PostScript como su único argumento, convertirá el documento en una imagen
JPEG llamada output.jpg.

Capítulo 4 Sinopsis del correo electrónico
Conceptos clave
•

•

•

•

•

La administración del correo electrónico implica dos agentes. Un agente de
usuario de correo (MUA, en inglés Mail User Agent), el cual se utiliza para
presentar correo recién enviado a un usuario y escribir nuevas respuestas al
usuario y un agente de transporte de correo (MTA, en inglés Mail Transport
Agent), el cual administra la tarea de segundo plano de intercambiar correo
electrónico con otras máquinas remotas.
Dependiendo de los detalles de acceso a Internet de un computador, el trabajo de
recepción de correo electrónico se puede delegar a un servidor de buzón, lo que
permitiría luego que el usuario tuviera acceso a su correo electrónico enviado
mediante los protocolos POP o IMAP.
De nuevo dependiendo de los detalles de acceso a Internet de un computador, la
tarea de entregar correo electrónico se puede delegar a un servidor remoto
saliente SMTP.
Por lo general, el correo local entregado pero no leído se almacena
temporalmente en el archivo /var/spool/mail/$USER, en donde USER es el
nombre de usuario del destinatario.
Uno de los MUA más sencillos es el comando mail.
26

Network Applications
Uso del correo electrónico
Es discutible que el servicio más popular ofrecido por Internet es el correo electrónico.
El correo electrónico es un concepto sencillo: Alicia escribe un archivo de texto y
especifica enviarlo a Bob. Cuando Bob revisa su correo, el archivo de texto estará
esperando por él, etiquetado como enviado por Alice. Sin embargo, en la práctica, el
sistema de envío de correo electrónico debe ofrecer soluciones a algunos problemas
bastante complicados.
El software que Alice y Bob utilizan debe resolver los siguientes problemas.
1. La aplicación de correo electrónico de Alice de alguna manera determina cuál es
el computador de Bob.
2. Una vez determinada, la aplicación de Alice debe conectarse a la máquina de
Bob y transferir el mensaje. Si la máquina de Bob no puede ser contactada, la
aplicación de Alice debe almacenar temporalmente el mensaje pendiente y tener
alguna estrategia para tratar de contactar la máquina de Bob más tarde.
3. Como destinatario, la aplicación de correo electrónico de Bob debe tener alta
capacidad, por lo tanto cada vez que alguien (Alicia u otra persona) quiera
enviarle un mensaje de correo electrónico a Bob, su aplicación estará disponible
para recibirlo.
En algunos casos, el recipiente de correo utiliza una máquina que no tiene una conexión
permanente de Internet o está detrás de un cortafuegos, lo que luego complicará las
cosas. En esta lección, trataremos varios procedimientos que ofrecen soluciones a estos
problemas.
La solución fácil
La solución más sencilla es la apropiada para los usuarios de computadores con
conexiones deinternet bien conocidas y permanentes. En el momento en que muchos
protocolos definían cómo enviar correo electrónico, ésta fue la solución estándar. Dicha
solución implica dos aplicaciones separadas cuyos roles se identifican por TLA
(acrónimos de tres letras). La primera aplicación se conoce como MTA Agente de
Transporte de Correo y la segunda se conoce como MUA, o Agente de correo de
usuario.
Figure 1. Envío de correo electrónico en computadores con conexiones de intenet
permanentes y bien conocidas
27

Network Applications

El MTA (Agente de transporte de correo)
El MTA suele operar en el segundo plano, realizando el trabajo de una oficina postal. El
MTA recibe correo electrónico para ser envíado desde programas en la máquina local,
determina desde la dirección del destinatario la máquina apropiada que debe contactar e
intenta conectarse a un MTA complementario ejecutando en la máquina de
destinatarios, quienes deben estar escuchando el puerto 25. Si el remitente de MTA no
puede contactar el receptor de MTA, el correo se almacena temporalmente en la
máquina del remitente y el MTA de remitente intenta de nuevo más tarde.
El MTA también se enlaza al puerto local 25, donde recibe conexiones de otros MTA.
Cuando éste recibe correo desde un MTA remoto destinado a un usuario en una
máquina local, recibe el correo y lo almacena en un directorio de almacenamiento
temporal conocido como el buzón de entrada del usuario. En Linux (y Unix), el buzón
predeterminado del usuario es /var/spool/mail/username para que el correo en
espera del usuario elvis se instale en el archivo /var/spool/mail/elvis.
El MTA por defecto de Red Hat Enterprise Linux es un demonio llamado sendmail.
El MUA (Agente de usuario de correo)
El MUA es la aplicación en la que la mayoría de la gente piensa cuando se refiere a
correo electrónico. El MUA recupera correo enviado desde un almacenamiento
temporal (buzón de entrada) y lo presenta al usuario como "correo nuevo". El MUA
28

Network Applications
permite a los usuarios escribir respuestas o nuevos mensajes y pasar estos mensajes al
MTA local para envío.
Red Hat Enterprise Linux se distribuye con una amplia selección de MUAs, varios de
los cuales se describirán en ésta y en la siguiente lección.
Servidores de buzón
Aunque la solución anterior es simple, requiere que primero, todos los usuarios estén
recibiendo correo electrónico en una máquina conectada constantemente a Internet y
segundo, que la máquina tenga un nombre de equipo bien conocido y accesible a otros.
Muchos usuarios que por ejemplo, utilizan una conexión de "marcado" o de "alta
velocidad" desde un ISP (Proveedor de Servicios Internet) o que estén utilizando
máquinas detrás de un cortafuegos de una institución, no están en esta situación. Otra
solución se ha desarrollado para servir a la gente en este caso: los servidores de buzón.
Figure 1. Servidores de buzón

En el diagrama anterior, asumimos que elvis está utilizando una conexión de Internet de
"alta velocidad" para la cual se ha suscrito a la compañía "ISP.Net". Cuando se conecta
al Internet, su máquina ISP le emite a su máquina una dirección IP, pero elvis no puede
predecir la dirección IP que recibirá. El nombre del equipo, al cual se le asignó el ISP a
la dirección IP, es probablemente poco atractivo por ejemplo, dhcp-191-93.isx.isp.net,
por lo tanto si elvis garantizara la recepción de la misma dirección IP cada vez, no
desearía publicar su nombre de equipo como su dirección de correo electrónico.
En su lugar, elvis aprovecha una "cuenta de correo electrónico" que le ofrece su ISP. Es
muy probable que su cuenta exista en una máquina Linux o Unix del ISP conectada
permanentemente a Internet y se le asigne un nombre de host como por ejemplo
pop.isp.net. El ISP ha clasificado todo el correo electrónico destinado a direcciones de
forma user@isp.net para ser enviado al MTA de esta máquina. Cuando el MTA
ejecutándose en pop.isp.net recibe correo para elvis, lo almacena en un directorio de
29

Network Applications
almacenamiento temporal dedicado a elvis (muy probable en el archivo
sendmail./var/spool/mail/elvis) y el correo electrónico se considera como
entregado.
Dado que la máquina de ISP pop.isp.net tiene una conexión de Internet permanente y
bien conocida, es mejor candidata para recibir correo electrónico que la máquina de
elvis en casa. Cuando elvis está en casa, aún necesita tener acceso a su correo
electrónico que está en su buzón de entrada en pop.isp.net. Este acceso suele estar
provisto en forma de un servidor POP (Protocolo de servidor de correo) o servidor de
IMAP (Protocolo de Servicio de Correo por Internet).
Servidores POP
Los servidores POP realizan un servicio muy sencillo. Permiten a los usuarios acceder
al directorio de almacenamiento temporal de un sólo usuario y transfieren su contenido
a su MUA local. Los servidores POP suelen enlazarse al puerto 110 y requieren que
cualquier cliente se autentique mediante un par de nombres de usuario-contraseña. La
mayoría de los MUAs modernos actúan como clientes POP y pueden configurarse para
recuperar correo de un servidor especificado.
Si un servidor de buzón ejecuta el servicio POP, suele implicar que el servidor de buzón
no intenta almacenar de modo permanente, sino temporalmente hasta que el usuario "lo
baje "a su máquina local.
Servidores IMAP
Los servidores IMAP suelen ofrecer a los clientes administración de buzones de manera
más sofisticada. Los usuarios IMAP pueden mantener varias carpetas en el servidor de
buzón no sólo su buzón de entrada individual. En general, un servidor IMAP implica
que un correo electrónico del usuario sea almacenado de forma permanente en el
servidor de buzón y los usuarios ocasionalmente se conecten con un MUA desde una
máquina remota para "navegar" su correo. Los servidores IMAP suelen encontrarse en
entornos institucionales y corporativos. Los demonios IMAP se enlazan al puerto 143.
Envío de correo
Puesto que la máquina de elvis mantiene una conexión de Internet casi continua, elvis
aún desea utilizar su MUA local para enviar correo. Si el MUA local no puede
conectarse temporalmente a la máquina del destinatario, el MUA almacenará el correo
temporalmente de modo local y tratará de enviarlo más tarde.
Configuración predeterminada de Red Hat Enterprise Linux
Por defecto, Red Hat Enterprise Linux está configurado de modo apropiado para esta
situación. El MTA local se inicia, pero no aceptará conexiones a través del puerto 25
(excepto desde la dirección de bucle local, 127.0.0.1). Sirve simplemente para entregar
30

Network Applications
correo electrónico saliente. Se asume que los usuarios tienen acceso a su correo
electrónico desde un servidor POP o IMAP.
La configuración predeterminada puede cambiarse, pero la configuración necesaria va
más allá del alcance de este curso.
Servidores de correo saliente
Para máquinas que sólo tienen conexiones a Internet transitorias, el intentar entregar
correo electrónico mediante el MTA local puede no ser apropiado. En su lugar, los
usuarios de conexiones de "marcado" y similares suelen utilizar lo que se conoce como
un SMTP (Protocolo sencillo de transferencia de correo) o servidor de correo saliente.
Muchos ISP e instituciones ofrecen servidores SMTP salientes, a menudo con nombres
como smtp.isp.net.
Figure 1. Servidor de correo saliente

El MTA en el servidor SMTP desea aceptar correo de máquinas "locales", a pesar de
que no es el destinatario final para el correo electrónico. En su lugar, el servidor SMTP
transmite el correo y lo reenvía a su destino. Si se presenta algún problema, el
almacenamiento temporal y el reenvío de correo pendiente es ahora responsabilidad del
servidor SMTP.
Muchos MUAs permiten a los usuarios especificar un equipo remoto para que actúe
como el servidor SMTP del usuario (contrario a reenviar correo al MTA local para
envío). [1]
Entrega local
31

Network Applications
Todos los casos anteriores asumen que el usuario está enviando correo electrónico desde
su máquina a un destinatario en una máquina remota. Linux (y Unix) también permite a
los usuarios en una máquina local enviar correo electrónico entre sí, donde el correo
electrónico se dirige únicamente al nombre de usuario tal como blondie.
Para entrega local no se requiere ninguno de los servidores locales POP o SMTP porque
el correo electrónico se entrega al instante por el MTA local.
El MUA mail
Quizás el MUA más sencillo es un comando llamado simplemente mail. El comando
mail data de los primeros días de Unix y por lo tanto depende altamente del MTA local.
El comando mail no puede ser configurado para acceder al correo desde un servidor
POP o IMAP, ni puede ser configurado para utilizar un servidor SMTP para correo
saliente. En su lugar, puede esperar correo que sea enviado al directorio de
almacenamiento temporal y pasa al MTA de correo local para envío.
No obstante, en situaciones tales como envío de correo a usuarios locales, el comando
mail puede ser bastante eficaz.
Envío de correo electrónico con mail
El comando mail puede utilizarse para enviar correo a destinatarios especificados como
argumentos en la opción de la línea de comandos. El cuerpo del mensaje se lee desde la
entrada estándar (la cual puede leerse desde una tubería, un archivo redirigido o desde
un teclado directamente, en donde CONTROL-D ("EOF") se utiliza para indicar el fin
del mensaje).
Las opciones de línea de comandos en el cuadro siguiente pueden utilizarse para
especificar una línea de asunto, destinatario a, "Cc:", etc.
Table 1. Opciones de línea de comandos para el comando mail
Opción

Efecto

-v

Modo verboso. Imprime la comunicación entre el comando mail y el MTA
local (o remoto).

-s

Especifica una línea de asunto.

asunto

-c addrs Envía copia a las direcciones especificadas.
-b addrs Envía copias ciegas a direcciones especificadas.
A manera de ejemplo, a continuación, elvis envía por correo el contenido del archivo
lyrics.txt a blondie.
[elvis@station elvis]$ mail -s "here they are" blondie < lyrics.txt
32

Network Applications
Uso de mail para leer correo
El comando mail puede también utilizarse para leer la correspondencia de un
almacenamiento temporal de correo de usuario local. Sin embargo, la interfaz es
primitiva y por lo general se utilizan en su lugar otros MUAS. Para mayor información
vaya a la página de correo mail. Actualmente, el comando mail se considera como una
forma rápida y eficaz de enviar correo.
En el siguiente ejemplo, blondie está utilizando el comando mail sin argumentos para
ver el correo en su buzón y luego borrar el mensaje y salir.
[blondie@station blondie]$ mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/blondie": 1 message 1 new
>N 1 elvis@redhat.com
Thu Nov 13 00:08 16/653
"here they are"
& RETURN
Message 1:
From elvis@station.example.com Thu Nov 13 00:08:45 2003
Date: Thu, 13 Nov 2003 00:08:44 -0500
From: elvis@station.example.com
To: blondie@station.example.com
Subject: here they are
100 bottles of ink on the wall.
100 bottles of ink.
Take one down,
Pass it around.
& d
& q

Ejemplos
Envío de correo
Una forma fácil y rápida de enviar archivo de texto a otro usuario es con mail
[julius@station julius]$ mail -s "here's the file" nero < somefile

También es fácil con mail enviar la salida de un comando a otro usuario.
[julius@station julius]$ find . -name "*.old" | mail -s "find output"
nero

Protocolo sencillo de transporte de correo
Mediante un simple comando de correo con la opción verbosa, un usuario puede
observar el proceso por el que pasa sendmail para entregar un mensaje.
[julius@station julius]$ mail -v -s hello elvis@localhost
this is only a test
.
33

Network Applications
elvis@localhost... Connecting to [127.0.0.1] via relay...
220 station.example.com ESMTP Sendmail 8.12.8/8.12.8; Sat, 12 Apr 2003
13:08:30 -0400
>>> EHLO station.example.com
250-station.example.com Hello localhost.localdomain [127.0.0.1],
pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
>>> MAIL From:julius@station.example.com SIZE=60
250 2.1.0 julius@station.example.com... Sender ok
>>> RCPT To:elvis@station.example.com
>>> DATA
250 2.1.5 elvis@station.example.com... Recipient ok
354 Enter mail, end with "." on a line by itself
>>> .
250 2.0.0 h3CH8U3j002250 Message accepted for delivery
elvis@localhost... Sent (h3CH8U3j002250 Message accepted for delivery)
Closing connection to [127.0.0.1]
>>> QUIT
221 2.0.0 station.example.com closing connection

Ejercicios en línea
Lab Exercise
Objetivo: Enviar correo electrónico a usuarios locales.
Estimated Time: 10 mins.
Especificaciones
1. Utilice el comando mail para enviar por correo el contenido del archivo
/proc/cpuinfo a sus cuentas primaria y alterna (i.e, los usuarios
nombredeusuario_a y nombredeusuario_b, donde nombre de usuario es el
nombre de su cuenta primaria.
2. Cree el archivo ~/you_have_mail que contiene una lista ordenada de todos los
usuarios en su sistema local que actualmente tienen correo en sus "buzones de
entrada" (i.e. su directorio de almacenamiento temporal entregado pero no leído
aún). Debe incluir usuarios de "sistema" en su lista y listar un usuario por línea.
Question 1

1. Sus cuentas alternas primera y segunda tienen el contenido del archivo
/proc/cpuinfo en su depósito de correo entregado.
2. El archivo ~/you_have_mail debería contener una lista ordenada de como los
34

Network Applications
usuarios tienen correo en espera en su depósito de correo, (obviamente, sus
nombres de cuentas alternas primera y segunda deben incluirse en esta lista).

Capítulo 5 El MUA Evolution
Conceptos clave
•
•

•
•

El MUA evolution ofrece un entorno sofisticado para la administración de
correo electrónico.
La ventana de composición permite la composición de mensajes ya sea en texto
sin formato o en formato HTML e incluye un corrector ortográfico y soporte
para anexos.
El correo electrónico de entrada puede procesarse automáticamente mediante un
filtrado sofisticado.
evolution permite enviar correo desde el depósito de correo local y servidores
POP o IMAP.

Evolution
Quizás el MUA más sofisticado que se distribuye con Red Hat Enterprise Linux es
evolution. El agente de usuario de correo es apenas un componente del administrador
de la información personal de evolution. En esta sección, presentamos algunas de las
características clave de la aplicación evolution e identificamos cómo configurar
evolution para recibir correo electrónico desde varias fuentes y cómo enviar correo
mediante el servidor local MTA o el servidor remoto SMTP.
De hecho, Evolution es mucho más que un MUA. En la toma de pantalla siguiente verá
que también tiene herramientas para administrar contactos, calendario de eventos y
listas de tareas. Lo invitamos a experimentar con estos elementos cuando el tiempo se lo
permita, pero la lección se enfocará en el uso de evolution para envío y recepción de
correo.
Navegar correo electrónico
Figure 1. El agente usuario de correo Evolution

Desde la pantalla principal, el correo se puede clasificar en una jerarquía de carpetas
navegables mediante el recuadro en la parte superior izquierda. En la parte superior
derecha del recuadro, se presenta un resumen de mensajes almacenados en la carpeta
actual seleccionada. En el recuadro de la parte inferior derecha se visualiza el contenido
del actual mensaje.
35

Network Applications
Haciendo "click derecho" en un mensaje, un menú emergente ofrece una variedad de
acciones, tales como almacenar el mensaje como archivo de texto, responder a un
mensaje o reenviar el mensaje, "marcando" el mensaje con una bandera particular,
"etiquetando" el mensaje en un color determinado o identificando el mensaje como
correo basura.
Un mensaje se puede archivar en otra carpeta con sólo arrastrar el mensaje al sitio de la
carpeta deseada en el panel a mano izquierda.
Al elegir "Agregar remitente a agenda de direcciones" se pueden crear nuevos contactos
fácilmente.
Por último, los filtros se pueden crear al tratar correos electrónicos con características
similares al actual mensaje.
Escribir correo electrónico
La ventana de composición se utiliza para crear un nuevo mensaje, responder o reenviar
un mensaje.
Figure 1. La ventana de composición de correo electrónico Evolution

Como se puede ver en la toma de pantalla, la ventana de composición proporciona un
editor sencillo para componer texto y anexar archivos. Si se desea, los mensajes se
pueden formatear como "HTML", para permitir a los usuarios incorporar enlaces,
imágenes, y elementos sencillos HTML en el mensaje.
Como es texto escrito, las palabras no identificadas por el corrector ortográfico son
subrayadas y con un click derecho, se sugieren remplazos que pueden buscarse en el
diccionario o palabras que pueden agregarse al diccionario personal del usuario.
Al seleccionar el menú Security, los usuarios pueden elegir entre firmar o encriptar su
mensaje mediante un protocolo de clave pública encriptada.
Uso de Filtros Evolution
La aplicación evolution soporta muchas características que permiten administrar
grandes cantidades de correo electrónico. Una de las herramientas primarias son los
filtros de correo electrónico.
Como se ve a continuación, los filtros se componen de una selección de criterios
coincidentes que serán aplicados al correo electrónico recibido. Si un mensaje coincide
con los criterios entonces se pueden poner en práctica una norma o un grupo de normas.
36

Network Applications
Figure 1. Filtros de correo electrónico Evolution

Los mensajes se pueden seleccionar al combinar algunos de estos criterios.
•
•
•
•
•
•
•
•

El remitente o el destinatario del mensaje contiene un texto especificado.
La línea de asunto u otra línea de encabezado especificada, contiene un texto
especificado.
El cuerpo del mensaje contiene texto especificado.
La fecha en la que se envió o se recibió el mensaje o después del tiempo
especificado.
El mensaje se ha etiquetado o marcado para "seguimiento".
El mensaje parece haber sido enviado desde una lista de correo especificada.
El mensaje coincide con una expresión regular especificada.
El mensaje cuando es entubado a un comando de shell arbitrario, devuelve un
valor de retorno especificado.

Cuando coincide, el mensaje puede estar sujeto a alguna combinación de los siguientes
destinos.
•
•
•
•

El mensaje puede ser copiado o movido automáticamente a una carpeta
especificada.
Se puede asignar al mensaje una bandera particular, una puntuación o una
etiqueta.
Puede reproducirse una campana de terminal o algún sonido personalizado.
El mensaje puede entubarse a una shell de comando arbitraria.

Configuración de cuentas en Evolution
Evolution permite a los usuarios administrar múltiples cuentas, donde una cuenta
representa un origen particular de correo electrónico, un destino particular para correo
electrónico, una identidad particular de un remitente entre otras opciones.
Las cuentas se pueden crear, borrar, habilitar, inhabilitar o modificar mediante el
siguiente diálogo, el cual se obtiene seleccionando Herramientas: Configuración... y
eligiendo el "Panel de cuentas de correo".
Figure 1. Administración de cuentas Evolution

Especificación de la fuente del correo electrónico
Evolution, permite recuperar correspondencia desde varias fuentes como se puede
apreciar en el siguiente diálogo.
37

Network Applications
Figure 1. Especificación de fuentes de las cuentas de correo de Evolution

Las primeras dos selecciones especifican que el correo se debería recuperar desde los
servidores POP o IMAP. Para cada uno, el diálogo permite especificar el nombre de
servidor, el nombre de cuenta y la contraseña. Si el servidor de POP o IMAP soporta
codificación, el encapsulado SSL puede especificarse. También se ofrecen otros
esquemas de autenticación (diferentes a un par de nombre de usuario-contraseña), si el
servidor los soporta.
El resto de las opciones permiten a evolution sacar correo directamente del depósito de
correo MTA o compartir carpetas con otros MTA como por ejemplo, mutt, pine y elm.
Especificar una técnica de entrega de correo electrónico
Para cada cuentase pueden especificar una de dos técnicas de entrega.
Figure 1. Especificar una técnica de entrega de cuenta de correo electrónico de
Evolution

Si se debe utilizar un host SMTP, debe especificarse el nombre del host. Además se
pueden establecer soporte para conexiones encriptadas o autenticación de usuario si la
máquina SMTP es compatible o lo requiere.
La otra alternativa es hacer que evolution entregue correo simplemente pasándolo al
MTA local ("enviar correo"), en cuyo caso no hay ninguna otra configuración.
Capítulo 6 Aplicaciones de diagnósticos de red
Conceptos clave
•
•
•
•
•

/sbin/ifconfig presenta la configuración IP local.
ping confirma la conectividad de red de bajo nivel entre hosts.
host hace solicitudes directas de DNS.
El comando netstat -tuna lista los servicios actuales activos de red y
conexiones.
/sbin/traceroute puede diagnosticar problemas de enrutado.

Configuración requerida para el protocolo de internet
El protocolo de Internet o más común el protocolo IP es el estándar adoptado para
entregar información entre máquinas conectadas por una red. Para utilizar el protocolo
IP, una máquina debe configurarse de la siguiente manera.
38

Network Applications
Aunque la configuración de un sistema con la información IP de configuración
apropiada requiere privilegios de root, este cuaderno demuestra la forma de determinar
la configuración de red de una máquina local e introduce utilidades que sirven para
confirmar que la infraestructura de red de la máquina esté funcionando adecuadamente.
Dirección IP
Linux (y Unix) representa los dispositivos de red conectados a una máquina (tales como
una tarjeta Ethernet, una tarjeta Token-Ring, un módem utilizado para conexiones de
marcado, etc...) como una interfaz de red. Antes de que una interfaz pueda utilizarse
para enviar o recibir tráfico, debe configurarse con una dirección IP que sirve como la
identidad de la interfaz.
Portal predeterminado
La mecánica de un protocolo IP organiza máquinas en subredes o subnets en inglés.
Todas las máquinas en una subred pueden intercambiar información directamente. Las
subredes IP están a su vez ligadas a otras subredes por máquinas que actúan como
routers. Un router tiene múltiples interfaces de red, por lo general cada uno participa en
una subred distinta. Con el fin de comunicarse con un equipo en otra subred, los datos
deben pasarse a un router, el cual (con la ayuda de otros routers) encamina la
información a la subred apropiada y desde allí al host apropiado.
Para comunicarse con las máquinas fuera de la subred local, su máquina debe conocer la
identidad de un router cercano. El router utilizado para encaminar paquetes fuera de su
subred local se conoce como un portal predeterminado.
Nameserver
Otras máquinas en internet a su vez se identifican por una dirección IP. La gente suele
pensar en términos de nombres, por lo tanto el protocolo se ha desarrollado para asignar
nombres a las direcciones IP. El protocolo se llama Servicio de Nombres de Dominio o
más conocido como DNS.
El protocolo DNS requiere que cada máquina tenga disponible uno o más servidores
DNS (comúnmente llamados servidores de nombre), los cuales pueden servir tanto de
base de datos para asignar un nombre a direcciones locales IP como también de punto
de partida para determinar direcciones IP para nombres de dominio de los cuales el
servidor no tiene conocimento directo.
Determinar su(s) dirección(es) IP: /sbin/ifconfig
En una lección anterior presentamos el comando hostname -i, el cual muestra la
dirección IP en su equipo local. En realidad una "máquina" no tiene una dirección IP,
las interfaces de red sí. Esta lección tratará el tema de direcciones IP de interfaces de red
en mayor detalle.
39

Network Applications
En Linux (y Unix), cada dispositivo de red se representa como una interfaz de red, (por
una vez, ¡encontramos algo que no es un archivo!). Linux nombra interfaces de acuerdo
con el tipo de dispositivo que representa. El siguiente cuadro lista algunos de los
nombres más utilizados en Linux.
Table 1. Interfaces de red Linux
Interfaz

Dispositivo

ethn

Tarjeta Ethernet

trn

Tarjeta de Token-Ring

fddin

Tarjeta de fibra óptica

pppn

Conexión de marcado a través de módem

lo

Dispositivo de bucle local

En cada caso, n se remplaza por un número entero para cada instancia de un dispositivo
determinado conectado a una máquina.
Confirmar la configuración de la interfaz de red
El comando ifconfig muestra la configuración de interfaces de red activas. Puesto que el
comando suele ser utilizado por root para configurar interfaces, éste vive dentro del
directorio /sbin, el cual está fuera de la RUTA predeterminada para los usuarios
estándar. No obstante, los usuarios estándar pueden usar el comando para ver
información de configuración de interfaz, utilizando una referencia absoluta como en el
ejemplo a continuación.
[blondie@station blondie]$ /sbin/ifconfig
eth0
Link encap:Ethernet HWaddr 00:00:86:4D:F0:0C
inet addr:192.168.0.51 Bcast:192.168.0.255
Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1716503 errors:0 dropped:0 overruns:2 frame:0
TX packets:2146415 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:193489123 (184.5 Mb) TX bytes:1299754457 (1239.5
Mb)
Interrupt:11 Base address:0xd400
lo

Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:206054 errors:0 dropped:0 overruns:0 frame:0
TX packets:206054 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:22911068 (21.8 Mb) TX bytes:22911068 (21.8 Mb)

A la interfaz eth0 se le asigna una dirección IP de 192.168.0.254.
40

Network Applications
El comando ifconfig presenta una estrofa de información de la configuración IP y las
estadísticas de uso para cada interfaz de red activa. En la mayoría de los casos, los
usuarios esperarían ver dos estrofas. Una estrofa con la configuración para una tarjeta
Ethernet y otra con la configuración para el dispositivo virtual de bucle local. La línea
importante es la segunda línea, la cual visualiza la dirección IP asignada a la interfaz. Si
la línea que contiene la dirección IP falta o si la dirección no parece razonable para su
configuración de red local, podrá tener problemas para acceder la red.
Determinar su portal por defecto: /sbin/route
Como se mencionó al comienzo de la lección, para la comunicación con equipos en sus
subredes locales se utilizan procedimientos diferentes a la comunicación con hosts en
una subnet separada. El kernel de Linux, al igual que otras kernels, define las máquinas
que deberían considerarse locales y la gateway que debería usarse para ayudar a
comunicarse con aquellas que no lo son. Este cuadro se llama cuadro de enrutamiento.
Si usted es un usuario estándar, el comando route se puede utilizar para ver el cuadro de
enrutamiento del sistema. Si es un usuario root, el comando puede también utilizarse
para manipular el cuadro. Al igual que el comando ifconfig, el comando route vive en
el directorio /sbin, por lo tanto los usuarios estándar deben invocarlo mediante una
referencia absoluta.
[blondie@station blondie]$ /sbin/route
Kernel IP routing table
Destination
Gateway
Genmask
Use Iface
192.168.0.0
*
255.255.255.0
0 eth0
127.0.0.0
*
255.0.0.0
0 lo
default
server1.example 0.0.0.0
0 eth0

Flags Metric Ref
U

0

0

U

0

0

UG

0

0

Un cuadro de ruta estándar visualiza dos tipos de entrada. El primer tipo define qué
subredes se deben considerar como locales. En general, debería haber una línea que
especifique una subred para cada interfaz activa. En la salida anterior, la primera línea
define la subnet asociada con la interfaz de Ethernet (con una dirección IP de
192.168.0.51) y la segunda línea define la subred asociada con la interfaz de bucle local
(con una dirección IP de 127.0.0.1).
El segundo tipo de entrada que sirve para definir gateways es el más importante para
nuestra discusión. Dichas entradas de gateway se pueden distinguir porque el host está
definido en la segunda columna ("Gateway") y la cuarta columna ("Banderas") contiene
una "G". Cada cuadro de ruta debe contener una entrada para la gateway "por defecto" y
la segunda columna debe contener el nombre del host del gateway.
La misma información se puede ver mediante la dirección IP en lugar de nombres del
host utilizando /sbin/route -n.
41

Network Applications
[blondie@station blondie]$ /sbin/route -n
Kernel IP routing table
Destination
Gateway
Genmask
Use Iface
192.168.0.0
0.0.0.0
255.255.255.0
0 eth0
127.0.0.0
0.0.0.0
255.0.0.0
0 lo
0.0.0.0
192.168.0.254
0.0.0.0
0 eth0

Flags Metric Ref
U

0

0

U

0

0

UG

0

0

Aquí, blondie determina que su máquina está utilizando el host 192.168.0.254
como su gateway predeterminado.
La bandera "G" indica que esta línea se utiliza para definir una gateway, no una
subred local.
Determinar su(s) nombre de usuario(s)
El Servicio de Nombres de Dominio permite a los usuarios referirse a los computadores
de la red mediante nombres de host en lugar de direcciones IP. A diferencia de los otros
dos aspectos de configuración de red, un servidor de nombre es hasta cierto punto
opcional. Con el fin de comunicarse con otras máquinas su equipo debe tener una
dirección IP. Si desea comunicarse con máquinas fuera de la subred, usted debe tener
una gateway por defecto. Sin embargo, si los usuarios quieren referirse a cada máquina
por dirección IP en lugar de nombre de máquina, su equipo puede comunicarse
mediante el protocolo IP sin consultar el servidor de nombres.
No obstante, en la práctica los servidores de nombres parecen ser más necesarios (se le
facilita más memorizar academy.redhat.com o 66.187.232.51?). Convertir un nombre de
host en una dirección IP suele conocerse como resolver una dirección y la biblioteca
que ejecuta el servicio de nombre se llama la biblioteca resolv. Cuando la biblioteca
intenta resolver una dirección suele haber dos recursos disponibles.
Configuración DNS estática: /etc/hosts
El primer recurso es un archivo de texto sencillo llamado archivo /etc/hosts. Aunque
sólo root puede editar el archivo cualquier usuario puede observarlo.
[blondie@station blondie]$ cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1
localhost.localdomain
localhost rha-server
192.168.0.254
server1.example.com server s
192.168.0.1
station1 station1.example.com www1 www1.example.com
192.168.0.51
station51 station51.example.com
192.168.129.201 z
160.168.170.24 rosemont.example.com dhcp-1116-114 r

El formato del archivo es sencillo. El primer símbolo en la línea debería ser una
dirección IP y los símbolos subsiguientes son nombres de hosts que deberían apuntar a
la dirección IP. El caracter estándar de comentario de Unix (“#”) también es compatible.
42

Network Applications
Si el equipo sólo se está comunicando con pocas máquinas o si un administrador desea
crear un atajo de nombres de host (tal como “s”) o si deseara anular el servidor de
nombre local, las entradas pueden agregarse al archivo /etc/hosts mediante un editor
de texto sencillo.
Claro está que esta técnica no escala bien. Usted no puede esperar que el archivo
/etc/hosts le responda a todo.
Configuración DNS dinámica: /etc/resolv.conf
Cuando el /etc/hosts local no puede dar respuesta, la biblioteca resolv consulta un
servidor de nombres. Para determinar qué máquina consultar que esté ejecutando un
servidor de nombres, examina el archivo de configuración de la biblioteca de resolv,
/etc/resolv.conf.
[blondie@station blondie]$ cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search example.com
nameserver 192.168.0.254
nameserver 207.175.42.153

El host 192.168.0.254 está actuando como el servidor de nombre primario.
El host 207.175.42.153 está actuando como el servidor de nombres secundario.
El archivo de configuración /etc/resolv.conf utiliza líneas que comienzan por la
palabra clave servidor de nombres para especificar las direcciones IP de máquinas
ejecutando servidores de nombre. Si se especifican varios servidores de nombres, se
utilizará el primero por defecto. Si no está disponible se utilizará el segundo y así
sucesivamente. Por consiguiente, el primer servidor de nombres listado suele llamarse
servidor de nombres primario, el segundo servidor listado servidor de nombres
secundario y así sucesivamente.
Observe que el servidor de nombres no necesita estar cerca de la máquina. Cualquier
equipo que esté ejecutando el servidor de nombres y le permita solicitarlo, puede usarse
como servidor de nombres. En la práctica, el uso de un servidor de nombres local
genera un mayor rendimiento.
Utilidades de diagnóstico de red
En las secciones anteriores, hemos esbozado las técnicas más directas para determinar
su configuración de red IP local de la máquina. En esta sección, presentaremos las
utilidades de diagnóstico que sirven para asegurar que las configuraciones están
funcionando correctamente con su entorno de red local.
Confirmación de conectividad IP: ping
43

Network Applications
El comando ping sirve para confirmar la conectividad IP entre dos equipos. El primer
argumento para ping puede ser el nombre del equipo o la dirección IP de la máquina
que usted desearía contactar.
[blondie@station blondie]$ ping 192.168.0.254
PING 192.168.0.254 (192.168.0.254) 56(84) bytes of data.
64 bytes from 192.168.0.254: icmp_seq=1 ttl=64 time=0.245 ms
64 bytes from 192.168.0.254: icmp_seq=2 ttl=64 time=0.180 ms
64 bytes from 192.168.0.254: icmp_seq=3 ttl=64 time=0.186 ms
CTRL-C
--- 192.168.0.254 ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.180/0.203/0.245/0.033 ms

El comando ping debería presentar una línea por segundo, incluyendo el número de
secuencia y la información de temporización sobre la demora de ida y vuelta, la cual
reporta el tiempo necesario para recibir una respuesta de la máquina remota. El
comando ping continuará ejecutándose hasta cancelarse con la secuencia de control
CONTROL-C.
Si no hay respuesta para el comando ping, usted no podrá esperar que se presente
ninguna comunicación de red de alto nivel. El culpable suele ser un cable Ethernet que
se ha desconectado físicamente de la máquina o de la pared.
Las inconsistencias en la tasa en la que las líneas se presentan o la discontinuidad en los
números de secuencia son generalmente indicativos de una red congestionada o de una
conexión ruidosa y se puede esperar un bajo rendimiento de red de protocolos de alto
nivel.
Examen de ruta: /usr/sbin/traceroute
Cuando se conecte a una máquina fuera de su subred, su paquete pasa de router a router
a medida que atraviesa varias subredes hasta que finalmente se envía a la subred que
contiene la máquina destino. La ruta del paquete, cuando pasa de router a router puede
trazarse con el comando /usr/sbin/traceroute.
El comando traceroute suele llamarse con un argumento, el nombre del equipo o la
dirección IP de la máquina destino.
[blondie@station blondie]$ /usr/sbin/traceroute www.whitehouse.gov
traceroute: Warning: www.whitehouse.gov has multiple addresses; using
12.129.72.144
traceroute to a1289.g.akamai.net (12.129.72.144), 30 hops max, 38 byte
packets
1
2
3
4
5
6
7
8

server1 (192.168.0.254) 0.243 ms 0.162 ms 0.252 ms
10.44.160.1 (10.44.160.1) 8.563 ms 10.488 ms 7.642 ms
srp2-0.rlghncg-rtr1.nc.rr.com (24.25.1.99) 7.382 ms 10.162 ms 0.874 ms
srp4-0.rlghnca-rtr2.nc.rr.com (24.25.2.146) 10.008 ms 8.798 ms 15.931 ms
srp13-0.rlghncrdc-rtr2.nc.rr.com (66.26.33.178) 4.259 ms 10.079 ms 10.031 ms
son0-1-1.chrlncsa-rtr6.carolina.rr.com (24.93.64.81) 29.675 ms 9.950 ms 29.665 ms
pop1-cha-P4-0.atdn.net (66.185.132.45) 10.087 ms 21.045 ms 8.202 ms
bb2-cha-P2-0.atdn.net (66.185.132.42) 11.392 ms 20.371 ms 9.712 ms
44

Network Applications
9 bb2-ash-P13-0.atdn.net (66.185.152.50) 29.322 ms 26.192 ms 25.901 ms
10 pop2-ash-P1-0.atdn.net (66.185.139.211) 26.506 ms 26.485 ms 26.208 ms
11 ATT.atdn.net (66.185.140.250) 26.704 ms 27.127 ms 21.004 ms
12 tbr1-p014001.wswdc.ip.att.net (12.123.9.82) 38.888 ms 22.006 ms 28.123 ms13
gbr6-p20.wswdc.ip.att.net (12.122.11.174) 29.880 ms 19.628 ms 31.080 ms
14 gar3-p370.wswdc.ip.att.net (12.123.9.69) 24.231 ms 29.829 ms 20.827 ms
15 mdf1-gsr12-2-pos-7-0.atl1.attens.net (12.122.255.154) 40.184 ms 50.815 ms
38.903 ms
16 mdf1-bi8k-2-eth-1-1.atl1.attens.net (12.129.64.246) 39.845 ms 39.803 ms 39.887 ms
17 12.129.72.144 (12.129.72.144) 39.856 ms 39.934 ms 39.898 ms

Usted hallará con frecuencia que los paquetes toman rutas sorpresivas para ir de un
lugar a otro. El número de routers que su paquete pasa suele conocerse como el número
de saltos que ha hecho el paquete. El paquete anterior hizo 17 saltos para alcanzar su
destino.
Si su paquete no puede completar el primer salto, es probable que su gateway por
defecto de su máquina no haya sido determinada correctamente. Si su traceroute
termina entre la primera pareja o salta (sin alcanzar el destino final), el problema es un
router local mal configurado y su administrador de red local probablemente ayude a
resolver el problema. Si el comando traceroute se agota a más de cuatro o cinco saltos,
es probable que el problema esté fuera de control de su administrador de red local.
Realización de solicitudes DNS de modo manual: host
El comando host se puede utilizar para realizar directamente solicitudes DNS. Con un
argumento, el comando host sólo reportará la resolución DNS solicitada.
[blondie@station rha030]$ host academy.redhat.com
academy.redhat.com has address 66.187.232.51

Si la opción -a se incluye, el comando host presenta información detallada de la
solicitud realizada y la respuesta recibida en el formato de "registro de recursos".
Además, la línea final identificará el servidor de nombres que resolvió la solicitud y la
cantidad de tiempo que se necesitó para ello.
[elvis@station rha030]$ host -a academy.redhat.com
Trying "academy.redhat.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53870
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 0
;; QUESTION SECTION:
;academy.redhat.com.

IN

ANY

;; ANSWER SECTION:
academy.redhat.com.

284

IN

A

66.187.232.51

;; AUTHORITY SECTION:
redhat.com.
redhat.com.
redhat.com.

584
584
584

IN
IN
IN

NS
NS
NS

ns1.redhat.com.
ns2.redhat.com.
ns3.redhat.com.

Received 106 bytes from 192.168.0.254#53 in 30 ms
45

Network Applications
En este ejemplo, el servidor de nombres que respondió tiene una dirección IP de
192.168.0.254.
Ejemplos
Diagnóstico de dificultades de red
La usuaria madonna está teniendo problemas para que su navegador de red mozilla se
conecte al sitio www.yahoo.com y cree que la máquina local podría estar mal
configurada. Procede a examinar sus configuraciones de red local y confirma que
parecen funcionales.
Siguiendo el consejo de iniciar con lo básico, madonna primero se asegura que la
máquina tenga una dirección IP, examinando su configuración de interfaz de red local.
[madonna@staton madonna]# /sbin/ifconfig
eth0
Link encap:Ethernet HWaddr 00:50:8B:0C:B1:D5
inet addr:109.125.90.86 Bcast:109.125.90.255
Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:513364 errors:0 dropped:0 overruns:0 frame:0
TX packets:319118 errors:0 dropped:0 overruns:0 carrier:0
collisions:5068 txqueuelen:100
RX bytes:78770024 (75.1 Mb) TX bytes:356094835 (339.5 Mb)
Interrupt:11
lo

Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:63432 errors:0 dropped:0 overruns:0 frame:0
TX packets:63432 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:6124991 (5.8 Mb) TX bytes:6124991 (5.8 Mb)

Convencida que su interfaz está activa y utilizando la dirección IP 109.125.90.86,
examina su información de ruta para determinar su gateway por defecto.
[madonna@station madonna]# /sbin/route -n
Kernel IP routing table
Destination
Gateway
Genmask
Use Iface
109.125.90.0
*
255.255.255.0
0 eth0
127.0.0.0
*
255.0.0.0
0 lo
0.0.0.0
109.125.90.1
0.0.0.0
0 eth0

Flags Metric Ref
U

0

0

U

0

0

UG

0

0

Luego utiliza el comando ping para confirmar si puede contactar la gateway.
[madonna@station madonna]# ping 109.125.90.1
PING 109.125.90.1 (109.125.90.1) from 109.125.90.86 : 56(84) bytes of
data.
46

Network Applications
64 bytes from 109.125.90.1: icmp_seq=1 ttl=255 time=2.92 ms
64 bytes from 109.125.90.1: icmp_seq=2 ttl=255 time=2.65 ms
CTRL-C
--- 109.125.90.1 ping statistics --2 packets transmitted, 2 received, 0% loss, time 1004ms
rtt min/avg/max/mdev = 2.652/2.788/2.924/0.136 ms

Satisfecha, cancela el comando y luego examina su configuración DNS.
[madonna@station madonna]# cat /etc/resolv.conf
search example.com
nameserver 109.125.90.75
nameserver 109.125.90.2
nameserver 66.218.71.63

Puesto que ella todavía no ha llamado el host externo de su subred local, intenta llamar
a un servidor de nombres terciario.
[madonna@station madonna]# ping 66.218.71.63
PING 66.218.71.63 (66.218.71.63) from 109.125.90.86 : 56(84) bytes of
data.
64 bytes from 66.218.71.63: icmp_seq=3 ttl=54 time=11.2 ms
64 bytes from 66.218.71.63: icmp_seq=7 ttl=54 time=20.3 ms
64 bytes from 66.218.71.63: icmp_seq=11 ttl=54 time=27.7 ms
CTRL-C
--- 66.218.71.63 ping statistics --13 packets transmitted, 3 received, 76% loss, time 12045ms
rtt min/avg/max/mdev = 11.275/19.766/27.702/6.717 ms

Los resultados del comando ping son un poco problemáticos, porque la mayoría de sus
paquetes se han quitado. En su lugar ella intenta determinar el camino recorrido por los
paquetes a la máquina.
[madonna@station madonna]# /usr/sbin/traceroute -n 66.218.71.63
traceroute to 66.218.71.63 (66.218.71.63), 30 hops max, 38 byte
packets
1 209.125.90.1 3.473 ms 2.276 ms 2.281 ms
2 10.252.86.221 8.836 ms 15.761 ms 16.423 ms
3 216.217.3.193 11.293 ms 20.227 ms 15.257 ms
4 216.217.3.153 13.123 ms 10.306 ms 7.699 ms
5 63.215.192.173 10.835 ms 6.679 ms 6.881 ms
6 64.159.2.169 6.789 ms 7.117 ms 7.520 ms
7 64.152.69.30 12.358 ms 7.087 ms 6.877 ms
8 66.218.71.63 9.680 ms 11.787 ms 9.963 ms

Puesto que traceroute retornó dicha solicitud de salida, madonna asume que cualquier
problema observado con el comando ping anterior debió haber sido transitorio.
Por último, ella confirma que su servidor de nombres es operacional al realizar unas
pocas solicitudes de DNS con el comando host.
47

Network Applications
[madonna@station madonna]$ host www.redhat.com
www.redhat.com has address 66.187.232.50
[madonna@station madonna]$ host hardware.redhat.com
hardware.redhat.com is an alias for enterprise.redhat.com.
enterprise.redhat.com has address 66.187.233.193
[madonna@station madonna]$ host www.yahoo.com
www.yahoo.com is an alias for www.yahoo.akadns.net.
www.yahoo.akadns.net has address 66.218.71.95
www.yahoo.akadns.net has address 66.218.70.48
...

Convencida de que todo parece estar bien, trata de nuevo el navegador de red mozilla y
tiene éxito. Sea cualquiera el problema que estaba teniendo debe haberse relacionado
con la congestión de red transitoria observada con el comando ping.
Ejercicios en línea
Lab Exercise
Objetivo: Determinar la configuración de red local
Tiempo estimado: 15 minutos.
Especificaciones
Crear los siguientes archivos, cada uno de los cuales debería contener su dirección IP
como un "quad punteado".
Archivo

Contenido

~/net_ipaddr La dirección IP asignada a la interfaz eth0.
~/net_gw

La dirección IP preseterminada de su gateway.

~/net_ns

La dirección IP del servidor de nombres primario.

Question 1

1. Los tres archivos presentados arriba, cada uno de los cuales contiene la dirección
IP especificada como su única palabra.

Capítulo 7 Terminal de red y clientes FTP
48

Network Applications
Conceptos clave
•
•

•

El cliente HTTP de terminal Elinks, invocado como el comando links se puede
utilizar para navegar páginas web desde un entorno gráfico.
La aplicación curl es una aplicación de protocolo múltiple no interactivo
(incluyendo HTTP, HTTPS y FTP) que sirve para transferir archivos en modo
de lote.
La aplicación wget es una aplicación de protocolo múltiple no interactiva
(incluyendo HTTP, HTTPS y FTP) que sirve para transferir de modo recursivo
páginas web, buscando en todas las páginas las referencias de página web.

¿Por qué terminales basadas en clientes?
Los usuarios probablemente están familizados con las aplicaciones gráficas tales como
mozilla para navegar la red o nautilus para tener acceso a servidores FTP. Aparte de
estas aplicaciones, Linux también ofrece una amplia colección de clientes basados en la
línea de comandos. ¿Por qué alguien estaría tentado a utilizar clientes basados en líneas
de comandos en lugar de apuntar y hacer click en las aplicaciones?
•
•

•

•

La razón obvia: si no está ejecutando en un entorno gráfico X, estas son las
únicas utilidades disponibles.
Las utilidades se pueden escribir en scripts. Si tiene que extraer información de
forma repetitiva del mismo sitio, debería considerar un script para que haga el
trabajo repetitivo por usted.
Las utilidades de la línea de comandos requieren menos recursos. Si está
tratando de descargar un archivo largo en otras máquinas ocupadas, un proceso
curl es mucho más atractivo que un proceso mozilla, porque el primero
consume 4 megabytes mientras que el segundo consume 40 megabytes de
memoria.
La simplicidad tiende a motivar la estabilidad. Cuando se descargan archivos
grandes, como por ejemplo, imágenes ISO de 700 megabytes, muchas de las
aplicaciones pueden volverse inestables, (la lista de culpables incluye a Internet
Explorer). Los clientes de línea de comandos como curl tienden a generar
resultados más estables.

Navegación de páginas web con Elinks
El texto Elinks de cliente HTTP (navegador de red) está diseñado para traducir páginas
web en una terminal, emulando la presentación de un navegador de red gráfico. En
cuanto sea posible, los cuadros y formas se presentan en escala. Observe que en la
siguiente visualización de la página de red asociada con Red Hat Network, los marcos y
cuadros están traducidos correctamente.
Inicio de Elinks
Los Elinks se inician como el comando links especificando una URL para cargar como
un argumento. Observe el siguiente ejemplo.
49

Network Applications
[elvis@station elvis]$ links http://www.redhat.com

Figure 1. El navegador de texto Elinks

Cuando utilice links, la pantalla está activa y los enlaces pueden navegarse mediante
teclas de flechas o el ratón. Al utilizar la tecla ESC, se crea un menú que permite al
usuario acceder a los diálogos de favoritos, historial y personalización.
Aunque la opción -dump sirve para entregar una página en una salida estándar y la
opción -source hará lo mismo al contenido "Crudo" de la URL (a menudo botando
HTML), el soporte para interacciones de guiones es muy poco sofisticado comparado
10 network applications
10 network applications
10 network applications
10 network applications
10 network applications
10 network applications
10 network applications
10 network applications
10 network applications
10 network applications
10 network applications
10 network applications
10 network applications
10 network applications
10 network applications
10 network applications
10 network applications
10 network applications
10 network applications
10 network applications
10 network applications

More Related Content

What's hot (17)

Preguntas respuestas t10_y_11
Preguntas respuestas t10_y_11Preguntas respuestas t10_y_11
Preguntas respuestas t10_y_11
 
Helpdesk apoyo tecnico iglesias
Helpdesk apoyo tecnico iglesiasHelpdesk apoyo tecnico iglesias
Helpdesk apoyo tecnico iglesias
 
Tcpip4v6
Tcpip4v6Tcpip4v6
Tcpip4v6
 
Protocolo http
Protocolo httpProtocolo http
Protocolo http
 
Curso Practico Cardsharing Lecc2
Curso Practico Cardsharing Lecc2Curso Practico Cardsharing Lecc2
Curso Practico Cardsharing Lecc2
 
Sockets en JAVA
Sockets en JAVASockets en JAVA
Sockets en JAVA
 
Capa de transporte (2)
Capa de transporte (2)Capa de transporte (2)
Capa de transporte (2)
 
Programacion en sockets informe
Programacion en sockets informeProgramacion en sockets informe
Programacion en sockets informe
 
Proyecto integrado
Proyecto integradoProyecto integrado
Proyecto integrado
 
Bosquejo general
Bosquejo generalBosquejo general
Bosquejo general
 
Utilerias
UtileriasUtilerias
Utilerias
 
Crear vpn linux a linux
Crear vpn linux a linuxCrear vpn linux a linux
Crear vpn linux a linux
 
protocolosredes
protocolosredesprotocolosredes
protocolosredes
 
Protocolos gnu linux
Protocolos gnu linuxProtocolos gnu linux
Protocolos gnu linux
 
Protocologos 1
Protocologos 1Protocologos 1
Protocologos 1
 
Apache avanzado
Apache avanzadoApache avanzado
Apache avanzado
 
Presentación1
Presentación1Presentación1
Presentación1
 

Viewers also liked

Mardy dayanna soto flórez 1006
Mardy dayanna soto flórez 1006Mardy dayanna soto flórez 1006
Mardy dayanna soto flórez 1006DaYaa SoTo
 
Razonamiento e intuision
Razonamiento e intuisionRazonamiento e intuision
Razonamiento e intuisionSusy Pilataxi
 
Informe de administracion
Informe de  administracionInforme de  administracion
Informe de administraciongracealmao
 
Laiseca alberto matando enanos a garrotazos.pdf
Laiseca alberto   matando enanos a garrotazos.pdfLaiseca alberto   matando enanos a garrotazos.pdf
Laiseca alberto matando enanos a garrotazos.pdfFernando Joaquin Menino
 
Pme starter guide
Pme starter guidePme starter guide
Pme starter guideSipho Mnisi
 
Workshop-Brandlive en eModa Day
Workshop-Brandlive en eModa Day  Workshop-Brandlive en eModa Day
Workshop-Brandlive en eModa Day VTEX Latam
 
IMPACTO DEL AVE EN LA CIUDAD DE SEVILLA. Juan José Domínguez- Turismo de Sevilla
IMPACTO DEL AVE EN LA CIUDAD DE SEVILLA. Juan José Domínguez- Turismo de SevillaIMPACTO DEL AVE EN LA CIUDAD DE SEVILLA. Juan José Domínguez- Turismo de Sevilla
IMPACTO DEL AVE EN LA CIUDAD DE SEVILLA. Juan José Domínguez- Turismo de SevillaTurismoAstea
 
9147KR - Alternatives Consulting Panel Brochure AW
9147KR - Alternatives Consulting Panel Brochure AW9147KR - Alternatives Consulting Panel Brochure AW
9147KR - Alternatives Consulting Panel Brochure AWLeanne Bradley
 
B. ConcurSOL "Fundamentos de Energía Solar" (Dr Piacentini Rubén)
B. ConcurSOL "Fundamentos de Energía Solar" (Dr Piacentini Rubén)B. ConcurSOL "Fundamentos de Energía Solar" (Dr Piacentini Rubén)
B. ConcurSOL "Fundamentos de Energía Solar" (Dr Piacentini Rubén)IRICE CONICET
 
Rúbrica foro-paysandú
Rúbrica foro-paysandúRúbrica foro-paysandú
Rúbrica foro-paysandúctepay
 
All+unit+1+test+english math-science+review+smt1+2015+grade+3-exercises
All+unit+1+test+english math-science+review+smt1+2015+grade+3-exercisesAll+unit+1+test+english math-science+review+smt1+2015+grade+3-exercises
All+unit+1+test+english math-science+review+smt1+2015+grade+3-exercisesFahmi Awaludin
 
The Business Analysts Role in Agile Software Development
The Business Analysts Role in Agile Software DevelopmentThe Business Analysts Role in Agile Software Development
The Business Analysts Role in Agile Software Developmentallan kelly
 
Brukerveil for NetCom Trådløs Bedrift websentralbord
Brukerveil for NetCom Trådløs Bedrift websentralbordBrukerveil for NetCom Trådløs Bedrift websentralbord
Brukerveil for NetCom Trådløs Bedrift websentralbordChristian Borge
 

Viewers also liked (20)

Mardy dayanna soto flórez 1006
Mardy dayanna soto flórez 1006Mardy dayanna soto flórez 1006
Mardy dayanna soto flórez 1006
 
Razonamiento e intuision
Razonamiento e intuisionRazonamiento e intuision
Razonamiento e intuision
 
Informe de administracion
Informe de  administracionInforme de  administracion
Informe de administracion
 
Laiseca alberto matando enanos a garrotazos.pdf
Laiseca alberto   matando enanos a garrotazos.pdfLaiseca alberto   matando enanos a garrotazos.pdf
Laiseca alberto matando enanos a garrotazos.pdf
 
Pme starter guide
Pme starter guidePme starter guide
Pme starter guide
 
Proyecto excitación y qi gong
Proyecto excitación y qi gongProyecto excitación y qi gong
Proyecto excitación y qi gong
 
Workshop-Brandlive en eModa Day
Workshop-Brandlive en eModa Day  Workshop-Brandlive en eModa Day
Workshop-Brandlive en eModa Day
 
IMPACTO DEL AVE EN LA CIUDAD DE SEVILLA. Juan José Domínguez- Turismo de Sevilla
IMPACTO DEL AVE EN LA CIUDAD DE SEVILLA. Juan José Domínguez- Turismo de SevillaIMPACTO DEL AVE EN LA CIUDAD DE SEVILLA. Juan José Domínguez- Turismo de Sevilla
IMPACTO DEL AVE EN LA CIUDAD DE SEVILLA. Juan José Domínguez- Turismo de Sevilla
 
TTW Media Kit Email
TTW Media Kit EmailTTW Media Kit Email
TTW Media Kit Email
 
9147KR - Alternatives Consulting Panel Brochure AW
9147KR - Alternatives Consulting Panel Brochure AW9147KR - Alternatives Consulting Panel Brochure AW
9147KR - Alternatives Consulting Panel Brochure AW
 
5. teen star resumen
5. teen star resumen5. teen star resumen
5. teen star resumen
 
B. ConcurSOL "Fundamentos de Energía Solar" (Dr Piacentini Rubén)
B. ConcurSOL "Fundamentos de Energía Solar" (Dr Piacentini Rubén)B. ConcurSOL "Fundamentos de Energía Solar" (Dr Piacentini Rubén)
B. ConcurSOL "Fundamentos de Energía Solar" (Dr Piacentini Rubén)
 
Rúbrica foro-paysandú
Rúbrica foro-paysandúRúbrica foro-paysandú
Rúbrica foro-paysandú
 
All+unit+1+test+english math-science+review+smt1+2015+grade+3-exercises
All+unit+1+test+english math-science+review+smt1+2015+grade+3-exercisesAll+unit+1+test+english math-science+review+smt1+2015+grade+3-exercises
All+unit+1+test+english math-science+review+smt1+2015+grade+3-exercises
 
The Business Analysts Role in Agile Software Development
The Business Analysts Role in Agile Software DevelopmentThe Business Analysts Role in Agile Software Development
The Business Analysts Role in Agile Software Development
 
Inflammation Persists Even During HIV Therapy
Inflammation Persists Even During HIV TherapyInflammation Persists Even During HIV Therapy
Inflammation Persists Even During HIV Therapy
 
Unidad 2. nacionalismo y populismo en p.r.
Unidad 2. nacionalismo y populismo en p.r.Unidad 2. nacionalismo y populismo en p.r.
Unidad 2. nacionalismo y populismo en p.r.
 
Beatus ille 1
Beatus ille 1Beatus ille 1
Beatus ille 1
 
uttarakhand
uttarakhand uttarakhand
uttarakhand
 
Brukerveil for NetCom Trådløs Bedrift websentralbord
Brukerveil for NetCom Trådløs Bedrift websentralbordBrukerveil for NetCom Trådløs Bedrift websentralbord
Brukerveil for NetCom Trådløs Bedrift websentralbord
 

Similar to 10 network applications

Que es un servidor pdf personalizada
Que es un servidor pdf personalizadaQue es un servidor pdf personalizada
Que es un servidor pdf personalizada2013maquerajuan
 
Que es un servidor pdf personalizada
Que es un servidor pdf personalizadaQue es un servidor pdf personalizada
Que es un servidor pdf personalizada2013maquerajuan
 
REDES DE DATOS – SESION # 3.pptx
REDES DE DATOS – SESION # 3.pptxREDES DE DATOS – SESION # 3.pptx
REDES DE DATOS – SESION # 3.pptxMiltonSerrano6
 
Fundamentos de redes: 3. Funcionalidad y protocolos de la capa de aplicación
Fundamentos de redes: 3. Funcionalidad y protocolos de la capa de aplicaciónFundamentos de redes: 3. Funcionalidad y protocolos de la capa de aplicación
Fundamentos de redes: 3. Funcionalidad y protocolos de la capa de aplicaciónFrancesc Perez
 
capa de aplicacion-sisco-netwokrs.pptx
capa de aplicacion-sisco-netwokrs.pptxcapa de aplicacion-sisco-netwokrs.pptx
capa de aplicacion-sisco-netwokrs.pptxCESARANDRESDIAZGONZA
 
Internet orígenes,evolucion.
Internet orígenes,evolucion.Internet orígenes,evolucion.
Internet orígenes,evolucion.klever95
 
Capa de aplicacion (Final)
Capa de aplicacion (Final)Capa de aplicacion (Final)
Capa de aplicacion (Final)ITTBlogger
 
Fundamentos de Internet
Fundamentos de InternetFundamentos de Internet
Fundamentos de InternetLigia78
 
Resumen capitulo 3
Resumen capitulo 3Resumen capitulo 3
Resumen capitulo 3jorge
 
Tarea 3.0.0
Tarea 3.0.0Tarea 3.0.0
Tarea 3.0.0jorge
 
Capitula 3 funcionalidad y protocolo de la capa de aplicación
Capitula 3 funcionalidad y  protocolo de la capa de aplicaciónCapitula 3 funcionalidad y  protocolo de la capa de aplicación
Capitula 3 funcionalidad y protocolo de la capa de aplicaciónRicardoM724
 
Comunicación entre procesos Sistemas distribuidos
Comunicación entre procesos Sistemas distribuidosComunicación entre procesos Sistemas distribuidos
Comunicación entre procesos Sistemas distribuidosStalin Jara
 

Similar to 10 network applications (20)

Que es un servidor pdf personalizada
Que es un servidor pdf personalizadaQue es un servidor pdf personalizada
Que es un servidor pdf personalizada
 
Que es un servidor pdf personalizada
Que es un servidor pdf personalizadaQue es un servidor pdf personalizada
Que es un servidor pdf personalizada
 
protocolos udp y tcp
protocolos udp y tcpprotocolos udp y tcp
protocolos udp y tcp
 
11 aplicaciones tcp ip
11 aplicaciones tcp ip11 aplicaciones tcp ip
11 aplicaciones tcp ip
 
Servidores
ServidoresServidores
Servidores
 
Servidores
ServidoresServidores
Servidores
 
REDES DE DATOS – SESION # 3.pptx
REDES DE DATOS – SESION # 3.pptxREDES DE DATOS – SESION # 3.pptx
REDES DE DATOS – SESION # 3.pptx
 
Fundamentos de redes: 3. Funcionalidad y protocolos de la capa de aplicación
Fundamentos de redes: 3. Funcionalidad y protocolos de la capa de aplicaciónFundamentos de redes: 3. Funcionalidad y protocolos de la capa de aplicación
Fundamentos de redes: 3. Funcionalidad y protocolos de la capa de aplicación
 
capa de aplicacion-sisco-netwokrs.pptx
capa de aplicacion-sisco-netwokrs.pptxcapa de aplicacion-sisco-netwokrs.pptx
capa de aplicacion-sisco-netwokrs.pptx
 
Internet orígenes,evolucion.
Internet orígenes,evolucion.Internet orígenes,evolucion.
Internet orígenes,evolucion.
 
Cliente servidor
Cliente servidorCliente servidor
Cliente servidor
 
Cliente servidor
Cliente servidorCliente servidor
Cliente servidor
 
Capa de aplicacion (Final)
Capa de aplicacion (Final)Capa de aplicacion (Final)
Capa de aplicacion (Final)
 
Fundamentos de Internet
Fundamentos de InternetFundamentos de Internet
Fundamentos de Internet
 
Servidores
ServidoresServidores
Servidores
 
Resumen capitulo 3
Resumen capitulo 3Resumen capitulo 3
Resumen capitulo 3
 
Tema2 dhcp
Tema2 dhcpTema2 dhcp
Tema2 dhcp
 
Tarea 3.0.0
Tarea 3.0.0Tarea 3.0.0
Tarea 3.0.0
 
Capitula 3 funcionalidad y protocolo de la capa de aplicación
Capitula 3 funcionalidad y  protocolo de la capa de aplicaciónCapitula 3 funcionalidad y  protocolo de la capa de aplicación
Capitula 3 funcionalidad y protocolo de la capa de aplicación
 
Comunicación entre procesos Sistemas distribuidos
Comunicación entre procesos Sistemas distribuidosComunicación entre procesos Sistemas distribuidos
Comunicación entre procesos Sistemas distribuidos
 

More from yimfer1

11 suplemments
11 suplemments11 suplemments
11 suplemmentsyimfer1
 
9 managing processes
9  managing processes9  managing processes
9 managing processesyimfer1
 
8 herramientas de procesos de string
8  herramientas de procesos de string8  herramientas de procesos de string
8 herramientas de procesos de stringyimfer1
 
7 standard io and pipes
7 standard io and pipes7 standard io and pipes
7 standard io and pipesyimfer1
 
6 la shell bash
6 la shell bash6 la shell bash
6 la shell bashyimfer1
 
5 the linux filesystem
5 the linux filesystem5 the linux filesystem
5 the linux filesystemyimfer1
 
4 file ownerships and permissions
4 file ownerships and permissions4 file ownerships and permissions
4 file ownerships and permissionsyimfer1
 
3 users and groups
3   users and groups3   users and groups
3 users and groupsyimfer1
 
2 filesystem basics
2 filesystem basics2 filesystem basics
2 filesystem basicsyimfer1
 
1 quick tours
1 quick tours1 quick tours
1 quick toursyimfer1
 
Manual servicio ftp bajo linux red hat
Manual servicio ftp bajo linux red hatManual servicio ftp bajo linux red hat
Manual servicio ftp bajo linux red hatyimfer1
 
Manual servicio http bajo linux red hat
Manual servicio http bajo linux red hatManual servicio http bajo linux red hat
Manual servicio http bajo linux red hatyimfer1
 
Switching intermedio final
Switching intermedio finalSwitching intermedio final
Switching intermedio finalyimfer1
 
Enrutamiento dinamico con rip
Enrutamiento dinamico con ripEnrutamiento dinamico con rip
Enrutamiento dinamico con ripyimfer1
 
Actividad 4
Actividad 4Actividad 4
Actividad 4yimfer1
 
Taller enrutamiento estatico
Taller enrutamiento estaticoTaller enrutamiento estatico
Taller enrutamiento estaticoyimfer1
 
Enrutamiento dinamico con eigrp ospf
Enrutamiento dinamico con eigrp ospfEnrutamiento dinamico con eigrp ospf
Enrutamiento dinamico con eigrp ospfyimfer1
 
Trabajo final
Trabajo finalTrabajo final
Trabajo finalyimfer1
 
Taller de wireshark final
Taller de wireshark finalTaller de wireshark final
Taller de wireshark finalyimfer1
 
Manual win 7 en red en virtual box
Manual win 7 en red en virtual boxManual win 7 en red en virtual box
Manual win 7 en red en virtual boxyimfer1
 

More from yimfer1 (20)

11 suplemments
11 suplemments11 suplemments
11 suplemments
 
9 managing processes
9  managing processes9  managing processes
9 managing processes
 
8 herramientas de procesos de string
8  herramientas de procesos de string8  herramientas de procesos de string
8 herramientas de procesos de string
 
7 standard io and pipes
7 standard io and pipes7 standard io and pipes
7 standard io and pipes
 
6 la shell bash
6 la shell bash6 la shell bash
6 la shell bash
 
5 the linux filesystem
5 the linux filesystem5 the linux filesystem
5 the linux filesystem
 
4 file ownerships and permissions
4 file ownerships and permissions4 file ownerships and permissions
4 file ownerships and permissions
 
3 users and groups
3   users and groups3   users and groups
3 users and groups
 
2 filesystem basics
2 filesystem basics2 filesystem basics
2 filesystem basics
 
1 quick tours
1 quick tours1 quick tours
1 quick tours
 
Manual servicio ftp bajo linux red hat
Manual servicio ftp bajo linux red hatManual servicio ftp bajo linux red hat
Manual servicio ftp bajo linux red hat
 
Manual servicio http bajo linux red hat
Manual servicio http bajo linux red hatManual servicio http bajo linux red hat
Manual servicio http bajo linux red hat
 
Switching intermedio final
Switching intermedio finalSwitching intermedio final
Switching intermedio final
 
Enrutamiento dinamico con rip
Enrutamiento dinamico con ripEnrutamiento dinamico con rip
Enrutamiento dinamico con rip
 
Actividad 4
Actividad 4Actividad 4
Actividad 4
 
Taller enrutamiento estatico
Taller enrutamiento estaticoTaller enrutamiento estatico
Taller enrutamiento estatico
 
Enrutamiento dinamico con eigrp ospf
Enrutamiento dinamico con eigrp ospfEnrutamiento dinamico con eigrp ospf
Enrutamiento dinamico con eigrp ospf
 
Trabajo final
Trabajo finalTrabajo final
Trabajo final
 
Taller de wireshark final
Taller de wireshark finalTaller de wireshark final
Taller de wireshark final
 
Manual win 7 en red en virtual box
Manual win 7 en red en virtual boxManual win 7 en red en virtual box
Manual win 7 en red en virtual box
 

10 network applications

  • 1. 1 Network Applications Capítulo 1 Introducción a las redes TCP/IP Conceptos clave • • • • • • • La mayoría de los servicios de redes de Linux están diseñados en torno a una relación de cliente servidor. Las aplicaciones de servidor de red generalmente están diseñadas para permanecer "siempre en ejecución" iniciándose automáticamente cuando el sistema arranca y apagándose solamente cuando el sistema lo hace. Por lo general, sólo el usuario root puede administrar procesos del servidor. Las aplicaciones de cliente de red suelen ejecutarse únicamente cuando están en uso y las puede iniciar cualquier usuario. La mayoría de los servidores de red Linux y clientes se comunican mediante el protocoloTCP/IP. La dirección TCP/IP tanto del proceso del cliente como del proceso del servidor consta de una dirección IP y de un puerto. Los servidores de red suelen utilizar puertos asignados denominados puertos "bien conocidos" como se catalogan en el archivo /etc/services. Los clientes de red suelen utilizar puertos privilegiados de modo aleatorio. A menudo, los puertos bien conocidos residen en el rango de puertos privilegiados por debajo del puerto número 1024. El comando hostname puede utilizarse para examinar la dirección IP actual de la máquina, mientras que el comando netstat -tuna se puede utilizar para examinar todos los puertos abiertos. Clientes, servidores y protocolo TCP/IP Iniciaremos nuestro cuaderno sobre las aplicaciones de redes con la introducción a los conceptos de clientes y servidores y los aspectos básicos del protocolo TCP/IP. Hablaremos del protocolo TCP/IP como si fuera el único protocolo disponible en Internet. Este no es el caso pero es el protocolo más utilizado y los conceptos necesarios para entender se amplían (o reducen) de forma natural a los otros protocolos. La mayoría de las aplicaciones de redes actuales están diseñadas en torno a la relación cliente-servidor. El cliente de red suele ser una aplicación que actúa en nombre de una persona que está tratando de realizar alguna tarea en particular tal como navegar en una URL o ejecutar el comando rdate para preguntar la hora actual a un servidor de tiempo. El servidor de red suele ser una aplicación que ofrece servicios, tales como entregar el contenido de las páginas web o dar la hora actual. El diseño de (aplicaciones que actúan como) clientes de red y (aplicaciones que actúan como) servidores de red difiere dramáticamente. Con el fin de apreciar las diferencias, los compararemos con los agentes en una relación cliente-servidor, un cliente comprando una barra de caramelo a un vendedor.
  • 2. 2 Network Applications El servidor Los vendedores y los servicios de red efectivos comparten las siguientes características. Los servidores están altamente disponibles Así como un vendedor siempre debe utilizar la registradora, incluso cuando no hay clientes, los procesos que ejecutan servicios de red necesitan estar ejecutándose, listos para suplir los servicios cuando se soliciten. Por lo general, los procesos que ejecutan servicios de red se inician en el momento de arranque y continúan ejecutándose hasta que la máquina sea apagada. En Linux (y Unix) dichos procesos se conocen como demonios. Por lo general, sólo el usuario root puede iniciar o cerrar procesos que funcionan como servidores de red. Los servidores tienen sitios bien conocidos Además de estar disponibles cuando un cliente necesita el servicio, los vendedores se están dónde saben que los clientes los pueden encontrar. Así como los clientes pueden buscar la ubicación de vendedores de caramelos desconocidos, en los directorios telefónicos y encontrarlos por dirección postal, los clientes de red pueden ubicar servidores de redes desconocidas mediante un hostname, el cual se convierte en la dirección IP utilizada para tener acceso al servicio. El cliente Por el contrario, el cliente de la tienda de caramelos no necesita estar ni altamente disponible ni ser muy conocido. Un cliente no se estará en una tienda de caramelos todo el día por si decide comprar un caramelo. Del mismo modo, los clientes no necesitan permanecer en sitios bien conocidos. Nuestro cliente no se queda todo el día en casa por si alguien pasa a venderle una barra de caramelo. Los procesos que ejecutan clientes de red son iniciados por usuarios normales y por lo general se ejecutan todo el tiempo necesario para completar una tarea. Cuando alguien hace un receso para ir a almorzar, cierra su navegador de red. Además, las aplicaciones de cliente no necesitan tener direcciones fijas, pueden moverse de un lugar a otro. Más adelante veremos esto detalladamente. Direcciones TCP/IP Todo proceso que participa en una conversación TCP/IP debe tener una Dirección IP, así como cada participante en una conversación debe tener un número telefónico. Además, todo proceso en una conversación TCP/IP debe tener un número de puerto, cuya analogía más cercana podría ser una extensión telefónica asociada a un número de teléfono. Los computadores en una red se identificans con una dirección IP. La dirección IP viene en forma de cuatro números enteros, cada uno en un rango de 0 a 255 (no es una
  • 3. 3 Network Applications coincidencia que la cantidad de información pueda codificarse en un byte de memoria) y tradicionalmente separados por puntos así como 192.168.0.3. Esta representación suele conocerse de modo informal como un quad punteado. Los procesos en computadores se identifican con unnúmero de puerto, el cual es un entero entre 1 y 65535 (no es una coincidencia que la cantidad de información se codifique en 2 bytes de memoria). Cada vez que un proceso quiere participar en una conversación TCP/IP con otro proceso, el kernel debe asignarle primero un número de puerto. El protocolo TCP/IP permite dos procesos, para localizarse entre sí, cada uno se identifica con una dirección IP y un número de puerto. La dirección IP sirve para localizar la máquina en la que el proceso se está ejecutando (esta es la "parte del protocolo IP") y el número de puerto se utiliza para localizar el proceso correcto en la máquina (esta es la parte "TCP"). Sockets Con el fin de ilustrar una transacción típica TCP/IP, examinaremos la conversación entre el navegador de red mozilla de un estudiante fictisio ejecutándo en la máquina station3.example.com, lo que se traduce en una dirección IP 123.45.67.89 y el servidor de red httpd ejecutando en academy.redhat.com, lo que se traduce en una dirección IP de 66.187.232.51. El proceso suele parecerse a lo siguiente. 1. Cuando la máquina academy.redhat.com arranca, se inicia el proceso httpd. Primero asigna un socket, ejecuta bind al puerto 80 y comienza a listen conexiones. 2. En algún momento más tarde, quizás minutos o días, el proceso mozilla se inicia en la máquina station3.example.com. También asigna un socket y solicita connect al puerto 80 de la máquina 66.187.232.51. Puesto que no pidió un número de puerto particular, el kernel provee uno aleatorio, digamos 12345. Como le solicita la conexión, provee su propia dirección IP y el número de puerto (asignado de modo aleatorio) al servidor. 3. El servidor selecciona la conexión accept. El socket establecido se identifica ahora con dirección IP y número de puerto del cliente y del servidor. Una vez se establece el socket, los procesos mozilla y httpd pueden leer información con read y escribir a un archivo con write de un modo tan sencillo como leer y escribir desde un archivo, (recuerde ..."todo es un archivo", incluyendo las conexiones de red! Para fines más prácticos, un socket es sólo otro descriptor de archivo). Los verbos resaltados en esta sección bind (unir), listen (escuchar), connect (conectar), accept (aceptar), e inclusoread (leer) y write (escribir) son términos bien definidos en Linux (y Unix). También son los nombres de llamadas al sistema de programación que realizan cada paso. Figure 1. Un socket TCP/IP entre un navegador de red Mozilla y un servidor Apache
  • 4. 4 Network Applications En el protocoloTCP/IP, un socket se define como la combinación de una dirección IP y el número de puerto del servidor y cliente. Por ejemplo, ¿qué sucedería si nuestro estudiante estuviera ejecutando múltiples versiones de Mozilla, cada uno haciendo solicitudes de academy.redhat.com? o ¿qué sucedería si múltiples usuarios estuvieran usando la máquina station3.example.com simultáneamente todas accediendo academy.redhat.com? ¿De qué forma mantendría en orden un servidor de red qué conversación estaba teniendo con cuál cliente? A cada proceso de cliente se le asignaría un número de puerto distinto y por lo tanto conversa con el demonio httpd mediante un socket diferente. Figure 2. Múltiples sockets TCP/IP Más acerca de puertos Servicios bien conocidos y el archivo /etc/services En nuestro ejemplo, mencionamos que el proceso httpd solicitó bind al puerto 80, y en retorno, el proceso mozilla solicitó connect al puerto 80 del servidor. ¿Cómo se
  • 5. 5 Network Applications convino que el puerto 80 era el apropiado para el servidor de red? Los servicios de Internet tradicionales tales como el servidor de red o el servidor ftp o el servidor smtp (de correo electrónico), se conocen como servicios bien conocidos. En máquinas de Linux y (Unix), el catálogo de servicios bien conocidos, y los puertos asignados a ellos se mantienen en el archivo /etc/services. Observe que tanto el cliente como el servidor necesitan concordar con el número apropiado de puerto para que el archivo /etc/services sea tan importante en la máquina del cliente como en la del servidor. El sólo hecho de que un servicio se liste en el archivo /etc/services no significa que usted está ejecutando (o incluso siendo capaz de ejecutar) ese servicio bien conocido. Puertos privilegiados A diferencia de los clientes, los procesos que ejecutan servidores de red suelen solicitar el puerto al que quieren vincularse. Solamente un proceso puede vincularse a un puerto en un tiempo determinado (¿A qué se debe esto?) Los puertos menores de 1024 se conocen como puertos privilegiados y son tratados de modo especial por el kernel. Únicamente los procesos ejecutándose como el usuario root pueden enlazarse a puertos privilegiados, (esto ayuda a asegurar que si elvis tuviera una cuenta en la máquina academy.redhat.com, no podría iniciar una versión falsa de un servidor de red que podría distribuir información falsa). En un principio, los puertos bien conocidos y los puertos con privilegios pretendian coincidir pero en la práctica hay más puertos bien conocidos que privilegiados. Determinar los servicios actuales de red TCP/IP Uso de hostname para visualizar la dirección IP actual El comando hostname, sin argumentos, muestra el nombre del equipo de la máquina actual. Con la opción -i, la dirección IP de la máquina se visualiza en su lugar. [elvis@station elvis]$ hostname station.example.com [elvis@station elvis]$ hostname -i 172.16.62.9 ¿Qué sucede si hay múltiples direcciones IP? El diseño del comando hostname es un poco equívoco, porque las máquinas pueden tener fácilmente más de una dirección IP (una para cada red múltiple de tarjetas de interfaz, por ejemplo). En dichas situaciones, no hay razón para que cualquier dirección IP tenga prioridad sobre las otras. No obstante, por razones históricas, el kernel mantiene el rastro de un parámetro conocido como su nombre del equipo y el comando hostname -i presenta la dirección IP asociada con éste. Uso del comando netstat para ver los puertos abiertos
  • 6. 6 Network Applications Cuando un puerto es utilizado por un socket se le conoce como puerto abierto. El comando netstat sirve para ver una variedad de información de redes incluyendo los puertos abiertos. Infortunadamente, cuando un comando es llamado sin ninguna opción la salida del comando netstat se inunda de información poco interesante, sockets locales "Unix" utilizados para comunicarse entre procesos en la misma máquina. Sin embargo, cuando se llama con las siguientes opciones se ve información más interesante. Table 1. Opciones para el comando netstat Opción Efecto -t Presenta los sockets TCP -u Presenta los sockets UDP -n Presenta la dirección IP en lugar del hostname -a Presenta todos los sockets incluso aquellos en estado LISTEN Muchas más opciones están disponibles, para mayor información acuda a la página de manual netstat(8). Las siguientes opciones se escogieron, no solo porque cuando se combinan producen una salida interesante, sino porque también son fáciles de recordar: por ejemplo, "tuna" (atún). Cuando se invoca con las siguientes opciones, la salida de netstat es similar a la siguiente. [elvis@station elvis]$ netstat -tuna Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:32768 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:777 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 127.0.0.1:32769 ESTABLISHED
  • 7. 7 Network Applications tcp 0 ESTABLISHED tcp 0 ESTABLISHED ... tcp 0 ESTABLISHED tcp 0 TIME_WAIT tcp 0 TIME_WAIT ... tcp 0 ESTABLISHED tcp 0 ESTABLISHED udp 0 udp 0 ... 0 172.16.62.9:32903 172.16.62.8:6001 0 172.16.62.9:32848 172.16.62.8:6001 0 172.16.62.9:33325 172.16.62.8:6001 0 127.0.0.1:33953 127.0.0.1:631 0 127.0.0.1:33952 127.0.0.1:631 314 127.0.0.1:32769 127.0.0.1:631 0 172.16.62.9:34387 172.16.62.8:22 0 0.0.0.0:32768 0 0.0.0.0:177 0.0.0.0:* 0.0.0.0:* De las muchas líneas, podemos retirar aquellas asociadas con el protocolo udp y concentrarnos en las columnas 4, 5 y 6 de las filas asociadas con tcp. Table 2. Columnas relevantes desde la salida de netstat Columna Título Función 1 Protocolo El protocolo del socket. Nos referiremos a los sockets tcp. 4 Dirección local La dirección IP y el número de puerto de la mitad local del socket. 5 Dirección extranjera La dirección IP y el número del puerto de la mitad remota del socket. 6 Estado El estado de la conexión TCP. Nos referiremos a los estados más interesantes LISTEN y ESTABLECIDO. Direcciones especiales IP Las siguientes direcciones IP pueden hallarse en la columna de dirección local de la salida anterior. Dirección IP Función 172.16.62.9 La dirección IP externa de la máquina tal como la reportó el comando hostname -i. 127.0.0.1 La dirección bucle local. Cada máquina que utiliza las redes TCP/IP es compatible con la dirección de bucle local o loopback. Las conexiones a la máquina o desde la máquina desde esta dirección siempre se retroalimentan a la máquina local para que la comunicación pueda ocurrir entre dos procesos en la misma máquina. La conversación que se presenta
  • 8. 8 Network Applications Dirección IP Función sobre la dirección de bucle local ocurre internamente, no se expone a la red. 0.0.0.0 Esta dirección especial IP sirve para referirse a "todas" las direcciones IP disponibles. Cuando un proceso se enlaza a un determinado puerto, puede elegir entre utilizar únicamente una dirección particular externa, sólo la dirección de bucle local o todas las direcciones IP disponibles. Sockets de escucha Los sockets de escucha son conexiones pertenecientes a un servidor antes de que los clientes se presenten. Por ejemplo, al final del primer paso de nuestra conexión TCP/IP de muestra anterior, el proceso httpd tendría una conexión abierta en el estado de escucha. Observe en la salida anterior que para las conexiones de escucha, sólo se define la mitad de la dirección. Conexiones establecidas Como su nombre lo implica, los sockets establecidos tienen un proceso de cliente y un proceso de servidor con comunicación establecida. Uniendo esfuerzos Ahora podemos reunir algunas de las partes para analizar unas pocas líneas extraídas de la salida anterior. tcp LISTEN 0 0 0.0.0.0:80 0.0.0.0:* Este socket está conectado a todas las interfaces en el puerto 80 en el estado de ESCUCHA. Aparentemente esta máquina también tiene un servidor de red httpd escuchando activamente conexiones de clientes. tcp LISTEN tcp LISTEN 0 0 127.0.0.1:631 0.0.0.0:* 0 0 127.0.0.1:25 0.0.0.0:* Estos dos sockets están escuchando conexiones, pero sólo en la dirección de bucle local. Deben pertenecer a servicios que esperan recibir conexiones desde otros procesos en la máquina local pero no desde la red. Para determinar a qué servicios pertenecen estos puertos ejecutamos un grep desde el archivo /etc/services. [elvis@station elvis]$ grep 25 /etc/services smtp 25/tcp mail smtp 25/udp mail timed 525/tcp timeserver
  • 9. 9 Network Applications timed 525/udp timeserver prospero-np 1525/tcp privileged prospero-np 1525/udp [elvis@station elvis]$ grep 631 /etc/services ipp 631/tcp Protocol ipp 631/ucp Protocol # Prospero non- # Internet Printing # Internet Printing Aparentemente, cualquier proceso que haya solicitado el puerto 25 está escuchando clientes de correo electrónico. Probablemente es el demonio sendmail. El proceso de escucha en el puerto 631 está escuchando clientes de impresión. Probablemente es el demonio de impresión cupsd. Ambos servicios se tratarán más adelante en este cuaderno. tcp 0 ESTABLISHED 314 127.0.0.1:32769 127.0.0.1:631 Esta línea refleja una conexión establecida entre dos procesos ambos en la máquina local (observe la dirección IP de bucle local para los dos). El primero está conectado al puerto 32769 (probablemente un puerto cliente asignado de modo aleatorio) y el segundo al puerto 631. Algunos procesos en la máquina local deben estar comunicándose con el demonio cupsd. tcp 0 ESTABLISHED 0 172.16.62.9:34387 172.16.62.8:22 Nuestra línea extraída representa una conexión establecida entre lo que aparentemente es un cliente en nuestra máquina local, conectado al servicio enlazado al puerto 22 en nuestra máquina remota. De nuevo, trataremos de llamar a grep para buscar el servicio bien conocido asociado con el puerto 22. [elvis@station elvis]$ grep 22 /etc/services ssh 22/tcp Protocol ssh 22/udp Protocol imap3 220/tcp Access imap3 220/udp ... # SSH Remote Login # SSH Remote Login # Interactive Mail # Protocol v3 Aparentemente, esta línea representa una conexión activa entre un cliente ssh en la máquina local y un demonio sshd en una máquina con una dirección IP de172.16.62.8. Ejercicios en línea Lab Exercise Objetivo: Familiarizarse con la configuración y actividad TCP/IP.
  • 10. 10 Network Applications Estimated Time: 10 mins. Especificaciones 1. Crear el archivo ~/lab11.1/ipaddr que contenga su dirección IP de máquina como lo reporta el comando hostname como su única palabra. 2. Crear el archivo ~/lab11.1/listening_ports que contenga una lista de todos los puertos menores que 1024 en su máquina actual, abiertos en el estado de escucha, un puerto por línea. Question 1 1. El archivo ~/lab11.1/ipaddr que contiene su dirección IP actual de la máquina (como lo reportó el comando hostname) como su única palabra. 2. El archivo ~/lab11.1/listening_ports que incluye un listado de todos los puertos menores de 1024 en su máquina actual, abiertos en el estado de escucha, un puerto por línea. Capítulo 2 Impresión Linux Conceptos clave • • • • • • Linux de Red Hat Enterprise utiliza el sistema de impresión CUPS para administrar impresoras. El sistema de impresión CUPS está diseñado en torno al concepto de cola de impresión, el cual combina un directorio de almacenamiento temporal, un filtro y un dispositivo de impresión. Los comandos gnome-print-manager y lpstat pueden utilizarse para navegar colas de impresión disponibles. Los comandos lpr, lpq y lprm se utilizan para someter ("solicitar") trabajos de impresión, averiguar por trabajos importantes y quitar trabajos de impresión pendientes, respectivamente. Todos examinarán la variable de entorno PRINTER para determinar la cola de impresión por defecto. Los comandos lp y cancel se comportan de un modo similar a los comandos lpr y lprm. Muchas aplicaciones imprimen por entubamiento a stdin de una línea de comando personalizable lpr. Introducción a CUPS Linux de Red Hat Enterprise utiliza el Sistema de Impresión Común de Unix (CUPS) para administrar impresoras. En lugar de interactuar con la impresora directamente, los usuarios someten las solicitudes de impresión a las colas de impresión que son manejadas por el demonio cupsd. Las solicitudes de impresión pendientes en una cola
  • 11. 11 Network Applications de impresión se conocen como trabajos de impresión. Una vez se ha sometido el trabajo a la cola, los usuarios pueden retornar rápidamente a cualquiera de las tareas que estaban haciendo. Si la impresora está ocupada con otro documento o no tiene papel, o no está disponible en la red, el demonio cupsd controlará la situación y enviará (o reenviará) el trabajo de impresión a la impresora cuando quede disponible. El demonio cupsd utiliza el Protocolo de Impresión de Internet (IPP), el cual es una extensión directa del protocolo HTTP, diseñado para permitir administración de cola de impresión, a la manera de un sistema operativo independiente. Como resultado, la administración de CUPS tiene mucho en común con la administración del servidor de red. La siguiente gráfica identifica los elementos que participan en la impresión Linux; dichos elementos se tratan en detalle más adelante. Figure 1. Infraestructura de impresión Linux.- Colas de impresión Una cola de impresión es una combinación de los siguientes elementos. • Un directorio de almacenamiento temporal donde se pueden almacenar los trabajos pendientes.
  • 12. 12 Network Applications • • Una serie de filtros que transforman archivos de entrada en formatos apropiados para cualquier dispositivo secundario conectado a la cola. Un dispositivo secundario, tal como una impresora conectada localmente o una cola de impresión definida en una máquina remota. A continuación, se listan algunos de los dispositivos secundarios admitidos por CUPS. o impresoras de puerto paralelo conectadas localmente o impresoras localmente conectadas através de un USB o impresoras de red utilizando la interfaz LPD o impresoras de red utilizando interfaz de JetDirect o Colas de impresión IPP en máquinas remotas o Colas de impresión LPD en máquinas remotas o Servicios de impresión de red (Microsoft) SMB La tarea fundamental que enfrenta el administrador al configurar Linux de Red Hat Enterprise para que utilice una impresora particular o un servicio de red de impresión, es definir y nombrar correctamente la cola de impresión para el recurso. Esto generalmente implica identificar cuáles de los dispositivos secundarios anteriores se utilizan para acceder al dispositivo, elegir un filtro apropiado para el dispositivo, llamar y activar la cola de impresión. En este curso asumiremos que ya se ha hecho todo el trabajo difícil y que las colas de impresión disponibles para su sistema ya se han definido. Navegar las colas de impresión disponibles: gnome-print-manager y lpstat Las colas de impresión están disponibles ya sea porque se han definido en la máquina local o descubierto mediante la habilidad de CUPS para navegar la red local para impresoras publicadas. En el entorno gráfico, gnome-print-manager puede utilizarse para identificar las colas de impresión y controlar los trabajos de impresión sometidos a ellas. El control de impresión puede iniciarse ya sea desde la línea de comandos o al elegir Herramientas del Sistema: Administrador de Impresión desde el menú de aplicaciones GNOME. Figure 1. El administrador de impresión GNOME Cuando el entorno gráfico no está disponible, o incluso cuando lo está, el comando lpstat se puede utilizar para escanear las colas de impresión disponibles desde la línea de comando. La siguiente línea de comandos sirve para clasificar el comando lpstat. Table 1. Opciones para el comando lpstat Opción Efecto -a Lista estado de aceptación de todas las colas de impresión.
  • 13. 13 Network Applications Opción Efecto -o Lista todos los trabajos importantes -p Lista todas las colas de impresión y si están inactivas u ocupadas. -s Lista el estatus de la impresora, incluída la cola por defecto y el dispositivo secundario asociado con cada cola. Para mayor información, vea la página de manual lpstat(1). A continuación, elvis descubre que su cola de impresión de sistema por defecto, se llama simplemente "printer" y que tiene varias colas de impresión disponibles, que parecen referirse a la cola de impresión IPP en un servidor de impresora local. [elvis@station elvis]$ lpstat -s system default destination: printer device for acct2_ire: ipp://printsrv.example.com:631/printers/acct2_ire device for acct_ire: ipp://printsrv.example.com:631/printers/acct_ire device for ba: ipp://printsrv.example.com:631/printers/ba device for checks: ipp://printsrv.example.com:631/printers/checks device for coms: ipp://printsrv.example.com:631/printers/coms device for exec: ipp://printsrv.example.com:631/printers/exec ... Someter y administrar trabajos: lpr, lpq y lprm CUPS utiliza los comandos de UNIX tradicionales para interactuar con el sistema de impresión: lpr somete archivos e información que van a imprimirse, lpq examina el estatus de trabajos de impresión importantes y lprm quita trabajos de impresión pendientes en la cola. Todos los tres comandos utilizan las siguientes técnicas para especificar qué cola de impresión utilizar en el orden especificado. 1. Si se halla la opción -P, su argumento se utiliza para especificar la cola de impresión. 2. Si no se utiliza -P para definir la cola de impresión por defecto, entonces se utiliza la variable de entorno PRINTER, si existe. 3. De otra manera, se utiliza el sistema de cola de impresión por defecto. Someter trabajos con lpr Los trabajos pueden someterse con el comando lpr. Todos los argumentos son interpretados como archivos para someter. Si no se especifican argumentos en su lugar se lee la entrada estándar. Las siguientes opciones sirven para clasificar el comando lpr. Table 1. Opciones del comando lpr Opción Efecto -P Uso de la cola de impresión impresora. impresora
  • 14. 14 Network Applications Opción Efecto -# Imprime # copias -p Representa archivos de texto con un encabezado que contiene el nombre del archivo, nombre del trabajo y el sello de fecha. -r Borra los archivos de impresión nombrados después de imprimir. A manera de ejemplo, a continuación, blondie utiliza el comando lpr para imprimir el archivo README mediante la cola de impresiónsales. [blondie@station blondie]$ lpr -P sales README Control de trabajos con lpq El comando lpq lista los trabajos pendientes en una cola. En el siguiente ejemplo, blondie somete la salida del comando df para la impresora legal y luego examina el contenido de la cola. [blondie@station blondie]$ df | lpr -P legal [blondie@station blondie]$ lpq -P legal legal is ready and printing Rank Owner Job File(s) active elvis 1 services 1st blondie 5 (stdin) Total Size 20480 bytes 1024 bytes Eliminación de trabajos con lprm Blondie sospecha que algo anda mal con la impresora legal y decide iniciar utilizando la impresora sales como su impresora por defecto. Primero configura la variable de entorno PRINTER para reflejar sus nuevas preferencias, luego utiliza el comando lprm para quitar su trabajo de la cola legal. [blondie@station blondie]$ export PRINTER=sales [blondie@station blondie]$ lpq sales is ready no entries [blondie@station blondie]$ lpq -P legal legal is ready and printing Rank Owner Job File(s) active elvis 1 services 1st blondie 5 (stdin) [blondie@station blondie]$ lprm 5 [blondie@station blondie]$ lpq -P legal legal is ready and printing Rank Owner Job File(s) active bowe 1 services [blondie@station blondie]$ df | lpr Total Size 20480 bytes 1024 bytes Total Size 20480 bytes Observe que en el primer comando lpq y el último comando lpr, la variable de entorno PRINTER implícitamente especificó la cola de impresión sales.
  • 15. 15 Network Applications Los comandos de Front End alternativos: lp y cancel En Unix, en los días precedentes a CUPS, se implementaron dos ejecuciones paralelas de la infraestructura de impresión. La primera utilizó los tres comandos presentados anteriormente es decir lpr, lpq, y lprm. La segunda utilizó lp, lpstat y cancel para tareas análogas. Ya hemos visto que lpstat es compatible y es la herramienta preferida para descubrir colas de impresión. Los comandos lp y cancel también están disponibles como variaciones leves de los comandos lpr y lprm. Para mayor información, consulte la página de manual lp(1). Impresión dentro de aplicaciones Linux Con frecuencia las aplicaciones Linux suelen imprimir entubando la información directamente a la entrada estándar del comando lpr. Por lo general, las aplicaciones permiten a los usuarios personalizar la línea de comando lpr, para que, por ejemplo, se pueda especificar una cola de impresión diferente a la cola de impresión por defecto. En la siguiente toma de pantalla del diálogo de impresión de la aplicación Evolution, el campo Printer inicialmente sólo contenía un lpr, pero blondie añadió la opción -P sales para que la salida de evolution vaya a la impresora sales. Figure 1. Diálogo de impresión de Evolution La interfaz de red CUPS Por último, seríamos negligentes si abandonáramos el tema de CUPS sin mencionar la interfaz de red nativa que el demonio cupsd brinda. Como se mencionó, la mayoría de los clientes interactúan con el demonio cupsd mediante el protocolo IPP, el cual es una extensión del protocolo HTTP. Debido a su parecido, el demonio cupsd se comporta en muchas formas como el demonio de web, incluyendo el servidor de las páginas de administración de estilo CGI. Con el fin de ver las páginas de administración de CUPS, apunte un navegador de red hacia la dirección de la máquina local, pero sobreescriba el puerto 80 por defecto con el puerto de servicio bien conocido de los demonios de CUPS, 631. http://localhost:631 El demonio cupsd retornará con una"página de inicio" de CUPS desde donde pueden verse las impresoras y los trabajos de impresión y existe dsiponible una copiosa documentación en línea. Figure 1. La página de inicio de administración de CUPS
  • 16. 16 Network Applications Ejercicios en línea Lab Exercise Objetivo: Administrar trabajos de impresión efectivamente. Estimated Time: 10 mins. Configuración Su estación debería configurarse con una cola de impresión llamada rha_faux. Esta cola de impresión se anexa a la impresora virtual en ejecución en el servidor del aula de clase. Usted puede ver la primera página de cualquier trabajo de impresión enviado a la impresora en el classroom server. Si el comando lpstat -s no menciona una cola de impresión llamada rha_faux o si no puede acceder a la página web del servidor del aula de clase, consúltele a su instructor. Especificaciones 1. Imprima el archivo /etc/services mediante la cola de impresión rha_faux y observe su salida. http://rha-server/cgi-bin/rha/printer. 2. Imprima el archivo /usr/share/backgrounds/tiles/floral.png mediante la cola de impresión rha_faux y observe su salida. http://rha-server/cgibin/rha/printer. 3. Desde su navegador de red, imprima la página actual directamente a la cola de impresión rha_faux. Question 1 1. Tres trabajos de impresión sometidos a la cola de impresión rha_faux. Capítulo 3 Administración de archivos de impresión Conceptos clave • • • • • El formato de impresión primario en Linux es PostScript. gs y ggv ven con anticipación los documentos PostScript. enscript convierte archivo de texto en PostScript decorado. ps2pdf y pdf2ps convierten de PostScript a PDF y viceversa. mpage pueden reordenar las páginas individuales de un documento PostScript. PostScript
  • 17. 17 Network Applications En Linux, la mayoría de las impresoras esperan recibir texto ASCII o gráficas mediante el formato PostScript. A diferencia de la mayoría de los formatos gráficos, PostScript es un lenguaje de guiones de gran alcance, el cual se ha adaptado a la tarea de traducir gráficas en la página impresa. La sofisticación del lenguaje PostScript le permite realizar trabajos complejos, pero debe utilizar un intérprete para entregar archivos PostScript como imágenes. Muchas impresoras ejecutan intérpretes PostScript originales y se conocen como impresoras PostScript. Cada vez que una impresora PostScript recibe un archivo de texto que comienza con los caracteres %!PS, el resto del archivo se interpreta como un guión PostScript, en lugar imprimirse como un texto ASCII directamente (observe la semejanza con el mecanismo de scripts de Unix#!/bin/bash). En Linux (y Unix) una aplicación llamada Ghostscript o simplemente gs ejecuta un intérprete PostScript. La ejecución de un PostScript es una tarea importante y aunque las aplicaciones en Linux pueden utilizarse para ver o manipular archivos PostScript casi todos utilizan Ghostscript como el dispositivo secundario para realizar la traducción real de PostScript en formatos gráficos más accesibles [1]. Entrega de gráficos PostScript con GhostScript Cuando se invoca como el comando gs, el intérprete Ghostscript puede utilizarse para traducir archivos PostScript directamente en la pantalla. Por ejemplo, en el siguiente diálogo, al navegador de red mozilla se le pide imprimir la página web actual no a una cola de impresión, sino a un archivo PostScript titulado output.ps. Figure 1. Impresión a un archivo PostScript Como lo ilustra el comando head, un archivo PostScript es un archivo de texto sencillo que comienza con el "mágico" PostSript%!PS. [elvis@station elvis]$ head output.ps %!PS-Adobe-3.0 %%BoundingBox: 18 18 558 720 %%Creator: Mozilla PostScript module (Galeon/2003022516) %%DocumentData: Clean8Bit %%DocumentPaperSizes: Letter ... La siguiente línea de comandos puede utilizarse para ver el archivo con el intérprete Ghostscript. [elvis@station elvis]$ gs output.ps GNU Ghostscript 7.05 (2002-04-22) Copyright (C) 2002 artofcode LLC, Benicia, CA. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details.
  • 18. 18 Network Applications Loading NimbusRomNo9L-Regu font from /usr/share/fonts/default/Type1/n021003l.pfb... 2410668 1054394 1642520 347466 0 done. Loading NimbusSanL-Regu font from /usr/share/fonts/default/Type1/n019003l.pfb... 2785628 1380272 1662616 358654 0 done. ... Loading StandardSymL font from /usr/share/fonts/default/Type1/s050000l.pfb... 4371596 2780842 1722904 370909 0 done. >>showpage, press <return> to continue<< GS> El intérprete gs devuelve muchas líneas de tipos de fuente que carga, pero al final traduce la imagen en una ventana X por separado. En la línea de comandos, el usuario es abandonado en un intérprete de comandos interactivo Ghostscript GS> . Si el archivo PostScript contiene páginas múltiples, un simple ENTER en el intérprete de comandos Ghostscript visualizará la próxima página. Para aquellos que hablen PostScript, el intérprete puede utilizarse para entregar gráficas de modo interactivo. Para aquellos que tengan menos conocimientos, un simple quit (o CONTROL-D) hará salir al intérprete gs. GS>quit [elvis@station elvis]$ Traducción de PostScript a formatos alternos Por defecto, el intérprete gs traduce los archivos PostScript a una ventana dentro del entorno X. Sin embargo, como lo ilusta la salida de los dispositivos disponibles del comando gs --help, el comando ejecutable gs puede representar un gran número de formatos gráficos. [elvis@station elvis]$ gs --help GNU Ghostscript 7.05 (2002-04-22) Copyright (C) 2002 artofcode LLC, Benicia, CA. All rights reserved. Usage: gs [switches] [file1.ps file2.ps ...] Most frequently used switches: (you can use # in place of =) -dNOPAUSE no pause after page | -q `quiet', fewer messages -g<width>x<height> page size in pixels | -r<res> pixels/inch resolution -sDEVICE=<devname> select device | -dBATCH exit after last file -sOutputFile=<file> select output file: - for stdout, |command for pipe, embed %d or %ld for page # Input formats: PostScript PostScriptLevel1 PostScriptLevel2 PDF Available devices: x11 x11alpha x11cmyk x11gray2 x11gray4 x11mono bmpmono bmpgray bmpsep1 bmpsep8 bmp16 bmp256 bmp16m bmp32b deskjet djet500 laserjet ljetplus ljet2p ljet3 ljet3d ljet4 ljet4d lj5mono lj5gray cdeskjet cdjcolor cdjmono cdj550 pj pjxl pjxl300 uniprint ijs omni bj10e bj200 bjc600 bjc800 faxg3 faxg32d faxg4 pcxmono pcxgray pcx16 pcx256 pcx24b pcxcmyk pbm pbmraw pgm pgmraw pgnm pgnmraw pnm pnmraw ppm ppmraw pkm pkmraw pksm pksmraw tiffcrle tiffg3 tiffg32d tiffg4 tifflzw tiffpack tiff12nc tiff24nc psmono psgray psrgb bit bitrgb bitcmyk pngmono pnggray png16 png256 png16m jpeg jpeggray pdfwrite pswrite epswrite pxlmono pxlcolor bbox dmprt cdj880 ap3250 appledmp atx23 atx24 atx38 bmpa16 bmpa16m bmpa256 bmpa32b bmpamono bmpasep1 bmpasep8 ccr cdj1600 cdj500 cdj670
  • 19. 19 Network Applications cdj850 cdj890 cdj970 cfax cgm24 cgm8 cgmmono cljet5pr coslw2p coslwxl cp50 declj250 dfaxlow dfaxhigh djet500c dl2100 dnj650c eps9high eps9mid epson epsonc escp fs600 hl1250 hl7x0 ibmpro imagen inferno iwhi iwlo iwlq jetp3852 la50 la70 la75 la75plus lbp8 lj250 lj3100sw lj4dith ln03 lp2563 lp8000 lq850 lxm5700m m8510 mgr4 mgr8 mgrgray2 mgrgray4 mgrgray8 mgrmono miff24 necp6 oce9050 oki182 okiibm paintjet photoex pjetxl plan9bm sgirgb r4081 sj48 st800 stcolor sunhmono t4693d2 t4693d4 t4693d8 tek4696 xes x11cmyk2 x11cmyk4 x11cmyk8 x11rg16x x11rg32x ljet4pjl lj4dithp dj505j picty180 pr201 pr150 pr1000 pr1000_4 jj100 bj10v bj10vh mag16 mag256 mj700v2c mj500c mj6000c mj8000c fmpr fmlbp ml600 lbp310 lbp320 lips2p bjc880j lips4 lips4v escpage lp2000 npdl md50Mono md50Eco md1xMono DJ630 DJ6xx DJ6xxP DJ8xx DJ9xx DJ9xxVIP AP21xx pcl3 md2k md5k stp lxm3200 lx5000 lex7000 lex5700 lex3200 lex2050 gdi epl5800 epl2050 epl2050p alc8500 alc2000 cups cljet5 cljet5c nullpage ... Mientras algunos de estos "dispositivos" de salida tales como jpeg y png256, se refieren a los formatos estándar para archivos gráficos, muchos de los dispositivos se refieren a formatos gráficos de impresoras sin PostScript o fax. La utilidad gs puede utilizarse en modo de lote para convertir un gran número de archivos PostScript en otro formato o filtrar un documento para impresión en una impresora sin PostScript. El siguiente cuadro resume algunos de las opciones de Ghostscripts más utilizadas. Table 1. Opciones comunes para Ghostscript Opción Efecto -dNOPAUSE No hace pausa y espera un RETURN después de traducir cada página. -dBATCH Sale automáticamente después de traducir la última página. -q Opera "calmadamente" (no presenta un mensaje por cada página traducida). -sDEVICE=devname Utiliza el formato de salida devname Almacena la salida en el archivo filename. Si %d se incluye en el nombre de archivo, se remplazará con el número de página sOutputFile=filename del documento multi-página. -rresolución Utiliza una resolución de resolución DPI (puntos por pulgada). A manera de ejemplo, la siguiente línea de comandos convertiría el documento PostScript output.ps en imágenes múltiples PNG llamadas output.pagenum.PNG. [elvis@station elvis]$ gs -dNOPAUSE -dBATCH -q -sDEVICE=png256 sOutputFile=outp ut.%d.png output.ps [elvis@station elvis]$ file output.* output.1.png: PNG image data, 612 x 792, 8-bit colormap, noninterlaced output.2.png: PNG image data, 612 x 792, 8-bit colormap, noninterlaced output.ps: PostScript document text conforming at level 3.0
  • 20. 20 Network Applications Ver gráficas PostScript con Ghostview A pesar de su poder, el comando gs de la interfaz de usuario aún se puede mejorar. En lugar de utilizar directamente gs muchos usuarios prefieren utilizar la aplicación Ghostview de GNOME, ggv, la cual ofrece un dispositivo frontal para Ghostscript más fácil de usar. [elvis@station elvis]$ ggv output.ps Figure 1. Visor PostScript del Ghostview de GNOME La aplicación Ghostview de GNOME ofrece principalmente las siguientes características. 1. Escala dinámica: La imagen puede hacerse a escala para ajustar la anchura y altura de la ventana o un porcentaje arbitrario. 2. Paginación: Al utilizar un panel lateral se puede navegar fácilmente un documento multi-páginas y seleccionar páginas individuales para extraer dentro de un archivo PostScript independiente o imprimir mediante el menú File como se ilustra a continuación. Figure 2. Extracción de páginas mediante el visor PostScript Ghoscript de GNOME En teoría, la aplicación Ghostview también sirve para ver archivos PDF. En la práctica, ggv ocasionalmente tiene problemas interpretando documentos PDF. Pronto veremos una aplicación más estable para visualizar los PDF. Algunos documentos PostScript multi-páginas pueden también confundir a ggv. En casos en que ggv tiene problemas para traducir un documento PostScript, el traductor de PostScript gs puede utilizarse directamente. Ver documentos PDF con xpdf La aplicación xpdf es un simple visor de documentos PDF que sirve para ver, imprimir o convertir documentos PDF en PostScript. Figure 1. El visualizador de documentos PDF xpdf
  • 21. 21 Network Applications Las flechas en la esquina inferior izquierda permiten al documento navegar una página o 10 páginas al mismo tiempo. El botón del icono de impresora abre el siguiente diálogo, el cual permite al usuario especificar una línea de comando lpr o un destino de archivo PostScript. Figure 2. Impresión desde xpdf Otras alternativas para ver documentos PDF incluyen los comandos gs y ggv. Conversión de documentos PDF La utilidad gs puede utilizarse para convertir documentos PDF en cualquiera de los formatos de salida listados anteriormente. Puesto que la sintaxis del comando gs puede ser tan engorrosa, algunas utilidades frontales de línea de comando más sencillas están disponibles para convertir PostScript en PDF: ps2pdf y amigos. La sintaxis del comando ps2pdf es trivial, donde el primer argumento es la salida del nombre de archivo PostScript (o un “-” para implicar la entrada estándar) y el segundo argumento es la salida del nombre de archivo de salida PDF (o un “-” para implicar la salida estándar). A manera de ejemplo rápido, elvis ahora utiliza el comando ps2pdf para convertir su archivo output.ps en formato PDF, el cual es de calidad comparable, pero mucho más compacto. [elvis@station elvis]$ ps2pdf output.ps output.pdf [elvis@station elvis]$ file output.* output.1.png: PNG image data, 612 x 792, 8-bit colormap, noninterlaced output.2.png: PNG image data, 612 x 792, 8-bit colormap, noninterlaced output.pdf: PDF document, version 1.2 output.ps: PostScript document text conforming at level 3.0 [elvis@station elvis]$ ls -s output.p* 80 output.pdf 1400 output.ps El comando pdf2ps también existe para realizar la operación inversa. Representación del texto para impresión con enscript La utilidad enscript convierte archivos de texto en PostScript, a menudo representando el texto con sintaxis resaltada (pretty printing), un encabezado o impresión de múltiples páginas de texto por página impresa. De un modo un poco torpe, el comando enscript envía un archivo de texto directamente al comando predeterminado lpr, dando como resultado que los archivos enscript se
  • 22. 22 Network Applications impriman inmediatamente. Puede utilizar la opción -o para especificar una salida del archivo PostScript en su lugar. Algunas de las opciones más comunes se encuentran en el siguiente cuadro. Table 1. Opciones más comunes para enscript Opción Efecto -o filename Generar salida del archivo filename. -2, -columns=num Formatear texto en 2 (o num) columnas. -a páginas Solamente imprime páginas páginas. páginas pueden ser de la forma comienzo-fin, la palabra impar o par. Utiliza el encabezado de texto como un encabezado de página. Un -b encabezado formato elaborado es provisto para especificar nombre de archivo, número de página, etc. -d impresora Envia salida a la cola de impresiónimpresora. -E [lang] Representa el texto con sintaxis resaltada apropiada para el lenguaje de programación lang. Utiliza --help-pretty-print para listar los idiomas soportados. -G Representa páginas con un encabezado elegante. -r Rota la página 90 grados. -W lang Genera salida en idioma lang, que puede ser de PostScript, html, superposición o rtf. Existen muchas más opciones. Para mayor información, consulte la página de manual enscript(1). A manera de ejemplo, la siguiente línea de comandos traduciría el archivo de encabezado C malloc.h como PostScript con 2 columnas por página, rotado y representado con un encabezado elegante y una sintaxis resaltada. [elvis@station elvis]$ enscript -r2 -E -G -o malloc.ps /usr/include/malloc.h [ 2 pages * 1 copy ] left in malloc.ps [elvis@station elvis]$ ggv malloc.ps Figure 1. Archivo de texto representado en PostScript con enscript Reordenamiento de PostScript con mpage
  • 23. 23 Network Applications El comando mpage puede utilizarse para extraer páginas desde la mitad de un documento PostScript multi-páginas o reformatear el documento a imprimir con múltiples páginas por hoja. El mpage acepta PostScript o texto como entrada. El texto se traduciría en PostScript antes de administrar. Los argumentos se consideran archivos de entrada con la salida dirigida a la salida estándar. Table 1. Opciones de mpage Opción Efecto -o filename Generar salida del archivo filename. -1, -2, -4, -8 Imprimir un número especificado de páginas por hoja impresa (4 por defecto). -j primero[último][%intervalo] Sólo imprime un rango especificado de páginas incluyendo sólo los intervalo de páginas, si se especifican. -l Cambia el modo de formato horizontal a vertical. -o Cambia a imprimir borde alrededor de cada página (por defecto está activo). -P [impresora] Envía salida PostScript a la cola de impresión impresora. -G Representa páginas con un encabezado elegante. -r Rota la página 90 grados. -G Representa páginas con un encabezado elegante. -W lang Genera salida en idioma lang, que puede ser de PostScript, html, superposición o rtf. La siguiente línea convierte el archivo PDF RHEL3FamOverWPPdf.pdf en un archivo PostScript e imprime cuatro páginas por hoja. [elvis@station elvis]$ pdf2ps RHEL3FamOverWPPdf.pdf - | mpage > rhel3.ps [elvis@station elvis]$ ggv rhel3.ps Figure 1. Un documento PDF convertido en PostScript (4 Up)
  • 24. 24 Network Applications Ejercicios en línea Lab Exercise Objetivo: Practicar la salida para impresión. Tiempo estimado: 20 minutos. Especificaciones 1. Utilice el comando enscript para generar un documento PostScript del archivo /usr/share/doc/bash-*/loadables/getconf.c nombre getconf.ps con dos páginas por hoja impresa. Opcionalmente, haga que el comando enscript "pretty print" el texto (agregando sintaxis resaltada). 2. Utilice el comando mpage para extraer las páginas 8 y 9 del archivo getconf.ps creado anteriormente, almacénelas en un nuevo documento llamado getconf89.ps. (Por defecto el comando mpage imprimirá 4 hojas por páginas de salida, confundiendo el conteo de páginas. Incluya la opción apropiada para que sólo una página de entrada sea impresa por página de salida).
  • 25. 25 Network Applications 3. Utilice el comando ps2pdf para convertir el archivo getconf89.ps en un documento PDF titulado getconf89.pdf. Compare los tamaños de los dos documentos. 4. Cree un script de shell corto llamado ~/bin/ps2jpeg, el cual al ser llamado con un sólo argumento especificando un archivo PostScript, utiliza el comando gs para convertir el archivo en un documento JPEG llamado output.jpg. Question 1 No hay elemento para calificar este ejercicio. 1. Un documento de múltiples páginas PostScript getconf.ps que contiene el texto del archivo /usr/share/doc/bash-*/loadables/getconf.c, impreso en 2 páginas por página de salida. 2. Un documento PostScript de dos páginas getconf89.ps que contiene las páginas 8 y 9 extraídas del documento getconf.ps. 3. El documento PDFgetconf89.pdf, el cual es el contenido del documento PostScript getconf89.ps convertido en formato PDF. 4. Un script titulado ~/bin/ps2jpeg que cuando se invoca con un documento PostScript como su único argumento, convertirá el documento en una imagen JPEG llamada output.jpg. Capítulo 4 Sinopsis del correo electrónico Conceptos clave • • • • • La administración del correo electrónico implica dos agentes. Un agente de usuario de correo (MUA, en inglés Mail User Agent), el cual se utiliza para presentar correo recién enviado a un usuario y escribir nuevas respuestas al usuario y un agente de transporte de correo (MTA, en inglés Mail Transport Agent), el cual administra la tarea de segundo plano de intercambiar correo electrónico con otras máquinas remotas. Dependiendo de los detalles de acceso a Internet de un computador, el trabajo de recepción de correo electrónico se puede delegar a un servidor de buzón, lo que permitiría luego que el usuario tuviera acceso a su correo electrónico enviado mediante los protocolos POP o IMAP. De nuevo dependiendo de los detalles de acceso a Internet de un computador, la tarea de entregar correo electrónico se puede delegar a un servidor remoto saliente SMTP. Por lo general, el correo local entregado pero no leído se almacena temporalmente en el archivo /var/spool/mail/$USER, en donde USER es el nombre de usuario del destinatario. Uno de los MUA más sencillos es el comando mail.
  • 26. 26 Network Applications Uso del correo electrónico Es discutible que el servicio más popular ofrecido por Internet es el correo electrónico. El correo electrónico es un concepto sencillo: Alicia escribe un archivo de texto y especifica enviarlo a Bob. Cuando Bob revisa su correo, el archivo de texto estará esperando por él, etiquetado como enviado por Alice. Sin embargo, en la práctica, el sistema de envío de correo electrónico debe ofrecer soluciones a algunos problemas bastante complicados. El software que Alice y Bob utilizan debe resolver los siguientes problemas. 1. La aplicación de correo electrónico de Alice de alguna manera determina cuál es el computador de Bob. 2. Una vez determinada, la aplicación de Alice debe conectarse a la máquina de Bob y transferir el mensaje. Si la máquina de Bob no puede ser contactada, la aplicación de Alice debe almacenar temporalmente el mensaje pendiente y tener alguna estrategia para tratar de contactar la máquina de Bob más tarde. 3. Como destinatario, la aplicación de correo electrónico de Bob debe tener alta capacidad, por lo tanto cada vez que alguien (Alicia u otra persona) quiera enviarle un mensaje de correo electrónico a Bob, su aplicación estará disponible para recibirlo. En algunos casos, el recipiente de correo utiliza una máquina que no tiene una conexión permanente de Internet o está detrás de un cortafuegos, lo que luego complicará las cosas. En esta lección, trataremos varios procedimientos que ofrecen soluciones a estos problemas. La solución fácil La solución más sencilla es la apropiada para los usuarios de computadores con conexiones deinternet bien conocidas y permanentes. En el momento en que muchos protocolos definían cómo enviar correo electrónico, ésta fue la solución estándar. Dicha solución implica dos aplicaciones separadas cuyos roles se identifican por TLA (acrónimos de tres letras). La primera aplicación se conoce como MTA Agente de Transporte de Correo y la segunda se conoce como MUA, o Agente de correo de usuario. Figure 1. Envío de correo electrónico en computadores con conexiones de intenet permanentes y bien conocidas
  • 27. 27 Network Applications El MTA (Agente de transporte de correo) El MTA suele operar en el segundo plano, realizando el trabajo de una oficina postal. El MTA recibe correo electrónico para ser envíado desde programas en la máquina local, determina desde la dirección del destinatario la máquina apropiada que debe contactar e intenta conectarse a un MTA complementario ejecutando en la máquina de destinatarios, quienes deben estar escuchando el puerto 25. Si el remitente de MTA no puede contactar el receptor de MTA, el correo se almacena temporalmente en la máquina del remitente y el MTA de remitente intenta de nuevo más tarde. El MTA también se enlaza al puerto local 25, donde recibe conexiones de otros MTA. Cuando éste recibe correo desde un MTA remoto destinado a un usuario en una máquina local, recibe el correo y lo almacena en un directorio de almacenamiento temporal conocido como el buzón de entrada del usuario. En Linux (y Unix), el buzón predeterminado del usuario es /var/spool/mail/username para que el correo en espera del usuario elvis se instale en el archivo /var/spool/mail/elvis. El MTA por defecto de Red Hat Enterprise Linux es un demonio llamado sendmail. El MUA (Agente de usuario de correo) El MUA es la aplicación en la que la mayoría de la gente piensa cuando se refiere a correo electrónico. El MUA recupera correo enviado desde un almacenamiento temporal (buzón de entrada) y lo presenta al usuario como "correo nuevo". El MUA
  • 28. 28 Network Applications permite a los usuarios escribir respuestas o nuevos mensajes y pasar estos mensajes al MTA local para envío. Red Hat Enterprise Linux se distribuye con una amplia selección de MUAs, varios de los cuales se describirán en ésta y en la siguiente lección. Servidores de buzón Aunque la solución anterior es simple, requiere que primero, todos los usuarios estén recibiendo correo electrónico en una máquina conectada constantemente a Internet y segundo, que la máquina tenga un nombre de equipo bien conocido y accesible a otros. Muchos usuarios que por ejemplo, utilizan una conexión de "marcado" o de "alta velocidad" desde un ISP (Proveedor de Servicios Internet) o que estén utilizando máquinas detrás de un cortafuegos de una institución, no están en esta situación. Otra solución se ha desarrollado para servir a la gente en este caso: los servidores de buzón. Figure 1. Servidores de buzón En el diagrama anterior, asumimos que elvis está utilizando una conexión de Internet de "alta velocidad" para la cual se ha suscrito a la compañía "ISP.Net". Cuando se conecta al Internet, su máquina ISP le emite a su máquina una dirección IP, pero elvis no puede predecir la dirección IP que recibirá. El nombre del equipo, al cual se le asignó el ISP a la dirección IP, es probablemente poco atractivo por ejemplo, dhcp-191-93.isx.isp.net, por lo tanto si elvis garantizara la recepción de la misma dirección IP cada vez, no desearía publicar su nombre de equipo como su dirección de correo electrónico. En su lugar, elvis aprovecha una "cuenta de correo electrónico" que le ofrece su ISP. Es muy probable que su cuenta exista en una máquina Linux o Unix del ISP conectada permanentemente a Internet y se le asigne un nombre de host como por ejemplo pop.isp.net. El ISP ha clasificado todo el correo electrónico destinado a direcciones de forma user@isp.net para ser enviado al MTA de esta máquina. Cuando el MTA ejecutándose en pop.isp.net recibe correo para elvis, lo almacena en un directorio de
  • 29. 29 Network Applications almacenamiento temporal dedicado a elvis (muy probable en el archivo sendmail./var/spool/mail/elvis) y el correo electrónico se considera como entregado. Dado que la máquina de ISP pop.isp.net tiene una conexión de Internet permanente y bien conocida, es mejor candidata para recibir correo electrónico que la máquina de elvis en casa. Cuando elvis está en casa, aún necesita tener acceso a su correo electrónico que está en su buzón de entrada en pop.isp.net. Este acceso suele estar provisto en forma de un servidor POP (Protocolo de servidor de correo) o servidor de IMAP (Protocolo de Servicio de Correo por Internet). Servidores POP Los servidores POP realizan un servicio muy sencillo. Permiten a los usuarios acceder al directorio de almacenamiento temporal de un sólo usuario y transfieren su contenido a su MUA local. Los servidores POP suelen enlazarse al puerto 110 y requieren que cualquier cliente se autentique mediante un par de nombres de usuario-contraseña. La mayoría de los MUAs modernos actúan como clientes POP y pueden configurarse para recuperar correo de un servidor especificado. Si un servidor de buzón ejecuta el servicio POP, suele implicar que el servidor de buzón no intenta almacenar de modo permanente, sino temporalmente hasta que el usuario "lo baje "a su máquina local. Servidores IMAP Los servidores IMAP suelen ofrecer a los clientes administración de buzones de manera más sofisticada. Los usuarios IMAP pueden mantener varias carpetas en el servidor de buzón no sólo su buzón de entrada individual. En general, un servidor IMAP implica que un correo electrónico del usuario sea almacenado de forma permanente en el servidor de buzón y los usuarios ocasionalmente se conecten con un MUA desde una máquina remota para "navegar" su correo. Los servidores IMAP suelen encontrarse en entornos institucionales y corporativos. Los demonios IMAP se enlazan al puerto 143. Envío de correo Puesto que la máquina de elvis mantiene una conexión de Internet casi continua, elvis aún desea utilizar su MUA local para enviar correo. Si el MUA local no puede conectarse temporalmente a la máquina del destinatario, el MUA almacenará el correo temporalmente de modo local y tratará de enviarlo más tarde. Configuración predeterminada de Red Hat Enterprise Linux Por defecto, Red Hat Enterprise Linux está configurado de modo apropiado para esta situación. El MTA local se inicia, pero no aceptará conexiones a través del puerto 25 (excepto desde la dirección de bucle local, 127.0.0.1). Sirve simplemente para entregar
  • 30. 30 Network Applications correo electrónico saliente. Se asume que los usuarios tienen acceso a su correo electrónico desde un servidor POP o IMAP. La configuración predeterminada puede cambiarse, pero la configuración necesaria va más allá del alcance de este curso. Servidores de correo saliente Para máquinas que sólo tienen conexiones a Internet transitorias, el intentar entregar correo electrónico mediante el MTA local puede no ser apropiado. En su lugar, los usuarios de conexiones de "marcado" y similares suelen utilizar lo que se conoce como un SMTP (Protocolo sencillo de transferencia de correo) o servidor de correo saliente. Muchos ISP e instituciones ofrecen servidores SMTP salientes, a menudo con nombres como smtp.isp.net. Figure 1. Servidor de correo saliente El MTA en el servidor SMTP desea aceptar correo de máquinas "locales", a pesar de que no es el destinatario final para el correo electrónico. En su lugar, el servidor SMTP transmite el correo y lo reenvía a su destino. Si se presenta algún problema, el almacenamiento temporal y el reenvío de correo pendiente es ahora responsabilidad del servidor SMTP. Muchos MUAs permiten a los usuarios especificar un equipo remoto para que actúe como el servidor SMTP del usuario (contrario a reenviar correo al MTA local para envío). [1] Entrega local
  • 31. 31 Network Applications Todos los casos anteriores asumen que el usuario está enviando correo electrónico desde su máquina a un destinatario en una máquina remota. Linux (y Unix) también permite a los usuarios en una máquina local enviar correo electrónico entre sí, donde el correo electrónico se dirige únicamente al nombre de usuario tal como blondie. Para entrega local no se requiere ninguno de los servidores locales POP o SMTP porque el correo electrónico se entrega al instante por el MTA local. El MUA mail Quizás el MUA más sencillo es un comando llamado simplemente mail. El comando mail data de los primeros días de Unix y por lo tanto depende altamente del MTA local. El comando mail no puede ser configurado para acceder al correo desde un servidor POP o IMAP, ni puede ser configurado para utilizar un servidor SMTP para correo saliente. En su lugar, puede esperar correo que sea enviado al directorio de almacenamiento temporal y pasa al MTA de correo local para envío. No obstante, en situaciones tales como envío de correo a usuarios locales, el comando mail puede ser bastante eficaz. Envío de correo electrónico con mail El comando mail puede utilizarse para enviar correo a destinatarios especificados como argumentos en la opción de la línea de comandos. El cuerpo del mensaje se lee desde la entrada estándar (la cual puede leerse desde una tubería, un archivo redirigido o desde un teclado directamente, en donde CONTROL-D ("EOF") se utiliza para indicar el fin del mensaje). Las opciones de línea de comandos en el cuadro siguiente pueden utilizarse para especificar una línea de asunto, destinatario a, "Cc:", etc. Table 1. Opciones de línea de comandos para el comando mail Opción Efecto -v Modo verboso. Imprime la comunicación entre el comando mail y el MTA local (o remoto). -s Especifica una línea de asunto. asunto -c addrs Envía copia a las direcciones especificadas. -b addrs Envía copias ciegas a direcciones especificadas. A manera de ejemplo, a continuación, elvis envía por correo el contenido del archivo lyrics.txt a blondie. [elvis@station elvis]$ mail -s "here they are" blondie < lyrics.txt
  • 32. 32 Network Applications Uso de mail para leer correo El comando mail puede también utilizarse para leer la correspondencia de un almacenamiento temporal de correo de usuario local. Sin embargo, la interfaz es primitiva y por lo general se utilizan en su lugar otros MUAS. Para mayor información vaya a la página de correo mail. Actualmente, el comando mail se considera como una forma rápida y eficaz de enviar correo. En el siguiente ejemplo, blondie está utilizando el comando mail sin argumentos para ver el correo en su buzón y luego borrar el mensaje y salir. [blondie@station blondie]$ mail Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/blondie": 1 message 1 new >N 1 elvis@redhat.com Thu Nov 13 00:08 16/653 "here they are" & RETURN Message 1: From elvis@station.example.com Thu Nov 13 00:08:45 2003 Date: Thu, 13 Nov 2003 00:08:44 -0500 From: elvis@station.example.com To: blondie@station.example.com Subject: here they are 100 bottles of ink on the wall. 100 bottles of ink. Take one down, Pass it around. & d & q Ejemplos Envío de correo Una forma fácil y rápida de enviar archivo de texto a otro usuario es con mail [julius@station julius]$ mail -s "here's the file" nero < somefile También es fácil con mail enviar la salida de un comando a otro usuario. [julius@station julius]$ find . -name "*.old" | mail -s "find output" nero Protocolo sencillo de transporte de correo Mediante un simple comando de correo con la opción verbosa, un usuario puede observar el proceso por el que pasa sendmail para entregar un mensaje. [julius@station julius]$ mail -v -s hello elvis@localhost this is only a test .
  • 33. 33 Network Applications elvis@localhost... Connecting to [127.0.0.1] via relay... 220 station.example.com ESMTP Sendmail 8.12.8/8.12.8; Sat, 12 Apr 2003 13:08:30 -0400 >>> EHLO station.example.com 250-station.example.com Hello localhost.localdomain [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-DELIVERBY 250 HELP >>> MAIL From:julius@station.example.com SIZE=60 250 2.1.0 julius@station.example.com... Sender ok >>> RCPT To:elvis@station.example.com >>> DATA 250 2.1.5 elvis@station.example.com... Recipient ok 354 Enter mail, end with "." on a line by itself >>> . 250 2.0.0 h3CH8U3j002250 Message accepted for delivery elvis@localhost... Sent (h3CH8U3j002250 Message accepted for delivery) Closing connection to [127.0.0.1] >>> QUIT 221 2.0.0 station.example.com closing connection Ejercicios en línea Lab Exercise Objetivo: Enviar correo electrónico a usuarios locales. Estimated Time: 10 mins. Especificaciones 1. Utilice el comando mail para enviar por correo el contenido del archivo /proc/cpuinfo a sus cuentas primaria y alterna (i.e, los usuarios nombredeusuario_a y nombredeusuario_b, donde nombre de usuario es el nombre de su cuenta primaria. 2. Cree el archivo ~/you_have_mail que contiene una lista ordenada de todos los usuarios en su sistema local que actualmente tienen correo en sus "buzones de entrada" (i.e. su directorio de almacenamiento temporal entregado pero no leído aún). Debe incluir usuarios de "sistema" en su lista y listar un usuario por línea. Question 1 1. Sus cuentas alternas primera y segunda tienen el contenido del archivo /proc/cpuinfo en su depósito de correo entregado. 2. El archivo ~/you_have_mail debería contener una lista ordenada de como los
  • 34. 34 Network Applications usuarios tienen correo en espera en su depósito de correo, (obviamente, sus nombres de cuentas alternas primera y segunda deben incluirse en esta lista). Capítulo 5 El MUA Evolution Conceptos clave • • • • El MUA evolution ofrece un entorno sofisticado para la administración de correo electrónico. La ventana de composición permite la composición de mensajes ya sea en texto sin formato o en formato HTML e incluye un corrector ortográfico y soporte para anexos. El correo electrónico de entrada puede procesarse automáticamente mediante un filtrado sofisticado. evolution permite enviar correo desde el depósito de correo local y servidores POP o IMAP. Evolution Quizás el MUA más sofisticado que se distribuye con Red Hat Enterprise Linux es evolution. El agente de usuario de correo es apenas un componente del administrador de la información personal de evolution. En esta sección, presentamos algunas de las características clave de la aplicación evolution e identificamos cómo configurar evolution para recibir correo electrónico desde varias fuentes y cómo enviar correo mediante el servidor local MTA o el servidor remoto SMTP. De hecho, Evolution es mucho más que un MUA. En la toma de pantalla siguiente verá que también tiene herramientas para administrar contactos, calendario de eventos y listas de tareas. Lo invitamos a experimentar con estos elementos cuando el tiempo se lo permita, pero la lección se enfocará en el uso de evolution para envío y recepción de correo. Navegar correo electrónico Figure 1. El agente usuario de correo Evolution Desde la pantalla principal, el correo se puede clasificar en una jerarquía de carpetas navegables mediante el recuadro en la parte superior izquierda. En la parte superior derecha del recuadro, se presenta un resumen de mensajes almacenados en la carpeta actual seleccionada. En el recuadro de la parte inferior derecha se visualiza el contenido del actual mensaje.
  • 35. 35 Network Applications Haciendo "click derecho" en un mensaje, un menú emergente ofrece una variedad de acciones, tales como almacenar el mensaje como archivo de texto, responder a un mensaje o reenviar el mensaje, "marcando" el mensaje con una bandera particular, "etiquetando" el mensaje en un color determinado o identificando el mensaje como correo basura. Un mensaje se puede archivar en otra carpeta con sólo arrastrar el mensaje al sitio de la carpeta deseada en el panel a mano izquierda. Al elegir "Agregar remitente a agenda de direcciones" se pueden crear nuevos contactos fácilmente. Por último, los filtros se pueden crear al tratar correos electrónicos con características similares al actual mensaje. Escribir correo electrónico La ventana de composición se utiliza para crear un nuevo mensaje, responder o reenviar un mensaje. Figure 1. La ventana de composición de correo electrónico Evolution Como se puede ver en la toma de pantalla, la ventana de composición proporciona un editor sencillo para componer texto y anexar archivos. Si se desea, los mensajes se pueden formatear como "HTML", para permitir a los usuarios incorporar enlaces, imágenes, y elementos sencillos HTML en el mensaje. Como es texto escrito, las palabras no identificadas por el corrector ortográfico son subrayadas y con un click derecho, se sugieren remplazos que pueden buscarse en el diccionario o palabras que pueden agregarse al diccionario personal del usuario. Al seleccionar el menú Security, los usuarios pueden elegir entre firmar o encriptar su mensaje mediante un protocolo de clave pública encriptada. Uso de Filtros Evolution La aplicación evolution soporta muchas características que permiten administrar grandes cantidades de correo electrónico. Una de las herramientas primarias son los filtros de correo electrónico. Como se ve a continuación, los filtros se componen de una selección de criterios coincidentes que serán aplicados al correo electrónico recibido. Si un mensaje coincide con los criterios entonces se pueden poner en práctica una norma o un grupo de normas.
  • 36. 36 Network Applications Figure 1. Filtros de correo electrónico Evolution Los mensajes se pueden seleccionar al combinar algunos de estos criterios. • • • • • • • • El remitente o el destinatario del mensaje contiene un texto especificado. La línea de asunto u otra línea de encabezado especificada, contiene un texto especificado. El cuerpo del mensaje contiene texto especificado. La fecha en la que se envió o se recibió el mensaje o después del tiempo especificado. El mensaje se ha etiquetado o marcado para "seguimiento". El mensaje parece haber sido enviado desde una lista de correo especificada. El mensaje coincide con una expresión regular especificada. El mensaje cuando es entubado a un comando de shell arbitrario, devuelve un valor de retorno especificado. Cuando coincide, el mensaje puede estar sujeto a alguna combinación de los siguientes destinos. • • • • El mensaje puede ser copiado o movido automáticamente a una carpeta especificada. Se puede asignar al mensaje una bandera particular, una puntuación o una etiqueta. Puede reproducirse una campana de terminal o algún sonido personalizado. El mensaje puede entubarse a una shell de comando arbitraria. Configuración de cuentas en Evolution Evolution permite a los usuarios administrar múltiples cuentas, donde una cuenta representa un origen particular de correo electrónico, un destino particular para correo electrónico, una identidad particular de un remitente entre otras opciones. Las cuentas se pueden crear, borrar, habilitar, inhabilitar o modificar mediante el siguiente diálogo, el cual se obtiene seleccionando Herramientas: Configuración... y eligiendo el "Panel de cuentas de correo". Figure 1. Administración de cuentas Evolution Especificación de la fuente del correo electrónico Evolution, permite recuperar correspondencia desde varias fuentes como se puede apreciar en el siguiente diálogo.
  • 37. 37 Network Applications Figure 1. Especificación de fuentes de las cuentas de correo de Evolution Las primeras dos selecciones especifican que el correo se debería recuperar desde los servidores POP o IMAP. Para cada uno, el diálogo permite especificar el nombre de servidor, el nombre de cuenta y la contraseña. Si el servidor de POP o IMAP soporta codificación, el encapsulado SSL puede especificarse. También se ofrecen otros esquemas de autenticación (diferentes a un par de nombre de usuario-contraseña), si el servidor los soporta. El resto de las opciones permiten a evolution sacar correo directamente del depósito de correo MTA o compartir carpetas con otros MTA como por ejemplo, mutt, pine y elm. Especificar una técnica de entrega de correo electrónico Para cada cuentase pueden especificar una de dos técnicas de entrega. Figure 1. Especificar una técnica de entrega de cuenta de correo electrónico de Evolution Si se debe utilizar un host SMTP, debe especificarse el nombre del host. Además se pueden establecer soporte para conexiones encriptadas o autenticación de usuario si la máquina SMTP es compatible o lo requiere. La otra alternativa es hacer que evolution entregue correo simplemente pasándolo al MTA local ("enviar correo"), en cuyo caso no hay ninguna otra configuración. Capítulo 6 Aplicaciones de diagnósticos de red Conceptos clave • • • • • /sbin/ifconfig presenta la configuración IP local. ping confirma la conectividad de red de bajo nivel entre hosts. host hace solicitudes directas de DNS. El comando netstat -tuna lista los servicios actuales activos de red y conexiones. /sbin/traceroute puede diagnosticar problemas de enrutado. Configuración requerida para el protocolo de internet El protocolo de Internet o más común el protocolo IP es el estándar adoptado para entregar información entre máquinas conectadas por una red. Para utilizar el protocolo IP, una máquina debe configurarse de la siguiente manera.
  • 38. 38 Network Applications Aunque la configuración de un sistema con la información IP de configuración apropiada requiere privilegios de root, este cuaderno demuestra la forma de determinar la configuración de red de una máquina local e introduce utilidades que sirven para confirmar que la infraestructura de red de la máquina esté funcionando adecuadamente. Dirección IP Linux (y Unix) representa los dispositivos de red conectados a una máquina (tales como una tarjeta Ethernet, una tarjeta Token-Ring, un módem utilizado para conexiones de marcado, etc...) como una interfaz de red. Antes de que una interfaz pueda utilizarse para enviar o recibir tráfico, debe configurarse con una dirección IP que sirve como la identidad de la interfaz. Portal predeterminado La mecánica de un protocolo IP organiza máquinas en subredes o subnets en inglés. Todas las máquinas en una subred pueden intercambiar información directamente. Las subredes IP están a su vez ligadas a otras subredes por máquinas que actúan como routers. Un router tiene múltiples interfaces de red, por lo general cada uno participa en una subred distinta. Con el fin de comunicarse con un equipo en otra subred, los datos deben pasarse a un router, el cual (con la ayuda de otros routers) encamina la información a la subred apropiada y desde allí al host apropiado. Para comunicarse con las máquinas fuera de la subred local, su máquina debe conocer la identidad de un router cercano. El router utilizado para encaminar paquetes fuera de su subred local se conoce como un portal predeterminado. Nameserver Otras máquinas en internet a su vez se identifican por una dirección IP. La gente suele pensar en términos de nombres, por lo tanto el protocolo se ha desarrollado para asignar nombres a las direcciones IP. El protocolo se llama Servicio de Nombres de Dominio o más conocido como DNS. El protocolo DNS requiere que cada máquina tenga disponible uno o más servidores DNS (comúnmente llamados servidores de nombre), los cuales pueden servir tanto de base de datos para asignar un nombre a direcciones locales IP como también de punto de partida para determinar direcciones IP para nombres de dominio de los cuales el servidor no tiene conocimento directo. Determinar su(s) dirección(es) IP: /sbin/ifconfig En una lección anterior presentamos el comando hostname -i, el cual muestra la dirección IP en su equipo local. En realidad una "máquina" no tiene una dirección IP, las interfaces de red sí. Esta lección tratará el tema de direcciones IP de interfaces de red en mayor detalle.
  • 39. 39 Network Applications En Linux (y Unix), cada dispositivo de red se representa como una interfaz de red, (por una vez, ¡encontramos algo que no es un archivo!). Linux nombra interfaces de acuerdo con el tipo de dispositivo que representa. El siguiente cuadro lista algunos de los nombres más utilizados en Linux. Table 1. Interfaces de red Linux Interfaz Dispositivo ethn Tarjeta Ethernet trn Tarjeta de Token-Ring fddin Tarjeta de fibra óptica pppn Conexión de marcado a través de módem lo Dispositivo de bucle local En cada caso, n se remplaza por un número entero para cada instancia de un dispositivo determinado conectado a una máquina. Confirmar la configuración de la interfaz de red El comando ifconfig muestra la configuración de interfaces de red activas. Puesto que el comando suele ser utilizado por root para configurar interfaces, éste vive dentro del directorio /sbin, el cual está fuera de la RUTA predeterminada para los usuarios estándar. No obstante, los usuarios estándar pueden usar el comando para ver información de configuración de interfaz, utilizando una referencia absoluta como en el ejemplo a continuación. [blondie@station blondie]$ /sbin/ifconfig eth0 Link encap:Ethernet HWaddr 00:00:86:4D:F0:0C inet addr:192.168.0.51 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1716503 errors:0 dropped:0 overruns:2 frame:0 TX packets:2146415 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:193489123 (184.5 Mb) TX bytes:1299754457 (1239.5 Mb) Interrupt:11 Base address:0xd400 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:206054 errors:0 dropped:0 overruns:0 frame:0 TX packets:206054 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:22911068 (21.8 Mb) TX bytes:22911068 (21.8 Mb) A la interfaz eth0 se le asigna una dirección IP de 192.168.0.254.
  • 40. 40 Network Applications El comando ifconfig presenta una estrofa de información de la configuración IP y las estadísticas de uso para cada interfaz de red activa. En la mayoría de los casos, los usuarios esperarían ver dos estrofas. Una estrofa con la configuración para una tarjeta Ethernet y otra con la configuración para el dispositivo virtual de bucle local. La línea importante es la segunda línea, la cual visualiza la dirección IP asignada a la interfaz. Si la línea que contiene la dirección IP falta o si la dirección no parece razonable para su configuración de red local, podrá tener problemas para acceder la red. Determinar su portal por defecto: /sbin/route Como se mencionó al comienzo de la lección, para la comunicación con equipos en sus subredes locales se utilizan procedimientos diferentes a la comunicación con hosts en una subnet separada. El kernel de Linux, al igual que otras kernels, define las máquinas que deberían considerarse locales y la gateway que debería usarse para ayudar a comunicarse con aquellas que no lo son. Este cuadro se llama cuadro de enrutamiento. Si usted es un usuario estándar, el comando route se puede utilizar para ver el cuadro de enrutamiento del sistema. Si es un usuario root, el comando puede también utilizarse para manipular el cuadro. Al igual que el comando ifconfig, el comando route vive en el directorio /sbin, por lo tanto los usuarios estándar deben invocarlo mediante una referencia absoluta. [blondie@station blondie]$ /sbin/route Kernel IP routing table Destination Gateway Genmask Use Iface 192.168.0.0 * 255.255.255.0 0 eth0 127.0.0.0 * 255.0.0.0 0 lo default server1.example 0.0.0.0 0 eth0 Flags Metric Ref U 0 0 U 0 0 UG 0 0 Un cuadro de ruta estándar visualiza dos tipos de entrada. El primer tipo define qué subredes se deben considerar como locales. En general, debería haber una línea que especifique una subred para cada interfaz activa. En la salida anterior, la primera línea define la subnet asociada con la interfaz de Ethernet (con una dirección IP de 192.168.0.51) y la segunda línea define la subred asociada con la interfaz de bucle local (con una dirección IP de 127.0.0.1). El segundo tipo de entrada que sirve para definir gateways es el más importante para nuestra discusión. Dichas entradas de gateway se pueden distinguir porque el host está definido en la segunda columna ("Gateway") y la cuarta columna ("Banderas") contiene una "G". Cada cuadro de ruta debe contener una entrada para la gateway "por defecto" y la segunda columna debe contener el nombre del host del gateway. La misma información se puede ver mediante la dirección IP en lugar de nombres del host utilizando /sbin/route -n.
  • 41. 41 Network Applications [blondie@station blondie]$ /sbin/route -n Kernel IP routing table Destination Gateway Genmask Use Iface 192.168.0.0 0.0.0.0 255.255.255.0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 0 lo 0.0.0.0 192.168.0.254 0.0.0.0 0 eth0 Flags Metric Ref U 0 0 U 0 0 UG 0 0 Aquí, blondie determina que su máquina está utilizando el host 192.168.0.254 como su gateway predeterminado. La bandera "G" indica que esta línea se utiliza para definir una gateway, no una subred local. Determinar su(s) nombre de usuario(s) El Servicio de Nombres de Dominio permite a los usuarios referirse a los computadores de la red mediante nombres de host en lugar de direcciones IP. A diferencia de los otros dos aspectos de configuración de red, un servidor de nombre es hasta cierto punto opcional. Con el fin de comunicarse con otras máquinas su equipo debe tener una dirección IP. Si desea comunicarse con máquinas fuera de la subred, usted debe tener una gateway por defecto. Sin embargo, si los usuarios quieren referirse a cada máquina por dirección IP en lugar de nombre de máquina, su equipo puede comunicarse mediante el protocolo IP sin consultar el servidor de nombres. No obstante, en la práctica los servidores de nombres parecen ser más necesarios (se le facilita más memorizar academy.redhat.com o 66.187.232.51?). Convertir un nombre de host en una dirección IP suele conocerse como resolver una dirección y la biblioteca que ejecuta el servicio de nombre se llama la biblioteca resolv. Cuando la biblioteca intenta resolver una dirección suele haber dos recursos disponibles. Configuración DNS estática: /etc/hosts El primer recurso es un archivo de texto sencillo llamado archivo /etc/hosts. Aunque sólo root puede editar el archivo cualquier usuario puede observarlo. [blondie@station blondie]$ cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost rha-server 192.168.0.254 server1.example.com server s 192.168.0.1 station1 station1.example.com www1 www1.example.com 192.168.0.51 station51 station51.example.com 192.168.129.201 z 160.168.170.24 rosemont.example.com dhcp-1116-114 r El formato del archivo es sencillo. El primer símbolo en la línea debería ser una dirección IP y los símbolos subsiguientes son nombres de hosts que deberían apuntar a la dirección IP. El caracter estándar de comentario de Unix (“#”) también es compatible.
  • 42. 42 Network Applications Si el equipo sólo se está comunicando con pocas máquinas o si un administrador desea crear un atajo de nombres de host (tal como “s”) o si deseara anular el servidor de nombre local, las entradas pueden agregarse al archivo /etc/hosts mediante un editor de texto sencillo. Claro está que esta técnica no escala bien. Usted no puede esperar que el archivo /etc/hosts le responda a todo. Configuración DNS dinámica: /etc/resolv.conf Cuando el /etc/hosts local no puede dar respuesta, la biblioteca resolv consulta un servidor de nombres. Para determinar qué máquina consultar que esté ejecutando un servidor de nombres, examina el archivo de configuración de la biblioteca de resolv, /etc/resolv.conf. [blondie@station blondie]$ cat /etc/resolv.conf ; generated by /sbin/dhclient-script search example.com nameserver 192.168.0.254 nameserver 207.175.42.153 El host 192.168.0.254 está actuando como el servidor de nombre primario. El host 207.175.42.153 está actuando como el servidor de nombres secundario. El archivo de configuración /etc/resolv.conf utiliza líneas que comienzan por la palabra clave servidor de nombres para especificar las direcciones IP de máquinas ejecutando servidores de nombre. Si se especifican varios servidores de nombres, se utilizará el primero por defecto. Si no está disponible se utilizará el segundo y así sucesivamente. Por consiguiente, el primer servidor de nombres listado suele llamarse servidor de nombres primario, el segundo servidor listado servidor de nombres secundario y así sucesivamente. Observe que el servidor de nombres no necesita estar cerca de la máquina. Cualquier equipo que esté ejecutando el servidor de nombres y le permita solicitarlo, puede usarse como servidor de nombres. En la práctica, el uso de un servidor de nombres local genera un mayor rendimiento. Utilidades de diagnóstico de red En las secciones anteriores, hemos esbozado las técnicas más directas para determinar su configuración de red IP local de la máquina. En esta sección, presentaremos las utilidades de diagnóstico que sirven para asegurar que las configuraciones están funcionando correctamente con su entorno de red local. Confirmación de conectividad IP: ping
  • 43. 43 Network Applications El comando ping sirve para confirmar la conectividad IP entre dos equipos. El primer argumento para ping puede ser el nombre del equipo o la dirección IP de la máquina que usted desearía contactar. [blondie@station blondie]$ ping 192.168.0.254 PING 192.168.0.254 (192.168.0.254) 56(84) bytes of data. 64 bytes from 192.168.0.254: icmp_seq=1 ttl=64 time=0.245 ms 64 bytes from 192.168.0.254: icmp_seq=2 ttl=64 time=0.180 ms 64 bytes from 192.168.0.254: icmp_seq=3 ttl=64 time=0.186 ms CTRL-C --- 192.168.0.254 ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 1998ms rtt min/avg/max/mdev = 0.180/0.203/0.245/0.033 ms El comando ping debería presentar una línea por segundo, incluyendo el número de secuencia y la información de temporización sobre la demora de ida y vuelta, la cual reporta el tiempo necesario para recibir una respuesta de la máquina remota. El comando ping continuará ejecutándose hasta cancelarse con la secuencia de control CONTROL-C. Si no hay respuesta para el comando ping, usted no podrá esperar que se presente ninguna comunicación de red de alto nivel. El culpable suele ser un cable Ethernet que se ha desconectado físicamente de la máquina o de la pared. Las inconsistencias en la tasa en la que las líneas se presentan o la discontinuidad en los números de secuencia son generalmente indicativos de una red congestionada o de una conexión ruidosa y se puede esperar un bajo rendimiento de red de protocolos de alto nivel. Examen de ruta: /usr/sbin/traceroute Cuando se conecte a una máquina fuera de su subred, su paquete pasa de router a router a medida que atraviesa varias subredes hasta que finalmente se envía a la subred que contiene la máquina destino. La ruta del paquete, cuando pasa de router a router puede trazarse con el comando /usr/sbin/traceroute. El comando traceroute suele llamarse con un argumento, el nombre del equipo o la dirección IP de la máquina destino. [blondie@station blondie]$ /usr/sbin/traceroute www.whitehouse.gov traceroute: Warning: www.whitehouse.gov has multiple addresses; using 12.129.72.144 traceroute to a1289.g.akamai.net (12.129.72.144), 30 hops max, 38 byte packets 1 2 3 4 5 6 7 8 server1 (192.168.0.254) 0.243 ms 0.162 ms 0.252 ms 10.44.160.1 (10.44.160.1) 8.563 ms 10.488 ms 7.642 ms srp2-0.rlghncg-rtr1.nc.rr.com (24.25.1.99) 7.382 ms 10.162 ms 0.874 ms srp4-0.rlghnca-rtr2.nc.rr.com (24.25.2.146) 10.008 ms 8.798 ms 15.931 ms srp13-0.rlghncrdc-rtr2.nc.rr.com (66.26.33.178) 4.259 ms 10.079 ms 10.031 ms son0-1-1.chrlncsa-rtr6.carolina.rr.com (24.93.64.81) 29.675 ms 9.950 ms 29.665 ms pop1-cha-P4-0.atdn.net (66.185.132.45) 10.087 ms 21.045 ms 8.202 ms bb2-cha-P2-0.atdn.net (66.185.132.42) 11.392 ms 20.371 ms 9.712 ms
  • 44. 44 Network Applications 9 bb2-ash-P13-0.atdn.net (66.185.152.50) 29.322 ms 26.192 ms 25.901 ms 10 pop2-ash-P1-0.atdn.net (66.185.139.211) 26.506 ms 26.485 ms 26.208 ms 11 ATT.atdn.net (66.185.140.250) 26.704 ms 27.127 ms 21.004 ms 12 tbr1-p014001.wswdc.ip.att.net (12.123.9.82) 38.888 ms 22.006 ms 28.123 ms13 gbr6-p20.wswdc.ip.att.net (12.122.11.174) 29.880 ms 19.628 ms 31.080 ms 14 gar3-p370.wswdc.ip.att.net (12.123.9.69) 24.231 ms 29.829 ms 20.827 ms 15 mdf1-gsr12-2-pos-7-0.atl1.attens.net (12.122.255.154) 40.184 ms 50.815 ms 38.903 ms 16 mdf1-bi8k-2-eth-1-1.atl1.attens.net (12.129.64.246) 39.845 ms 39.803 ms 39.887 ms 17 12.129.72.144 (12.129.72.144) 39.856 ms 39.934 ms 39.898 ms Usted hallará con frecuencia que los paquetes toman rutas sorpresivas para ir de un lugar a otro. El número de routers que su paquete pasa suele conocerse como el número de saltos que ha hecho el paquete. El paquete anterior hizo 17 saltos para alcanzar su destino. Si su paquete no puede completar el primer salto, es probable que su gateway por defecto de su máquina no haya sido determinada correctamente. Si su traceroute termina entre la primera pareja o salta (sin alcanzar el destino final), el problema es un router local mal configurado y su administrador de red local probablemente ayude a resolver el problema. Si el comando traceroute se agota a más de cuatro o cinco saltos, es probable que el problema esté fuera de control de su administrador de red local. Realización de solicitudes DNS de modo manual: host El comando host se puede utilizar para realizar directamente solicitudes DNS. Con un argumento, el comando host sólo reportará la resolución DNS solicitada. [blondie@station rha030]$ host academy.redhat.com academy.redhat.com has address 66.187.232.51 Si la opción -a se incluye, el comando host presenta información detallada de la solicitud realizada y la respuesta recibida en el formato de "registro de recursos". Además, la línea final identificará el servidor de nombres que resolvió la solicitud y la cantidad de tiempo que se necesitó para ello. [elvis@station rha030]$ host -a academy.redhat.com Trying "academy.redhat.com" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53870 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 0 ;; QUESTION SECTION: ;academy.redhat.com. IN ANY ;; ANSWER SECTION: academy.redhat.com. 284 IN A 66.187.232.51 ;; AUTHORITY SECTION: redhat.com. redhat.com. redhat.com. 584 584 584 IN IN IN NS NS NS ns1.redhat.com. ns2.redhat.com. ns3.redhat.com. Received 106 bytes from 192.168.0.254#53 in 30 ms
  • 45. 45 Network Applications En este ejemplo, el servidor de nombres que respondió tiene una dirección IP de 192.168.0.254. Ejemplos Diagnóstico de dificultades de red La usuaria madonna está teniendo problemas para que su navegador de red mozilla se conecte al sitio www.yahoo.com y cree que la máquina local podría estar mal configurada. Procede a examinar sus configuraciones de red local y confirma que parecen funcionales. Siguiendo el consejo de iniciar con lo básico, madonna primero se asegura que la máquina tenga una dirección IP, examinando su configuración de interfaz de red local. [madonna@staton madonna]# /sbin/ifconfig eth0 Link encap:Ethernet HWaddr 00:50:8B:0C:B1:D5 inet addr:109.125.90.86 Bcast:109.125.90.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:513364 errors:0 dropped:0 overruns:0 frame:0 TX packets:319118 errors:0 dropped:0 overruns:0 carrier:0 collisions:5068 txqueuelen:100 RX bytes:78770024 (75.1 Mb) TX bytes:356094835 (339.5 Mb) Interrupt:11 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:63432 errors:0 dropped:0 overruns:0 frame:0 TX packets:63432 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:6124991 (5.8 Mb) TX bytes:6124991 (5.8 Mb) Convencida que su interfaz está activa y utilizando la dirección IP 109.125.90.86, examina su información de ruta para determinar su gateway por defecto. [madonna@station madonna]# /sbin/route -n Kernel IP routing table Destination Gateway Genmask Use Iface 109.125.90.0 * 255.255.255.0 0 eth0 127.0.0.0 * 255.0.0.0 0 lo 0.0.0.0 109.125.90.1 0.0.0.0 0 eth0 Flags Metric Ref U 0 0 U 0 0 UG 0 0 Luego utiliza el comando ping para confirmar si puede contactar la gateway. [madonna@station madonna]# ping 109.125.90.1 PING 109.125.90.1 (109.125.90.1) from 109.125.90.86 : 56(84) bytes of data.
  • 46. 46 Network Applications 64 bytes from 109.125.90.1: icmp_seq=1 ttl=255 time=2.92 ms 64 bytes from 109.125.90.1: icmp_seq=2 ttl=255 time=2.65 ms CTRL-C --- 109.125.90.1 ping statistics --2 packets transmitted, 2 received, 0% loss, time 1004ms rtt min/avg/max/mdev = 2.652/2.788/2.924/0.136 ms Satisfecha, cancela el comando y luego examina su configuración DNS. [madonna@station madonna]# cat /etc/resolv.conf search example.com nameserver 109.125.90.75 nameserver 109.125.90.2 nameserver 66.218.71.63 Puesto que ella todavía no ha llamado el host externo de su subred local, intenta llamar a un servidor de nombres terciario. [madonna@station madonna]# ping 66.218.71.63 PING 66.218.71.63 (66.218.71.63) from 109.125.90.86 : 56(84) bytes of data. 64 bytes from 66.218.71.63: icmp_seq=3 ttl=54 time=11.2 ms 64 bytes from 66.218.71.63: icmp_seq=7 ttl=54 time=20.3 ms 64 bytes from 66.218.71.63: icmp_seq=11 ttl=54 time=27.7 ms CTRL-C --- 66.218.71.63 ping statistics --13 packets transmitted, 3 received, 76% loss, time 12045ms rtt min/avg/max/mdev = 11.275/19.766/27.702/6.717 ms Los resultados del comando ping son un poco problemáticos, porque la mayoría de sus paquetes se han quitado. En su lugar ella intenta determinar el camino recorrido por los paquetes a la máquina. [madonna@station madonna]# /usr/sbin/traceroute -n 66.218.71.63 traceroute to 66.218.71.63 (66.218.71.63), 30 hops max, 38 byte packets 1 209.125.90.1 3.473 ms 2.276 ms 2.281 ms 2 10.252.86.221 8.836 ms 15.761 ms 16.423 ms 3 216.217.3.193 11.293 ms 20.227 ms 15.257 ms 4 216.217.3.153 13.123 ms 10.306 ms 7.699 ms 5 63.215.192.173 10.835 ms 6.679 ms 6.881 ms 6 64.159.2.169 6.789 ms 7.117 ms 7.520 ms 7 64.152.69.30 12.358 ms 7.087 ms 6.877 ms 8 66.218.71.63 9.680 ms 11.787 ms 9.963 ms Puesto que traceroute retornó dicha solicitud de salida, madonna asume que cualquier problema observado con el comando ping anterior debió haber sido transitorio. Por último, ella confirma que su servidor de nombres es operacional al realizar unas pocas solicitudes de DNS con el comando host.
  • 47. 47 Network Applications [madonna@station madonna]$ host www.redhat.com www.redhat.com has address 66.187.232.50 [madonna@station madonna]$ host hardware.redhat.com hardware.redhat.com is an alias for enterprise.redhat.com. enterprise.redhat.com has address 66.187.233.193 [madonna@station madonna]$ host www.yahoo.com www.yahoo.com is an alias for www.yahoo.akadns.net. www.yahoo.akadns.net has address 66.218.71.95 www.yahoo.akadns.net has address 66.218.70.48 ... Convencida de que todo parece estar bien, trata de nuevo el navegador de red mozilla y tiene éxito. Sea cualquiera el problema que estaba teniendo debe haberse relacionado con la congestión de red transitoria observada con el comando ping. Ejercicios en línea Lab Exercise Objetivo: Determinar la configuración de red local Tiempo estimado: 15 minutos. Especificaciones Crear los siguientes archivos, cada uno de los cuales debería contener su dirección IP como un "quad punteado". Archivo Contenido ~/net_ipaddr La dirección IP asignada a la interfaz eth0. ~/net_gw La dirección IP preseterminada de su gateway. ~/net_ns La dirección IP del servidor de nombres primario. Question 1 1. Los tres archivos presentados arriba, cada uno de los cuales contiene la dirección IP especificada como su única palabra. Capítulo 7 Terminal de red y clientes FTP
  • 48. 48 Network Applications Conceptos clave • • • El cliente HTTP de terminal Elinks, invocado como el comando links se puede utilizar para navegar páginas web desde un entorno gráfico. La aplicación curl es una aplicación de protocolo múltiple no interactivo (incluyendo HTTP, HTTPS y FTP) que sirve para transferir archivos en modo de lote. La aplicación wget es una aplicación de protocolo múltiple no interactiva (incluyendo HTTP, HTTPS y FTP) que sirve para transferir de modo recursivo páginas web, buscando en todas las páginas las referencias de página web. ¿Por qué terminales basadas en clientes? Los usuarios probablemente están familizados con las aplicaciones gráficas tales como mozilla para navegar la red o nautilus para tener acceso a servidores FTP. Aparte de estas aplicaciones, Linux también ofrece una amplia colección de clientes basados en la línea de comandos. ¿Por qué alguien estaría tentado a utilizar clientes basados en líneas de comandos en lugar de apuntar y hacer click en las aplicaciones? • • • • La razón obvia: si no está ejecutando en un entorno gráfico X, estas son las únicas utilidades disponibles. Las utilidades se pueden escribir en scripts. Si tiene que extraer información de forma repetitiva del mismo sitio, debería considerar un script para que haga el trabajo repetitivo por usted. Las utilidades de la línea de comandos requieren menos recursos. Si está tratando de descargar un archivo largo en otras máquinas ocupadas, un proceso curl es mucho más atractivo que un proceso mozilla, porque el primero consume 4 megabytes mientras que el segundo consume 40 megabytes de memoria. La simplicidad tiende a motivar la estabilidad. Cuando se descargan archivos grandes, como por ejemplo, imágenes ISO de 700 megabytes, muchas de las aplicaciones pueden volverse inestables, (la lista de culpables incluye a Internet Explorer). Los clientes de línea de comandos como curl tienden a generar resultados más estables. Navegación de páginas web con Elinks El texto Elinks de cliente HTTP (navegador de red) está diseñado para traducir páginas web en una terminal, emulando la presentación de un navegador de red gráfico. En cuanto sea posible, los cuadros y formas se presentan en escala. Observe que en la siguiente visualización de la página de red asociada con Red Hat Network, los marcos y cuadros están traducidos correctamente. Inicio de Elinks Los Elinks se inician como el comando links especificando una URL para cargar como un argumento. Observe el siguiente ejemplo.
  • 49. 49 Network Applications [elvis@station elvis]$ links http://www.redhat.com Figure 1. El navegador de texto Elinks Cuando utilice links, la pantalla está activa y los enlaces pueden navegarse mediante teclas de flechas o el ratón. Al utilizar la tecla ESC, se crea un menú que permite al usuario acceder a los diálogos de favoritos, historial y personalización. Aunque la opción -dump sirve para entregar una página en una salida estándar y la opción -source hará lo mismo al contenido "Crudo" de la URL (a menudo botando HTML), el soporte para interacciones de guiones es muy poco sofisticado comparado