Computer Network

4. System Configuration: DHCP & Autoconfiguration - 2

Beige00 2025. 1. 22. 17:23

3. Stateless Address Autoconfiguration (SLAAC)

대부분의 라우터는 수동으로 주소가 구성되지만, 호스트는 수동으로 주소를 할당하거나 DHCP와 같은 할당 프로토콜을 사용하거나 다른 알고리즘을 통해 자동으로 주소를 할당받을 수 있다. 자동 할당은 생성되는 주소 유형에 따라 두 가지 형태로 나뉜다.

1. Link-Local address : 로컬 주소의 경우 단일 링크에서만 사용되고 따라서 호스트는 로컬에서 사용되고 있지 않은 적절한 주소를 찾아야한다.

2. Global connectivity address : 글로벌 연결을 위한 주소는 일반적으로 따로 관리해줘야하는 부분이 생긴다.

IPv4와 IPv6 모두에서 Link-Local address autoconfiguration 매커니즘이 존재하며 이를 통해 호스트는 외부 도움 없이 스스로 자신의 주소를 결정할 수 있다. 이를 SLAAC라고 한다.

 

1. Dynamic Configuration of IPv4 Link-Local Addresses

수동으로 구성된 주소가 없는 호스트가 DHCP 서버가 만들어지지 않은 네트워크에 합류하는 경우, 호스트가 IP 주소를 생성하여 사용하지 않는 한 누군가 만들어주지 않기에 IP 기반 통신이 불가능해진다. 

이를 해결하기 위해 RFC3927에서는 호스트가 Link-Local 범위 169.254.1.1에서 169.254.254.254 까지의 IPv4 주소를 서브넷 마스크 255.255.0.0을 사용해 자동으로 생성할 수 있는 메커니즘을 설명한다. 이 방법은 Dynamic Link-Local address configuration 또는 Automatic Private IP Addressing으로 알려져있다. 호스트가 해당 범위에서 랜덤한 주소를 선택하여 사용하고 해당 주소가 같은 서브네트워크의 다른 시스템에서 이미 사용 중인지를 확인하는 것이다. 이는 IPv4 ACD를 사용하여 구현된다.


2. IPv6 SLAAC for Link-Local Addresses

IPv6 SLAAC의 목표는 노드가 자동으로(독립적으로) Link-Local IPv6 주소를 자체 할당할 수 있도록 하는 것이다. IPv6 SLAAC은 다음의 3가지 단계를 따른다.

1. Link-Local Address 획득

2. SLAAC를 사용하여 글로벌 주소 획득

3. Link-Local address의 충돌 여부 감지

만약 라우터가 없는 경우 SLAAC는 Link-Local address만 할당한다. 라우터가 있을 경우 SLAAC는 라우터가 광고하는 prefix와 local generate information을 조합하여 글로벌 주소를 생성한다. SLAAC은 DHCPv6와 함께 사용될 수 있으며 이를 통해 호스트가 주소 외의 정보를 얻을 수 있다. 일반적으로 stateful DHCPv6는 호스트에 주소를 할당하는 데 있어 더 세부적인 제어가 가능하지만, stateless DHCPv6와 SLAAC의 조합이 더 일반적이다. IPv6에서 예비 Link-Local 주소는 Link-Local prefix fe80::0을 기반으로 고유번호가 추가된다. 이는 주소의 오른쪽에서 N 비트를 고유 번호로 설정하고, 왼쪽해서 10비트 Link-Local prefix를 1111111010으로 설정하며 나머지는 0으로 채워진다는 소리이다. 생성된 주소는 중복 여부 검사를 거친 후 사용된다.

 

IPv6 DAD(Duplicate Address Detection)은 ICMPv6 Neighbor Solicitation(NS) 및 Neighbor Advertisement(NA)를 사용하여 특정 IPv6 주소가 로컬에서 이미 사용 중인지 확인한다. DAD가 성공하면 임시 주소는 preferred state으로 전환되며 제한 없이 사용할 수 있다. 먼저 노드는 All Nodes multicast 주소와 예비 주소의 Slicited-Node multicast 주소에 가입한다. 주소 중복을 확인하기 위해 노드는 하나 이상의 ICMPv6 Neighbor Solicitation(NS) 메시지를 전송한다. 이 메시지의 출발지와 목적지 IPv6 주소는 각각 unspecified address와 solicited address로 설정된다. Target address 필드는 확인 중인 주소로 설정된다. 만약 NA 메시지가 응답으로 수신되면 DAD 실패이다. 


3. IPv6 SLAAC for Global Addresses

노드가 Link Local address를 획득한 이후에는 하나 이상의 GA도 필요할 가능성이 높다. GA는 라우터가 제공하는 prefix를 사용하여 형성된다. 이 prefix는 RA의 Prefix 옵션에 포함되어 있으며, 해당 prefix를 SLAAC을 통해 GA를 형성하는 데 사용 여부는 플래그로 표시된다. 해당 플래그가 1일 시 prefix는 인터페이스 식별자와 결합되어 GA를 형성한다.

상단은 예시 사진이다. 시스템은 먼저 fe80::/64 Link-Local prefix와 랜덤 숫자를 기반으로 Link-Local address를 선택한다. 선택된 주소는 fe80::fd26::de93::5ab7::405a 이다. 이제 이 주소에 대해 DAD를 수행하게 된다.

Router solicitation 메시지는 All Routers multicast address ff02::2로 전송되며 Src 주소로 자동 설정된 Link-Local address IPv6 주소를 사용한다.

CS 간 NS 및 NA 메시지가 교환된 이후, 클라이언트는 새로 선택한 GA에 대해 또 한 번 DAD 작업을 수행한다. 클라이언트는 이전에 받았던 RA에 포함된 prefix 2001::db8을 기반으로 뒤에 자신의 Link-Local address를 붙여 GA를 생성했다. 따라서 이 두 주소의 DAD에 사용되는 Solicited-Node multicast address는 ff02::1:ffb7:405a 이다. 


4. Stateless DHCP

DHCP는 stateless 모드로 사용할 수 있다. 이 모드에서는 DHCPv6 서버가 주소를 할당하지 않으며 다른 구성 정보를 제공한다. Stateless DHCPv6 배포에서는 노드가 DHCPv6 이외의 방법을 사용해 주소를 이미 획득한 것으로 간주된다. 따라서 주소 관리 메시지, IA 바인딩 메시지 처리 필요가 없다. 이는 서버 소프트웨어와 서버 구성을 크게 단순화한다.

Stateless DHCPv6 client는 DHCPv6 INFORMATION-REQUEST 메시지를 사용해 서버로부터 REPLY 메시지에 포함된 정보를 요청한다. INFORMATION-REQUEST 메시지에는 클라이언트가 알고자 하는 옵션을 나열한 Option Request가 포함된다. 


5. The Utility of Address Autoconfiguration

IP address Autoconfiguration의 유용성은 일반적으로 제한적이다. 클라이언트와 동일한 네트워크에 있을 수 있는 로컬 라우터들이 사용 중인 특정 IP 주소 범위로 구성되어있어 클라리언트 자동 구성 주소와 다를 가능성이 있기 때문이다.

예를 들면 IPv4의 경우 라우터가 Link-Local prefix 169.254/16을 사용하는 경우는 매우 드물고, 클라이언트가 해당 프리픽스를 기반으로 IP 주소를 자체 할당했을 시 로컬 서브넷 엑세스는 작동해도 인터넷 라우팅과 DNS와 같은 Foreign network와의 소통은 불가능해질 가능성이 있다. 따라서 client는 정해준 주소를 사용하는 것이 더 유용한 경우가 많다.


4. DHCP and DNS Interaction

DHCP 클라이언트가 IP 주소를 할당받을 때 중요한 구성 정보 중 하나로 DNS 서버의 IP 주소를 포함한다는 점을 설명한다. 이 정보는 클라이언트 시스템이 DNS 이름을 IPv4 또는 IPv6로 변환할 수 있게 해주며 이는 Transport layer 연결에 필수이다. 제대로 동작하는 로컬 DNS는 인터넷 전반에 대한 주소 매핑을 제공할 뿐만 아니라 로컬 사설 네트워크에도 매핑을 제공할 수 있다. 로컬 사설 네트워크의 DNS 매핑을 수동으로 관리하는 것은 번거롭기 때문에 DHCP에서 할당된 주소 제공과 해당 주소에 대한 DNS 매핑을 업데이트하는 방법을 결합하는 것이 편리하다. 이는 통합 DHCP/DNS 서버 또는 Dynamic DNS를 사용하여 수행된다. DHCPREQUEST 메시지에 포함된 Client Identifier 또는  Domain Name을 읽고 DHCPACK을 보내기 전에 DNS DB에 이름과 주소의 바인딩을 업데이트한다.


5. PPP over Ethernet (PPPoE)

대부분의 LAN과 일부 WAN 연결에서는 DHCP가 클라이언트 시스템을 구성하는 가장 일반적인 방법을 사용한다. 그러나 DSL과 같은 WAN 연결에서는 종종 PPP를 기반으로 한 다른 방법이 사용된다. 이 방법은 이더넷에서 PPP를 운반하는 것으로 PPPoE라고 불린다. PPPoE는 WAN 연결 장치가 라우터 대신 스위치나 브릿지로 작동하는 경우에 사용된다. 

DSL(디지털 가입자 회선)은 P2P Digital link를 제공하며 POTS라고 불리는 기존의 아날로그 전화 회선과 동시에 작동할 수 있다. DSL modem은 ISP의 AC의 PPP 포트에 bridged service를 제공한다. AC는 고객의 modem line과 ISP의 네트워크 장비를 연결하는 역할을 한다. PPPoE는 단일 케이블을 사용하는 점대점 이더넷 네트워크(최소 구성 이더넷 LAN)를 통해 작동한다. 

DSL modem이 ISP와 하위 계층 링크를 설정한 이후 PC는 PPPoE 교환을 시작한다. 그 과정은 상단과 같다. 

이 프로토콜은 Discovery 단계와 PPP Session 단계로 구성된다. Discovery 단계에서는 여러 PPPoE Active Discovery(PAD) 메시지를 교환한다. PADI(Init), PADO(Offer), PADR(Request), PADS(Session Confirm) 교환이 완료되면 이더넷으로 캡슐화된 PPP 세션이 진행되며 PADT 메시지를 통해 세션 종료가 가능하다. 

PPPoE는 상단의 형식을 사용한다. PPPoE Ver와 Type 필드는 각각 4bit 길이이며 현재 PPPoE 버전에서는 0x1 값을 가진다. Code 필드는 PPPoE 메시지 유형을 나타낸다. Session ID 필드는 PADI, PADO, PADR 메시지에서는 0x0000 값을 가지며 이후 메시지에서는 고유한 16비트 번호를 포함한다. 이 값은 PPP 세션 단계 동안 동일하게 유지된다. 

PAD 메시지에는 하나 이상의 tags가 포함되며 이 태그는 16비트 TAG_TYPE 필드, 16비트 TAG_LENGTH 필드 그리고 가변 길이의 태그 값 데이터로 구성된 TLV 형식으로 배열된다. 


6. Attacks Involving System Configuration

시스템 및 네트워크 구성과 관련된 다양한 공격이 수행될 수 있다. 이러한 공격은 DHCP에 영향을 미치는 무단 클라이언트 또는 무단 서버의 배포에서부터 서버가 제공할 수 있는 모든 IP 주소를 요청해 자원 고갈을 노리는 DoS 공격까지 다양하다. 기존 IPv4 기반 프로토콜이 신뢰를 가정한 네트워크를 위해 설계되었기 때문에 이러한 문제는 지속적으로 발생하고 따라서 일반 DHCP 배포에서는 이러한 공격을 직접적으로 해결이 불가능하다. 단지 WPA2 등 링크 계층 인증이 특정 네트워크에 연결할 수 있는 무단 클라이언트의 수를 제한하는 데 도움을 줄 뿐이다.

'Computer Network' 카테고리의 다른 글

4. System Configuration: DHCP & Autoconfiguration - 1  (0) 2025.01.17
3. The Internet Protocol (IP) - 2  (0) 2025.01.14
3. The Internet Protocol (IP) - 1  (0) 2025.01.08
2. ARP : Address Resolution Protocol  (0) 2024.12.30
1. Link Layer - 2  (0) 2024.12.26