jueves, 20 de octubre de 2011

Configurar una interfaz de red en Solaris (parte 1)

Para que nuestro equipo Solaris (estación de trabajo o servidor) se pueda conectar a una red es necesario configurar, al menos, una interfaz de red con una IP estática o dinámica (la diferencia entre una IP estática y dinámica es que la primera debe ser proporcionada en forma manual y la segunda será proporcionada por otro servidor dedicado a esto a través del protocolo DHCP).

Si bien, es cierto, podemos configurar a una interfaz de red desde la instalación de sistema operativo, muchas veces requeriremos de configurar interfaces después de la instalación.

El primer paso es identificar la NIC que debemos activar, aunque es, en apariencia, muy obvio en realidad es sorprendente el número de ocasiones que tendremos que “sufrir” un poco para encontrar el dispositivo que corresponde. Aunque existen otros métodos, creo que el más genérico es por medio del comando prtdiag.

# prtdiag –v | less

Yo en lo personal, prefiero utilizar less en lugar de more debido a que es más fácil navegar a través de la salida del comando prtdiag.

Buscamos la cadena “net” y revisamos el dispositivo, en mi ejemplo, éste fue el dispositivo que encontré:

         name='model' type=string items=1
             value='Ethernet controller'
         name='power-consumption' type=int items=2
             value=00000001.00000001
         name='66mhz-capable' type=boolean
         name='devsel-speed' type=int items=1
             value=00000001
         name='interrupts' type=int items=1
             value=00000001
         name='max-latency' type=int items=1
             value=00000000
         name='min-grant' type=int items=1
             value=000000ff
         name='subsystem-vendor-id' type=int items=1
             value=000015ad
         name='subsystem-id' type=int items=1
             value=00000750
         name='unit-address' type=string items=1
             value='0'
         name='class-code' type=int items=1
             value=00020000
         name='revision-id' type=int items=1
             value=00000001
         name='vendor-id' type=int items=1
             value=00008086
         name='device-id' type=int items=1
             value=0000100f
     Interrupt Specifications:
         Interrupt Priority=0x6 (ipl 6), vector=0xa (10)
     Device Minor Nodes:
         dev=(71,1)
             dev_path=/pci@0,0/pci15ad,790@11/pci15ad,750@0:e1000g0
                 spectype=chr type=minor
                 dev_link=/dev/e1000g0
         dev=(71,1002)
             dev_path=<clone>
             Device Minor Layered Under:
                 mod=udp accesstype=chr
                     dev_path=/pseudo/udp@0
         dev=(71,1003)
             dev_path=<clone>
             Device Minor Layered Under:
                 mod=udp accesstype=chr
                     dev_path=/pseudo/udp@0

Observen que indica que se trata de un dispositivo Ethernet y que la ruta del dispositivo es la que está indicada como dev_link y que corresponde a /dev/e1000g0

En este caso, es la única interfaz que posee el equipo, por lo que este debe ser el dispositivo que busco sin duda alguna, sin embargo, ya es muy común encontrar servidores con más de una interfaz, por lo que debemos constatar que si corresponde a la interfaz con la que debemos trabajar, habrá ocasiones en la que debamos utilizar el método de prueba y error.

Ya seleccionado el dispositivo de la interfaz vamos proceder a activarla con el comando ifconfig.

# ifconfig e1000g0 plumb

Con el primer parámetro le indicamos el dispositivo con el que vamos a trabajar, no es necesario indicar toda la ruta /dev/e1000g0. El siguiente es la instrucción plumb, la cual, activa al dispositivo.

A continuación, procedemos a configurar la interfaz, también con el comando ifconfig.

# ifconfig e1000g0 inet 192.168.188.22 netmask 255.255.255.0 broadcast + up

Los parámetros son:

  • e1000g0: El dispositivo
  • inet 192.168.188.22: La IP fija que vamos a asignarle a la interfaz
  • netmask 255.255.255.0: La máscara de red
  • broadcast +: Que utilice como dirección reservada para el broadcast la última dirección del segmento
  • up: Que deje a la interfaz arriba (es decir, encendida)

Es una buena práctica el indicarle todos estos parámetros ya que de lo contrario corremos el riesgo de que quede mal establecido el segmento de red y el equipo no pueda localizar algunas direcciones (Nota: en la práctica real, observarán que en algunas ocasiones el servidor no puede conectarse con algunas direcciones, pero con otras si, en esos casos lo primero que debemos revisar es si los parámetros de subnet mask y brodcast están bien designados).

Una vez realizado lo anterior, podemos decir que ya tenemos el equipo en red, sin embargo, hasta este punto solo va a ser posible su comunicación con otros equipos de la red local, es necesario configurar un ruteador para que puede comunicarse con equipos remotos.

En este ejemplo, vamos a configurar el ruteador por default utilizando el comando route.

# route add default 192.168.188.2

Los parámetros que utilizamos indican lo siguiente:

  • add: Le indica que vamos a agregar una ruta, la instrucción contraria es delete
  • default: Esta palabra indica que ésta es la ruta por default, en su lugar, puede ser la dirección de una red o la de un host (por ejemplo: host 192.168.190.2 ó net 192.168.190.0)
  • 192.168.188.2: La IP del ruteador, esta IP debe ser local

La forma de revisar la configuración con los comandos ifconfig (para la interfaz) y netstat (para el ruteador) es la siguiente:

# ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
e1000g0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 192.168.188.22 netmask ffffff00 broadcast 192.168.188.255
        ether 0:c:29:4b:86:96
# route add default 192.168.188.2
add net default: gateway 192.168.188.2
# netstat -rn

Routing Table: IPv4
  Destination           Gateway           Flags  Ref     Use     Interface
-------------------- -------------------- ----- ----- ---------- ---------
default              192.168.188.2        UG        1          0
192.168.188.0        192.168.188.22       U         1          1 e1000g0
224.0.0.0            127.0.0.1            U         1          0 lo0
127.0.0.1            127.0.0.1            UH        9        463 lo0

Por último, vamos a configurar al equipo para que esta configuración quede en forma permanente, para la configuración de la interfaz, vamos a crear en el directorio /etc un archivo llamado hostname.nic donde nic es el nombre de la interfaz, en este ejemplo: hostname.e1000g0. En este archivo podemos, simplemente, agregar la dirección IP. Sin embargo, en muchos manuales encontrarán que en este archivo por lo regular se escribe un nombre de host (hostname) en la forma canónica, dicho hostname debe existir en el archivo /etc/hosts. Adicional a esto, lo normal es que una de las interfaces utilice como hostname el mismo nombre definido para el equipo (a esta interfaz se le conoce como la interfaz principal). Para este ejemplo, en el que solo va a quedar configurada una sola interfaz, vamos a utilizar el modo canónico escribiendo en el archivo hostname.e1000g0 el nombre del equipo (solaris10) y el archivo /etc/hosts lo dejaremos de la siguiente forma:

# cat /etc/hosts
#
# Internet host table
#
::1     localhost
127.0.0.1       localhost
192.168.188.22  solaris10       loghost

También es importante indicar la máscara de red, para lo cual, utilizamos el archivo /etc/inet/netmasks para indicar la máscara que corresponde a la red, recuerden que la máscara para este ejemplo es la 255.255.255.0, por lo que la red es la 192.168.188.0/24 (en un artículo anterior se muestra cómo se definen los segmentos). El archivo quedará en la siguiente forma:

# cat /etc/inet/netmasks
#
# The netmasks file associates Internet Protocol (IP) address
# masks with IP network numbers.
#
#       network-number  netmask
#
# The term network-number refers to a number obtained from the Internet Network
# Information Center.
#
# Both the network-number and the netmasks are specified in
# "decimal dot" notation, e.g:
#
#               128.32.0.0 255.255.255.0
#
192.168.188.0   255.255.255.0

Y por último, el ruteador por default se define mediante el archivo /etc/defaultrouter, al cual, contendrá la dirección del ruteador, en este ejemplo, la 192.168.188.2.

De esta forma, nuestra interfaz quedará configurada con una IP fija, en el siguiente artículo veremos como utilizar una IP dinámica.

5 comentarios:

Anónimo dijo...

Ale ya segui los pasos, sin embargo si puedo configurar la IP dinamicamente pero cuando modifico el /etc/hosts y el /etc/hostname.e1000g0 (mi interfaz) al reiniciar no me toma la conifugraciòn.. no se que paso o este este omitiendo...algo, Saludos

Mariano

Unknown dijo...

¡Hola!
La versión sintetizada es:
1. Crear el archivo /etc/dhcp.e1000g0 con el comando: touch /etc/dhcp.e1000g0
2. En el archivo /etc/hostname.e1000g0 dejar solo la línea: inet miservidor, donde miservidor es el nombre de tu equipo
3. En el archivo /etc/hosts borrar la línea donde aparece el nombre de tu equipo
Si aún tienes dudas, por favor mandame un mail o llámame al rato

Anónimo dijo...

buenas!!
el archivo que he creado /etc/resolv.conf, ya que en solaris 10 modo texto no estaba; al reiniciar se me modifican las ip de los nameserver que pongo al reiniciar.
no se que es lo que me lo modifica ni tampoco se como hacer para que se quede tal cual lo dejo yo; incluso estableciendo unicamente permisos de lectura se modifica supongo que sera porque alguna aplicacion que esta con permisos de root es quien lo cambia.
tengo dos interfaces de red una estaica y la otra por DHCP; en el archivo /etc/hosts se ve que el DHCP me añade una entrada y me modifica tambien el fichero.
Alguien podria ayudarme?
gracias.

Unknown dijo...

Si activas el cliente de DHCP éste modifica los archivos hosts, defaultrouter, nsswitch.conf y resolv.conf para que no los modifique, debes utilizar solo direcciones IP fijas.

Anónimo dijo...

Dispongo de dos interfaces en mi servidor SPARC con solaris 10 modo texto.
si por lo que dices al configurar el DHCP se modifica dicho contenido; entonces que debo hacer o como puedo modificar los ficheros /etc/hosts,/etc/hostname.eri0, /etc/hostname.eri1, /etc/dhcp.eri1 y /etc/resolv.conf; para que pueda usar la interfaz eri0 como estatica y la interfaz eri1 por DHCP y que los DNS sean los que yo establezco.
le he puesto al nombre de mi equipo o hostname pcsolaris.