탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
Oracle Solaris 관리: IP 서비스 Oracle Solaris 11 Information Library (한국어) |
Neighbor Discovery에서 제공하는 ICMP 메시지
ARP 및 관련 IPv4 프로토콜과 Neighbor Discovery 비교
Oracle Solaris 이름 서비스에 대한 IPv6 확장
24. Virtual Router Redundancy Protocol(개요)
이 절에서는 Oracle Solaris에서 IPv6을 사용하는 파일, 명령 및 데몬에 대해 설명합니다. IPv6 주소 지정 및 IPv6 헤더 형식에 대한 보다 자세한 개요는 System Administration Guide: IP Services의 IPv6 Addressing Formats Beyond the Basics을 참조하십시오.
이 절에서는 IPv6 구현에 포함된 구성 파일에 대해 설명합니다.
/etc/inet/ndpd.conf 파일은 in.ndpd Neighbor Discovery 데몬에서 사용하는 옵션을 구성하는 데 사용됩니다. 라우터의 경우 주로 ndpd.conf를 사용하여 링크에 알릴 사이트 접두어를 구성하십시오. 호스트의 경우 ndpd.conf를 사용하여 주소 자동 구성을 해제하거나 임시 주소를 구성하십시오.
다음 표는 ndpd.conf 파일에 사용되는 키워드를 보여줍니다.
표 9-1 /etc/inet/ndpd.conf 키워드
|
ndpd.conf 파일에서 이 표의 키워드를 라우터 구성 변수 세트와 함께 사용하십시오. 이러한 변수는 RFC 2461, Neighbor Discovery for IP Version 6 (IPv6)에 자세히 정의되어 있습니다.
다음 표는 인터페이스 구성에 사용되는 변수를 간략한 설명과 함께 보여줍니다.
표 9-2 /etc/inet/ndpd.conf 인터페이스 구성 변수
|
다음 표는 IPv6 접두어 구성에 사용되는 변수를 보여줍니다.
표 9-3 /etc/inet/ndpd.conf 접두어 구성 변수
|
예 9-1 /etc/inet/ndpd.conf 파일
다음 예는 ndpd.conf 파일에서 키워드 및 구성 변수가 사용되는 방식을 보여줍니다. 변수를 활성화하려면 주석(#)을 제거하십시오.
# ifdefault [variable-value ]* # prefixdefault [variable-value ]* # if ifname [variable-value ]* # prefix prefix/length ifname # # Per interface configuration variables # #DupAddrDetectTransmits #AdvSendAdvertisements #MaxRtrAdvInterval #MinRtrAdvInterval #AdvManagedFlag #AdvOtherConfigFlag #AdvLinkMTU #AdvReachableTime #AdvRetransTimer #AdvCurHopLimit #AdvDefaultLifetime # # Per Prefix: AdvPrefixList configuration variables # # #AdvValidLifetime #AdvOnLinkFlag #AdvPreferredLifetime #AdvAutonomousFlag #AdvValidExpiration #AdvPreferredExpiration ifdefault AdvReachableTime 30000 AdvRetransTimer 2000 prefixdefault AdvValidLifetime 240m AdvPreferredLifetime 120m if qe0 AdvSendAdvertisements 1 prefix 2:0:0:56::/64 qe0 prefix fec0:0:0:56::/64 qe0 if qe1 AdvSendAdvertisements 1 prefix 2:0:0:55::/64 qe1 prefix fec0:0:0:56::/64 qe1 if hme1 AdvSendAdvertisements 1 prefix 2002:8192:56bb:1::/64 qfe0 if hme1 AdvSendAdvertisements 1 prefix 2002:8192:56bb:2::/64 hme1
/etc/inet/ipaddrsel.conf 파일에는 IPv6 기본 주소 선택 정책 테이블이 포함되어 있습니다. IPv6이 사용 가능한 상태로 Oracle Solaris를 설치하면 이 파일에는 표 9-4에 표시된 내용이 포함됩니다.
/etc/inet/ipaddrsel.conf의 내용은 편집할 수 있습니다. 그러나 대부분의 경우 이 파일을 수정하지 않는 것이 좋습니다. 수정이 필요할 경우 IPv6 주소 선택 정책 테이블을 관리하는 방법 절차를 참조하십시오. ippaddrsel.conf에 대한 자세한 내용은 IPv6 주소 선택 정책 테이블을 수정하는 이유 및 ipaddrsel.conf(4) 매뉴얼 페이지를 참조하십시오.
이 절에서는 Oracle Solaris IPv6 구현으로 추가된 명령에 대해 설명합니다. 또한 IPv6을 지원하도록 기존 명령을 수정하는 방법에 대해서도 설명합니다.
ipaddrsel 명령을 사용하여 IPv6 기본 주소 선택 정책 테이블을 수정할 수 있습니다.
Oracle Solaris 커널은 IPv6 기본 주소 선택 정책 테이블을 사용하여 IPv6 패킷 헤더에 대한 대상 주소 순서 지정 및 소스 주소 선택을 수행합니다. /etc/inet/ipaddrsel.conf 파일에는 정책 테이블이 포함되어 있습니다.
다음 표는 정책 테이블의 기본 주소 형식 및 우선 순위를 보여줍니다. IPv6 주소 선택에 대한 기술적인 세부 정보는 inet6(7P) 매뉴얼 페이지를 참조하십시오.
표 9-4 IPv6 주소 선택 정책 테이블
|
이 표에서 IPv6 접두어(::1/128 및 ::/0)가 6to4 주소(2002::/16) 및 IPv4 주소(::/96 및 ::ffff:0:0/96)보다 우선적으로 사용됩니다. 따라서 기본적으로 커널은 다른 IPv6 대상으로 이동하는 패킷에 대해 전역 IPv6 주소의 인터페이스를 선택합니다. IPv4 주소의 인터페이스는 특히 IPv6 대상으로 이동하는 패킷에 대해 낮은 우선 순위를 갖습니다. 선택한 IPv6 소스 주소가 제공될 경우, 커널에서는 대상 주소에 대해 IPv6 형식도 사용됩니다.
대부분의 경우에는 IPv6 기본 주소 선택 정책 테이블을 변경할 필요가 없습니다. 정책 테이블을 관리해야 하는 경우 ipaddrsel 명령을 사용하십시오.
다음과 같은 경우에 정책 테이블을 수정할 수 있습니다.
시스템 인터페이스가 6to4 터널에 사용되는 경우, 6to4 주소에 더 높은 우선 순위를 제공할 수 있습니다.
특정 소스 주소를 특정 대상 주소와의 통신에만 사용하려는 경우, 이 주소를 정책 테이블에 추가하면 됩니다. 그런 다음 ipadm을 사용하여 이 주소를 선호 주소로 플래그 지정할 수 있습니다. ipadm 명령에 대한 자세한 내용은 ipadm(1M) 매뉴얼 페이지를 참조하십시오
IPv4 주소가 IPv6 주소보다 우선적으로 사용되게 하려는 경우, ::ffff:0:0/96의 우선 순위를 더 높은 숫자로 변경할 수 있습니다.
제거된 주소에 더 높은 우선 순위를 지정해야 하는 경우, 제거된 주소를 정책 테이블에 추가하면 됩니다. 예를 들어 사이트 로컬 주소는 이제 IPv6에서 제거되었습니다. 이러한 주소의 앞에는 fec0::/10이 붙습니다. 사이트 로컬 주소에 더 높은 우선 순위를 제공하도록 정책 테이블을 변경할 수 있습니다.
ipaddrsel 명령에 대한 자세한 내용은 ipaddrsel(1M) 매뉴얼 페이지를 참조하십시오.
6to4 터널링을 사용하면 분리된 6to4 사이트 간에 통신할 수 있습니다. 그러나 원시 비6to4 IPv6 사이트를 포함하는 패킷을 전송하려면 6to4 라우터가 6to4 릴레이 라우터를 사용하여 터널을 설정해야 합니다. 그러면 6to4 릴레이 라우터가 6to4 패킷을 IPv6 네트워크 및 원시 IPv6 사이트로 전송합니다. 6to4 지원 사이트가 원시 IPv6 사이트와 데이터를 교환해야 하는 경우 6to4relay 명령을 사용하여 해당 터널을 사용으로 설정하십시오.
릴레이 라우터 사용은 보안되지 않으므로 Oracle Solaris에서는 기본적으로 릴레이 라우터가 사용 안함으로 설정되어 있습니다. 이 시나리오를 배치하기 전에 6to4 릴레이 라우터에 대한 터널 생성과 관련된 문제를 주의 깊게 고려하십시오. 6to4 릴레이 라우터에 대한 자세한 내용은 6to4 릴레이 라우터에 대한 터널 고려 사항을 참조하십시오. 6to4 릴레이 라우터 지원을 사용하려는 경우 IP 터널을 만들고 구성하는 방법에서 관련 절차를 참조하십시오.
6to4relay -e [-a IPv4-address] -d -h
6to4 라우터와 애니캐스트 6to4 릴레이 라우터 간 터널에 대한 지원을 사용으로 설정합니다. 그러면 터널 끝점 주소가 192.88.99.1(6to4 릴레이 라우터의 애니캐스트 그룹에 대한 기본 주소)로 설정됩니다.
지정된 IPv4-address를 사용하여 6to4 라우터와 6to4 릴레이 라우터 간 터널에 대한 지원을 사용으로 설정합니다.
6to4 릴레이 라우터에 대한 터널링 지원을 사용 안함으로 설정합니다. 이는 Oracle Solaris의 기본값입니다.
6to4relay에 대한 도움말을 표시합니다.
자세한 내용은 6to4relay(1M) 매뉴얼 페이지를 참조하십시오.
예 9-2 6to4y 릴레이 라우터 지원의 기본 상태 표시
인수가 없는 6to4relay 명령은 6to4 릴레이 라우터 지원의 현재 상태를 표시합니다. 이 예는 IPv6의 Oracle Solaris 구현에 대한 기본값을 보여줍니다.
# /usr/sbin/6to4relay 6to4relay:6to4 Relay Router communication support is disabled
예 9-3 6to4 릴레이 라우터 지원을 사용으로 설정하여 상태 표시
릴레이 라우터 지원이 사용으로 설정된 경우, 6to4relay는 다음과 같은 출력을 표시합니다.
# /usr/sbin/6to4relay 6to4relay:6to4 Relay Router communication support is enabled IPv4 destination address of Relay Router=192.88.99.1
예 9-4 6to4 릴레이 라우터를 지정하여 상태 표시
6to4relay 명령에 -a 옵션과 IPv4 주소를 지정한 경우, -a와 함께 제공한 IPv4 주소가 192.88.99.1 대신 표시됩니다.
6to4relay는 -d, -e 및 -a IPv4 address 옵션이 성공적으로 실행되면 이를 보고하지 않습니다. 그러나 이러한 옵션을 실행할 때 생성될 수 있는 오류 메시지는 6to4relay가 표시합니다.
netstat 명령이 IPv4 및 IPv6 네트워크 상태를 모두 표시합니다. /etc/default/inet_type 파일에서 DEFAULT_IP 값을 설정하거나 -f 명령줄 옵션을 사용하여 표시할 프로토콜 정보를 선택할 수 있습니다. DEFAULT_IP를 영구적으로 설정하면 netstat가 IPv4 정보만 표시합니다. -f 옵션을 사용하여 이 설정을 대체할 수 있습니다. inet_type 파일에 대한 자세한 내용은 inet_type(4) 매뉴얼 페이지를 참조하십시오.
netstat 명령의 -p 옵션은 net-to-media 테이블(IPv4의 경우 ARP 테이블이고, IPv6의 경우 이웃 캐시임)을 표시합니다. 자세한 내용은 netstat(1M) 매뉴얼 페이지를 참조하십시오. 이 명령의 사용 절차에 대한 설명은 소켓 상태를 표시하는 방법을 참조하십시오.
snoop 명령이 IPv4 및 IPv6 패킷을 모두 캡처할 수 있습니다. 이 명령은 IPv6 헤더, IPv6 확장 헤더, ICMPv6 헤더 및 Neighbor Discovery 프로토콜 데이터를 표시할 수 있습니다. 기본적으로 snoop 명령은 IPv4 및 IPv6 패킷을 모두 표시합니다. ip 또는 ip6 프로토콜 키워드를 지정하면 snoop 명령은 IPv4 또는 IPv6 패킷만 표시합니다. IPv6 필터 옵션을 사용하여 IPv6 패킷만 표시하도록 모든 패킷(IPv4 및 IPv6)을 필터링할 수 있습니다. 자세한 내용은 snoop(1M) 매뉴얼 페이지를 참조하십시오. snoop 명령 사용 절차는 IPv6 네트워크 트래픽을 모니터링하는 방법을 참조하십시오.
route 명령이 IPv4 및 IPv6 경로 모두에서 작동합니다. 이때 기본값은 IPv4 경로입니다. 명령줄에서 route 명령 바로 뒤에 -inet6 옵션을 사용하면 작업이 IPv6 경로에서 수행됩니다. 자세한 내용은 route(1M) 매뉴얼 페이지를 참조하십시오.
ping 명령이 IPv4 및 IPv6 프로토콜을 모두 사용하여 대상 호스트를 검사합니다. 이름 서버가 지정된 대상 호스트에 대해 반환하는 주소에 따라 프로토콜 선택이 달라집니다. 기본적으로 이름 서버가 대상 호스트에 대해 IPv6 주소를 반환하는 경우 ping 명령은 IPv6 프로토콜을 사용합니다. 이름 서버가 IPv4 주소만 반환하는 경우 ping 명령은 IPv4 프로토콜을 사용합니다. -A 명령줄 옵션을 사용하여 사용할 프로토콜을 지정하면 이 작업이 대체됩니다.
자세한 내용은 ping(1M) 매뉴얼 페이지를 참조하십시오. ping 사용 절차는 ping 명령으로 원격 호스트 확인을 참조하십시오.
traceroute 명령을 사용하여 특정 호스트에 대해 IPv4 및 IPv6 경로를 추적할 수 있습니다. 프로토콜 관점에서 traceroute는 ping과 동일한 알고리즘을 사용합니다. 이 선택을 대체하려면 -A 명령줄 옵션을 사용하십시오. -a 명령줄 옵션을 사용하면 멀티홈 호스트의 각 주소에 대해 개별 경로를 추적할 수 있습니다.
자세한 내용은 traceroute(1M) 매뉴얼 페이지를 참조하십시오. traceroute 사용 절차는 traceroute 명령으로 경로 지정 정보 표시를 참조하십시오.
이 절에서는 IPv6 관련 데몬에 대해 설명합니다.
in.ndpd 데몬은 IPv6 Neighbor Discovery 프로토콜 및 라우터 검색을 구현합니다. 이 데몬은 IPv6에 대한 주소 자동 구성도 구현합니다. 다음은 in.ndpd의 지원되는 옵션을 보여줍니다.
디버깅을 설정합니다.
특정 이벤트에 대한 디버깅을 설정합니다.
기본 /etc/inet/ndpd.conf 파일 대신 구성 데이터를 읽도록 파일을 지정합니다.
각 인터페이스에 대한 관련 정보를 출력합니다.
라우터 알림을 루프백하지 않습니다.
수신된 패킷을 무시합니다.
다양한 유형의 진단 메시지를 보고하도록 상세 정보 표시 모드를 지정합니다.
패킷 추적을 설정합니다.
in.ndpd 데몬은 /etc/inet/ndpd.conf 구성 파일에 설정된 매개변수와 /var/inet/ndpd_state. interface 시작 파일의 매개변수로 제어됩니다.
/etc/inet/ndpd.conf 파일이 있으면 이 파일이 구문 분석되어 노드를 라우터로 구성하는 데 사용됩니다. 표 9-1은 이 파일에 나타날 수 있는 키워드를 보여줍니다. 호스트가 부트되는 즉시 라우터가 사용 가능하지 않을 수 있습니다. 라우터에 의해 알려진 패킷은 삭제될 수 있습니다. 또한 호스트에 연결되지 않을 수도 있습니다.
/var/inet/ndpd_state.interface 파일은 상태 파일입니다. 이 파일은 각 노드에서 정기적으로 업데이트됩니다. 노드가 실패하여 다시 시작되었을 때 라우터가 없는 경우 노드가 인터페이스를 구성할 수 있습니다. 이 파일에는 파일이 마지막으로 업데이트된 당시의 인터페이스 주소 및 파일 유효 기간이 포함되어 있습니다. 또한 이전 라우터 알림에서 “학습한” 기타 매개변수도 포함되어 있습니다.
구성 변수 및 허용되는 값 목록은 in.ndpd(1M) 매뉴얼 페이지 및 ndpd.conf(4) 매뉴얼 페이지를 참조하십시오.
in.ripngd 데몬은 IPv6 라우터에 대한 차세대 경로 지정 정보 프로토콜(RIPng)을 구현합니다. RIPng는 IPv6에 해당하는 RIP입니다. routeadm 명령으로 IPv6 라우터를 구성하고 IPv6 경로 지정을 설정하면 in.ripngd 데몬이 라우터에서 RIPng를 구현합니다.
다음은 RIPng의 지원되는 옵션을 보여줍니다.
n은 RIPng 패킷을 전송 또는 수신하는 데 사용되는 대체 포트 번호를 지정합니다.
경로 지정 정보를 표시하지 않습니다.
데몬이 라우터로 사용되지 않는 경우에도 경로 지정 정보를 표시합니다.
Poison Reverse를 사용하지 못하도록 합니다.
in.ripngd가 라우터로 사용되지 않는 경우 데몬은 각 라우터의 기본 경로만 통과합니다.
IPv6 지원 서버 응용 프로그램은 IPv4 요청과 IPv6 요청을 모두 처리하거나, IPv6 요청만 처리할 수 있습니다. 서버는 항상 IPv6 소켓을 통해 요청을 처리합니다. 또한 해당 클라이언트가 사용하는 것과 동일한 프로토콜을 사용합니다.
IPv6용 서비스를 추가하거나 수정하려면 SMF(서비스 관리 기능)에서 제공하는 명령을 사용하십시오.
SMF 명령에 대한 자세한 내용은 Oracle Solaris 관리: 일반 작업의 SMF 명령줄 관리 유틸리티를 참조하십시오.
SMF를 사용하여 SCTP를 통해 실행되는 IPv4 서비스 매니페스트를 구성하는 예제 작업은 SCTP 프로토콜을 사용하는 서비스를 추가하는 방법을 참조하십시오.
IPv6 서비스를 구성하려면 해당 서비스에 대한 inetadm 프로파일의 proto 필드 값에 적합한 값이 나열되어야 합니다.
IPv4 및 IPv6 요청을 모두 처리하는 서비스의 경우 tcp6, udp6 또는 sctp를 선택합니다. tcp6, udp6 또는 sctp6의 값이 proto일 경우 inetd는 서버에 IPv6 소켓을 전달합니다. IPv4 클라이언트에 요청이 있는 경우 서버에는 IPv4 매핑 주소가 포함됩니다.
IPv6 요청만 처리하는 서비스의 경우 tcp6only 또는 udp6only를 선택합니다. proto에 대해 이러한 값 중 하나를 사용할 경우, inetd는 서버에 IPv6 소켓을 전달합니다.
Oracle Solaris 명령을 다른 구현으로 바꿀 경우 해당 서비스 구현이 IPv6을 지원하는지 확인해야 합니다. 구현이 IPv6을 지원하지 않는 경우 proto 값을 tcp, udp 또는 sctp로 지정해야 합니다.
다음은 IPv4 및 IPv6을 둘 다 지원하고 SCTP를 통해 실행되는 echo 서비스 매니페스트에 대해 inetadm이 실행되도록 하는 프로파일입니다.
# inetadm -l svc:/network/echo:sctp_stream SCOPE NAME=VALUE name="echo" endpoint_type="stream" proto="sctp6" isrpc=FALSE wait=FALSE exec="/usr/lib/inet/in.echod -s" user="root" default bind_addr="" default bind_fail_max=-1 default bind_fail_interval=-1 default max_con_rate=-1 default max_copies=-1 default con_rate_offline=-1 default failrate_cnt=40 default failrate_interval=60 default inherit_env=TRUE default tcp_trace=FALSE default tcp_wrappers=FALSE
proto 필드의 값을 변경하려면 다음 구문을 사용하십시오.
# inetadm -m FMRI proto="transport-protocols"
Oracle Solaris 소프트웨어에 제공되는 모든 서버에는 proto를 tcp6, udp6 또는 sctp6로 지정하는 프로파일 항목이 하나만 있으면 됩니다. 그러나 원격 셸 서버(shell) 및 원격 실행 서버(exec)는 이제 단일 서비스 인스턴스로 구성됩니다. 이 경우 proto 값에는 tcp 및 tcp6only 값이 포함됩니다. 예를 들어 shell의 proto 값을 설정하려면 다음 명령을 실행하십시오.
# inetadm -m network/shell:default proto="tcp,tcp6only"
소켓을 사용하는 IPv6 지원 서버를 작성하는 방법에 대한 자세한 내용은 Programming Interfaces Guide 의 IPv6 extensions to the Socket API를 참조하십시오.
IPv6용 서비스를 추가하거나 수정할 경우 다음 사항에 유의하십시오.
proto 값을 tcp6, sctp6 또는 udp6로 지정해야 IPv4 및 IPv6 연결이 모두 가능합니다. proto 값을 tcp, sctp 또는 udp로 지정한 경우 서비스는 IPv4만 사용합니다.
inetd에 대해 일대다 스타일 SCTP 소켓을 사용하는 서비스 인스턴스를 추가할 수는 있지만, 이는 권장되지 않습니다. 일대다 스타일 SCTP 소켓에서는 inetd가 작동하지 않습니다.
wait-status 또는 exec 등록 정보가 다르기 때문에 서비스에 두 개의 항목이 필요할 경우, 원래 서비스에서 두 개의 인스턴스/서비스를 만들어야 합니다.