IPv6 SLAAC(Stateless Address Auto-configuration) 스누핑
SLAAC 스누핑 이해
동적 주소 할당은 IPv4에 비해 주소 공간이 크게 증가하므로 IPv6의 중요한 기능입니다. 정적 주소 지정 외에도 IPv6는 클라이언트가 동적으로 주소를 얻을 수 있는 두 가지 옵션인 DHCPv6(스테이트풀) 및 스테이트리스 어드레스 자동 구성(SLAAC)을 제공합니다.
SLAAC는 호스트의 수동 구성 없이 플러그 앤 플레이 IP 연결을 제공하여 IPv6 주소 관리를 간소화합니다. SLAAC를 사용하면 IPv6 클라이언트가 로컬에서 사용 가능한 정보와 NDP(Neighbor Discovery Protocol)를 통해 라우터에서 보급하는 정보의 조합을 사용하여 자체 주소를 생성할 수 있습니다.
NDP 메시지는 보안되지 않으므로 SLAAC는 링크 레이어 주소의 스푸핑(또는 위조)과 관련된 공격에 취약합니다. IPv6 클라이언트가 네트워크에 액세스할 수 있도록 허용하기 전에 SLAAC를 사용하여 IPv6 클라이언트를 검증하도록 SLAAC 스누핑을 구성해야 합니다.
SLAAC 프로세스
클라이언트는 IPv6 지원 인터페이스에 대한 link-local 주소를 생성하여 자동 구성을 시작합니다. 이는 광고된 link-local 접두사(처음 64비트)와 인터페이스 식별자(마지막 64비트)를 결합하여 수행됩니다. 주소는 [fe80(10비트) + 0(54비트)] + interface ID (64비트) 형식에 따라 생성됩니다.
link-local 주소를 인터페이스에 할당하기 전에 클라이언트는 DAD(Duplicate Address Detection)를 실행하여 주소를 확인합니다. DAD가 새 주소로 이웃 유인 메시지를 보냅니다. 회신이 있으면 주소가 중복되고 프로세스가 중지됩니다. 주소가 고유한 경우 인터페이스에 할당됩니다.
전역 주소를 생성하기 위해 클라이언트는 라우터 요청 메시지를 보내 링크의 모든 라우터에 라우터 광고(RA) 메시지를 보내라는 메시지를 표시합니다. SLAAC를 지원하도록 설정된 라우터는 인접 호스트에서 사용할 서브넷 접두사가 포함된 RA를 보냅니다. 클라이언트는 인터페이스 식별자를 서브넷 접두사에 추가하여 전역 주소를 형성하고 DAD를 다시 실행하여 고유성을 확인합니다.
SLAAC 스누핑
SLAAC에는 NDP에서 발견된 것과 동일한 보안 취약성이 적용됩니다. 동적 주소 할당을 위해 SLAAC를 사용하여 IPv6 클라이언트의 트래픽을 보호하도록 SLAAC 스누핑을 구성할 수 있습니다. NDP에 대한 자세한 내용은 IPv6 인접 검색 검사를 참조하십시오.
SLAAC 스누핑은 패킷을 스누핑하여 IP-MAC 주소 바인딩 테이블을 구축한다는 점에서 DHCP 스누핑과 유사합니다. SLAAC 스누핑은 SLAAC 스누핑 테이블을 구축하기 위해 SLAAC 프로세스 중에 교환된 DAD 패킷에서 주소 정보를 추출합니다. 이 표의 주소 바인딩은 SLAAC를 사용하여 IPv6 클라이언트가 보낸 NDP/IP 패킷을 검사하고 검증하는 데 사용됩니다.
SLAAC 스누핑 구성
SLAAC 스누핑은 VLAN별로 활성화됩니다. 기본적으로 모든 VLAN에 대해 SLAAC 스누핑이 비활성화되어 있습니다.
SLAAC를 활성화하려면 다음 명령을 사용합니다.
자동 DAD 구성
클라이언트 측에서 DAD가 비활성화되거나 트래픽 혼잡으로 인해 DAD 패킷이 손실되는 경우 SLAAC 스누핑은 클라이언트를 대신하여 자동 DAD를 수행합니다. 클라이언트 생성 주소는 DAD 프로세스가 완료될 때까지 미정 상태입니다.
Auto-DAD는 클라이언트 생성 주소를 대상으로 한 이웃 요청 메시지를 전송하고 이에 대한 응답으로 이웃 광고를 기다립니다. 응답이 있는 경우 주소는 중복되며 클라이언트에 할당할 수 없습니다. 응답이 없으면 주소가 확인됩니다.
자동 DAD가 응답을 기다리는 시간은 기본적으로 1초이며 재시도가 없습니다. 재시도 횟수와 전송 간 간격 길이를 구성할 수 있습니다.
MAC 이동 중에 첫 번째 이웃 요청 패킷은 이전 포트에서 SLAAC 엔트리 플러시를 발생시키고 두 번째 패킷은 새 포트에 대한 SLAAC 엔트리를 생성합니다.
auto-DAD 매개 변수에 대한 재시도 횟수를 구성하려면 다음 명령을 사용합니다.
자동 DAD 전송 사이의 간격을 구성하려면 다음 명령을 사용합니다.
특정 인터페이스의 경우:
[edit] user@switch# set forwarding-options access-security slaac-snooping interface interface-name auto-dad retrans-interval seconds
모든 인터페이스의 경우:
[edit] user@switch# set forwarding-options access-security slaac-snooping interface all auto-dad retrans-interval seconds
Link-Local 주소 만료 구성
SLAAC에서 학습한 link-local 주소의 기본 만료 기간은 1일입니다. 주소에 대한 임대가 만료되면 스누핑 디바이스는 클라이언트 주소를 대상으로 DAD 메시지를 보냅니다. 클라이언트가 여전히 연결할 수 있는 경우 임대가 갱신됩니다.
만료 기간의 길이를 구성하려면 다음 명령을 사용합니다.
[edit] user@switch# set forwarding-options access-security slaac-snooping link-local expiry interval seconds
허용된 DAD 경합 구성
인터페이스에 대한 최대 DAD 경합(Neighbor Solicitation 또는 Neighbor Advertisement) 메시지 수를 구성할 수 있습니다. 허용된 시간 간격 동안 최대 경합 수가 초과되면 인터페이스가 무효로 간주되고 SLAAC 스누핑 테이블이 해당 클라이언트에 대한 바인딩으로 업데이트되지 않습니다.
최대 허용 경합은 둘 이상의 VLAN에 속하는 인터페이스를 허용하기 위해 인터페이스별로 구성됩니다.
최대 DAD 경합 수와 허용된 시간 간격을 구성하려면 다음 명령을 사용합니다.
[edit] user@switch# set forwarding-options access-security slaac-snooping interface interface-name max-allowed-contention count integer duration seconds
SLAAC 스누핑을 위해 신뢰할 수 있는 인터페이스 구성
인터페이스를 신뢰할 수 있는 인터페이스로 구성하면 인터페이스에 대한 바인딩 항목이 신뢰할 수 없는 인터페이스와 동일한 프로세스를 사용하여 SLAAC 스누핑 테이블에 추가됩니다.
신뢰할 수 없는 포트에 이미 IP/MAC 항목이 있는 신뢰할 수 있는 포트에서 DAD 요청을 받으면 SLAAC 스누핑은 신뢰할 수 없는 포트로 유니캐스트 DAD를 전송하여 호스트가 라이브 상태인지 확인합니다.
호스트가 신뢰할 수 없는 포트에서 NA 메시지로 응답하면 기존 바인딩 항목에 대한 임대 시간이 갱신됩니다.
신뢰할 수 없는 포트에 응답(NA)이 없으면 해당 바인딩 항목이 삭제됩니다.
신뢰할 수 없는 포트에 대한 항목이 삭제되면 신뢰할 수 있는 포트에 대한 바인딩이 즉시 만들어지지 않습니다. 신뢰할 수 있는 포트가 데이터 트래픽을 보내기 시작하면 NS 메시지를 보냅니다. 이때 SLAAC 스누핑은 신뢰할 수 있는 포트에 새 바인딩을 추가합니다.
신뢰할 수 있는 포트에서 수신된 라우터 광고 패킷은 수신 포트의 SLAAC 항목과 관계없이 해당 VLAN의 모든 포트로 플러딩됩니다.
최대 DAD 경합 수는 신뢰할 수 있는 인터페이스에 적용되지 않습니다.
SLAAC 스누핑에 대해 신뢰할 수 있는 인터페이스를 구성하려면 다음 명령을 사용합니다.
[edit] user@switch# set forwarding-options access-security slaac-snooping interface interface-name mark-interface trusted
영구 SLAAC 스누핑 바인딩 구성
DHCP 스누핑 데이터베이스 파일의 IP-MAC 바인딩은 영구적이지 않습니다. 스위치가 재부팅되면 바인딩이 손실됩니다. SLAAC 스누핑 데이터베이스 파일의 스토리지 위치에 대한 로컬 경로 이름 또는 원격 URL을 지정하여 지속적 바인딩을 구성할 수 있습니다.
SLAAC 스누핑에 대한 영구 바인딩을 구성하려면 다음 명령을 사용합니다.
[edit] user@switch# set system processes slaac-snooping persistent-file (local-pathname | remote-url) write-interval seconds