Pangolin 1.25: Redirects, mTLS, and Machine Roles
Pangolin 1.25: 리디렉션, mTLS, 머신 클라이언트 역할
Pangolin 1.25는 HTTP 리디렉션과 공개 리소스의 mTLS, 머신 클라이언트 역할을 추가했습니다. 부하 분산 방식 선택, 리소스의 YAML 청사진 내보내기, 비공개 HTTP 요청의 사용자 식별 헤더 전달과 자격 증명 재생성도 지원합니다.
- 주제
에디터 노트
실제 배포에서 먼저 걸릴 조건은 Traefik과 Badger의 버전 호환성입니다. 릴리스 노트는 영구 리디렉션에 Badger 1.8.0 이상을 요구하지만, 댓글에서는 Traefik이 해당 버전 플러그인을 가져오지 못해 리소스가 중단됐다는 경험이 나왔습니다. Pangolin 측 댓글도 자동 업데이트를 보류했다고 밝혔고, Traefik 문제를 해결할 때까지 수동 조치가 필요할 수 있습니다. mTLS는 로그인 전에 기기 인증서를 검사하고, 통과한 뒤에도 기존 인증을 유지합니다. 다만 댓글의 인증서 발급 질문에는 답이 없어 인증서 배포와 관리 절차는 이 자료만으로 판단하기 어렵습니다. 부하 분산 기능도 Traefik 3.6 이상이 필요하므로 기능 추가와 함께 운영 구성의 버전 조건을 확인해야 합니다.
AI 요약
Pangolin 1.25는 공개 리소스와 머신 클라이언트의 접근 제어, 프록시 설정을 보강했습니다. 일부 기능은 Badger나 Traefik 버전 조건을 따르므로 업데이트 전에 호환성을 확인해야 합니다.
HTTP 리디렉션
리디렉션은 호스트 이름이나 공개 리소스에 연결합니다. 호스트와 경로를 기준으로 요청을 일치시키며, 대상 URL로 보내기 전에 경로를 다시 쓸 수도 있습니다. 같은 호스트에서 규칙이 겹치면 우선순위가 높은 규칙을 적용합니다. 리소스 처리와 인증보다 먼저 실행되므로 기존 호스트 이름을 폐기하거나 경로를 옮길 때 별도 프록시를 두지 않아도 됩니다. 영구 리디렉션에는 Badger 1.8.0 이상이 필요합니다. 자동 마이그레이션은 표준 위치에서 Traefik 설정을 찾을 때 Badger를 업데이트하며, 찾지 못하면 직접 업데이트해야 합니다.
공개 리소스의 mTLS
공개 리소스에 신뢰할 CA 인증서를 등록하면 TLS 핸드셰이크 단계에서 클라이언트 인증서를 확인합니다. 유효한 인증서가 없는 클라이언트는 Pangolin 로그인 화면에 도달하기 전에 연결 오류를 받습니다. 인증서 확인 뒤에는 PIN, SSO 등 기존 인증을 계속 적용할 수 있습니다. 검증된 인증서 정보는 X-Forwarded-Tls-Client-Cert-Info 헤더로 업스트림에 전달합니다. 이 기능은 Pangolin 사이트와 제어 평면 사이의 mTLS와 별개입니다.
머신 클라이언트 역할
머신 클라이언트에 사용자와 같은 역할을 할당할 수 있습니다. 머신은 역할이 접근 가능한 모든 비공개 리소스에 접근하며, 역할 권한과 리소스별 직접 권한을 합쳐 적용합니다. CI 실행기나 데몬마다 권한을 따로 관리하지 않고 팀과 역할을 공유할 수 있습니다.
부하 분산과 청사진
같은 라우팅 그룹에 대상이 여러 개인 공개 HTTP 리소스는 네 가지 방식으로 요청을 분산합니다. 기본값인 Round Robin은 대상을 차례로 선택합니다. Power of Two Choices는 무작위 대상 두 곳 중 활성 연결이 적은 곳을 고릅니다. Client IP Hash는 같은 클라이언트를 같은 대상으로 보내며, Least Response Time은 응답이 빠르고 활성 연결이 적은 대상을 선택합니다. 모든 방식에 Traefik 3.6 이상이 필요하며 Traefik은 직접 업데이트해야 합니다. 공개 또는 비공개 리소스는 대시보드에서 YAML 청사진으로 내보낼 수 있어 UI에서 설정한 내용을 버전 관리에 넣거나 GitOps의 시작점으로 삼을 수 있습니다.
비공개 HTTP 식별 정보와 자격 증명
사이트는 비공개 HTTP 요청의 Pangolin 클라이언트 정보를 Remote-User, Remote-Email, Remote-Name, Remote-Role 헤더로 업스트림 앱에 전달할 수 있습니다. 이를 이용하면 앱이 별도의 로그인 절차 없이 호출자의 식별 정보를 받을 수 있습니다. Community Edition에서도 사이트, 머신 클라이언트, 원격 노드 자격 증명을 대시보드에서 재생성합니다. 재생성하면 새 ID와 시크릿을 발급하고 기존 값을 무효화합니다. 새 값으로 다시 시작하기 전까지 연결은 유지됩니다. '재생성 및 연결 해제'를 선택하면 활성 연결도 즉시 끊습니다.
Reddit 반응
- @Jabuk-2137 — 업데이트 뒤 Traefik이 Badger v1.8.0을 인식하지 못해 모든 리소스를 사용할 수 없었습니다. 같은 문제가 생기면 설정 파일에서 버전을 v1.7.0으로 바꾸면 됩니다.
- @MrUserAgreement — 최신 컨테이너에서는 Badger 1.8.0 자동 업데이트를 보류했습니다. Traefik이 새 플러그인을 색인하고 가져오는 문제를 해결하기를 기다리고 있습니다. 대부분의 사용자는 겪지 않겠지만 문제가 생기면 임시로 조치할 수 있습니다.
- @Jabuk-2137 — 제 실수입니다. GitHub 릴리스 노트를 확인하지 않았습니다.
- @infamousbugg — 밤사이 출시된 새 Traefik으로 Badger 1.8.0을 시도했지만 같은 문제가 있었습니다.
- @TheMan2204 — mTLS 지원이 정말 좋습니다. 감사합니다.
- @Simplixt — 현재 Cloudflare Tunnel에서 이메일 일회용 비밀번호를 사용합니다. Pangolin으로 공개하는 편이 더 안전한가요?
- @jsiwks — Pangolin도 같은 기능을 지원합니다. 직접 호스팅하거나 Pangolin Cloud를 쓸 수 있습니다. mTLS를 켜면 OTP 전에 클라이언트 기기에 인증서가 설치되어 있는지 확인하고, 인증을 통과하면 OTP를 진행합니다. mTLS를 끄면 인증 기능이 있는 Cloudflare Tunnel처럼 동작합니다.
- @-ThreeHeadedMonkey- — 클라이언트 인증서를 쉽게 발급할 수 있나요? 공인 CA 인증서를 쓰고 싶습니다. VPN보다 설정이 덜 번거로울까요?
- @Objective_Career1534 — Node.js의 최신 취약점, 특히 Brotli RCE 문제를 Pangolin이 피했는지 궁금합니다.
- @diablobsb — 사무실 IP 대역에서만 접근 가능한 제3자 도메인을 Pangolin 사용자에게 노출할 수 있나요?
- @MrUserAgreement — 공개 리소스를 사용자 도메인으로 만드는 방식은 제3자 앱이 원래 도메인에서 동작한다고 가정할 수 있어 잘 맞지 않을 수 있습니다. 대신 비공개 리소스의 호스트 별칭을 www.thirdparty.com으로 설정하면 VPN 터널을 거쳐 사무실 네트워크에서 연결할 수 있습니다.
- @diablobsb — 확인해 보겠습니다. 감사합니다.
원문: Pangolin / 번역·요약: Trawling