Gentoo Logo

1.  Configuração avançada

A variável config_eth0 é o coração da configuração de uma interface. É uma lista de instruções de alto nível para configurar a interface (eth0 neste caso). Cada comando na lista de instruções é feito seqüencialmente. A interface é considerada OK se pelo menos um comando funcionar.

Aqui está uma lista de instruções internas.

Comando Descrição
null Não fazer nada
noop Se a interface estiver levantada e houver um endereço, abortar a configuração com sucesso
um endereço IPv4 ou IPv6 Adicionar o endereço à interfaceAdicionar o endereço à interface
dhcp, adsl ou apipa (ou comando personalizado de um módulo de terceiros) Rodar o módulo que fornece o comando. Por exemplo, dhcp irá rodar um módulo que fornece DHCP, que pode ser tanto dhcpcd, udhcpc, dhclient ou pump.

Se um comando falhar, você pode especificar uma alternativa. A alternativa tem que bater com a estrutura de configuração exatamente.

Você pode encadear estes comandos juntamente. Aqui estão alguns exemplos do mundo real.

Listagem de código 1.1: Exemplos de configuração

# Adicionando três endereços IPv4
config_eth0=(
  "192.168.0.2/24"
  "192.168.0.3/24"
  "192.168.0.4/24"
)

# Adicionando um endereço IPv4 e dois endereços IPv6
config_eth0=(
  "192.168.0.2/24"
  "4321:0:1:2:3:4:567:89ab"
  "4321:0:1:2:3:4:567:89ac"
)

# Manter nosso endereço designado pelo kernel, a menos que a interface
# caia, neste caso obter outro via DHCP. Se DHCP falhar, então adicionar um
# endereço estático determinado por APIPA
config_eth0=(
  "noop"
  "dhcp"
)
fallback_eth0=(
  "null"
  "apipa"
)

Nota: Quando usar o módulo ifconfig e adicionar mais que um endereço, aliases de interface são criados para cada endereço adicional. Com os dois exemplos acima, você obterá as interfaces eth0, eth0:1 e eth0:2. Você não pode fazer nada especial com essas interfaces, já que o kernel e outros programas irão simplesmente tratar eth0:1 e eth0:2 como eth0.

Importante: A ordem da alternativa é importante! Se você não especificar a opção null, o comando apipa só será rodado se o comando noop falhar.

Nota: (APIPA) e (DHCP) são discutidos mais tarde.

1.  Dependências de rede

Scripts de init em /etc/init.d podem depender de uma interface de rede específica ou só net. net pode ser definido em /etc/conf.d/rc para significar diferentes coisas usando a variável RC_NET_STRICT_CHECKING.

Valor Descrição
none O serviço net é considerado como sempre funcionando
no Basicamente significa que pelo menos um serviço net.* fora net.lo deve estar funcionando. Isto pode ser usado por usuários de notebooks que têm wifi e um nic estático, e só precisam de um funcionando para que o serviço net seja visto como funcionando.
lo É igual a opção no, mas net.lo também é contado. Deve ser útil para pessoas que não se importam se alguma interface específica está funcionando durante o carregamento.
yes TODAS interfaces de rede DEVEM estar funcionando para o serviço net ser considerado como funcionando.

Mas e o net.br0 dependendo de net.eth0 e net.eth1? net.eth1 pode ser um dispositivo wireless ou ppp que precisa de configuração antes de ser adicionado à ponte. Isto não pode ser feito em /etc/init.d/net.br0 já que é um link simbólico para net.lo.

É resposta é criar sua própria função depend() em /etc/conf.d/net.

Listagem de código 1.1: dependência net.br0 em /etc/conf.d/net

# Você pode usar qualquer dependência (use, after, before) como encontradas em scripts atuais
depend_br0() {
  need net.eth0 net.eth1
}

Para uma discussão mais detalhada sobre dependência, consulte a seção (Escrevendo scripts de init) no Manual do Gentoo.

1.  Nomes de variáveis e valores

Nomes de variáveis são dinâmicos. Normalmente seguem a estrutura variable_${interface|mac|essid|apmac}. Por exemplo, a variável dhcpcd_eth0 tem os valores das opções de dhcpcd para eth0 e dhcpcd_essid tem o valor das opções de dhcpcd quando qualquer interface conecta-se ao ESSID "essid".

No entanto, não existe nenhuma regra rígida e pronta que diz que nomes de interface devem ser ethx. Na verdade, muitas interfaces wireless têm nomes como wlanx, rax bem como ethx. Também, algumas intercaces definidas por usuários como pontes podem receber qualquer nome, como foo. Para tornar a vida mais interessante, pontos de acesso (AP) de wireless podem ter nomes com caracteres não alfa-numéricos neles - isto é importante porque você pode configurar parâmetros de rede por ESSID.

O ponto negativo disto é que o Gentoo usa variáveis de bash para rede - e o bash não pode usar nada fora caracteres ingleses alfa-numéricos. Para contornar esta limitação nós trocamos cada caractere que não é inglês alfa-numérico em um caractere _.

Outro ponto negativo do bash é o conteúdo das variáveis - alguns caracteres precisam de escape. Isto pode ser feito colocando o caractere \ na frente do caractere que precisa ser escapado. A seguinte lista de caracteres precisa ser escapada do seguinte jeito: ", ' e \.

Neste exemplo nós usados ESSID de wireless já que contêm o maior escopo de caracteres. Nós usaremos a ESSID My "\ NET:

Listagem de código 1.1: exemplo de nome de variável

# Isto funciona, mas o domínio é inválido
dns_domain_My____NET="My \"\\ NET"

# A parte acima configura o domínio de dns para My "\ NET quando um cartão de wireless
# conecta-se a um AP cujo ESSID é My "\ NET

Atualizado 22 de dezembro de 2005

A versão original deste documento foi atualizada em 19 de agosto de 2011

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.