에서 위키 백과 :
루프백 장치에서 가장 일반적으로 사용되는 IP 주소는 IPv4의 경우 127.0.0.1이지만 127.0.0.0에서 127.255.255.255 범위의 주소가 매핑됩니다.
적어도 FreeBSD에서는 그렇지 않습니다 :
$ ping 127.1.1.1
PING 127.1.1.1 (127.1.1.1): 56 data bytes
ping: sendto: Can't assign requested address
이것이 올바른 행동입니까?
답변
FreeBSD (OS X 및 NetBSD & OpenBSD)는 다른 인터페이스의 주소와 마찬가지로 루프백 인터페이스의 구성된 주소로 전송 된 요청에 응답 할 것입니다. 응답을 원하면 먼저 주소를 할당해야합니다 :
mgraziano@monitor ~]$ ifconfig lo0
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
[mgraziano@monitor ~]$ ping 127.1.1.1
PING 127.1.1.1 (127.1.1.1): 56 data bytes
ping: sendto: Can't assign requested address
^C
[mgraziano@monitor ~]$ sudo ifconfig lo0 alias 127.1.1.1 netmask 0xFFFFFFFF
[mgraziano@monitor ~]$ ifconfig lo0
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
inet 127.1.1.1 netmask 0xffffffff
nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
[mgraziano@monitor ~]$ ping 127.1.1.1
PING 127.1.1.1 (127.1.1.1): 56 data bytes
64 bytes from 127.1.1.1: icmp_seq=0 ttl=64 time=0.020 ms
^C
이 구현의 논리에 대해서는 RFC 3330을 참조하십시오 .
127.0.0.0/8-이 블록은 인터넷 호스트
루프백 주소 로 사용되도록 할당됩니다 . 상위 레벨 프로토콜
에서이 블록 내의 주소로 전송 된 데이터 그램 은 호스트 내부에서 루프백해야합니다.
이것은 일반적으로 단지 127.0.0.1/32 루프백을 사용하여 구현됩니다 ,
하지만,이 블록 내에 주소는 과거의 어떤 네트워크에 표시되지 않아야
어디서든 [ RFC1700 , 5 페이지].
(강조 표시)
Linux와 Windows는 여기에서 “도움이됩니다”. 그러나이 호스트에 할당되지 않은 주소로 전송 된 요청에 응답하는 내 의자에서 올바른 동작이 아닙니다 …
답변
FreeBSD 8.1에서 설명한 것과 같은 동작을 봅니다. FreeBSD와 DNA를 공유하는 Mac OS X도 127.0.0.1 만 매핑하는 것 같습니다.
Windows 7 및 Linux (2.6.26 커널을 사용하는 데비안)는 모두 Wikipedia 견적에 설명 된대로 (RFC에 규정 된대로) 전체 주소 범위를 매핑하는 것으로 보입니다.
RFC 3330에서 인용하려면 :
127.0.0.0/8-이 블록은 인터넷 호스트 루프백 주소로 사용되도록 할당됩니다. 상위 레벨 프로토콜에서이 블록 내의 주소로 전송 된 데이터 그램은 호스트 내부에서 루프백해야합니다. 이것은 일반적으로 루프백을 위해 127.0.0.1/32 만 사용하여 구현되지만이 블록 내의 주소는 어느 네트워크에도 나타나지 않아야합니다 [RFC1700, 페이지 5].
“should”라는 단어를 얼마나 엄격하게 해석 하느냐에 따라 일부는 FreeBSD / MacOS 동작이 잘못 될 수 있습니다. 그러나 루프백 주소로 127.0.0.1을 유비쿼터스로 사용하면 문제가 될지 의심됩니다.
답변
트렌드를 버리고 있습니다. FreeBSD 또는 구성 여부를 확인하는 데 편리한 FreeBSD 상자가 없습니다.
RFC는 127.0.0.1/24라고 말하고 있으므로 응답해야합니다.
답변
질문은 지금까지 세 번 정도 완전히 대답되었으므로 센트를 추가하고 싶었습니다.
꽤 오랜 시간 동안 기본 ipfw 설정은 이러한 종류의 패킷을 삭제합니다.
./rc.firewall: ${fwcmd} add 100 allow ip from any to any via lo0
./rc.firewall: ${fwcmd} add 300 deny ip from 127.0.0.0/8 to any
방화벽 대신 방화벽을 사용
ping: sendto: Can't assign requested address
당신은 얻을 수 있습니다
[savetherbtz@PH34R ~]$ ping 127.0.0.2
PING 127.0.0.2 (127.0.0.2): 56 data bytes
ping: sendto: Permission denied
추신. 원인없이 INET
(IPv4 지원) 없이 서버를 구축 할 수 있으며 짝수도 가질 수 없습니다 127.0.0.1
)