피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Token-bucket 기반 대역폭 제어 및 Per-User Accounting 구현 SSH 터널링 서버
Build a Self-Hosted SSH Tunneling Server with Per-User Accounting (Abdal 4iProto)
AI 요약
Context
기존 SSH 터널링의 단순 연결 기능을 넘어 사용자별 세밀한 트래픽 제어와 보안 정책 적용의 필요성 증대. 단순 스크립트 기반 제어의 한계를 극복하고 시스템 레벨에서 대역폭 및 세션 관리 기능을 통합한 전용 서버 구조 요구.
Technical Solution
- Token-bucket 알고리즘 적용을 통한 burst traffic 허용 및 매끄러운 Throughput 제어 구현
- 1~2초 주기의 실시간 Quota 체크 로직을 통한 초과 사용자 즉시 연결 해제 메커니즘 설계
- 10초 간격의 Traffic Accounting 데이터 Flush 방식으로 시스템 장애 시 데이터 손실 최소화
- Role 기반 접근 제어(RBAC)를 통해 Admin의 Host Shell 접근과 일반 User의 Tunnel-only 권한 분리
- Wildcard 패턴 기반의 Domain 및 IP Blocking 필터링 계층 구축으로 세밀한 트래픽 제어
- DNS Tunneling(DNSTT) 및 TCP/UDP Forwarding 지원을 통한 네트워크 제약 환경 대응력 확보
실천 포인트
- 사용자별 속도 제한 필요 시 Token-bucket 알고리즘을 통한 부드러운 트래픽 쉐이핑 검토 - 실시간 Quota 강제 적용을 위해 연결 수립 시점이 아닌 세션 유지 중 주기적 체크 로직 구현 - 상태 데이터의 빈번한 쓰기 부하를 줄이기 위해 일정 주기(예: 10초)의 배치 Flush 전략 채택 - 외부 릴레이 서버 구성 시 DNAT 룰의 우선순위를 설정하여 관리자 접속 차단 리스크 방지