Skip to content
이 페이지는 AI로 번역되어 부정확한 내용이 있을 수 있습니다. GitHub에서 개선에 참여해 주세요.

Gately v0.6.3 출시 ​

2026년 11월 2일

v0.6.3 다운로드 · GitHub Release

성능 모니터링 (#59) ​

새 "성능 모니터링" 모듈이 5초마다 호스트의 CPU, 메모리, 디스크, 부하와 Gately 프로세스의 CPU, 메모리, 파일 디스크립터, 고루틴 수를 수집합니다.

  • 페이지에 60초 / 1시간 / 24시간 추이가 표시되고, 옆에는 실행 중인 사이트의 처리 중인 요청, 초당 요청 수, 5xx 비율, 첫 바이트까지의 시간 P95, 백엔드 상태가 나옵니다. 사이트를 클릭하면 사이트 통계가 열립니다.
  • 웹 사이트에서 첫 바이트까지의 시간(요청을 받은 때부터 응답 헤더를 보낼 때까지)을 측정하기 시작했고, 사이트 통계에 P50 / P95 곡선이 추가되었습니다. Prometheus에는 gately_site_request_duration_seconds와 gately_host_*, gately_process_* 지표가 추가되었으며 Grafana 대시보드도 함께 갱신되었습니다.
  • 알림 규칙에서 지표, 비교 방식, 임계값을 고른 뒤 지속 시간(1~1440분)을 설정합니다. 조건이 지속 시간 내내 충족될 때만 발생하며, 복구되면 별도로 알림을 보냅니다. 5xx 비율과 지연 시간에는 최소 요청 수를 설정할 수 있어 트래픽이 너무 적으면 판단하지 않습니다. 알림은 알림 센터를 통해 전송되며, 구독하는 알림 규칙이 없으면 페이지에 안내가 표시됩니다.

기록은 메모리에만 저장되며 재시작하면 처음부터 다시 쌓입니다. 자세한 내용은 성능 모니터링을 참고하세요.

WAF와 SafeLine 연동 ​

WAF 인스턴스는 요청을 직접 운영하는 SafeLine 커뮤니티 에디션 탐지 엔진에 넘겨 의미 분석을 맡길 수 있어, Gately 앞뒤에 리버스 프록시를 하나 더 둘 필요가 없습니다.

  • 탐지 엔진 주소(host:port 또는 unix: 뒤에 snserver.sock 경로)를 입력합니다. "연결 테스트"는 하트비트와 예시 SQL 인젝션을 보내 왕복 시간과 SafeLine이 기록한 이벤트 ID를 보여 줍니다.
  • SafeLine은 규칙 그룹보다 먼저 실행되며, SafeLine만 쓸 때는 규칙 그룹을 고르지 않아도 됩니다. "탐지만" 모드는 기록만 하고 차단하지 않습니다.
  • 차단은 WAF 카운터, WAF 로그(이벤트 ID 포함), 액세스 로그, 사이트 통계, 침입 방지에 집계됩니다.
  • 탐지 타임아웃(기본 1초), 검사할 본문 크기 상한(기본 1024 KB, 초과분은 그대로 전달), 엔진을 사용할 수 없을 때 통과시킬지 503을 반환할지(기본은 통과)를 설정할 수 있습니다.

자세한 내용은 WAF 방화벽 · SafeLine(雷池) 연동을 참고하세요.

일괄 작업 (#57) ​

목록의 "정렬" 모드가 "정렬 및 일괄"로 바뀌어, 항목을 선택한 뒤 한 번에 사용, 사용 안 함, 삭제할 수 있습니다. 삭제 전에는 이름 목록으로 확인합니다. 웹 서비스 사이트는 리스너를 가로질러 선택할 수 있으며, 도메인 일괄 추가·삭제, 기본 도메인 접미사 교체(old.com → new.com은 www.old.com과 *.old.com도 함께 고칩니다), 압축, 액세스 로그, CORS, 전달 헤더, 거부 시 연결 끊기, WAF 참조의 일괄 변경을 지원합니다. 바꾸지 않은 옵션은 각 사이트의 원래 값을 유지합니다. 일괄 작업 전체를 먼저 검증한 뒤 한 번에 저장하며, 한 항목이라도 실패하면 아무것도 적용되지 않고, 영향받는 리스너만 다시 불러오므로 기존 연결은 끊기지 않습니다. API는 범용 PUT <경로>-enable, POST <경로>-delete와 POST /api/webservice/sites/batch입니다.

STUN: 방화벽 포트 자동 허용 ​

STUN 규칙에 "방화벽 자동 허용"이 추가되었습니다. 켜면 Gately가 이 장비의 방화벽에서 통과 포트를 허용하고(UPnP / NAT-PMP 내부 포트를 설정한 경우 함께 허용), 규칙을 중지하거나 삭제하면 제거합니다. nftables(OpenWrt fw4, firewalld)와 iptables(fw3, ufw)를 지원하며, 방화벽을 다시 불러온 뒤 30초 안에 자동으로 복구하고, 규칙 카드에 허용 결과 또는 실패 이유가 표시됩니다. 자세한 내용은 STUN 통과를 참고하세요.

수정: 와일드카드 CNAME으로 인한 발급 실패 (#61) ​

*.example.com이 example.com을 가리키는 것과 같은 와일드카드가 있는 도메인에서는 _acme-challenge도 CNAME으로 해석되어, DNS-01 검증 레코드가 @에 기록되고 CA가 TXT 레코드를 찾을 수 없다고 보고했습니다. 이제 Gately가 직접 판단합니다. 명시적으로 설정한 CNAME은 그대로 따라가므로 검증을 다른 도메인에 위임할 수 있고, 와일드카드에서 생긴 CNAME은 식별되어 레코드가 _acme-challenge.<도메인>에 기록됩니다. 인증서에는 "_acme-challenge의 CNAME을 따라가지 않음" 옵션도 추가되었습니다. 자세한 내용은 SSL 인증서를 참고하세요.

웹 서비스 로그 (#62) ​

  • 액세스 로그에 차단 이유(차단, IP 목록, 국가, 속도 제한, WAF)를 기록하고, 이 인스턴스의 콘솔에 로그인한 세션이 있는 요청에는 콘솔 사용자 이름을 기록합니다.
  • 로그 페이지에 "차단된 출처 숨기기"(기본 꺼짐, 차단의 원인이 된 요청을 감사용으로 남겨 둠)와 "콘솔 자체 요청 숨기기"(기본 켜짐)가 추가되었습니다. 표시에만 영향을 주며 로그는 그대로 저장됩니다.
  • IP 필터는 ! 또는 -로 시작하는 제외 항목을 지원하며, 주소, 대역, 일부 주소를 쓸 수 있습니다.

기타 개선 ​

  • 네트워크 토폴로지에 "필터"가 추가되어 리스너별, 문제가 있는 노드만, 차단 이유별로 사이트를 걸러 볼 수 있습니다. 마스킹에는 "별칭" 스타일이 추가되어 주소 전체를 Visitor-01, Backend-01 같은 번호로 바꿉니다(#54).
  • README 둘러보기 영상이 소개 페이지부터 바로 재생됩니다.
  • 의존성 업데이트: go-jose를 v4.1.7로, klauspost/compress를 v1.18.7로 올렸습니다.

수정 및 강화 ​

  • WAF 사이트의 백엔드가 직접 403을 반환해도 더 이상 WAF 차단으로 취급하지 않습니다. 이전에는 차단 횟수에 집계되고 waf.blocked 이벤트가 발생하여, WAF 차단을 구독하는 침입 방지 규칙이 정상 방문자를 차단할 수 있었습니다.
  • "콘솔 자체 요청 숨기기"는 관리자 세션만 인정합니다. 읽기 전용 계정의 로그인 쿠키로는 요청에 콘솔 표시를 붙일 수 없으며, 차단된 요청에도 콘솔 표시가 붙지 않습니다.
  • 일괄 작업은 중복 제거 전에 제출 개수를 제한합니다. 일괄 설정한 WAF 인스턴스가 없으면 저장을 거부합니다.
  • 한 호스트에서 여러 Gately를 실행할 때, 자동으로 허용한 방화벽 규칙은 인스턴스별로 구분되어 서로 삭제하지 않습니다.

업그레이드 안내 ​

  • Docker는 새 이미지를 받은 뒤 컨테이너를 다시 만드세요. Docker 소켓이 마운트되어 있으면 Gately의 Docker 페이지에서 Gately 자체를 업그레이드할 수도 있습니다. OpenWrt는 새 .apk / .ipk를 덮어 설치하고, fnOS는 앱 센터에서 새 .fpk를 수동으로 설치합니다. 그 밖의 배포 방식은 "설정"에서 온라인으로 업그레이드할 수 있습니다.

Apache-2.0 라이선스로 공개되어 있습니다.