133 lines
5.9 KiB
Markdown
133 lines
5.9 KiB
Markdown
---
|
|
title: 인프라 호스트 및 네트워크
|
|
updated: 2026-03-18
|
|
tags: [infra, network, kr-zone, openwrt]
|
|
---
|
|
|
|
## SSH 접속 정보
|
|
|
|
인프라 호스트 SSH 접속 정보: incus-jp1 (공인 42.125.196.116, Tailscale 100.109.123.1), incus-kr1 (공인 220.120.65.245, Tailscale 100.84.111.28), incus-hp2 (Tailscale 100.100.52.34), osaka(gw) (ssh root@100.108.39.107, 공인 172.233.93.180), Synology NAS (SSH 불가, Tailscale 100.126.100.82)
|
|
|
|
## 서버 상세
|
|
|
|
| SSH 호스트 | Tailscale IP | 역할 | 비고 |
|
|
|-----------|-------------|------|------|
|
|
| apisix-osaka | 100.108.39.107 | [[apisix]] API Gateway (오사카) | SSH 직접 접속 |
|
|
| incus-jp1 | 100.109.123.1 | Incus 호스트 (도쿄) | monitoring, db, default 프로젝트 |
|
|
| incus-kr1 | 100.84.111.28 | Incus+K3s 호스트 (서울) | default, inbest 프로젝트, K3s control-plane (LAN 192.168.9.214) |
|
|
| incus-kr2 | 100.119.109.41 | Incus+K3s 호스트 (서울) | default, inbest 프로젝트, K3s control-plane (LAN 192.168.9.135) |
|
|
| 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 → K3s NodePort → APISIX |
|
|
| sandbox-tokyo | 100.79.87.48 | 테스트 서버 (도쿄, Linode) | |
|
|
| relay4wd | 100.103.161.4 | APISIX Gateway (서울, AWS Lightsail) | inbest 전용, Docker APISIX 3.15.0, Debian 12, nano $5/월 |
|
|
| safeline-osaka | 100.100.212.6 | SafeLine WAF (오사카, Linode) | |
|
|
| synology | 100.126.100.82 | NAS (시놀로지) | |
|
|
|
|
## 서울 K3s 클러스터
|
|
|
|
서울존 3대(hp2, kr1, kr2)를 K3s v1.34.5+k3s1 클러스터로 구성. 모두 control-plane 역할.
|
|
|
|
| 노드 | LAN IP | OS |
|
|
|------|--------|----|
|
|
| incus-hp2 | 192.168.9.134 | Debian 13 (trixie) |
|
|
| incus-kr1 | 192.168.9.214 | Debian 13 (trixie) |
|
|
| incus-kr2 | 192.168.9.135 | Debian 13 (trixie) |
|
|
|
|
주요 네임스페이스: anvil, apisix, argocd, cert-manager, db
|
|
|
|
트래픽 흐름: 외부 → OpenWrt HAProxy (80/443) → K3s NodePort (32020/30675) → APISIX Gateway → 서비스
|
|
|
|
## 서비스 위치
|
|
|
|
| 서비스 | 위치 | 접근 방법 |
|
|
|--------|------|-----------|
|
|
| [[apisix]] (오사카) | apisix-osaka (Linode) | SSH 직접 접속 / Admin API |
|
|
| [[apisix]] (서울) | hp2 incus 컨테이너 (10.179.99.126) | incus exec apisix / Admin API(:9180) |
|
|
| Anvil | K3s 클러스터 (서울, anvil ns) | kubectl |
|
|
| ArgoCD | K3s 클러스터 (서울, argocd ns) | kubectl / NodePort 30080 |
|
|
| cert-manager | K3s 클러스터 (서울) | kubectl |
|
|
| NocoDB | K3s 클러스터 (kr2), namespace tools | kubectl, nocodb.inouter.com |
|
|
| ProxySQL | K3s 클러스터 (서울, db ns) | kubectl |
|
|
| Prometheus, Grafana | jp1 (monitoring) | incus exec --project monitoring |
|
|
| DB 서버 | jp1 (db) | incus exec --project db |
|
|
| DB (분산) | etcd+mariadb+postgres 각 서울 노드 Incus 컨테이너 | incus exec |
|
|
| etcd (relay4wd용) | jp1 (db), etcd-1 (10.253.102.11) | etcd 2379 |
|
|
| [[vault]] | 인프라 내부 | vault CLI / MCP |
|
|
| [[gitea]] | 자체 호스팅 (gitea.anvil.it.com) | git push → Gitea Act Runner |
|
|
| BunnyCDN | 외부 SaaS | BunnyCDN MCP 서버 / API |
|
|
| [[backup]] | kr2 → NAS → R2 | systemd timer, rclone |
|
|
|
|
## Incus 프로젝트
|
|
|
|
- **jp1**: monitoring, db, default
|
|
- **kr1**: default, inbest
|
|
- **kr2**: default, inbest
|
|
- **hp2**: default, inbest
|
|
|
|
## KR존 네트워크 토폴로지
|
|
|
|
```
|
|
인터넷
|
|
└── OpenWrt 라우터 (공인 IP: 220.120.65.245, 내부: 192.168.9.1)
|
|
├── incus-kr1 (192.168.9.214)
|
|
├── incus-kr2 (192.168.9.135)
|
|
└── incus-hp2 (192.168.9.134) ← K3s control-plane
|
|
└── APISIX (incus 컨테이너, 10.179.99.126)
|
|
|
|
외부 트래픽 흐름:
|
|
인터넷 → OpenWrt → APISIX(10.179.99.126:9080/9443) → K3s/Traefik → pods
|
|
|
|
내부 트래픽 흐름:
|
|
LAN → K3s/Traefik(192.168.9.x:80/443) → pods 직접
|
|
```
|
|
|
|
- **게이트웨이**: OpenWrt 라우터 (root@192.168.9.1)
|
|
- **OpenWrt 포트포워딩**:
|
|
- TCP 80 → hp2(192.168.9.134):9080
|
|
- TCP 443 → hp2(192.168.9.134):9443
|
|
- UDP 443 → hp2(192.168.9.134):9443 (QUIC/HTTP3)
|
|
- **hp2 incus proxy device** (9080/9443 → APISIX 컨테이너):
|
|
- proxy-http: tcp:0.0.0.0:9080 → tcp:127.0.0.1:9080
|
|
- proxy-https: tcp:0.0.0.0:9443 → tcp:127.0.0.1:9443
|
|
- proxy-quic: udp:0.0.0.0:9443 → udp:127.0.0.1:9443
|
|
- **APISIX etcd**: apisix-etcd (incus 컨테이너, 10.179.99.101)
|
|
- **OVN 네트워크**: ovn1 (10.165.246.0/24) — hp2↔kr2 간 오버레이
|
|
- **CDN IP 필터**: BunnyCDN + Cloudflare IP만 80/443 허용, 그 외 WAN 차단
|
|
- 스크립트: `/etc/cdn-filter-update.sh`
|
|
- nftables: `/etc/nftables.d/10-cdn-filter.nft`
|
|
- 크론: 매일 04:00 업데이트
|
|
- **DNS rebind 예외**: inouter.com (OpenWrt dnsmasq)
|
|
- 공인 IP `220.120.65.245`는 OpenWrt 라우터의 IP
|
|
|
|
## 네트워크 대역
|
|
|
|
네트워크 대역: 100.0.0.0/8 (Tailscale VPN), 10.253.0.0/16 (incus-jp1 내부), 10.19.0.0/16 (incus-kr1 내부), 10.179.99.0/24 (incus-kr2 내부), 10.100.1.0/24 (inbest LAN, OpenWrt 광고), 10.42.0.0/16 (k8s 파드), 10.43.0.0/16 (k8s 서비스 ClusterIP), 172.17.0.0/16 (Docker 브릿지, 무시), 192.168.9.0/24 (kaffa 로컬 LAN)
|
|
|
|
## K3s 클러스터 노드
|
|
|
|
| 노드명 | K3s Internal IP | 역할 | 호스트 위치 |
|
|
|--------|----------------|------|------------|
|
|
| incus-hp2 | 192.168.9.134 | control-plane | — |
|
|
| incus-kr1 | 192.168.9.214 | control-plane | 서울 |
|
|
| incus-kr2 | 192.168.9.135 | control-plane | 서울 |
|
|
|
|
## IPv6 prefix
|
|
|
|
jp1 prefix는 2400:8905:e002:1d02
|
|
|
|
## web 컨테이너
|
|
|
|
web 컨테이너 (incus agents 프로젝트, IP 10.253.100.159): Caddy :80으로 /var/www/sites 서빙, btrfs-pool/shared-sites 볼륨을 stamp과 공유. ironclad.it.com 랜딩페이지 서빙 용도.
|
|
|
|
## 대시보드
|
|
|
|
사용 중인 대시보드는 dashboard.inouter.com(내부용)
|
|
|
|
## Xray
|
|
|
|
Xray VLESS+XHTTP 스텔스 구성
|
|
|
|
## 네트워크 정책
|
|
|
|
실사용: 국내 트래픽은 직접, 해외는 프록시, 광고는 차단
|