Tengo un servidor Ubuntu con varias direcciones IP adjuntas. 127.0.0.1 aparece como venet0 en ifconfig. Estoy usandoCocineropara configurar el servidor. El problema es que chef incluye 127.0.0.1 como dirección IP para el servidor en lugar de una de las IP "reales" del servidor. (la aparente "ohai ipaddress" usa la primera IP enumerada por ifconfig para determinar la IP del servidor).
¿Cómo puedo cambiar el orden para que la IP principal del servidor aparezca primero en lugar de 127.0.0.1?
¿Se puede eliminar venet0 y "promocionar" venet0:0 para que ocupe su lugar ya que 127.0.0.1 ya aparece en la interfaz "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
ruta -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
Respuesta1
ohai
utiliza route
para encontrar la "interfaz predeterminada" buscando su puerta de enlace predeterminada (destino 0.0.0.0):
network[:default_interface] = from("route -n \| grep -m 1 ^0.0.0.0 \| awk \'{print \$8\}\'")
(Delínea 21 a partir de ahora)
El problema es que route
no le importan los alias en las interfaces ( venet0:0
y venet0:1
son alias de la venet0
interfaz), se supone que todo lo enviado a través de los alias sale al mismo dispositivo, por lo que aparece venet0
como la interfaz saliente. Esto es lógico cuando la interfaz es física, pero cuando es una interfaz virtual podría estar mal (yesincorrecto en este caso). Debido a este comportamiento, también es técnicamente incorrecto que ohai confíe en él para determinar la dirección IP "correcta" a usar, incluso si la dirección IP base no fuera 127.0.0.1.
La solución ideal será reconfigurar los ajustes de su red para que la interfaz venet0 sin alias sea su "IP principal". Si REALMENTE necesitas que venet0 sea 127.0.0.1 por alguna razón (no estoy familiarizado con las interfaces venet*, así que no sé por qué lo tienes de esta manera o qué pasaría si venet0 fuera la dirección IP principal en lugar de 127.0 .0.1), entonces podrías intentar encontrar ese archivo network.rb ( /usr/lib/ruby/1.8/ohai/plugins/linux/network.rb
enLúcido) y editarlo para leer
network[:default_interface] = "venet0:0"
(o cualquier interfaz que desee que informe como la dirección correcta). No sé si from() elimina la nueva línea que el comando imprimiría al final, por lo que podría ser necesario "venet0:0\n"
para que ohai funcione correctamente. Tenga en cuenta que esto será reemplazado cuando actualice el paquete en el que se encontraba.
Personalmente tengo curiosidad por saber si ip route list
(desde el iproute
paquete) muestra su ruta "predeterminada" usando la interfaz venet0 o la interfaz venet0:0. Asimismo, netstat -r
. Si alguno muestra venet0:0, entonces podría sugerir en un informe de error a ohai que prueben esos comandos primero y, si no funcionan, intenten nuevamente con el comando de ruta "normal".
Respuesta2
No conozco una manera de hacer esto, a menos que simplemente retires el dispositivo de bucle invertido. No quiero ser entrometido, pero ¿por qué importa en qué orden estén?
Respuesta3
Es posible que puedas cambiar las cosas reorganizando las entradas en /etc/udev/rules.d/70-persistent-net.rules
.
Si no tiene ninguna entrada allí, puede intentar agregar la suya propia. Esto es un ejemplo:
# 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"
Respuesta4
Puede que no sea más que una coincidencia, pero me parece que está ordenado alfanuméricamente por nombre de interfaz. Veo lo mismo en mis cajas de Linux.
No sé nada sobre Chef, pero ¿puedes canalizar la salida de ifconfig a través de un script que la reorganice en el orden que desees?