web_fetch가 다운로드하는 파일)은 모든 Ayakaleaf Pro 파드 내부의 linked-url-proxy 서비스가 가져옵니다. 이 서비스는 공개 주소가 아닌 주소를 거부하므로, 사용자가 이를 통해 내부 서비스를 읽을 수 없습니다. 기능과 설정은 외부 URL에 설명되어 있습니다.
구성
30-config.yaml (additions)
Kubernetes에서 차단되는 대상
프록시는 공개 유니캐스트 주소가 아닌 모든 주소를 거부합니다. 루프백, 링크 로컬(클라우드 메타데이터 주소169.254.169.254 포함), 사설 대역 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 캐리어급 NAT 대역 100.64.0.0/10, 그리고 이에 대응하는 IPv6 주소가 해당됩니다. 따라서 이 대역에 있는 파드 및 Service 네트워크(kubeadm, flannel, Calico 및 대부분의 관리형 클러스터의 기본값)는 별도 설정 없이 차단되며, 이 주소로 해석되는 redis나 git-bridge 같은 클러스터 내부 이름도 차단됩니다.
공개 주소는 허용됩니다. 노드나 로드 밸런서에 공개 주소가 있다면 이를 OVERLEAF_LINKED_URL_BLOCKED_NETWORKS에 추가하여(공백 또는 쉼표로 구분) 사용자가 이를 통해 NodePort나 상태 페이지를 가져올 수 없도록 하세요.
OVERLEAF_LINKED_URL_OUTBOUND_PROXY가 설정되어 있으면 호스트 이름은 프록시가 해석하므로 IP 주소를 포함한 URL만 검사됩니다. 이 경우 프록시가 직접 내부 네트워크를 차단해야 합니다.
여러 레플리카
추가 작업이 없습니다. 각 파드는 자체 linked-url-proxy와 동일한 설정으로 파일을 가져옵니다.Kubernetes에서의 테스트
세 개의 레플리카, flannel의 파드 네트워크10.244.0.0/16, kubeadm의 서비스 네트워크 10.96.0.0/12로 구성된 Kubernetes 1.37 환경에서, 프록시는 OVERLEAF_LINKED_URL_BLOCKED_NETWORKS 없이도 Service의 ClusterIP, 클러스터 내부 이름 redis, garage, overleaf-1.overleaf-hl.overleaf.svc.cluster.local, 그리고 노드 주소로부터의 다운로드를 거부했습니다. Import API를 통한 루프백 및 클라우드 메타데이터 주소의 거부, 그리고 AI 어시스턴트가 OVERLEAF_LINKED_URL_ALLOWED_RESOURCES가 허용하는 페이지만 읽는지에 대한 엔드투엔드 테스트도 통과했습니다.
