이더넷 케이블을 통해 로컬 네트워크에 연결된 임베디드 Linux 장치가 있습니다. 서브넷의 로컬 IP 주소를 통해 각 장치에 액세스합니다. 192.168.34.0/24.
예를 들어 한 장치에는 192.168.34.240
.
ifconfig
장치 내부의 터미널에서 실행하면 아래와 같이 169로 시작하는 다른 IP 주소가 나타납니다. 혼란스러워요. 왜 이런거야?
eth0 Link encap:Ethernet HWaddr 00:D0:91:4B:45:C9
inet addr:169.254.253.217 Bcast:169.254.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:634513 errors:0 dropped:3 overruns:0 frame:0
TX packets:1318475 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:78343668 (74.7 MiB) TX bytes:399586128 (381.0 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:24085508 errors:0 dropped:0 overruns:0 frame:0
TX packets:24085508 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:11614050334 (10.8 GiB) TX bytes:11614050334 (10.8 GiB)
답변1
20년 넘게 ioctl 기반으로 사용되어 온 Linux에서 ifconfig
오래된 커널 API(ioctl 기반)를 사용했기 때문입니다.넷링크 소켓 메시지. 이전 API의 기타 제한사항은 다음과 같습니다.
- 만 처리할 수 있다하나IPv4 주소(여러 IPv6 주소를 처리할 수 있음) 이 주소를 삭제하는 것조차 패치워크로 수행됩니다. 주소를 0.0.0.0으로 설정합니다.
- 주소에 대한 네트워크 마스크는 설정할 때 제공되지 않습니다. 따라서 주소를 할당하려면 일반적으로 두 개의 시스템 호출이 필요합니다. 하나는 주소(호스트 부분)에 대한 호출이고 다른 하나는 해당 넷마스크를 수정하는 호출입니다.
- 여러 IPv4 주소 처리도 패치워크를 통해 수행됩니다. 즉, 소위 별칭 인터페이스(실제로는 별도의 인터페이스가 아닌 주소의 레이블을 통해 구현됨)만 수행되고
ifconfig
다른 부분(라우팅, 방화벽...)은 수행되지 않습니다. - OP에 표시된 대로 태그가 없는(따라서 최신 API 구성을 사용하는) 다른 IP 주소는 전혀 차단되지 않습니다
ifconfig
.
분명히 주소 레이블이 없으면(이름이 올바르게 지정되면 별칭 인터페이스로 표시됨 ifconfig
) 네트워크는 최신 netlink 기반 API를 사용하여 구성됩니다. 따라서 최신 도구를 사용하고 ifconfig
완전히 제거하여 내장 공간을 절약할 수도 있습니다.
ip address
IPv4 주소가 두 개 이상인 경우 여러 IPv4 주소를 포함하여 모든 인터페이스에 할당된 모든 주소가 표시됩니다.
최신 API를 사용하여 다시 구현할 수 있지만 ifconfig
(적어도 UL SE의 일반 사용자는 그렇습니다), 이 명령은 (천천히) 교체하기보다는 업그레이드(예: 다른 *NIX와의 호환성을 위해)가 필요한 것 같습니다. 대부분의 Linux 개발자 또는 배포판 관리자는 최신 도구에 관심이 없습니다.
따라서 Linux에서는 다음을 사용하는 것을 고려해야 합니다.ip link
그리고ip address
바꾸다 ifconfig
. 마찬가지로 ip route
교체하려면 route
,bridge
(제외 ip link
) brctl
다른 하위 명령 교체ip
다양한 기타 명령을 대체합니다(VLAN, 터널, 결합된 인터페이스...).
이제 주소가 여러 개인 이유에 대해 이야기하겠습니다. 가능한 이유는 장치가넘쳐/제로 구성(Apple의 Bonjour 구현과 동일) LAN을 통해 통신하고 기능을 알립니다. 또한 표준 통신(인터넷 포함)을 위해 DHCP로 구성될 수도 있습니다. Zeroconf 사용(라우팅할 수 없음)IPv4LL주소는 DHCP를 사용하여 가져오는 일반적인 주소와 별개입니다.