77.6 KB · 수정 2026-08-22 22:28
목차

remote-access — 로컬 PC Claude(로컬 MCP) 모바일 원격 양방향 접속

목표: 페페 로컬 PC에서 실행하는 Claude 세션(로컬 MCP — claude-code·Filesystem 등)을 모바일에서 송·수신 양방향으로 제어. 작업 실행은 로컬 유지, 구글 원격 데스크톱 의존 제거. 상태: 방안 확정(Claude Code Remote Control) · 셋업 미착수 (2026-06-11)

🔶 루트 NOW 이관 — 진행·미결 (2026-08-19 대청소, 페페 지시)

루트 HANDOFF.md를 pncad 만 남기고 비웠다. 아래는 그때 옮겨온 원문(문구 무변경).

▶ 다음 세션 즉시 이어갈 지점 (NOW)

✅2026-08-22 — gpubox: 4070 집PC WOL 기상 + 작업완료 셧다운 워커 — 왕복 실측 성공

✅2026-08-11 — QC1 SSH 개통·접속 검증 완료 + 절전 해제 (어제 회선다운 → 복구 후 성공)

어제(8/10) 회선다운 이력 — 참고 ### ⏳2026-08-10 — **QC1 SSH 개통 = QC1측 완료 · 접속 검증만 대기(원인 = 사무실 회선 다운, 미니PC는 정상 복구)** - **21:35 결론** = 페페가 `restart_wg_poin.ps1` 관리자 실행 → 바운스해도 핸드셰이크 0(`ping .0.1` False) → **스크립트가 터널 자동 Stop** → **미니PC 인터넷 즉시 정상화**(1.1.1.1·텔레그램 OPEN 실측, `notify.py` 200 복구). 기본경로 `0.0.0.0/1` 사라짐 확인. - 🔴**진짜 원인 = 사무실 회선 다운**(페페 확인: "별도 연결로 회사 CCTV 접속했는데 안 됨"). 미니PC측 조치할 것 없음. 정황 일치 = 사무실PC `poinimos01` 테일넷 offline · DDNS는 112.170.234.238 그대로(스테일 가능) · tracert는 통신사 백본까지만. - ⏳**회선 복구 후 = 미니PC에서 `C:\dev\tools\restart_wg_poin.ps1` 관리자 1회**(Stop된 터널을 올린다 — 스크립트가 stop→start 순서로 수정됨) → 코디가 `ssh -i C:\dev\.secrets\qc1_ed25519 main@192.168.0.25 hostname` 기능검증. - 📐**구조 파악(페페 질문 "켜는 순서 때문인가?")** = 순서 무관, **설계가 full-tunnel**이다. conf `AllowedIps = 0.0.0.0/0` = "전 대역을 터널로". WireGuard-Windows는 이걸 `0.0.0.0/1`+`128.0.0.0/1` 두 라우트로 깔아서 물리 NIC의 `0.0.0.0/0`보다 **프리픽스가 길어 metric과 무관하게 항상 이긴다** → 터널이 켜지면 미니PC의 **모든 인터넷이 사무실 회선 경유**(+`DNS = 168.126.63.1`도 그쪽). 터널이 죽으면 그대로 블랙홀 = 오늘 사고. 터널 정지 후 라우팅 테이블에 `이더넷 2 0.0.0.0/0`만 남은 것으로 재확인. - **이 터널에 얹혀 있는 것 4개**(split 전환 시 유지 필요) = ①NAS `192.168.0.101`·사무실PC `192.168.0.41` 공유폴더 ②**Tailscale 서브넷 라우터 광고 `192.168.0.0/24`**(노트북·폰의 NAS 접근이 미니PC→WG 경유) ③QC1 SSH `192.168.0.25` ④imos MSSQL은 **공인 IP `112.170.234.238,64910`**(nesting/dbquery.ps1·order-automation) — 지금은 터널 헤어핀으로 나간다. - 💡**제안(미실행)** = `poin` 을 **split-tunnel로 바꾸면**(AllowedIPs `0.0.0.0/0` → `10.73.241.0/24, 192.168.0.0/24`) 사무실이 죽어도 미니PC 인터넷은 안 죽는다. 오늘 손해의 대부분이 이 blast radius였다. 대가 = 사무실 경유 공인 IP를 못 쓴다(쓸 일 없으면 순이득). 적용 = conf 수정 후 터널 재임포트(관리자). - **QC1측 결과(페페 실행 회신)** = host `QC1` · ssh user **`main`**(관리자 True) · sshd Running/Automatic · 22 LISTENING · 방화벽룰 True(10.73.241.0/24, 192.168.0.0/24, 100.64.0.0/10) · **QC1 LAN IP = `192.168.0.25`**(그 외는 169.254 APIPA = 미사용 NIC). → **접속 명령 = `ssh -i C:\dev\.secrets\qc1_ed25519 main@192.168.0.25`**. - ❌**접속 실패 · 원인 = QC1이 아니라 미니PC의 WG 터널** — `ssh 192.168.0.25:22` timeout인데 **NAS `192.168.0.101:445`·라우터 `192.168.0.1:80`도 전부 timeout**(8/1엔 둘 다 정상) = 사무실 LAN 전체가 안 닿는다. 실측 = 인터페이스 `poin` Up·서비스 Running인데 **`Get-NetAdapterStatistics -Name poin` = RX 0 / TX 0** = 부팅 후 핸드셰이크 0. - 🔑**추정 근본원인** = 미니PC가 **2026-08-10 08:39 윈도우 업데이트로 재부팅**(이벤트 1074) → WG가 DDNS 엔드포인트 `poinimos.iptime.org`를 네트워크 준비 전에 해석 실패한 채 올라옴(현재 수동 `Resolve-DnsName` = 112.170.234.238 정상). **터널 서비스 바운스로 재해석**시키면 된다. - 🚨**파급이 사무실 LAN에 그치지 않는다 — 미니PC 인터넷 전체가 죽어 있다.** `poin`은 full-tunnel(`Get-NetRoute` = `0.0.0.0/1`·`128.0.0.0/1` metric 0)이라 **살아있지만 죽은 터널이 default 경로를 블랙홀**로 만든다. 실측 = `1.1.1.1:443`·구글·텔레그램 전부 timeout, **텔레그램 알림 broker도 `api.telegram.org` 연결 실패(HTTP 500 반환)** → 이번 답변 알림은 **노트20 카톡으로 대체 발송**(`poin-agent/phone.py`, `P.send('신동승', …)` = True). Tailscale(100.x)만 별도 인터페이스라 생존 → 코디 세션·DNS는 멀쩡해 **"인터넷 정상"으로 오진하기 쉽다**. - 그래서 스크립트에 **실패시 자동 안전판** 넣음 — 바운스 후에도 rx 0이면 터널을 **Stop** 해서 미니PC 인터넷부터 되살린다(사무실 LAN은 그대로 불통). - **21:2x 재확인(페페 "다시 확인해봐")** = 변화 없음 — `_wg_restart_result.txt` 없음(=스크립트 미실행), 서비스 Running·rx/tx 0 유지, 사무실 LAN·공인망 전부 timeout. **바인드 테스트로 원인 확정**: 물리 NIC `192.168.45.48` 바인드는 `1.1.1.1:443` OPEN, 터널 IP `10.73.241.2` 바인드는 timeout → 물리 인터넷 정상 + 죽은 터널의 경로 하이재킹이 범인. 폰(테일넷, 별도 회선)에서 사무실 공인 IP `112.170.234.238:64910`·`poinimos.iptime.org:443`도 timeout이지만 두 포트 다 공인 개방 여부 불명이라 **사무실측 생사 판정 근거로는 약함**(터널 바운스가 먼저). - ⏳**페페 = 미니PC에서 `C:\dev\tools\restart_wg_poin.ps1` 관리자 1회 실행**(코디 Bash는 비관리자 → `Restart-Service 'WireGuardTunnel$poin'` 액세스 거부 실측). 스크립트가 rx/tx·`ping 192.168.0.1`·`qc1:22`까지 찍고 `C:\dev\_wg_restart_result.txt`에 남긴다 → 코디가 그 파일 읽고 `ssh main@192.168.0.25 hostname`으로 기능검증. - 📌**재부팅마다 재발하면** 그때 SYSTEM 예약작업 워치독(핸드셰이크 없으면 터널 재시작) 추가. 1회성일 수 있어 지금은 안 만든다. - 지시(페페) = "사무실 회계직원 PC를 코디가 SSH 원격 가능하게. 스크립트 만들어서 그 PC에서 실행하면 적용되게. PC 이름 = **QC1**(실제 컴퓨터 이름도 QC1)". - **QC1 = tailnet 미가입**(`tailscale status` 실측 = poin-mini/poinimos01/폰/EC2/노트북뿐) → **Tailscale 설치 안 시킨다**(계정 인증 = 사람 필요). 경로 = **WireGuard 사무실VPN**, 미니PC 10.73.241.2 → 사무실 LAN 192.168.0.x. 터널 실측 정상(192.168.0.1 ping 3ms). - 스크립트 = **`C:\dev\tools\enable_ssh_qc1.ps1`**(ASCII, 관리자 1회 = `rules/remote.md` §0-5 게이트). `enable_ssh_lap.ps1` 형태 재사용 — OpenSSH.Server 설치 → sshd Automatic+start → **기본 룰(Any) 끄고** `Cody-SSH-QC1`(22 ← `10.73.241.0/24`,`192.168.0.0/24`,`100.64.0.0/10`) → 공개키를 `~/.ssh/authorized_keys` + `administrators_authorized_keys` **양쪽**(QC1 계정이 관리자인지 모른다) + ACL → 결과를 `\\10.73.241.2\dev\_qc1_ssh_result.txt`로 회신(실패 시 화면 붙여넣기). - 🔑**192.168.0.0/24 를 허용에 넣은 이유** = ipTIME이 WG 트래픽을 NAT하면 출발지가 `192.168.0.1`로 보인다. 안 넣으면 "포트는 열렸는데 안 붙는" 재실행 왕복(=관리자 게이트 1회 더)이 생긴다. - 키 = **`C:\dev\.secrets\qc1_ed25519`**(pub `…lH/il poin-mini->qc1`, ACL 잠금 완료). 접속 = `ssh -i C:\dev\.secrets\qc1_ed25519 @`. - ⏳**페페 = ①QC1에서 관리자 PowerShell 1회 실행 ②결과 텍스트(사용자명·IP) 회신** → 코디가 기능검증(`hostname` 원격실행)까지. ⚠sshd 세션은 Session 0(GUI 안 보임) · RDP는 안 켠다(콘솔 로그아웃).

✅2026-08-01 — 미니PC 인터넷 무선→유선 전환(페페 실행) · 전 경로 실측 정상

✅2026-07-31 — 노트북→NAS 개통: 미니PC = Tailscale 서브넷 라우터 (WG 피어등록 불필요해짐)

2026-07-17 — WireGuard 사무실VPN: 미니PC 가동확인 + 노트북 피어 준비 (⏸️B안으로 강등 — ipTIME 피어등록)

2026-07-12 — 웹/모바일 채티 user_brief 연동 (원격 MCP 커넥터)

2026-06-24 후속9-d — 세션 목록 출처 구분(VS Code/터미널/데스크톱 배지)

2026-06-24 후속9-c — 세션누적 버그 근본수정 + 백스페이스/키바 + serve-web 폐기 + 앱 8822 확정

2026-06-24 후속9-b — UI 다듬기(폰/DeX 분기·reload 버튼·DeX 타이틀 제거) + 격리 불필요 결론

2026-06-24 후속9 — 멀티세션 중복버그 근본수정 + effort/thinking 칩 + 하단바 2줄 (Ultracode 워크플로 리서치)

2026-06-24 후속8 — 8822 모바일/DeX 터미널 "격리 멀티세션 멀티플렉서"로 전면 재작성

2026-06-24 후속7 — 모바일 로그인 무한루프 근본수정 + 앱 모드갇힘 영구개선

2026-06-24 후속6 — 세션 공유 통일(CONFIG_DIR) + GPT 의논 v2(API/로컬읽기) + 모바일 세션모드

2026-06-24 후속5 — 모바일 터미널(8822) HTTPS+WSS+PTY 폰 완전 동작 확인 (실측 PASS)

2026-06-23 후속4 — serve-web 8820 상시화 + HTTPS(자체서명 TLS 프록시) + 앱=진짜 원격 클라이언트 (폰 실측 PASS)

2026-06-23 후속3 — C2 채택 + 모델/노력도/사고/계정 컨트롤 + Android 앱 빌드·설치(실측 PASS)

2026-06-23 후속2 — sync 워처 스케줄러+워치독(크래시 자동복구) + 프론트 3컨셉 목업

2026-06-23 Phase3 — 세션 지정 폴더(CLAUDE_CONFIG_DIR) 격리 PoC 완료 (병목 해결, 전 항목 PASS)

2026-06-22 재설계 — 채택안 전환: code serve-web 테일넷 직결(기본 요금제)

(이전) 채택 방안 = Claude Code Remote Control

텔레그램 완전 양방향 — 재검토 (2026-06-14)

아키텍처 확정 (2026-06-14 오후)

재조사 결론 — SARA 기반 검토 후 "적정 규모로 축소·보류" (2026-06-14 저녁)

채택·셋업 — Max 요금제 + 공식 Remote Control (2026-06-14 밤)

셋업 실행 — autostart 등록 + 기동 (2026-06-14 밤)

추가 경로 — VS Code Remote-SSH(데스크톱↔데스크톱, Tailscale) (2026-06-13 진단)

확정 사실 (요지)

제약·리스크 (셋업 전 인지)

대안 (보류)

미결 (페페 결정)

위험작업 (승인 필요)

원격 노출 성격이나 인바운드 포트 미개방·Anthropic 라우팅이라 외부 공개(Funnel) 아님. 실제 셋업(토글 on·앱 연결)은 페페 폰·로컬에서 직접. 외부 노출 확대 시 별도 승인.


[코디] 26.8.7(금) — poin-lap 코파일럿 키 차단 (SSH 원격 레지스트리)