특정 Docker 네트워크에 대한 VPN

특정 Docker 네트워크에 대한 VPN

내 목표는 공개 서비스와 상호 작용할 수 있는 다른 관리 UI를 유지하면서 내 VPS에서 특정 포트와 서비스를 공개적으로 호스팅할 수 있는 솔루션을 찾는 것입니다.

지금까지 내 솔루션은 공용 도커 포트를 호스트 로컬 루프백 주소에 바인딩하고 SSH 터널을 사용하여 다시 연결하는 것입니다. 여기는일했다곧 포트 충돌이 발생할 수 있지만(그리고 내 ssh 명령은 점점 더 길어집니다).

분할 터널링 VPN을 활용하여 많은 관리 UI에 연결하는 동시에 역방향 프록시를 사용하여 공용 트래픽을 특정 Docker 포트로 전달할 수 있는 격리된 Docker 네트워크를 만들고 싶습니다. 이상적으로는 Docker 컨테이너 내에서 Wiregaurd를 사용하고 Wireguard-UI 또는 Firezone과 같은 도구를 활용하여 클라이언트 구성을 단순화하고 싶습니다.

다음은 의도된 용도에 대한 예시 다이어그램입니다. 여기에 이미지 설명을 입력하세요.

이를 복잡하게 만드는 것은 Docker가 iptables와 상호 작용하는 방식입니다. 이 작업을 수행하기 위한 일반적인 단계별 가이드가 있는 경우 알려주시기 바랍니다.

또한 Authelia와 같은 몇 가지 대안도 고려했지만 가능하면 일반 네트워크를 통해 구성 인터페이스에 대한 액세스를 허용하지 않는 것이 좋습니다.

답변1

마침내 작동하는 솔루션을 얻었습니다. 분명히 UFW는 또한 다른 네트워크 간에 라우팅할 때 방해가 되는 것을 좋아합니다.

해결책:

  1. VPS에 직접 WireGuard를 설치하고 구성합니다.wiregaurd-ui, VPS의 로컬 호스트에 바인딩할 추가 환경 변수를 추가합니다(ssh는 포트를 내 컴퓨터로 다시 전달합니다. 자주 실행할 계획은 없습니다).
  2. 다음 docker 네트워크 서브넷에 대해 적절한 "허용된 IP" 필드를 사용하여 클라이언트를 구성합니다.
  3. 새로운 도커 네트워크를 생성하고 시작하세요.네트워크 다기능 도구네트워크에 연결된 컨테이너. 호스트에 바인딩된 포트가 없습니다. 내장형 Apache 서버와 광범위한 네트워크 테스트 도구가 함께 제공됩니다.
  4. IPv4 전달이 활성화되어 있는지 확인하십시오가상 사설 서버그리고극세사 묶음(활성화 후 VPS를 다시 시작하십시오).
  5. ufw route allow in on <wg0> out on <docker bridge interface>ufw의 포트 전달 및 다시 로드를 허용하도록 UFW 규칙을 설정합니다 .
  6. Multitool 컨테이너를 실행하고 tcpdump 포트 80을 시작합니다. 로컬 컴퓨터에서 Wireguard 인터페이스를 시작하고 컨테이너 내부 IP 주소로 연결하여 연결을 확인했습니다.

관련 정보