79 lines
5.4 KiB
Markdown
79 lines
5.4 KiB
Markdown
---
|
|
title: zlambda
|
|
updated: 2026-04-13
|
|
tags: [infra, host, nixos, tokyo, linode]
|
|
type: host
|
|
host_kind: vm
|
|
location: tokyo
|
|
provider: linode
|
|
status: active
|
|
ssh_host: zlambda
|
|
public_ip: 139.162.71.52
|
|
tailscale_ip: 100.78.51.18
|
|
lan_ip: null
|
|
os: NixOS 25.05
|
|
cpu_cores: 1
|
|
ram_gb: 2
|
|
k3s_role: null
|
|
critical: false
|
|
monthly_cost_usd: 5
|
|
aliases: [sandbox-tokyo]
|
|
---
|
|
|
|
## 역할
|
|
|
|
NixOS 베이스 호스트 (도쿄, Linode nano). 이전 `sandbox-tokyo` 장비를 2026-04-08에 Debian → NixOS로 전환. 경량 docker + tailscale + sshd.
|
|
|
|
## 이전된/제거된 구성
|
|
|
|
- APISIX + etcd (Netbis DR) — 제거
|
|
- microsocks — 제거
|
|
- tlsproxy, vault-prod, wg-easy — 제거
|
|
|
|
## 현재 구성
|
|
|
|
- sshd, tailscale, docker
|
|
- Linode 프로필: kernel `linode/direct-disk`
|
|
- BBR + fq + sysctl 튜닝
|
|
- NixOS configuration: Gitea [kaffa/nixos-infra](https://gitea.inouter.com/kaffa/nixos-infra)
|
|
- kaffa-macmini: `~/nixos-infra/`
|
|
- zlambda: `/root/nixos-infra/`
|
|
|
|
### Docker 컨테이너
|
|
|
|
| 컨테이너 | 역할 | 비고 |
|
|
|----------|------|------|
|
|
| apisix / apisix-etcd | APISIX (Netbis 관련) | host network |
|
|
| vector-relay | 로그 릴레이 | |
|
|
| tlsproxy | SearXNG Google 우회 (Chrome TLS fingerprint), `:8443` | [[../../services/searxng]] |
|
|
| nginx (stream) | inbest SFTP 포워딩 `:2201` → 10.100.1.158:22. **2026-06-11 socat→nginx stream 교체** | 아래 참조 |
|
|
|
|
### inbest SFTP 포트포워딩 (2026-06-10 구성, 2026-06-11 nginx 교체)
|
|
|
|
- **공개 엔드포인트: `139.162.71.52:2201`** (SFTP)
|
|
- 경로: `외부 → zlambda 공인IP:2201 → (tailscale 100.78.51.18 → 10.100.1.158) → kr2 inbest 프로젝트 sftp 컨테이너:22`
|
|
- 릴레이: **NixOS `services.nginx` stream TCP proxy** (nixos-infra `inbest-sftp-fwd.nix`, `streamConfig` upstream → 10.100.1.158:22, `proxy_timeout 1h`). flake 빌드: `nixos-rebuild switch --flake /root/nixos-infra#zlambda`
|
|
- 이력: 수동 docker(alpine/socat) → 2026-06-10 systemd socat 서비스 → **2026-06-11 nginx stream 교체** (socat 경유 파일 전송 장애 보고). nginx는 http 가상호스트 미정의로 80/443 미점유, stream 만 사용
|
|
- 백엔드 sshd 호스트키(ED25519): `SHA256:bHy58AE10LPS/C4I8DXnFNCDaEsH3MFUreoDz8cnCPs` (= sftp 컨테이너 키, 평문 TCP relay라 MITM 없음). 백엔드 sshd: OpenSSH 10.0p2 Debian
|
|
- 인증: sftp 컨테이너 자체 sshd (publickey/password). **chroot 미사용**(`ChrootDirectory none`), `Match User inbest` → `ForceCommand internal-sftp`, home `/data`(소유 `inbest:sftponly`), 고객 사이트별 디렉토리(in-best-com, leewell-com 등). 비밀번호 yescrypt(`$y$`). 계정 시크릿은 Vault. 2026-06-11 검증: password/키 인증·10MB 업다운로드 정상(40/40)
|
|
- ⚠️ 2201이 2026-06-10 인터넷 개방됨 → sshd 무차별 대입 스캔 노출. inbest 계정 약한 비밀번호 → 키 전용 전환 또는 fail2ban 검토 권장
|
|
|
|
#### 2026-06-11 장애 근본원인: OpenSSH PerSourcePenalties (★ 진짜 원인)
|
|
|
|
- **증상**: FileZilla로 접속·폴더 목록은 되는데 파일 업로드/다운로드만 실패. 진입점 `139.162.71.52:2201`.
|
|
- **근본원인**: 백엔드 sshd(OpenSSH 10.0p2)의 `PerSourcePenalties`(10.0 기본 활성, `authfail:5 noauth:1 ... netblocksize 32`). 릴레이(nginx)→tailscale→**OpenWrt subnet-router SNAT** 경유라 모든 외부 클라이언트가 **단일 source `192.168.9.1`**로 보임. 스캐너/오타/FileZilla 재시도 중 한 건이라도 인증 실패하면 공유 source 전체에 페널티 누적 → 그 source의 **새 연결을 드롭**. 이미 인증된 탐색 연결(폴더 목록)은 유지되고, FileZilla가 전송용으로 **새로 여는 연결만 드롭** → "목록은 보이나 전송 실패". (socat/nginx 릴레이는 무관 — socat·nginx 둘 다 전송 자체는 정상이었음)
|
|
- **수정**: 컨테이너 sshd 드롭인 `/etc/ssh/sshd_config.d/00-relay-penalty-exempt.conf` → `PerSourcePenaltyExemptList 192.168.9.1` + `systemctl restart ssh`(누적 페널티 메모리 초기화). 릴레이 뒤에선 per-source 페널티가 무의미·유해하므로 면제.
|
|
- **검증(2026-06-11)**: 인증 실패 8연발 직후 정상연결 5/5, 동시 키 전송 8/8(5MB 업다운 체크섬 일치), password 인증 10MB 업다운 3/3.
|
|
- **잔여 권고**: 면제로 릴레이 경유 brute-force 방어가 사라짐 → 실 방어는 zlambda nginx `limit_conn`/fail2ban 또는 Linode 방화벽 소스 제한으로. inbest 약한 비밀번호 키 전용 전환 권장.
|
|
- **Linode Cloud Firewall**: zlambda는 공인 IP에서 **22만 기본 개방**, 나머지(80/443/8443/9999)는 차단. 2201은 2026-06-10 인바운드 허용 추가(zlambda 소속 Linode 계정은 Vault `cloud/linode`(ironclad/apisix-osaka)와 **다른 계정** — 토큰 미보유, 방화벽은 사용자가 대시보드에서 관리)
|
|
- [[../../services/sftpgo|SFTPGo]] / [[../../network/sshpiper|sshpiper]]와 역할 구분 (이건 단순 TCP relay)
|
|
|
|
> **운영 메모 (2026-06-10)**: zlambda `/root/nixos-infra` git remote가 SSH(git@gitea)였는데 root 키 인증 실패로 `git pull` 안 됨 → **HTTPS+토큰으로 교체**(해결). 또한 **flake는 git에 tracked된 파일만** `/nix/store`로 복사하므로, 새 .nix 추가 시 `git add` 필수(안 하면 `path ... does not exist` 빌드 실패). rebuild: `nixos-rebuild switch --flake /root/nixos-infra#zlambda`
|
|
|
|
## 용도 검토
|
|
|
|
- K3s worker 편입 후보 (taint geo=tokyo) — [[k3s-migration|검토 중]]
|
|
- 도쿄 POP 엣지 워크로드 용도
|
|
|
|
상세 인프라 컨텍스트: [[infra-hosts]]
|