루프백 네트워크 인터페이스가 있는 FreeBSD 시스템에서...
% ifconfig lo0 로 0 링크 루프백 drv_running 멀티캐스트 실행 중 nd6 Performnud auto_linklocal no_radr 링크 rxcsum txcsum hwcsum rxcsum_ipv6 txcsum_ipv6 링크 주소 측정항목 0mtu 16384 유형 24 링크 상태 0 물리적 0 전송 속도 0 inet4 주소 127.0.0.1 prefixlen 8 bdaddr 127.0.0.1 inet6 주소::1 범위 0 prefixlen 128 bdaddr ::1 범위 0 inet6 주소 fe80::1 범위 3 prefixlen 64 inet6 주소::2 범위 0 prefixlen 128 inet4 주소 127.53.0.1 prefixlen 8 bdaddr 127.53.0.1 inet4 주소 127.53.1.1 prefixlen 8 bdaddr 127.53.1.1 %
... IP 주소 127.0.0.2(이(또는 다른) 네트워크 인터페이스에 할당되지 않음)를 핑하면 오류가 발생합니다.
% 핑 -c 1 127.0.0.2 PING 127.0.0.2(127.0.0.2): 56 데이터 바이트 ping: sendto: 네트워크에 연결할 수 없습니다. --- 127.0.0.2 핑 통계 --- 1개 패킷 전송, 0개 패킷 수신, 100.0% 패킷 손실 %
OpenBSD도 마찬가지입니다.
% 핑 -c 1 127.0.0.2 PING 127.0.0.2(127.0.0.2): 56 데이터 바이트 ping: sendto: 네트워크에 연결할 수 없습니다. 핑: 127.0.0.2 64자 쓰기, ret=-1 --- 127.0.0.2 핑 통계 --- 1개 패킷 전송, 0개 패킷 수신, 100.0% 패킷 손실 %
하지만 Linux에서는 127.0.0.2도 구성되지 않습니다.
% ifconfig LO 루오 링크 루프백 작업 링크주소 00:00:00:00:00:00 bdaddr 00:00:00:00:00:00 inet4 주소 127.0.0.1 prefixlen 8 bdaddr 127.0.0.1 inet4 주소 127.53.0.1 prefixlen 8 bdaddr 127.255.255.255 inet6 주소::2 범위 0 prefixlen 128 inet6 주소 fe80:: 범위 1 prefixlen 10 inet6 주소::1 범위 0 prefixlen 128 %
... 핑은 놀라울 정도로 성공적입니다.
% 핑 -c 1 127.0.0.2 PING 127.0.0.2 (127.0.0.2) 56(84) 바이트의 데이터. 127.0.0.2의 64바이트: icmp_seq=1 ttl=64 time=0.044 ms --- 127.0.0.2 핑 통계 --- 1개의 데이터 패킷 전송, 1개의 데이터 패킷 수신, 패킷 손실 0%, 시간 0ms rtt 최소/평균/최대/mdev = 0.044/0.044/0.044/0.000밀리초 %
어떻게요?
관련 질문
- "네트워크 인터페이스에 IP 주소를 할당할 필요가 없는 경우는 언제입니까?" - "가상 인터페이스"에 대한 설명을 묻는 매우 우회적인 질문입니다. 이 질문은 직접적으로 묻습니다.
- "127.0.0.0/8을 모두 성공적으로 ping하려면 어떻게 해야 합니까?" — 질문당 하나의 질문이 아닌 여러 질문이 하나로 통합되었습니다.사실 답이 없음소위 반복으로
- "루프백 인터페이스를 통해 Linux 네트워크에서 이 동작이 발생하는 이유는 무엇입니까?
lo
" - Linux에서 인터페이스가 보이는 이유반품할당된 IP 주소의 핑 기능을 제어합니다.다른네트워크 인터페이스(역시 BSD에서의 동작은 아님) - "루프백이 아닌 주소로 향하는 Linux의 로컬 LAN 트래픽은 어떻게 되나요?"——에 관한 이야기비루프백행동
기타 참고자료
- 조나단 데보인 폴라드(2019).
ifconfig
. 스낵 가이드. 소프트웨어.
답변1
ip-route
커널 라우팅 테이블의 항목을 조작하는 데 사용됩니다.경로 유형:
unicast
- 라우팅 항목은 라우팅 접두사가 포함된 대상까지의 실제 경로를 설명합니다....
local
- 대상이 이 호스트에 할당됩니다. 패킷이 루프백됨그리고 현지에서 배달됨.
$ ip -4 route show table all type local
local 127.0.0.0/8 dev lo table local proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo table local proto kernel scope host src 127.0.0.1
local 172.16.8.139 dev wlp2s0 table local proto kernel scope host src 172.16.8.139
local 192.168.122.1 dev virbr0 table local proto kernel scope host src 192.168.122.1
$ ip -4 address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
4: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
inet 172.16.8.139/24 brd 172.16.8.255 scope global dynamic noprefixroute wlp2s0
valid_lft 36391sec preferred_lft 36391sec
5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
인터페이스에 주소가 추가되면 해당 주소에 대한 로컬 경로가 자동으로 추가됩니다. 또한 루프백 인터페이스( )에 주소가 추가되면 IFF_LOOPBACK
해당 인터페이스에 대한 로컬 경로도 추가됩니다.네트워크 접두사주소. Linux 5.0에서는 이 구현을 찾을 수 있습니다.fib_add_ifaddr().
반대로, 루프백이 아닌 인터페이스에 주소를 추가하는 경우,유니캐스트네트워크 접두사에 대한 경로를 추가합니다.
$ ip -4 route show table all type unicast
default via 172.16.8.1 dev wlp2s0 proto dhcp metric 600
172.16.8.0/24 dev wlp2s0 proto kernel scope link src 172.16.8.139 metric 600
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown
로컬 경로는 "local"이라는 특정 테이블에 추가됩니다. 이것의 가장 분명한 의미는 fast가 ip -4 route
로컬 테이블을 표시하지 않는다는 것입니다. 와 동등하기 때문입니다 ip -4 route show table main
.
linux-ip.net에는 일부가 있습니다더 넓은 정보. 로컬 테이블의 다른 두 가지 용도에 대해 언급합니다.
위 내용은 사용하는 모든 Linux 버전에 적용될 수 있습니다. 정확히 얼마나 거슬러 올라가는지는 잘 모르겠습니다. 그러나 이 ip route
명령은 매우 오래된 것입니다. 적어도 Linux 2.2 시대로 거슬러 올라갑니다.