포트, 엔드포인트 및 URL 경로
fn-knock에는 사용자가 접속하는 엔드포인트가 두 개 있습니다. 관리 엔드포인트에서는 설정을 변경하고, 게이트웨이 엔드포인트는 서비스 트래픽을 받습니다. fnOS 네이티브 FPK는 바탕화면 아이콘에서 관리 페이지를 엽니다. Docker, OpenWrt, Linux 관리 패널은 기본적으로 7991을 사용합니다. Synology DSM 7 SPK는 DSM 바탕화면의 패키지 엔드포인트에서만 열 수 있습니다. Windows에서는 fn-knock Windows 관리 프로그램이 로컬 127.0.0.1:7991을 시스템 브라우저로 열며, 이 주소를 LAN이나 인터넷의 관리 엔드포인트로 사용할 수 없습니다. 게이트웨이는 일반적으로 7999를 사용합니다.
7998, 7997, 7996은 구성 요소 사이에서 사용하는 내부 포트이며 인터넷에 직접 노출해서는 안 됩니다.
기본 포트
| 포트 | 역할 | 기본 용도 |
|---|---|---|
7991 | 관리 패널 | Docker, OpenWrt, Linux의 기본 관리 엔드포인트. Windows에서는 로컬 루프백으로만 접근 가능 |
7998 | 관리 백엔드 | fnOS 네이티브 FPK의 바탕화면 CGI가 이 포트로 프록시하며 Docker도 내부에서 사용 |
7997 | 인증 서비스 | 로그인, 로그아웃, 패스키, 사람 확인 처리 |
7996 | 게이트웨이 관리 포트 | 관리 백엔드와 Go 게이트웨이 사이의 내부 통신 |
7999 | 게이트웨이 엔드포인트 | 웹 서비스 트래픽을 받고 인증과 라우팅 수행 |
포트는 설치할 때 변경할 수 있습니다. 문제를 해결할 때는 모든 설치가 기본값을 쓴다고 가정하지 말고, 실제 배포 설정과 관리 패널에 표시된 접속 주소를 기준으로 확인합니다.
배포 방식별 외부 포트
| 배포 방식 | 관리 엔드포인트 | 게이트웨이 엔드포인트 | 설명 |
|---|---|---|---|
| fnOS 네이티브 FPK | fnOS 바탕화면 아이콘 | 7999 | 바탕화면 CGI가 로컬 7998로 프록시합니다. 7991을 FPK 관리 엔드포인트로 사용하지 않습니다. |
| Docker Compose | 7991 | 7999 | 기본적으로 두 포트만 공개 |
| OpenWrt | 7991 | 7999 | 내부 관리 백엔드는 기본적으로 17998 사용 |
| Linux(systemd / OpenRC) | 7991 | 7999 | 설치 과정과 sudo knock config에서 포트 변경 가능. 7998, 7997, 7996은 로컬에서만 수신 |
| Synology DSM 7 SPK | DSM 바탕화면 패키지 엔드포인트 | 7999 | 7991을 열지 않습니다. DSM CGI가 내부 관리 서비스를 프록시하며 7998, 7997, 7996은 로컬에서만 수신 |
| Windows x86_64 | 관리 프로그램이 127.0.0.1:7991을 엶 | 7999, 기본적으로 0.0.0.0과 ::에서 수신 | 관리 패널은 로컬 접속만 허용. 설치 프로그램은 Windows의 '도메인/개인' 네트워크 프로필에만 정적 프로그램 규칙 추가 |
Docker에서는 컨테이너 포트와 호스트에 공개하는 포트를 배포 파일에서 함께 결정합니다. 전체 설정은 Docker 배포를 참고합니다.
요청이 게이트웨이에 들어온 뒤의 처리
게이트웨이 엔드포인트는 트래픽이 들어오는 위치만 결정합니다. 그다음 라우팅과 접근 정책을 차례로 판단합니다.
- 네트워크 토폴로지: 인터넷이나 LAN에서 게이트웨이로 직접 연결하거나 FRP 또는 Cloudflared 같은 터널을 통해 연결합니다.
- 라우팅: 웹 서비스는 요청의
Host를 기준으로 나누는 방식을 우선 사용합니다(예:nas.example.com). 경로 매핑은/alist같은 기존 엔드포인트에 의존하는 서비스를 호환할 때만 사용합니다. - 접근 정책: 현재 Host 편집 페이지의
로그인 필요스위치로 공개 접근과 로그인 우선 접근을 선택합니다. 기존의 엄격한 허용 목록 규칙은 계속 출발지 IP를 기준으로 처리합니다.
TCP/UDP 프로토콜 매핑은 별도의 외부 포트에서 수신하며 7999의 HTTP Host 라우팅을 거치지 않습니다. 직접 연결 모드는 게이트웨이를 로그인 엔드포인트로 사용하고, 로그인 후 출발지 IP에 서비스 원본 포트 접근을 허용합니다.
local_exempt: LAN 테스트는 인터넷 보호 여부를 증명하지 않음
인증 서비스는 게이트웨이가 감지한 루프백, 사설망, 링크 로컬 등의 출발지를 local_exempt로 분류합니다. 이러한 요청은 로컬 네트워크 접근으로 간주하여 일반 로그인과 허용 목록 검사를 건너뜁니다. 엄격한 허용 목록도 이를 인터넷 출발지로 차단하지 않습니다.
따라서 다음 사항에 유의합니다.
- 같은 LAN에서 서비스를 여는 것으로는 인터넷 로그인 정책이 적용되는지 확인할 수 없습니다.
- 리버스 프록시나 터널을 사용한다면 요청 로그에서 게이트웨이가 프록시 노드의 사설 IP가 아니라 실제 인터넷 클라이언트 IP를 감지하는지 확인합니다.
- 인터넷 공개 경로는 모바일 데이터 같은 실제 외부 네트워크에서 검증합니다.
local_exempt는 출발지 네트워크에 대한 예외이며 브라우저 로그인 세션이 아닙니다. 로그아웃해도 해당 네트워크의 로컬 예외 속성은 바뀌지 않습니다.
플랫폼별 기능 범위
- Docker는 Host/경로 기반 게이트웨이를 실행할 수 있지만 호스트 방화벽 규칙을 대신 작성하지 않으며 직접 연결 모드와 Smart Connect를 지원하지 않습니다.
- fnOS 네이티브 FPK는 호스트 방화벽을 관리하고 직접 연결 모드와 Smart Connect를 제공합니다.
- OpenWrt는 root 권한이 있으면 호스트 방화벽과 직접 연결 모드를 사용할 수 있고 Smart Connect도 지원합니다. Smart Connect의 전제 조건은 실행 중인
dnsmasq와/etc/dnsmasq.d/를 포함한 기본 설정입니다. 페이지의apt-get설치 기능은 OpenWrt에서 사용할 수 없습니다. SSH 보안, 웹 터미널, 웹 관리 패널 FPK 업데이트는 제공하지 않습니다. - Synology DSM 7 SPK의
7999는 DSM 방화벽 UI에 공개 게이트웨이 포트로 등록되지만 패키지가 호스트 방화벽을 직접 수정할 수는 없습니다. 직접 연결 모드, Smart Connect, 웹 터미널, SSH 보안을 지원하지 않습니다. - Windows의
7999는 기본적으로 모든 인터페이스에서 수신합니다. 설치 프로그램의FnKnock Gateway정적 프로그램 규칙은 '도메인/개인' 네트워크 프로필에만 적용됩니다. 직접 연결 모드, 내장 호스트 방화벽 관리, Smart Connect, 내장 터널, 웹 터미널, SSH 보안은 지원하지 않습니다. 인터넷에 공개하기 전에 라우터/NAT, IPv6, ISP 정책, 타사 보안 소프트웨어도 확인합니다.
Host 또는 경로 라우팅에서 fn-knock는 실제로 게이트웨이를 통과하는 요청만 보호할 수 있습니다. 업스트림 서비스가 인터넷이나 LAN에서 직접 접속할 수 있는 주소로 계속 수신 중이라면 사용자가 게이트웨이를 우회할 수 있습니다. 직접 연결 접근 허용은 예외입니다. 지원되는 호스트 방화벽을 사용해 로그인한 출발지 IP에만 원본 포트를 일시적으로 개방합니다. 별도로 광범위한 인터넷 허용 규칙을 추가하지 않습니다.
접속 경로별 문제 해결
fnOS 네이티브 FPK 관리 페이지가 열리지 않으면 먼저 바탕화면 아이콘, 패키지 프로세스, 7998 백엔드를 확인합니다. Docker 또는 OpenWrt에서는 7991, 바인딩 주소, 포트 공개 설정을 확인합니다. 서비스 도메인이 열리지 않는다면 다음 순서로 살펴봅니다.
- 외부 트래픽이 실제 게이트웨이 포트(기본값
7999)에 도달하는지 확인합니다. - 요청의
Host또는 호환 경로가 매핑과 일치하는지 확인합니다. fn-knock가 실행되는 환경에서 매핑 대상에 접속할 수 있는지 확인합니다.- 요청 로그의 클라이언트 IP, 접근 허용 유형, 업스트림 대상이 예상과 일치하는지 확인합니다.
