Alterar a ordem dos endereços IP retornados pelo ifconfig?

Alterar a ordem dos endereços IP retornados pelo ifconfig?

Eu tenho um servidor Ubuntu com vários endereços IP anexados a ele. 127.0.0.1 está listado como venet0 por ifconfig. estou a usarChefe de cozinhapara configurar o servidor. O problema é que o chef está listando 127.0.0.1 como o endereço IP do servidor, em vez de um dos IPs "reais" do servidor. (aparente "ohai ipaddress" usa o primeiro IP listado por ifconfig para determinar o IP do servidor).

Como posso alterar a ordem para que o IP principal dos servidores seja listado primeiro em vez de 127.0.0.1?

O venet0 pode ser excluído e o venet0:0 ser "promovido" para ocupar seu lugar, já que 127.0.0.1 já está listado na interface "lo"?

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:334 errors:0 dropped:0 overruns:0 frame:0
          TX packets:334 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:16700 (16.7 KB)  TX bytes:16700 (16.7 KB)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:127.0.0.1  P-t-P:127.0.0.1  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:7622207 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8183436 errors:0 dropped:1 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2102750761 (2.1 GB)  TX bytes:2795213667 (2.7 GB)

venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:XXX.XXX.XXX.XX1  P-t-P:XXX.XXX.XXX.XX1  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

venet0:1  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:XXX.XXX.XXX.XX2  P-t-P:XXX.XXX.XXX.XX2  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

rota -n

route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.0.2.1       0.0.0.0         255.255.255.255 UH    0      0        0 venet0
0.0.0.0         192.0.2.1       0.0.0.0         UG    0      0        0 venet0

Responder1

ohaiusa routepara encontrar a "interface padrão" encontrando seu gateway padrão (destino 0.0.0.0):

network[:default_interface] = from("route -n \| grep -m 1 ^0.0.0.0 \| awk \'{print \$8\}\'")

(Delinha 21 a partir de agora)

O problema é que routenão se importa com os aliases nas interfaces ( venet0:0e venet0:1são aliases da venet0interface), ele assume que tudo o que é enviado através dos aliases sai no mesmo dispositivo, portanto é listado venet0como a interface de saída. Isso é lógico quando a interface é física, mas quando é uma interface virtual pode estar errado (eéerrado neste caso). Por causa desse comportamento, também é tecnicamente errado que ohai confie nele para determinar o endereço IP "correto" a ser usado, mesmo que o endereço IP base não seja 127.0.0.1.

A solução ideal será reconfigurar as configurações de rede para que a interface venet0 sem alias seja o seu "IP primário". Se você REALMENTE precisa que venet0 seja 127.0.0.1 por algum motivo (não estou familiarizado com as interfaces venet*, então não sei por que você fez isso dessa maneira ou o que aconteceria se venet0 fosse o endereço IP principal em vez de 127.0 .0.1), então você pode tentar encontrar esse arquivo network.rb ( /usr/lib/ruby/1.8/ohai/plugins/linux/network.rbemLúcido) e editando-o para ler

network[:default_interface] = "venet0:0"

(ou qualquer interface que você deseja relatar como o endereço correto). Não sei se from() remove a nova linha que o comando imprimiria no final, então pode ser necessário "venet0:0\n"que ohai funcione corretamente. Observe que isso será substituído quando você atualizar o pacote em que estava.

Pessoalmente, estou curioso para saber se ip route list(do iproutepacote) mostra sua rota "padrão" usando a interface venet0 ou a interface venet0:0. Da mesma maneira, netstat -r. Se algum deles mostrar venet0:0 então você pode sugerir em um relatório de bug para ohai que eles tentem esses comandos primeiro e se não funcionarem, tente novamente com o comando de rota "normal".

Responder2

Não conheço uma maneira de fazer isso, a menos que você remova o dispositivo de loop back. Não quero ser intrometido, mas por que importa a ordem em que eles estão?

Responder3

Você pode mudar as coisas reorganizando as entradas no arquivo /etc/udev/rules.d/70-persistent-net.rules.

Se você não tiver nenhuma entrada, tente adicionar a sua própria. Isto é um exemplo:

# PCI device 0xXXXX:0xXXXX (XXXX)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:00:00:00:00:00", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Responder4

Pode ser nada mais do que coincidência, mas parece-me que está sendo classificado alfanumericamente pelo nome da interface. Vejo a mesma coisa em minhas caixas Linux.

Não sei nada sobre o Chef, mas você pode canalizar a saída do ifconfig por meio de um script que irá reorganizá-lo na ordem que você desejar?

informação relacionada