Gately v0.6.2 출시
2026년 10월 31일
프로토콜 라우팅
새 '프로토콜 라우팅' 모듈이 사이드바의 '포트 포워딩' 옆에 추가되었습니다. 클라이언트가 처음 보내는 데이터로 프로토콜을 식별해, 같은 포트로 들어온 연결을 서로 다른 백엔드로 보냅니다. 트래픽은 전혀 복호화하지 않습니다.
- TLS는 SNI 도메인과 ALPN, HTTP는 Host, Minecraft는 핸드셰이크에 담긴 서버 주소로 라우팅합니다.
- SSH, RDP, SOCKS4/5, OpenVPN(TCP, tls-auth와 tls-crypt-v2 포함), XMPP, MQTT, PostgreSQL, RTSP, SIP, Redis, AMQP, SMB, Git, IRC, ADB, BitTorrent는 각각 하나의 라우트를 가집니다. HTTP, RTSP, SIP는 요청 줄 끝의 버전으로 구분합니다.
- '대기 시간 초과' 라우트는 연결 후 아무것도 보내지 않는 클라이언트(VNC, MySQL처럼 서버가 먼저 말하는 프로토콜)를 받습니다. 식별 제한 시간은 0.1초 단위로 지정할 수 있습니다.
- 식별할 수 없거나 어떤 라우트에도 맞지 않는 연결은 기본 대상으로 갑니다. 라우트마다 백엔드로 PROXY 프로토콜을 보낼 수 있고, 목록에 라우트별 연결 수가 표시됩니다.
프로토콜별 식별 기준, 도메인과 ALPN의 매칭 순서, haproxy SNI 라우팅과 sslh를 대체하는 예시는 프로토콜 라우팅을 참고하세요.
목록 그룹과 정렬 (#48)
동적 DNS, 포트 포워딩, 프로토콜 라우팅, 웹 서비스 사이트, STUN, SSL 인증서, WAF, 침입 방지, frp, Cloudflare 터널, File Browser, 스토리지 마운트, Wake-on-LAN, 예약 작업, 알림, 웹 터미널 연결, API 토큰 등의 목록이 같은 기능을 지원합니다.
- 검색, 드래그 정렬(휴대폰에서는 위/아래 화살표), 여러 항목을 선택해 한 번에 그룹으로 이동;
- 그룹 전체 이동, 그 자리에서 그룹 이름 변경과 병합, 접힘 상태 기억;
- 동적 DNS 작업 안의 DNS 레코드도 그룹으로 묶고 정렬할 수 있습니다.
그룹이나 순서를 바꿔도 실행 중인 인스턴스는 재시작되지 않습니다. 자세한 내용은 목록 그룹과 정렬을 참고하세요.
동적 DNS에서 STUN 주소 참조 (#47)
레코드 값과 Webhook에서 {STUN_규칙이름_PORT}, {STUN_규칙이름_IP}, {STUN_규칙이름_ADDR}을 사용할 수 있습니다. STUN 규칙의 공인 주소가 바뀌면 이를 참조하는 작업이 즉시 동기화되고, Webhook에서만 참조하는 경우에도 Webhook이 한 번 호출됩니다. 규칙이 비활성화되어 있거나 아직 통과에 성공하지 못했다면 해당 레코드는 이번 회차에 건너뛰고, 상태에 이유가 표시됩니다. 자세한 내용은 동적 DNS · 레코드 값 변수를 참고하세요.
STUN 다중 NAT 지원
UPnP / NAT-PMP를 켠 규칙은 먼저 게이트웨이에 자신의 외부 주소를 조회합니다. 이 주소가 STUN이 관찰한 공인 주소와 다르면(예: 라우터 바깥에 통신사 NAT가 한 겹 더 있는 경우) 공인 포트는 바깥쪽 NAT에 속하므로, 터널 포트 매핑만 유지하고 라우터에 매핑을 추가하지 않습니다. 이제 재확인할 때마다 공인 포트가 바뀌지 않습니다. STUN 문서에 풀 콘형과 제한형 통신사 NAT, 다중 NAT에서의 UPnP, 로컬 포트 고정, 호스트 방화벽 허용에 대한 설명을 추가했습니다.
보안 강화
- 기본 비밀번호를 쓰는 동안에는 계정, 2단계 인증, 패스키, 추가 계정, API 토큰, 시스템 설정, 웹 터미널 보안 설정을 볼 수만 있고, 백업에서 복원하거나 이 설정들을 이전 기록 버전으로 되돌리는 것도 거부됩니다. 먼저 기본 비밀번호를 바꿔야 합니다.
- 읽기 전용 계정과 읽기 전용 API 토큰으로 설정과 로그를 읽으면 사이트 공유 사용자 비밀번호, 공유 링크 토큰, 요청 헤더 값, 비밀 값, 그리고 URL 안의 비밀번호·쿼리 값·경로 토큰이 가려집니다.
files/와sftp/아래 디렉터리를 탐색하려면 쓰기 권한이 필요합니다.- 비밀번호만으로 로그인해도 실패 횟수가 초기화되지 않으므로 2단계 인증 코드를 무차별 대입할 수 없습니다.
- 신뢰하는 프록시를 거쳐 접근할 때 X-Forwarded-For와 X-Real-IP가 서로 다르면 더 엄격하게 처리하여, 위조한 내부 주소로 '내부망 전용 접근'을 우회할 수 없습니다.
- API 토큰을 만들 때, 쓰기 권한으로 서버 명령을 실행할 수 있는 모듈(동적 DNS, 예약 작업, 침입 방지, STUN, SSL, 웹 터미널, Docker, frp, File Browser, Cloudflare 터널)에 '명령 실행 가능' 표시가 붙고 권한을 줄 때 경고가 나타납니다.
- UPnP 게이트웨이가 돌려준 장치 설명과 제어 URL은 응답한 장치에 속해야 합니다.
기타 개선
- 동적 DNS 작업 카드에서 각 레코드를 바로 삭제할 수 있습니다(서비스 업체의 DNS 레코드는 유지됩니다).
- 휴대폰의 웹 터미널 키 막대가 한 줄 가로 스크롤로 바뀌었고, 기본적으로 화면 키보드와 함께 나타나고 사라집니다.
- Android Chrome과 iOS에서 홈 화면에 추가할 때 아이콘이 투명해지던 문제를 고쳤고, 관리 화면과 공식 사이트가 Web App Manifest를 제공합니다.
- 공식 사이트 첫 페이지와 README를 새로 디자인했습니다.
수정
- 한 번 매칭된 침입 방지 규칙을 다시 편집해 저장하면 'unknown field lastSeen' 오류가 발생했습니다.
- 여러 인증서가 같은 도메인을 포함하면 만료가 가장 늦은 인증서를 사용합니다. 인증서 목록의 순서와 그룹이 실제로 사용되는 인증서에 영향을 주지 않습니다.
- 프로토콜 라우팅이 식별 중 ClientHello의 일부만 받은 채 시간이 초과되면 0으로 채운 데이터를 백엔드에 전달하던 문제를 고쳤고, 규칙을 중지하거나 수정하면 아직 식별 중인 연결을 즉시 닫습니다.
- Webhook 본문이 JSON일 때 그 안의 STUN 변수가 치환되지 않았습니다.
업그레이드 안내
- 업그레이드 후 처음 시작할 때 포트 포워딩의 SNI 라우팅 규칙이 자동으로 프로토콜 라우팅으로 옮겨지며, key, 이름, 활성 상태, 그룹, 라우트는 그대로 유지됩니다. 포트 포워딩이 꺼져 있었다면 프로토콜 라우팅도 꺼집니다. 포트 포워딩 권한이 있는 API 토큰은 프로토콜 라우팅에도 같은 권한을 받습니다.
- API로 라우팅 규칙을 관리하는 스크립트는
/api/protoroute/rules를 사용하세요. 라우트 필드는sniRoutes에서routes로 바뀌었고,/api/portforward/rules는 더 이상mode필드를 받지 않습니다. 이 규칙들의 모니터링 지표는gately_protoroute_*로 바뀝니다. - Docker는 새 이미지를 받은 뒤 컨테이너를 다시 만드세요. OpenWrt는 새
.apk/.ipk를 덮어 설치하세요. fnOS는 앱 센터에서 새.fpk를 직접 설치하세요. 그 밖의 설치 방식은 "시스템 설정"에서 온라인 업그레이드할 수 있습니다.