nftables masquerade 로 공유기 만들기 — 포트포워딩·conntrack, 그리고 NAT 는 방화벽이 아니다
집 공유기가 하는 일을 리눅스 한 대로 재현한다. 사설 주소로 인터넷에 나가지 못하는 이유, nftables masquerade(SNAT)와 포트포워딩(DNAT), conntrack 표, 그리고 NAT 만으로는 집 안이 지켜지지 않는다는 것을 직접 확인한다. 네트워크 처음 배우는 사람 기준.
집 공유기가 하는 일을 리눅스 한 대로 재현한다. 사설 주소로 인터넷에 나가지 못하는 이유, nftables masquerade(SNAT)와 포트포워딩(DNAT), conntrack 표, 그리고 NAT 만으로는 집 안이 지켜지지 않는다는 것을 직접 확인한다. 네트워크 처음 배우는 사람 기준.
리눅스 한 대 안에 가상 PC 두 대와 라우터를 만들어 서로 다른 네트워크를 잇는다. "Network is unreachable", 게이트웨이, ip_forward, 돌아오는 길, ARP, TTL 이 왜 필요한지 하나씩 빼 보며 확인한다. 네트워크 처음 배우는 사람 기준.
패킷이 뭔지 몰라도 따라 할 수 있게 썼다. curl 한 번이 만드는 TCP 패킷 10개를 tcpdump 로 잡아 한 줄씩 읽고, "Connection refused" 와 "Connection timed out" 이 패킷으로는 어떻게 다른지 직접 만들어 본다.
Claude Code 클라우드 세션이 집의 Proxmox 를 조회하고 관리하게 만드는 순서. 전용 사용자와 API 토큰을 만들고, .mcp.json 과 환경 변수를 넣고, 처음엔 읽기 전용으로 붙인 뒤 필요한 만큼 권한을 연다. "requires elevated permissions" 와 403 "Permission check failed" 가 각각 어디서 막힌 것인지도 정리했다.
Flux159 의 mcp-server-kubernetes 를 Claude Code·Claude Desktop 과 Hermes 에이전트에 등록한다. ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS 와 Hermes 의 tools.include 로 조회 도구 네 개만 열어 두고, M1 맥의 kind 클러스터를 채팅으로 조회한다.
2초짜리 작업 20건을 한꺼번에 넣었더니 사용자는 최대 20초를 기다렸다. 처리 시간은 건마다 2.02초로 일정했고, 나머지는 전부 큐에서 줄 선 시간이었다. 로그에 wait_ms 를 남기고 OpenSearch Dashboards 로 둘을 나눠 보니 병목이 워커 수로 드러났고, 워커를 6개로 늘리자 큐 대기 p50 이 10.0초에서 2.0초가 됐다.
Fluentd 집계기 출력을 OpenSearch 로 바꿨더니 request_id 가 text 로 잡혀 trace-8th-0001 을 찾는데 다른 요청까지 44건이 나왔고, event 로 집계하자 "Text fields are not optimised" 로 거절됐다. 인덱스 템플릿으로 타입을 정하고, 집계기와 OpenSearch 를 지워도 로그가 남는지 쟀다.
OpenStack에서 볼륨을 만들어 인스턴스에 붙인 뒤, 인스턴스 안에서 lsblk로 확인하고 mkfs.ext4로 포맷해 fstab에 등록까지 — 재부팅해도 마운트가 풀리지 않게 만드는 순서.
ingress-nginx 는 요청마다 X-Request-ID 를 만들어 주는데, 앱 로그에는 그 번호가 한 줄도 없었다. 번호를 web 로그와 RabbitMQ 메시지의 correlation_id, worker 로그까지 넘겼더니 재시도 두 번에 DLQ 까지 간 요청 하나가 번호 하나로 15줄, 파드 5개에 걸쳐 이어졌다.
에이전트가 똑똑해진다는 건 모델을 바꾸는 일이 아니라 쌓인 것이 다음 세션으로 넘어간다는 뜻이다. 무엇을 기억에 두고 무엇을 스킬로 남길지, 주 15분 점검에서 무엇을 보고, 쌓인 것을 언제 치울지 — 스킬·journey·큐레이터로 도는 한 달 루틴으로 정리했다.