|
1.
Configuración Avanzada
La variable config_eth0 es el corazón de la configuración de una
interfaz. Es una lista de instrucciones de alto nivel para configurar la
interfaz (eth0 en este caso). Cada comando en la lista de instrucciones
se ejecuta de manera secuencial. La interfaz será evaluada como OK si, al
menos, un comando funciona.
Aquí tiene una lista de instrucciones integradas:
| Comando |
Descripción |
| null |
No hace nada |
| noop |
Si la interfaz está funcionando y existe una dirección entonces
aborta la configuración con éxito.
|
| una dirección IPv4 o IPv6 |
Añade la dirección a la interfaz |
|
dhcp,adsl o apipa (o un comando propio
perteneciente a un módulo de terceras partes)
|
Ejecuta el módulo que proporciona el comando. Por ejemplo
dhcp ejecutará un módulo que proporcione dhcp, que
pudiera ser uno cualquiera de los siguientes: dhcpcd,
dhclient o pump.
|
Si un comando falla, puede especificar un comando de retorno (fallback).
El retorno tiene que coincidir exactamente con la estructura de la
configuración.
Puede encadenar estos comandos. Aquí se muestran algunos ejemplo reales:
Listado de Código 1.1: Ejemplos de configuración |
config_eth0="192.168.0.2/24
192.168.0.3/24
192.168.0.4/24"
config_eth0="192.168.0.2/24
4321:0:1:2:3:4:567:89ab
4321:0:1:2:3:4:567:89ac"
config_eth0="noop
dhcp"
fallback_eth0="null
apipa"
|
Nota:
Cuando se utiliza el módulo ifconfig y se añade más de una dirección,
se crean alias de interfaz para cada dirección extra. De esta manera los dos
ejemplos anteriores tendrán interfaces eth0, eth0:1 y
eth0:2. No se puede hacer nada especial con estas interfaces ya que el
kernel y otros programas simplemente tratan eth0:1 y eth0:2 como
eth0.
|
Importante:
¡La orden de retorno es importante! Si no especificamos la opción null,
el comando apipa solamente se ejecutaría si el comando noop
falla.
|
Nota:
(APIPA) y
(DHCP) serán tratados más adelante.
|
1.
Dependencias de red
Los guiones en /etc/init.d pueden depender de una
interfaz de red específica o, simplemente, de net (red). Todos los
interfaces de red en el sistema de inicio de Gentoo proporcionan algo
llamado net.
Si está configurado rc_depend_strict="YES" en
/etc/rc.conf, entonces todos los interfaces de red que
proporcionen net deben estar activos antes que pueda considerarse
cumplida la dependencia en "net". En otras palabras, si tienen los
interfaces net.eth0 y net.eth1 y un guión de
inicio depende de "net", ambos deben estar activados.
Por otro lado, si está configurado rc_depend_strict="NO",
entonces la dependencia de "net" se considera cumplida al momento de
estar activo al menos uno de los interfaces de red.
Pero, ¿y qué pasa si net.br0 depende de net.eth0 y
net.eth1? net.eth1 podría ser un dispositivo
wireless o ppp que necesita configurarse antes de añadirse al puente. Esto no
puede hacerse en /etc/init.d/net.br0 ya que es un enlaces
simbólico a net.lo.
La respuesta es definir nuestra propia requerimiento rc_need_
en /etc/conf.d/net
Listado de Código 1.1: Dependencia de net.br0 en /etc/conf.d/net |
rc_need_br0="net.eth0 net.eth1"
|
Lo anterior no es suficiente. Los guiones de inicio de Gentoo utilizan una
dependencia virtual llamada net para informar al sistema cuando está
disponible la conexión a red. Claramente, en el caso de arriba la conexión
a red debería marcarse como disponible cuando net.br0 está
funcionando, no cuando lo están las otras. Por lo que tenemos que indicar
también esto en /etc/conf.d/net:
Listado de Código 1.1: Actualizar las dependencias y provisiones para los servicios de red |
rc_net_lo_provide="!net"
rc_net_eth0_provide="!net"
rc_net_eth1_provide="!net"
|
Para una lectura más detallada sobre dependencias, consulte la sección
(Guiones de Inicio) en el
manual de Gentoo. Se puede encontrar más información acerca de
/etc/rc.conf en los comentarios dentro del propio archivo.
1.
Nombre de variables y valores
Los nombre de variables son dinámicos. Normalmente sigue la estructura
variable_${interface|mac|essid|apmac}. Por ejemplo, la variable
dhcpcd_eth0 guarda los valores para las opciones de dhcpcd para eth0
y dhcpcd_essid los valores para dhcpcd cuando cualquier interfaz se
conecta al ESSID "essid".
Sin embargo, no hay ninguna regla que indique que los nombre de las interfaces
sean ethx. De hecho, muchas interfaces wireless tienen nombres como wlanx, rax
o ethx. También, algunas interfaces definidas por el usuario como pueden ser
puentes puede tener cualquier nombre, como foo. Para hacer la vida un poco más
interesante, los puntos de acceso wireless pueden tener nombres con caracteres
no alfanuméricos - esto es importante porque puede configurar los parámetros de
red por ESSID.
La desventaja de todo esto es que Gentoo usa variables bash para la red -
y bash no puede utilizar nada fuera de caracteres alfanuméricos ingleses.
Para solucionar esta limitación cambiamos cada carácter que no sea alfanumérico
inglés por un carácter _.
Otra desventaja de bash es el contenido de las variables - algunos caracteres
necesitan especificarse de manera especial. Esto se hace utilizando \
delante del carácter. A continuación tenemos una lista de caracteres
especiales que necesitamos indicar de esta manera. ",' y
\.
En este ejemplo utilizamos ESSID wireless ya que puede contener un amplio
abanico de caracteres. Deberemos utilizar ESSID My "\ NET:
Listado de Código 1.1: Ejemplo de nombre para la variable |
dns_domain_My____NET="My \"\\ NET"
|
|