본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

링크 로컬 주소(Link-local address)는 같은 링크(라우터를 거치지 않는 하나의 네트워크 구간) 안에서만 쓸 수 있고 라우터가 다른 네트워크로 전달하지 않는 IP 주소이다. IPv4 에서는 169.254.0.0/16, IPv6 에서는 fe80::/10 이 이 용도로 예약되어 있다.

DHCP 서버가 없거나 응답하지 않는 네트워크에서도 장치끼리 바로 통신할 수 있게 하려고 만든 주소다. 관리자가 주소를 따로 설정하지 않아도 장치가 스스로 주소를 정한다는 점에서 제로 설정 네트워킹(Zero Configuration Networking, Zeroconf)의 첫 단계에 해당한다. Zeroconf 는 주소 자동 설정, 이름 풀이(mDNS), 서비스 검색(DNS-SD)을 묶어 부르는 말이며, 애플의 Bonjour 와 리눅스의 Avahi 가 이를 구현한다.

IPv4 링크 로컬 주소의 동적 설정 절차는 RFC 3927 에 정해져 있다.[1]

IPv4 링크 로컬 (169.254.0.0/16)

편집 원본 편집
  • 장치는 169.254.1.0 ~ 169.254.254.255 범위에서 주소 하나를 임의로 고른다. 앞뒤 256개(169.254.0.x, 169.254.255.x)는 예약되어 쓰지 않는다.
  • 고른 주소를 다른 장치가 쓰고 있는지 ARP 탐색(probe)으로 확인한 뒤, 충돌이 없으면 사용한다.
  • 서브넷 마스크는 255.255.0.0 이다. 라우터는 이 대역의 패킷을 다른 네트워크로 전달하지 않는다.
  • 윈도우에서는 이 기능을 APIPA(Automatic Private IP Addressing, 자동 사설 IP 주소 지정)라고 부른다. `ipconfig` 결과에 169.254.x.x 가 보이면 DHCP 서버에서 주소를 받지 못했다는 뜻이다. → 윈도우 ipconfig
  • 사설 IP 대역(10/8, 172.16/12, 192.168/16)과는 다르다. 사설 IP 는 관리자나 DHCP 가 할당하고 라우터로 내부망 안의 다른 서브넷에도 갈 수 있다.
  • 클라우드 가상 머신의 메타데이터 서버 주소 169.254.169.254 도 이 대역을 쓴다.

리눅스의 169.254.0.0 경로와 NOZEROCONF

편집 원본 편집

예전 레드햇 계열(RHEL·CentOS 6 이하, 페도라)은 네트워크를 올릴 때 인터페이스마다 169.254.0.0/16 경로를 라우팅 테이블에 자동으로 추가했다. Zeroconf 장치와 통신하기 위한 것이다.

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref Use Iface
192.168.159.0   0.0.0.0         255.255.255.0   U     1      0   0   eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0   0   eth0
0.0.0.0         192.168.159.2   0.0.0.0         UG    0      0   0   eth0

이 경로가 필요 없으면 /etc/sysconfig/network 에 NOZEROCONF=yes 를 넣고 네트워크를 다시 시작한다. 인터페이스 하나에만 적용하려면 /etc/sysconfig/network-scripts/ifcfg-eth0 에 넣는다.

# cat >> /etc/sysconfig/network << __EOF__
> NOZEROCONF=yes
> __EOF__
# service network restart
  • 변수 이름은 NOZEROCONF(Zeroconf 를 쓰지 않음)이고 값이 yes 여야 경로가 빠진다. `NOZEROCONF=no` 는 경로를 그대로 두며, `ZEROCONF` 라는 변수는 없다.
  • 지금 당장만 지우려면 `route del -net 169.254.0.0 netmask 255.255.0.0 dev eth0` 또는 `ip route del 169.254.0.0/16 dev eth0` 을 쓴다. 재부팅하면 다시 생긴다. → 리눅스 route
  • RHEL 7 이후 NetworkManager 가 관리하는 시스템은 기본적으로 이 경로를 넣지 않는다.

IPv6 링크 로컬 (fe80::/10)

편집 원본 편집
  • IPv6 를 켠 인터페이스는 반드시 링크 로컬 주소를 하나 가진다. 보통 fe80::/64 에 인터페이스 식별자(EUI-64 또는 임의 값)를 붙여 만든다.
  • 이웃 탐색(NDP), 라우터 광고 수신, 라우팅 프로토콜의 이웃 주소처럼 같은 링크 안의 제어 통신에 쓴다.
  • 여러 인터페이스에 같은 fe80:: 대역이 있으므로 `fe80::1%eth0` 처럼 인터페이스(존 ID)를 붙여 지정한다.
  1. ↑ 「Dynamic Configuration of IPv4 Link-Local Addresses」, RFC 3927, IETF, 2005.