ifconfig에서 반환된 IP 주소의 순서를 변경하시겠습니까?

ifconfig에서 반환된 IP 주소의 순서를 변경하시겠습니까?

여러 IP 주소가 연결된 Ubuntu 서버가 있습니다. 127.0.0.1은 ifconfig에 의해 venet0으로 나열됩니다. 나는 사용하고있다요리사서버를 구성합니다. 문제는 Chef가 서버의 "실제" IP 중 하나가 아닌 서버의 IP 주소로 127.0.0.1을 나열한다는 것입니다. (명백한 "ohai ipaddress"는 ifconfig에 나열된 첫 번째 IP를 사용하여 서버의 IP를 결정합니다).

서버 기본 IP가 127.0.0.1 대신 먼저 나열되도록 순서를 변경하려면 어떻게 해야 합니까?

127.0.0.1이 이미 "lo" 인터페이스에 나열되어 있으므로 venet0을 삭제하고 venet0:0을 "승격"하여 그 자리를 차지할 수 있습니까?

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

경로 -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

답변1

ohairoute기본 게이트웨이(대상 ​​0.0.0.0)를 찾아 "기본 인터페이스"를 찾는 데 사용됩니다 .

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

(에서지금 21번째 줄)

문제는 인터페이스의 별칭(인터페이스 의 별칭 ) route을 신경 쓰지 않고 별칭을 통해 전송된 모든 항목이 모두 동일한 장치로 나가는 것으로 가정하므로 발신 인터페이스로 나열된다는 것입니다. 이는 인터페이스가 물리적 인터페이스인 경우 논리적이지만 가상 인터페이스인 경우에는 잘못될 수 있습니다.venet0:0venet0:1venet0venet0~이다이 경우에는 잘못된 것입니다). 이러한 동작으로 인해 ohai가 기본 IP 주소가 127.0.0.1이 아니더라도 사용할 "올바른" IP 주소를 결정하기 위해 이에 의존하는 것도 기술적으로 잘못된 것입니다.

이상적인 수정은 별칭이 지정되지 않은 venet0 인터페이스가 "기본 IP"가 되도록 네트워크 설정을 재구성하는 것입니다. 어떤 이유로 venet0이 127.0.0.1이 되어야 하는 경우(저는 venet* 인터페이스에 익숙하지 않아서 왜 이런 식으로 설정했는지 또는 venet0이 127.0이 아닌 기본 IP 주소인 경우 어떻게 되는지 모르겠습니다. .0.1) 그런 다음 해당 network.rb 파일 /usr/lib/ruby/1.8/ohai/plugins/linux/network.rb(맑은) 그리고 그것을 읽을 수 있도록 편집

network[:default_interface] = "venet0:0"

(또는 올바른 주소로 보고하려는 인터페이스). from()이 명령이 마지막에 인쇄할 개행 문자를 제거하는지 알 수 없으므로 "venet0:0\n"ohai가 올바르게 작동해야 할 수도 있습니다. 이는 원래 있던 패키지를 업그레이드하면 교체됩니다.

ip route list(패키지에서 iproute) venet0 인터페이스 또는 venet0:0 인터페이스를 사용하여 "기본" 경로를 표시하는지 개인적으로 궁금합니다 . 비슷하게, netstat -r. 둘 중 하나라도 venet0:0이 표시되면 ohai에 대한 버그 보고서에서 해당 명령을 먼저 시도하고 작동하지 않으면 "normal" 경로 명령을 사용하여 다시 시도하도록 제안할 수 있습니다.

답변2

루프백 장치를 제거하지 않는 한 이 작업을 수행할 수 있는 방법을 모르겠습니다. 참견하지 말고 순서가 무엇인지가 왜 중요합니까?

답변3

의 항목을 다시 정렬하여 상황을 변경할 수 있습니다 /etc/udev/rules.d/70-persistent-net.rules.

거기에 항목이 없으면 직접 추가해 보세요. 이것은 예입니다:

# 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"

답변4

우연일 수도 있지만 인터페이스 이름을 기준으로 영숫자순으로 정렬된 것처럼 보입니다. 내 Linux 상자에서도 같은 내용을 볼 수 있습니다.

나는 Chef에 대해 아무것도 모르지만 원하는 순서로 재정렬하는 스크립트를 통해 ifconfig의 출력을 파이프할 수 있습니까?

관련 정보