Skip to content

Commit 22c7594

Browse files
committed
docs: add project overview and release notes
1 parent 9026c92 commit 22c7594

3 files changed

Lines changed: 212 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# 변경 기록
2+
3+
## [v0.1.0] — 준비 중
4+
5+
### BREAKING CHANGES
6+
7+
_본 release에 breaking change 없음._
8+
9+
### Features
10+
11+
- Windows x64 휴대용 실행 파일과 macOS Apple Silicon 패키지 준비
12+
- 프로필, 사이트 규칙, DNS 보호, 연결 해제와 복구 흐름 구현
13+
- Windows와 macOS 공통 동작 계약 및 점검 문서 정리
14+
15+
### Bug Fixes
16+
17+
- 문제 수정 내역은 릴리스 승인 뒤 최종 후보 커밋에서 갱신합니다.
18+
19+
> 이 버전은 현재 macOS 서명·설치 점검과 Windows 재검증이 끝나기 전까지 공개하지 않습니다.

LICENSE.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 NetMD
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
# VPN Router
2+
3+
선택한 사이트만 기존 VPN 연결로 보내고, 나머지 인터넷은 평소 네트워크에
4+
그대로 두는 데스크톱 앱입니다. VPN 서비스를 제공하는 제품이 아니라 사용자가
5+
가져온 WireGuard 프로필을 안전하게 관리하고 사이트별 경로를 만드는 도구입니다.
6+
7+
## 한눈에 보기
8+
9+
```text
10+
선택 사이트
11+
12+
├─ DNS 응답 관찰 · 주소별 경로 계획
13+
14+
15+
기존 WireGuard VPN ───── 선택 사이트만 VPN
16+
일반 네트워크 ────────── 그 밖의 트래픽
17+
```
18+
19+
VPN Router는 다음 원칙을 중심으로 동작합니다.
20+
21+
- 프로필과 사이트를 사용자가 직접 선택합니다.
22+
- 개인 키는 플랫폼의 보호된 저장소에만 보관합니다.
23+
- 다른 VPN, 광고 차단기, 보안 DNS, 백신을 자동으로 끄거나 바꾸지 않습니다.
24+
- DNS 응답 경로와 VPN Router가 소유한 상태를 계속 확인합니다.
25+
- 안전하게 유지할 수 없으면 VPN Router가 만든 DNS·경로·터널만 정리합니다.
26+
- 진단 파일에는 상태, 개수, 시각과 오류 코드만 넣고 원문 설정·키·주소를
27+
넣지 않습니다.
28+
29+
## 플랫폼
30+
31+
| 플랫폼 || 네트워크 계층 | 배포 상태 |
32+
|---|---|---|---|
33+
| Windows 11 x64 | WinUI 3 / .NET 10 | Windows 서비스, WireGuard, DNS, 경로, IPC | portable EXE 검증 및 GitHub Actions 준비 |
34+
| macOS 15+ Apple Silicon | SwiftUI | Packet Tunnel + DNS Proxy System Extension, Keychain | unsigned 패키지 검증 완료; 서명·공증·실제 연결 검증 진행 중 |
35+
36+
두 플랫폼은 홈, VPN 프로필, VPN 사이트, 문제 해결, 설정의 다섯 영역과
37+
사용자에게 보이는 작업 의미를 공유합니다. 저수준 VPN·DNS·경로·권한·저장소
38+
구현은 운영체제별로 분리합니다.
39+
40+
## 빠른 시작
41+
42+
### Windows 개발 실행
43+
44+
필요한 것:
45+
46+
- Windows 11 x64
47+
- .NET 10 SDK와 WinUI 개발 도구
48+
- 공식 WireGuard for Windows 설치
49+
- 관리자 권한이 필요한 개발 연결 테스트 환경
50+
51+
저장소 루트에서 실행합니다.
52+
53+
```powershell
54+
dotnet build .\windows\VpnRouter.slnx -nr:false
55+
dotnet build .\windows\VpnRouterVs.sln -nr:false
56+
dotnet run --project .\windows\VpnRouter.Tests\VpnRouter.Tests.csproj --no-build
57+
```
58+
59+
개발 실행 스크립트와 복구 절차는 다음 문서에 있습니다.
60+
61+
- [Windows 다음 작업](docs/windows-next-session.md)
62+
- [Windows MVP 진행 기록](docs/windows-mvp-progress.md)
63+
- [Windows 서비스 개발 안내](docs/windows-service-dev.md)
64+
- [Windows 릴리스 보강](docs/windows-release-hardening.md)
65+
66+
### macOS 개발 실행
67+
68+
필요한 것:
69+
70+
- macOS 15 이상을 권장하는 Apple Silicon Mac
71+
- Xcode와 Swift
72+
- WireGuardKit Go bridge를 빌드할 Go 도구
73+
- Network Extension을 실행할 Apple 서명·프로비저닝 환경
74+
75+
순수 로직 테스트는 다음과 같이 실행합니다.
76+
77+
```bash
78+
cd macos/VPNRouter
79+
swift test
80+
```
81+
82+
Xcode에서 실행한 앱은 System Extension 활성화를 위해 `/Applications`
83+
설치된 앱이어야 합니다. DerivedData에서 바로 실행하면 운영체제가 부모 앱
84+
위치를 거부합니다. 실제 Packet Tunnel·DNS Proxy 동작은 서명된 앱을 실제 Mac에
85+
설치한 뒤 확인해야 하며, 컴파일 성공만으로 동작을 주장하지 않습니다.
86+
87+
- [macOS 다음 작업](docs/macos-next-session.md)
88+
- [macOS MVP 진행 기록](docs/macos-mvp-progress.md)
89+
- [macOS 릴리스 보강](docs/macos-phase4-release-hardening.md)
90+
91+
## 빌드와 릴리스
92+
93+
`.github/workflows/release.yml`은 다음 두 방식으로 실행됩니다.
94+
95+
1. `v0.1.0`과 같은 태그를 push합니다.
96+
2. GitHub Actions에서 수동 실행하고 버전을 입력합니다.
97+
98+
Windows 작업은 두 솔루션과 focused test를 실행한 뒤 portable EXE와 SHA-256을
99+
만듭니다. macOS 작업은 Apple Silicon arm64 앱과 내장 확장을 검증한 뒤 unsigned
100+
ZIP, DMG와 체크섬을 만듭니다. 두 작업이 성공하면 태그 실행은 GitHub Release를
101+
자동으로 만들고 산출물을 올립니다.
102+
103+
현재 macOS Actions 산출물은 unsigned compile/package evidence입니다. 실제
104+
System Extension 배포에는 Developer ID 서명, 공증, stapling, Gatekeeper와
105+
실제 Mac 설치 검증이 추가로 필요합니다. GitHub Actions에 인증서나 개인 키를
106+
커밋하지 말고, 서명 단계를 추가할 때는 GitHub Secrets와 최소 권한을 사용합니다.
107+
108+
## 구조
109+
110+
```text
111+
vpn_router/
112+
├── windows/
113+
│ ├── VpnRouter.App/ # WinUI 3 화면
114+
│ ├── VpnRouter.Service/ # 권한이 필요한 네트워크 백엔드
115+
│ ├── VpnRouter.Launcher/ # portable 단일 실행 파일
116+
│ ├── VpnRouter.Core/ # 공통 규칙과 모델
117+
│ ├── VpnRouter.Ipc/ # 앱-백엔드 계약
118+
│ ├── VpnRouter.Networking/ # DNS와 Windows 경로
119+
│ └── VpnRouter.Vpn/ # WireGuard 어댑터
120+
├── macos/VPNRouter/
121+
│ ├── VPNRouter/ # SwiftUI 호스트 앱과 공유 로직
122+
│ ├── PacketTunnel/ # Packet Tunnel 확장
123+
│ ├── DNSProxyExtension/ # DNS Proxy 확장
124+
│ └── Tests/ # Swift 테스트
125+
├── scripts/
126+
│ ├── windows/ # portable 빌드·검증·복구 스크립트
127+
│ └── macos/ # 앱·서명 구조 검증 스크립트
128+
└── docs/ # 제품 계약, 플랫폼 인수인계, 릴리스 기록
129+
```
130+
131+
## 제품 범위와 현재 한계
132+
133+
현재 범위:
134+
135+
- WireGuard 프로필 가져오기, 정리, 이름 변경, 선택과 삭제
136+
- 루트 도메인과 하위 도메인 사이트 규칙
137+
- YouTube·Netflix 미디어/CDN 확장 규칙
138+
- IPv4 사이트 경로와 대상 도메인 AAAA 보호
139+
- DNS 소유권 확인, 연결 해제 정리와 다음 실행 복구
140+
- 제한된 진단 파일과 수동 네트워크 복구
141+
142+
아직 릴리스 범위 밖인 항목:
143+
144+
- OpenVPN, L2TP, 모바일 앱
145+
- 앱별 라우팅과 전체 IPv6 분할 라우팅
146+
- VPN 제공업체 계정 자동화
147+
- 자동 업데이트와 일반 설치 프로그램
148+
- Windows x86/ARM64, Intel Mac
149+
- captive portal 자동 로그인·복구
150+
- 계정이 필요한 Netflix 재생 자동화
151+
152+
## 보안과 개인정보
153+
154+
실제 WireGuard 설정 파일, 개인 키, 토큰, 진단 원문을 저장소에 추가하지
155+
마십시오. 테스트에는 가짜 키를 사용하고, 문제를 공유할 때도 상태·개수·시각과
156+
오류 코드만 남기십시오. VPN Router는 다른 VPN이나 보안 제품을 자동으로
157+
중지하거나 재설정하지 않습니다.
158+
159+
플랫폼별 안전 경계와 공통 동작은 다음 문서에서 관리합니다.
160+
161+
- [플랫폼 공통 계약](docs/platform-parity-contract.md)
162+
- [UI/UX 원칙](docs/ui-design-principles.md)
163+
- [Windows UI/UX 전달 사항](docs/windows-ui-ux-handoff.md)
164+
- [v0.1.0 릴리스 계획](docs/v0.1.0-release-plan.md)
165+
- [변경 기록](CHANGELOG.md)
166+
- [macOS와 Windows 릴리스 준비 상태](docs/platform-parity-audit.md)
167+
168+
## 라이선스
169+
170+
VPN Router 프로젝트는 [MIT License](LICENSE.md)로 배포됩니다. 저장소에
171+
포함된 WireGuardKit과 기타 외부 구성 요소는 각자의 라이선스와 고지를
172+
따릅니다. 배포할 때 upstream 고지를 제거하지 마십시오.

0 commit comments

Comments
 (0)