이름이 거의 같은 두 지시문이 동작하는 모든 예제에 등장하며, 하나만 복사하면 겉보기에는 올바르지만 브랜치 접두사를 조용히 버리는 터널이 만들어집니다. 두 지시문은 같은 경계의 서로 다른 쪽에서 다른 일을 합니다: 하나는 접두사가 어디에 있는지 서버 커널에 알려 주고, 다른 하나는 OpenVPN 에 어떤 인증된 클라이언트가 그것을 나르는지 알려 줍니다. 둘 다 맞으면 접두사가 흐르고, 하나만 맞으면 패킷에는 경로가 있어도 소유자가 없습니다.

두 지시문, 두 가지 다른 일

route-ipv6 은 평범한 경로 설치입니다: 서버가 커널 경로를 추가해 접두사를 자신의 터널 인터페이스로 향하게 합니다. iroute-ipv6 은 클라이언트별 컨텍스트에 속하며 내부 소유권을 선언하므로, 데몬은 해당 접두사로 가는 트래픽을 커널 경로가 우연히 가리키는 상대가 아니라 특정 클라이언트로 보내야 한다는 것을 압니다.

하나는 커널의 전달 테이블에 관한 것이고, 다른 하나는 데몬의 내부 라우팅 모델에 관한 것입니다. 둘을 분리해 두면 완전해 보이는 구성이 왜 여전히 접두사를 버릴 수 있는지 설명됩니다. 같은 네트워크가 동작하는 모든 예제에 두 번 나오는 이유도 설명됩니다. 어느 줄도 불필요하지 않습니다.

전통적인 사용자 공간 구성에서는 둘 다 필요하고 서로를 보완합니다. 커널 경로만 있으면 데몬은 상대를 고를 수 없습니다. iroute 만 있으면 커널에는 터널로 가는 경로가 없습니다. 클라이언트별 파일에 관한 혼란의 대부분도 여기서 나오는데, 파일은 경로 테이블 항목이 아니고 경로 항목은 소유권 선언이 아닙니다.

ip -6 route show | grep fd00:7a
ip -6 route get fd00:7a::1

각각이 들어갈 자리

경로는 서버의 관리 구성에 들어가며 그 서버 프로세스에 적용됩니다. iroute 는 브랜치 장치의 인증된 신원으로 이름 붙인 클라이언트별 파일에 들어갑니다.

실효 신원과 일치하지 않는 파일 이름은 절대 읽히지 않으며, 증상은 iroute 가 빠진 것과 같습니다. 서버가 인증한 신원을 확인한 다음 파일 이름을 글자 하나씩 확인하세요.

# /etc/openvpn/server/server.conf
route-ipv6 fd00:7a::/64
client-config-dir /etc/openvpn/server/ccd

# /etc/openvpn/server/ccd/branch-b
iroute-ipv6 fd00:7a::/64

풀과 브랜치 접두사는 겹치면 어떤 지시문으로도 풀 수 없는 문제가 생기므로 분리해 두세요.

다른 클라이언트에게 필요한 것

그 브랜치에 도달해야 하는 두 번째 클라이언트에게 필요한 것은 소유권이 아니라 광고입니다. 의도한 클라이언트에게 구성에 맞는 클라이언트 또는 그룹 컨텍스트로 접두사를 푸시하세요.

그 장치는 이미 접두사를 연결된 네트워크로 가지고 있으므로 브랜치 자체에는 보내지 마세요.

모두에게 보내는 것은, 그 접근을 허용할 생각이 없었던 클라이언트도 포함해 모든 클라이언트가 브랜치에 터널을 통해 도달할 수 있다고 믿게 되는 결과를 따르는 선택입니다. 광고는 실제로 접근 결정이며, 지시문이 배관 작업처럼 보여도 마찬가지입니다. 서버 옵션 참조 는 iroute-ipv6 을 클라이언트별 소유권으로 문서화하며, 그것이 유지할 가치가 있는 구분입니다.

브랜치 장치의 반환 경로

소유권은 브랜치가 패킷을 전달하고 그 LAN 이 응답하는 방법을 알 때만 도움이 됩니다. 브랜치 장치에서 IPv6 전달을 켜고, 그 LAN 의 호스트가 VPN 풀로 가는 트래픽을 풀을 모르는 기본 경로가 아니라 브랜치 쪽으로 되돌려 보내는지 확인하세요.

그 반환 경로는 사람들이 IPv4 에서 겪는 경로 누락 문제의 IPv6 판입니다.

브랜치 자체가 아니라 LAN 호스트에서 VPN 풀 주소를 조회해 확인하세요. 라우터에서 하는 조회는 사용자가 던지는 질문과 다른 질문에 답하며, 둘은 자주 어긋나므로 추가 명령을 칠 가치가 있습니다.

그 쌍으로도 아직 부족할 때

이 경로를 전혀 쓰지 않는 배포도 있습니다. 커널 데이터 경로와 제품이 관리하는 서버에는 각자 지원되는 경로 처리가 있으며, 사용자 공간 예제가 그대로 옮겨지지 않을 수 있습니다.

다른 쪽을 위해 쓰인 자습서에서 지시문을 복사하기 전에, 자신의 빌드가 어느 데이터 경로를 쓰는지 확인하세요.

마지막으로 주소 범위를 기억하세요: fd00:7a::/64 같은 고유 로컬 접두사는 설계상 사설이며 공용 IPv6 도달성에 대해서는 아무것도 말하지 않습니다. 내부 접근으로 다루고, 인터넷 송신은 자체 정책을 가진 별개의 질문으로 남겨 두세요.

관련 글