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
ohai
usa route
para 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 route
não se importa com os aliases nas interfaces ( venet0:0
e venet0:1
são aliases da venet0
interface), ele assume que tudo o que é enviado através dos aliases sai no mesmo dispositivo, portanto é listado venet0
como 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.rb
emLú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 iproute
pacote) 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?