탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
![]() |
Oracle Solaris 관리: IP 서비스 Oracle Solaris 10 1/13 Information Library (한국어) |
1. Oracle Solaris TCP/IP 프로토콜 제품군(개요)
5. TCP/IP 네트워크 서비스 구성 및 IPv4 주소 지정(작업)
10. TCP/IP 및 IPv4에 대한 자세한 정보(참조)
DHCP 클라이언트 프로토콜이 네트워크 구성 정보를 관리하는 방법
DHCPv4 클라이언트가 네트워크 구성 정보를 관리하는 방법
DHCP 클라이언트에서 사용되는 ifconfig 명령 옵션
DHCPv4 클라이언트가 특정 호스트 이름을 요청하도록 설정하는 방법
DHCP 클라이언트를 NIS+ 클라이언트로 설정하는 방법
DHCP 클라이언트는 dhcpagent 데몬입니다. Oracle Solaris를 설치하면 DHCP를 사용하여 네트워크 인터페이스를 구성할지 묻는 메시지가 표시됩니다. DHCPv4에 대해 Yes(예)를 지정하면 Oracle Solaris 설치 중 해당 프로토콜이 시스템에서 사용으로 설정됩니다. DHCPv6에 대해서는 설치 시 옵션이 없습니다. 하지만 관련 질문은 IPv6에 대한 것입니다. IPv6을 사용으로 설정하면 DHCPv6을 지원하는 로컬 네트워크에서 DHCPv6도 사용으로 설정됩니다.
Oracle Solaris 클라이언트가 DHCP를 사용하기 위해 다른 필요한 일은 없습니다. DHCP 서버의 구성에 따라 DHCP 서비스를 사용하는 DHCP 클라이언트 시스템에 어떤 정보가 제공될지 결정됩니다.
클라이언트 시스템이 Oracle Solaris를 이미 실행 중이지만 DHCP를 사용 중이 아닌 경우 DHCP를 사용하도록 클라이언트 시스템을 재구성할 수 있습니다. 또한 DHCP 사용을 중지하고 정적 네트워크 정보를 사용하도록 DHCP 클라이언트 시스템을 재구성할 수도 있습니다. 자세한 내용은 DHCP 클라이언트 사용 및 사용 안함을 참조하십시오.
Oracle Solaris에 대해 Sun Microsystems를 통해 사용 가능한 DHCPv6 서버는 없습니다. 타사에서 제공된 서버는 Sun의 DHCPv6과 호환될 수 있고, 네트워크에 DHCPv6 서버가 있는 경우 Sun의 DHCPv6 클라이언트가 이를 사용합니다.
Sun DHCPv4 서버에 대한 자세한 내용은 DHCP 서버를 참조하십시오.
DHCPv4와 DHCPv6의 두 가지 주요 차이점은 다음과 같습니다.
관리 모델
DHCPv4 – 관리자가 각 인터페이스마다 DHCP를 사용으로 설정합니다. 논리적 인터페이스 단위로 관리가 이루어집니다.
DHCPv6 – 명시적 구성이 필요하지 않습니다. 이 프로토콜은 주어진 물리적 인터페이스에 사용으로 설정됩니다.
프로토콜 세부 정보
DHCPv4 – DHCP 서버가 각 주소에 대한 서브넷 마스크를 제공합니다. 호스트 이름 옵션이 시스템 차원의 노드 이름을 설정합니다.
DHCPv6 – DHCPv6 서버가 아닌, Router Advertisements에서 서브넷 마스크를 제공합니다. DHCPv6 호스트 이름 옵션이 없습니다.
DHCPv4는 명시적 클라이언트 구성이 필요합니다. 필요한 경우 주소 지정을 위해 DHCPv4 시스템을 설정해야 합니다. 이러한 설정 작업은 대개 초기 시스템 설치 중에 수행되거나 ifconfig(1M) 옵션 사용을 통해 동적으로 수행됩니다.
DHCPv6은 명시적 클라이언트 구성이 필요하지 않습니다. 대신, DHCP 사용이 네트워크의 등록 정보이고 이를 사용하는 신호가 로컬 라우터에서 Router Advertisement 메시지에 전달됩니다. DHCP 클라이언트는 필요에 따라 자동으로 논리적 인터페이스를 만들고 제거합니다.
DHCPv6 방식은 기존의 IPv6 Stateless (자동) 주소 구성과 관리상 매우 비슷합니다. Stateless 주소 구성의 경우 로컬 라우터에 플래그를 설정하여 주어진 접두어 세트에 대해 각 클라이언트가 보급된 접두어에 로컬 인터페이스 토큰이나 난수를 더해서 자체에 주소를 자동으로 구성해야 합니다. DHCPv6의 경우 동일한 접두어가 필요하지만 주소가 "무작위로" 지정되는 대신 DHCPv6 서버를 통해 획득, 관리됩니다.
DHCPv4는 MAC 주소 및 주소 지정 목적으로 클라이언트를 식별하는 선택적 클라이언트 ID를 사용합니다. 동일한 클라이언트가 네트워크에 도착할 때마다 가능하면 동일한 주소를 얻습니다.
DHCPv6은 기본적으로 동일한 체계를 사용하지만 클라이언트 ID가 필수이고 거기에 구조를 강제 적용합니다. DHCPv6의 클라이언트 ID는 DUID(DHCP Unique Identifier) 및 IAID(Identity Association Identifier)의 두 부분으로 구성됩니다. DUID는 (DHCPv4에서처럼 단지 인터페이스가 아닌) 클라이언트 시스템을 식별하고 IAID는 해당 시스템의 인터페이스를 식별합니다.
RFC 3315에 기술된 대로, ID 연관은 서버 및 클라이언트에서 관련된 IPv6 주소 세트를 식별, 그룹화, 관리하기 위해 사용되는 수단입니다. 클라이언트는 적어도 하나의 별개의 IA를 각 네트워크 인터페이스와 연관시키고, 지정된 IA를 사용하여 해당 인터페이스의 서버에서 구성 정보를 얻어야 합니다. IA에 대한 추가 정보는 다음 절인 "프로토콜 세부 정보"를 참조하십시오.
DUID+IAID를 DHCPv4와 함께 사용할 수도 있습니다. 이들은 클라이언트 ID로 작동할 수 있도록 분명하게 서로 연결할 수 있습니다. 호환성 이유로 일반 IPv4 인터페이스에는 수행되지 않습니다. 그러나 논리적 인터페이스의 경우(hme0:1) 구성된 클라이언트 ID가 없으면 DUID+IAID가 사용됩니다.
IPv4 DHCP와 달리, DHCPv6은 “클라이언트 이름” 옵션을 제공하지 않으므로 DHCPv6 혼자만 기반으로 시스템에 이름을 지정할 방법이 없습니다. 대신, DHCPv6에서 제공된 주소와 어울리는 DNS 이름을 알아야 하는 경우 해당하는 이름 정보를 찾으려면 DNS 역분석(getaddrinfo(3SOCKET) 함수를 통해 주소-이름 질의)을 사용하십시오. 따라서 DHCPv6만 사용하는데 특정 이름을 가진 노드가 필요한 경우 시스템에서 /etc/nodename을 설정해야 한다는 것을 알 수 있습니다.
DHCPv4에서는 DHCP 서버가 지정된 주소에 사용할 서브넷 마스크를 제공합니다. DHCPv6에서는 서브넷 마스크(“접두어 길이”라고도 함)가 Router Advertisements로 지정되고 DHCP 서버에서 제어하지 않습니다.
DHCPv4는 시스템 차원의 노드 이름을 설정하는 데 사용되는 호스트 이름 옵션을 전달합니다. DHCPv6에는 해당 옵션이 없습니다.
DHCPv6용 클라이언트 ID를 구성하려면 시스템에서 자동 선택을 허용하기보다는 DUID를 지정해야 합니다. 이는 데몬에 대해 전역적으로 또는 인터페이스 단위로 수행할 수 있습니다. 다음 형식을 사용하여 전역 DUID를 설정합니다(처음의 점 주의).
.v6.CLIENT_ID=DUID
특정 인터페이스에서 주어진 DUID를 사용하도록 설정하려면(시스템에서 다중 독립 클라이언트가 DHCPv6 서버로 보임) 다음을 사용합니다.
hme0.v6.CLIENT ID=DUID
각 ID 연관(IA)은 한가지 유형의 주소를 보유합니다. 예를 들어, 임시 주소용 ID 연관(IA_TA)은 임시 주소를 보유하고 비임시 주소용 ID 연관(IA_NA)은 영구적인 지정된 주소를 전달합니다. 이 설명서에 기술된 DHCPv6 버전은 IA_NA 연관만 제공합니다.
Oracle Solaris는 요청 시 정확히 하나의 IAID를 각 인터페이스에 지정하고 IAID는 루트 파일 시스템의 파일에 저장되므로 시스템 전체 수명 동안 일정하게 유지됩니다.
DHCPv4 클라이언트에서 각 논리적 인터페이스는 독립적이며 관리 단위입니다. 0번째 논리적 인터페이스에 더해서(식별자로 인터페이스 MAC 주소가 기본 설정) 사용자는 dhcpagent 구성 파일에서 CLIENT_ID를 지정하여 특정 논리적 인터페이스에서 DHCP가 실행되도록 구성할 수 있습니다. 예를 들면 다음과 같습니다.
hme0:1.CLIENT_ID=orangutan
DHCPv6은 다르게 작동합니다. IPv4와 달리, IPv6 인터페이스의 0번째 논리적 인터페이스는 항상 링크 로컬입니다. 링크 로컬을 사용하면 DHCP 서버와 같은 사용 가능한 지정 방법이 없을 때 IP 네트워크의 장치에 IP 주소를 자동으로 지정할 수 있습니다. 0번째 논리적 인터페이스를 DHCP 통제하에 놓을 수 없으므로 DHCPv6이 0번째 논리적 인터페이스("물리적" 인터페이스라고도 함)에서 실행되더라도 0이 아닌 논리적 인터페이스에만 주소가 지정됩니다.
DHCPv6 클라이언트 요청에 대한 응답으로 DHCPv6 서버는 구성할 클라이언트에 대한 주소 목록을 반환합니다.
DHCPv6에는 클라이언트가 선호하는 내용을 서버에 힌트로 알려주는 Option Request Option이 있습니다. 모든 가능한 옵션을 서버에서 클라이언트로 보낸 경우 그 중 일부가 클라이언트로 가능 도중에 삭제될 것이라는 정보를 보낼 수 있습니다. 서버는 힌트를 사용하여 회신에 포함할 옵션을 고를 수 있습니다. 다른 방법으로, 서버가 힌트를 무시하고 다른 항목을 고를 수 있습니다. 예를 들어, Oracle Solaris에서 선호 옵션이 Oracle Solaris DNS 주소 도메인 또는 NIS 주소 도메인을 포함할 수 있지만, net BIOS 서버를 포함하지는 않습니다.
DHCPv4에도 동일한 유형의 힌트가 제공되지만 특수한 Option Request Option이 없습니다. 대신, DHCPv4는 /etc/default/dhcpagent의 PARAM_REQUEST_LIST를 사용합니다.
/etc/default/dhcpagent를 사용하여 기존 DHCPv4 클라이언트와 동일한 방법으로 DHCPv6 클라이언트를 구성합니다.
구문의 인수는 인터페이스 이름(있는 경우)과 구성될 매개변수 사이에 ".v6" 표시자로 지정됩니다. 예를 들어, 전역 IPv4 옵션 요청 목록은 다음과 같이 설정됩니다.
PARAM_REQUEST_LIST=1,3,6,12,15,28,43
다음과 같이 개별 인터페이스에서 호스트 이름 옵션을 생략하도록 구성할 수 있습니다.
hme0.PARAM_REQUEST_LIST=1,3,6,15,28,43
DHCPv6의 전역 요청 목록을 설정하려면 선행 점에 주의하십시오.
.v6.PARAM_REQUEST_LIST=23,24
또는, 개별 인터페이스를 설정하려면 다음 예제를 따르십시오.
hme0.v6.PARAM_REQUEST_LIST=21,22,23,24
참조용으로 여기에 DHCPv6 구성의 실제 /etc/default/dhcpagent 파일이 있습니다.
# The default DHCPv6 parameter request list has preference (7), unicast (12), # DNS addresses (23), DNS search list (24), NIS addresses (27), and # NIS domain (29). This may be changed by altering the following parameter- # value pair. The numbers correspond to the values defined in RFC 3315 and # the IANA dhcpv6-parameters registry. .v6.PARAM_REQUEST_LIST=7,12,23,24,27,29
대부분의 경우 DHCPv6 클라이언트 시작을 위해 아무것도 필요하지 않습니다. in.ndpd 데몬이 필요할 때 자동으로 DHCPv6을 시작합니다. /etc/hostname6.$IFNAME을 수정하여 부트 시 인터페이스가 IPv6에 연결되도록 구성해야 할 수 있습니다. 하지만 설치 시 시스템에서 IPv6을 사용으로 설정하는 경우에는 설치 프로그램에서 이를 자동으로 수행합니다.
그러나 DHCPv4의 경우 Oracle Solaris 설치 중에 수행되지 않았다면 클라이언트 시작을 요청해야 합니다. DHCP 클라이언트를 사용으로 설정하는 방법을 참조하십시오.
dhcpagent 데몬은 시스템 부트와 관련한 다른 프로세스에서 필요한 구성 정보를 얻습니다. 이러한 이유로 시스템 시작 스크립트가 부트 프로세스에서 조기에 dhcpagent를 시작하고 DHCP 서버에서 네트워크 구성 정보가 도착할 때까지 기다립니다.
기본값은 DHCPv6을 실행하는 것이지만 DHCPv6이 실행되지 않도록 선택할 수 있습니다. DHCPv6이 실행되기 시작한 후 ifconfig 명령을 사용하여 이를 중지할 수 있습니다. /etc/inet/ndpd.conf 파일을 수정하여 DHCPv6이 재부트 시 시작되지 않도록 사용 안함으로 설정할 수도 있습니다.
다음 예는 hme0이라는 인터페이스에서 DHCPv6을 즉시 종료하는 방법을 보여줍니다.
ex# echo ifdefault StatefulAddrConf false >> /etc/inet/ndpd.conf ex# pkill -HUP -x in.ndpd ex# ifconfig hme0 inet6 dhcp release
/etc/dhcp.interface 파일(예를 들어, Sun Fire 880 시스템의 /etc/dhcp.ce0)의 존재는 지정된 인터페이스에서 DHCPv4가 사용될 것임을 시작 스크립트에 알립니다. dhcp.interface 파일을 찾으면 시작 스크립트는 dhcpagent를 시작합니다.
시작 후 dhcpagent는 네트워크 인터페이스를 구성하라는 지시를 받을 때까지 대기합니다. 시작 스크립트는 DHCP의 작동 방식에 설명된 대로 DHCPv4를 시작하도록 dhcpagent에 지시하는 ifconfig interface dhcp start 명령을 실행합니다. 명령이 dhcp.interface 파일에 포함되어 있는 경우 해당 명령은 ifconfig의 dhcp start 옵션에 추가됩니다. ifconfig interface dhcp 명령에서 사용되는 옵션에 대한 자세한 내용은 ifconfig(1M) 매뉴얼 페이지를 참조하십시오.
수동 구성으로 호출된 DHCPv4와 달리, DHCPv6은 RA(Router Advertisements)로 호출됩니다. 라우터 구성 방법에 따라 시스템이 Router Advertisement 메시지가 수신된 인터페이스에서 DHCPv6을 자동으로 호출하고 DHCP를 사용하여 주소나 기타 매개변수를 얻거나, 또는 시스템이 DHCPv6을 사용하여 주소 이외의 데이터(예: DNS 서버)만 요청합니다.
in.ndpd 데몬이 Router Advertisement 메시지를 수신합니다. 이는 시스템에서 IPv6용으로 배관된 모든 인터페이스에서 자동으로 수행됩니다. in.ndpd가 DHCPv6이 실행되도록 지정하는 RA를 발견하면 이를 호출합니다.
in.ndpd에서 DHCPv6이 시작하지 못하도록 하려면 /etc/inet/ndpd.conf 파일을 변경할 수 있습니다.
다음 버전의 ifconfig를 사용하여 DHCPv6이 시작된 후 중지할 수도 있습니다.
ifconfig <interface>inet6 dhcp drop
또는
ifconfig <interface> inet6 dhcp release
DHCPv4 및 DHCPv6 클라이언트 프로토콜은 여러 가지 방법으로 네트워크 구성 정보를 관리합니다. 주요 차이점은, DHCPv4에서는 단일 주소의 임대 및 이와 어울리는 옵션을 협상하는 것입니다. DHCPv6에서는 일괄 주소 및 일괄 옵션에 걸쳐 협상이 이루어집니다.
DHCPv4 클라이언트와 서버 간의 상호 작용에 대한 배경 정보는 12 장DHCP 정보(개요)를 참조하십시오.
DHCP 서버에서 정보 패킷을 얻은 후에 dhcpagent가 네트워크 인터페이스를 구성하고 인터페이스를 가져옵니다. 데몬이 IP 주소에 대한 임대 기간 동안 인터페이스를 제어하고 내부 테이블에서 구성 데이터를 유지 관리합니다. 시스템 시작 스크립트가 dhcpinfo 명령을 사용하여 내부 테이블에서 구성 옵션 값을 추출합니다. 값을 사용하여 시스템을 구성하고 네트워크에서 통신이 가능합니다.
dhcpagent 데몬은 시간이 경과할 때까지(대개 임대 시간의 절반) 수동적으로 기다립니다. 그런 다음 데몬이 DHCP 서버에서 임대 연장을 요청합니다. 시스템에서 인터페이스가 작동 중지되거나 IP 주소가 변경되었다고 dhcpagent에 알리면 ifconfig 명령에서 별도로 지시할 때까지 데몬이 인터페이스를 제어하지 않습니다. 인터페이스가 작동 중이고 IP 주소가 변경되지 않았음을 dhcpagent가 알게 되면 데몬이 서버에 임대 갱신 요청을 보냅니다. 임대를 갱신할 수 없으면 dhcpagent가 임대 시간 끝에 인터페이스를 끌어내립니다.
dhcpagent가 임대에 관련된 조치를 실행할 때마다 데몬이 /etc/dhcp/eventhook라는 실행 파일을 찾습니다. 이 이름을 가진 실행 파일을 찾으면 dhcpagent가 실행 파일을 호출합니다. 이벤트 실행 파일 사용에 대한 자세한 내용은 DHCP 클라이언트 이벤트 스크립트를 참조하십시오.
클라이언트와 서버 간의 DHCPv6 통신은 클라이언트가 서버를 찾기 위해 Solicit 메시지를 발송하는 것으로 시작합니다. 응답에서 DHCP 서비스에 사용 가능한 모든 서버가 Advertise 메시지를 보냅니다. 서버 메시지는 여러 IA_NA(Identity Association Non-Temporary Address) 레코드와 기타 서버가 제공할 수 있는 옵션(예: DNS 서버 주소)을 포함합니다.
클라이언트가 Request 메시지에 고유의 IA_NA/IAADDR 레코드를 설정하여 특정 주소(및 이것의 배수)를 요청할 수 있습니다. 클라이언트는 일반적으로 이전 주소가 기록된 경우 특정 주소를 요청하고, 서버는 가능하면 똑같은 것을 제공합니다. 클라이언트가 무엇이든 관계없이(주소를 전혀 요청하지 않더라도) 단일 DHCPv6 트랜잭션에 대해 서버가 원하는 수의 주소를 클라이언트에 제공할 수 있습니다.
이것은 클라이언트와 서버 간에 발생하는 메시지 대화입니다.
클라이언트가 서버를 찾기 위해 Solicit 메시지를 보냅니다.
서버가 Advertise 메시지를 보내어 DHCP 서비스에 사용 가능함을 나타냅니다.
클라이언트가 Request 메시지를 보내어 가장 큰 선호 값으로 서버로부터 IP 주소를 포함한 구성 매개변수를 요청합니다. 서버 선호 값이 관리자에 의해 설정되고 하한값 0부터 상한값 255까지 확장됩니다.
서버가 주소 임대 및 구성 데이터를 포함하는 Reply 메시지를 보냅니다.
Advertise 메시지의 선호 값이 255이면 DHCPv6 클라이언트가 해당 서버를 즉시 선택합니다. 가장 선호되는 서버가 응답하지 않거나 Request 메시지에 성공적인 Reply를 실패하면 더 이상 Advertise 메시지를 구할 수 없을 때까지 (순서대로) 덜 선호되는 서버를 계속 찾습니다. 이 시점에서 클라이언트가 Solicit 메시지를 다시 보내어 시작합니다.
선택한 서버가 Solicit 또는 Request 메시지에 대한 응답으로 지정된 주소 및 구성 매개변수를 포함하는 Reply 메시지를 보냅니다.
종료 시, 클라이언트가 Release 메시지를 클라이언트에 주소를 지정한 서버에 보내어 클라이언트가 더 이상 하나 이상의 지정된 주소를 사용하지 않음을 나타냅니다. DHCPv4 클라이언트 시스템이 정상적으로 종료할 때 dhcpagent가 현재 구성 정보를 파일(있는 경우)에 작성합니다. DHCPv4의 파일 이름은 /etc/dhcp/interface.dhc이고 DHCPv6의 파일 이름은 /etc/dhcp/interface.dh6입니다. 기본적으로 임대는 해제가 아니라 저장되므로 DHCP 서버에서 IP 주소가 활성 사용 중이 아님을 감지할 수 없습니다. 따라서 클라이언트가 다음 부트 시 주소를 쉽게 되찾을 수 있습니다. 이 기본 작업은 ifconfig <interface> dhcp drop 명령과 동일합니다.
시스템을 재부트할 때 해당 파일의 임대가 여전히 유효하면 dhcpagent가 동일한 IP 주소 및 네트워크 구성 정보를 사용하도록 약식 요청을 보냅니다. DHCPv4의 경우 이것은 Request 메시지입니다. DHCPv6의 경우 Confirm 메시지입니다.
DHCP 서버가 이 요청을 허가하면 dhcpagent가 시스템을 종료할 때 디스크에 작성된 정보를 사용할 수 있습니다. 서버가 클라이언트의 정보 사용을 허가하지 않으면 dhcpagent가 DHCP의 작동 방식에 설명된 DHCP 프로토콜 시퀀스를 시작합니다. 그 결과, 클라이언트가 새 네트워크 구성 정보를 얻습니다.