VM 게스트 OS를 IPv6로 준비하기
OpenStack VM에서 IPv6 연결을 쓰려면 게스트 OS 이미지가 DHCPv6 요청과 라우터 광고(RA) 수용을 지원해야 해요. 이 문서에서는 Calico Open Source가 사용하는 OpenStack VM의 게스트 OS를 IPv6에 맞게 준비하는 방법을 소개합니다. Ubuntu와 CentOS 예제 구성을 함께 살펴봐요.
출처: 문서
본문
큰 그림
VM 게스트 OS를 IPv6에 맞게 준비합니다.
적용 방법
VM이 IPv4, IPv6, 또는 둘 다를 받을지는 OpenStack(Calico가 아님)이 결정해요. Calico는 OpenStack이 지정한 주소를 그대로 존중합니다. IPv6 전용과 듀얼 스택 배포에서는 게스트 OS가 OpenStack이 할당한 IPv6 주소를 학습할 수 있도록 다음 추가 절차가 필요해요.
-
게스트 VM 이미지가 IPv6 연결을 위한 다음 요건을 충족하는지 확인합니다.
- 부팅할 때 VM은 각 인터페이스마다 DHCPv6 요청을 보내야 OpenStack이 할당한 IPv6 주소를 학습할 수 있어요. VM이 널리 쓰이는 ISC DHCP 클라이언트를 사용한다면 이 알려진 이슈에 대한 수정/우회책이 적용되어 있어야 합니다.
- 라우터 광고(router advertisement)를 수용하도록 VM을 구성해야 해요.
흔히 쓰는 클라우드 이미지 중 아직 이 요건을 충족하지 않는 것들이 있지만, 이미지를 하나 띄우고 설정 파일을 알맞게 고친 뒤 스냅샷을 찍어 이후에는 원본 이미지 대신 그 스냅샷을 쓰면 쉽게 해결돼요.
예를 들어 Ubuntu 클라우드 이미지를 시작점으로 삼는다면, 다음 변경으로 앞서 나열한 요건을 충족할 수 있어요.
-
/etc/network/interfaces.d/eth0.cfg에 추가합니다:iface eth0 inet6 dhcp accept_ra 1 -
/sbin/dhclient-script의 스크립트 시작 부분에 추가합니다:`new_ip6_prefixlen=128` -
/etc/sysctl.d에30-eth0-rs-delay.conf라는 이름의 파일을 만들고 다음 내용을 넣습니다:`net.ipv6.conf.eth0.router_solicitation_delay = 10`
CentOS의 경우 cloud-init 스크립트에 다음을 추가하면 효과적이라는 보고가 있어요:
runcmd:
sed -i -e '$a'"IPV6INIT=yes" /etc/sysconfig/network-scripts/ifcfg-eth0sed -i -e '$a'"DHCPV6C=yes" /etc/sysconfig/network-scripts/ifcfg-eth0sed -i '/PATH/i\\new_ip6_prefixlen=128' /sbin/dhclient-scriptsystemctl restart network
-
다음 중 하나 또는 둘 다의 주소 지정 방식으로 IPv6 서브넷을 정의해 Calico에서 IPv6 지원을 구성합니다:
DHCPv6 주소 프로비저닝 서브넷:
- VM들이 사용하기를 원하는 IPv6 주소 범위
- DHCP 활성화
- IPv6 주소 모드를 DHCPv6 stateful로 설정
SLAAC 주소 프로비저닝 서브넷: (DHCPv6 임대를 피하지만 /64 범위가 필요해요)
- VM들이 사용하기를 원하는 /64 IPv6 주소 범위
- DHCP 활성화
- IPv6 주소 모드를 SLAAC 사용으로 설정
- IPv6 라우터 광고 모드를 SLAAC로 설정
처음에는 각 네트워크에 IPv4와 IPv6 서브넷을 모두 구성하는 것을 권장해요. 그러면 IPv4만 지원하는 VM 이미지와 IPv4/IPv6 둘 다 지원하는 이미지를 함께 다룰 수 있고, IPv6 구성 문제를 해결할 때 VM에 IPv4로 접근할 수도 있습니다. 원칙적으로는 OpenStack에서 IPv6 전용 네트워크를 구성하고 사용하는 데 알려진 문제는 없어요.
더 알아보기 (Learn more)
게스트 OS가 DHCPv6 요청과 라우터 광고를 제대로 처리하는지가 핵심이에요. 이미지를 고쳐 스냅샷으로 재사용하면 매번 수동 작업을 피할 수 있습니다.