From e8cac186c5f517317f99a87d7634afa5e87ef8f8 Mon Sep 17 00:00:00 2001 From: kappa Date: Fri, 3 Apr 2026 10:50:38 +0900 Subject: [PATCH] add netbis DR server docs and update related infra docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - services/netbis.md: sandbox-tokyo APISIX 예비서버, Netbis CF 계정, 라우트/SSL/CrowdSec 연동 전체 문서화 - infra-hosts.md: sandbox-tokyo 역할 업데이트 (netbis 예비 APISIX Gateway) - crowdsec-safeline.md: netbis-cf 바운서 (별도 컨테이너) 항목 추가 --- infra/crowdsec-safeline.md | 17 ++++- infra/infra-hosts.md | 4 +- services/netbis.md | 132 +++++++++++++++++++++++++++++++++++++ 3 files changed, 150 insertions(+), 3 deletions(-) create mode 100644 services/netbis.md diff --git a/infra/crowdsec-safeline.md b/infra/crowdsec-safeline.md index 197dd36..e037c75 100644 --- a/infra/crowdsec-safeline.md +++ b/infra/crowdsec-safeline.md @@ -1,6 +1,6 @@ --- title: CrowdSec 및 SafeLine WAF -updated: 2026-03-28 +updated: 2026-04-03 --- ## CrowdSec LAPI @@ -105,6 +105,21 @@ cat updated-config.yaml | ssh incus-jp1 "incus file push - cs-cf-worker-bouncer/ ssh incus-jp1 "incus exec cs-cf-worker-bouncer -- systemctl restart crowdsec-cloudflare-worker-bouncer" ``` +### netbis-cf (Cloudflare Worker — Netbis 계정) + +Kappa 계정용 `cs-cf-worker-bouncer`와 별도 컨테이너로 분리 운영. 상세: [[netbis]] + +| 항목 | 값 | +|------|-----| +| 위치 | jp1 Incus `netbis-cf-bouncer` 컨테이너 (10.253.103.33) | +| 바운서 이름 | netbis-cf | +| 설정 | `/etc/crowdsec/bouncers/crowdsec-cloudflare-worker-bouncer.yaml` | +| 동기화 | 10초 | +| CF 계정 | Netbis (netbis@netbis.io, Account ID 8fcf3c7876332aba33e974cbbfdad951) | +| 보호 zone | fall-vip.com, fall-mvp.com, fall-vip7.com, psd777.com, rss-555.com, rss-7790.com | +| Turnstile | 6개 zone managed 모드, 168시간 secret key 로테이션 | +| 로그 소스 | sandbox-tokyo APISIX → CrowdSec http-logger (8085/apisix-logs) | + ### bunny-cdn-bouncer (BunnyCDN Edge Script) | 항목 | 값 | diff --git a/infra/infra-hosts.md b/infra/infra-hosts.md index 89dea05..dd7cca2 100644 --- a/infra/infra-hosts.md +++ b/infra/infra-hosts.md @@ -1,6 +1,6 @@ --- title: 인프라 호스트 및 네트워크 -updated: 2026-03-22 +updated: 2026-04-03 tags: [infra, network, kr-zone, openwrt] --- @@ -18,7 +18,7 @@ tags: [infra, network, kr-zone, openwrt] | incus-kr2 | 100.119.109.41 | Incus+K3s 호스트 (서울) | K3s control-plane (LAN 192.168.9.135), default, inbest 프로젝트 | | incus-hp2 | 100.100.52.34 | Incus+K3s 호스트 (서울) | Xeon E5-2670 32코어, 188GB RAM, K3s control-plane (LAN 192.168.9.134), default, inbest 프로젝트 | | openwrt-gw | 100.66.60.66 | OpenWrt 라우터 (서울) | HAProxy: 80/443 → Traefik hostPort (3노드), 9080/9443 → APISIX NodePort 30233/31137 (3노드) | -| sandbox-tokyo | 100.79.87.48 | 테스트 서버 (도쿄, Linode) | vault-prod, wg-easy, nginx-tcp-proxy (Docker) | +| sandbox-tokyo | 100.79.87.48 | [[netbis]] 예비 APISIX Gateway (도쿄, Linode) | APISIX 3.15.0 + etcd, 공인 139.162.71.52, netbis 도메인 DR용 | | relay4wd (sandbox-kr2) | 100.103.161.4 | APISIX Gateway (서울, AWS Lightsail) | 공인 52.79.45.166, inbest 포트포워딩, Docker APISIX 3.15.0, Debian 12, nano $5/월, SSH: `ssh -p 2222 admin@relay4wd` (Vault CA), 포트 22는 SFTPGo 리다이렉트 | | synology | LAN 192.168.9.100 / 192.168.205.100 (2.5G) | NAS (시놀로지) | Tailscale 미사용, LAN 접근 | diff --git a/services/netbis.md b/services/netbis.md new file mode 100644 index 0000000..2fea10f --- /dev/null +++ b/services/netbis.md @@ -0,0 +1,132 @@ +--- +title: Netbis 예비서버 (sandbox-tokyo) +updated: 2026-04-03 +tags: [netbis, apisix, dr, cloudflare] +--- + +## 개요 + +Netbis 팀 도메인의 예비(DR) 리버스 프록시 서버. 평소에는 트래픽을 받지 않으며, 유사시 Cloudflare DNS를 수동 전환하여 활성화. + +기존 Ironclad 인프라([[apisix]], [[crowdsec-safeline]])와는 별도 구성. + +## 서버 정보 + +| 항목 | 값 | +|------|-----| +| 호스트명 | sandbox-tokyo | +| 공인 IP | 139.162.71.52 | +| Tailscale IP | 100.79.87.48 | +| 위치 | Linode Tokyo | +| OS | Debian 12 (커널 6.1.0-23) | +| SSH | `ssh root@139.162.71.52` | + +## APISIX 구성 + +Docker Compose (/opt/apisix/)로 배포. + +| 컨테이너 | 이미지 | 포트 | +|----------|--------|------| +| apisix | apache/apisix:3.15.0-debian | 80(→9080), 443(→9443), 9180 | +| apisix-etcd | gcr.io/etcd-development/etcd:v3.5.11 | 2379 (내부) | + +- Admin API: `http://127.0.0.1:9180` (0.0.0.0/0 허용) +- Admin Key: `edd1c9f034335f136f87ad84b625c8f1` + +### global_rules + +- `real-ip` — source: `http_cf_connecting_ip`, trusted: Cloudflare IP 대역 +- `http-logger` → CrowdSec `http://10.253.100.240:8085/apisix-logs` (auth: `apisix-crowdsec-log-2024`) + +## Cloudflare 계정 (Netbis) + +| 항목 | 값 | +|------|-----| +| 이메일 | netbis@netbis.io | +| Account ID | 8fcf3c7876332aba33e974cbbfdad951 | +| Global API Key | sandbox-tokyo `/root/.config/cloudflare/cf-global-api-key` | +| API Token (바운서용) | `crowdsec-cf-bouncer-netbis` (Workers, Turnstile, WAF, Zone 권한) | + +### Zone 목록 + +| Zone | Zone ID | 현재 오리진 | +|------|---------|------------| +| fall-vip.com | 662312b0ca619d1d5c8f4c112150d749 | 42.125.196.86 | +| fall-mvp.com | 6c171579912a271c0fc89c8187493b0f | 139.162.73.240 | +| fall-vip7.com | a8832b9d3b546f96505abeadea4750d1 | 139.162.73.240 | +| psd777.com | a14533c2937b19e5b7ed19cbecd58679 | 139.162.114.197 | +| rss-555.com | 6d4b084940520c1f820927e5d8ade2c6 | 139.162.73.17 | +| rss-7790.com | d9db9e50e202339326498baa340a9d16 | 139.162.73.17 | + +모든 zone은 Cloudflare Flexible SSL, 프록시(오렌지 구름) 사용. + +## 라우트 및 업스트림 + +| 라우트 ID | 호스트 | 업스트림 (오리진 IP) | +|-----------|--------|---------------------| +| fall-vip-com | fall-vip.com | 42.125.196.86 | +| fall-mvp-com | fall-mvp.com | 139.162.73.240 | +| fall-vip7-com | fall-vip7.com | 139.162.73.240 | +| psd777-com | psd777.com | 139.162.114.197 | +| rss-555-com | rss-555.com | 139.162.73.17 | +| rss-7790-com | rss-7790.com | 139.162.73.17 | +| ev-fall-vip-com | ev.fall-vip.com | 42.125.196.115 | +| ev-fall-vip7-com | ev.fall-vip7.com | 42.125.196.115 | +| ev-psd777-com | ev.psd777.com | 42.125.196.115 | +| vi-rss-555-com | vi.rss-555.com | 42.125.196.115 | +| vi-rss-7790-com | vi.rss-7790.com | 42.125.196.115 | + +모든 라우트에 `proxy-rewrite` (Host 전달) 적용. + +## SSL 인증서 + +acme.sh + Cloudflare DNS-01 챌린지로 발급. 크론 자동 갱신. + +| 도메인 | SAN | 발급기관 | 만료 | +|--------|-----|---------|------| +| fall-vip.com | *.fall-vip.com | ZeroSSL | 2026-07-02 | +| fall-mvp.com | *.fall-mvp.com | ZeroSSL | 2026-07-02 | +| fall-vip7.com | *.fall-vip7.com | ZeroSSL | 2026-07-02 | +| psd777.com | *.psd777.com | ZeroSSL | 2026-07-02 | +| rss-555.com | *.rss-555.com | ZeroSSL | 2026-07-02 | +| rss-7790.com | *.rss-7790.com | ZeroSSL | 2026-07-02 | + +인증서 경로: `/root/.acme.sh/{domain}_ecc/` + +## CrowdSec 연동 + +### http-logger + +APISIX global_rule로 모든 요청 로그를 CrowdSec(jp1)로 전송. +- 엔드포인트: `http://10.253.100.240:8085/apisix-logs` +- 인증: `auth_header: apisix-crowdsec-log-2024` +- 파서: `custom/apisix-json-logs` (기존 파서 공유) + +### Cloudflare Worker Bouncer (netbis-cf) + +| 항목 | 값 | +|------|-----| +| 컨테이너 | jp1 incus `netbis-cf-bouncer` (10.253.103.33) | +| 바운서 이름 | netbis-cf (CrowdSec LAPI 등록) | +| LAPI 키 | `FR/PbHA110b6+m/gkByp9itNOaQMdbM8BwKR3DerCTI` | +| 설정 파일 | `/etc/crowdsec/bouncers/crowdsec-cloudflare-worker-bouncer.yaml` | +| 동작 | CrowdSec ban → Cloudflare Worker + Turnstile captcha | +| 적용 범위 | Netbis 계정 전체 6개 zone | + +기존 `cs-cf-worker-bouncer` (Kappa 계정용)와 별도 컨테이너로 분리 운영. + +## 유사시 전환 절차 + +1. Cloudflare DNS에서 각 도메인 A 레코드를 `139.162.71.52`로 변경 (수동) +2. APISIX 라우트/SSL 사전 등록 완료 상태이므로 즉시 서비스 가능 +3. 전환 후 CrowdSec 로그 수신 및 바운서 차단 자동 동작 확인 + +## 이전에 운영했던 서비스 (중지됨) + +sandbox-tokyo에서 기존 운영하던 아래 서비스는 2026-04-03 중지: +- vault-prod (HashiCorp Vault) +- wg-easy (WireGuard VPN) +- nginx-tcp-proxy +- socks5-v4 (microsocks) +- tlsproxy +- Caddy (systemd, disabled)