# Wireproxy: HTTP/SOCKS5 프록시로 제공되는 WireGuard 클라이언트

> Clean Markdown view of GeekNews topic #14120. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=14120](https://news.hada.io/topic?id=14120)
- GeekNews Markdown: [https://news.hada.io/topic/14120.md](https://news.hada.io/topic/14120.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-04-03T08:34:12+09:00
- Updated: 2024-04-03T08:34:12+09:00
- Original source: [github.com/pufferffish](https://github.com/pufferffish/wireproxy)
- Points: 2
- Comments: 1

## Topic Body

### Wireproxy: Wireguard 클라이언트로서의 Socks5/HTTP 프록시 또는 터널

- `wireproxy`는 완전히 사용자 공간에서 실행되는 애플리케이션으로, wireguard 피어에 연결하고 기계에 socks5/http 프록시 또는 터널을 제공함.
- wireguard 피어를 통해 특정 사이트에 연결해야 하지만 네트워크 인터페이스를 새로 설정하는 데 번거로움을 겪고 싶지 않은 경우 유용함.

### 이것이 필요한 이유

- 단순히 wireguard를 프록시로 사용하여 일부 트래픽을 전송하고 싶을 때.
- wireguard 설정을 변경하기 위해 루트 권한을 원하지 않을 때.
- 현재 사용자는 다른 국가의 wireguard 서버에 연결된 wireproxy를 실행하고, 특정 사이트에 대해 브라우저를 사용하도록 설정함.
- wireproxy는 네트워크 인터페이스와 완전히 분리되어 있으며, 구성을 위해 루트 권한이 필요하지 않음.
- Amnezia VPN 사용자는 @juev가 포크한 wireproxy 버전을 사용할 수 있음.

### 기능

- 클라이언트와 서버를 위한 TCP 정적 라우팅
- SOCKS5/HTTP 프록시(현재는 CONNECT만 지원)

### 할 일

- SOCKS5에서 UDP 지원
- UDP 정적 라우팅

### 사용법

```plaintext
./wireproxy -c [config 경로]
```

- 사용자 공간 wireguard 클라이언트로 프록시 기능을 제공함.
- `-h`는 도움말, `-c`는 설정 파일 경로, `-s`는 조용한 모드, `-d`는 백그라운드 실행, `-v`는 버전 출력, `-n`은 설정 파일의 유효성만 검사하는 모드임.

### 빌드 지침

```plaintext
git clone https://github.com/octeep/wireproxy
cd wireproxy
make
```

### VPN과 함께 사용하기

- MacOS에서 Firefox 컨테이너 탭과 자동 시작을 위한 wireproxy 사용 방법은 해당 링크에서 찾을 수 있음.

### 샘플 설정 파일

- `[Interface]`와 `[Peer]` 설정은 wg-quick 설정과 동일한 의미와 구문을 따름.
- TCPClientTunnel과 TCPServerTunnel은 각각 로컬 머신과 wireguard 네트워크에서 TCP 트래픽을 특정 대상으로 전달하는 터널임.
- STDIOTunnel은 wireproxy 프로세스의 표준 입력과 출력을 wireguard를 통해 특정 TCP 대상과 연결하는 터널임.
- Socks5와 http는 LAN에서 socks5 프록시와 http 프록시를 생성하고 모든 트래픽을 wireguard를 통해 라우팅함.
- wireguard 설정이 이미 있는 경우, wireproxy 설정 파일에서 이를 가져올 수 있음.
- 여러 피어를 지원하며, `AllowedIPs`는 wireproxy가 어떤 피어로 전달할지 알 수 있도록 지정해야 함.

### GN⁺의 의견

- wireproxy는 네트워크 설정에 대한 깊은 지식 없이도 VPN을 통한 안전한 인터넷 접속을 원하는 사용자에게 매우 유용할 수 있음.
- 이 애플리케이션은 사용자가 시스템 레벨의 네트워크 설정 변경 없이도 특정 트래픽을 wireguard를 통해 라우팅할 수 있게 해주는 점에서 매력적임.
- 그러나 사용자가 네트워크 보안에 대한 충분한 이해가 없다면, 잘못된 설정으로 인해 보안 취약점이 발생할 수 있으므로 주의가 필요함.
- wireguard 기술을 도입할 때는 해당 지역의 법적 제약과 프라이버시 정책을 고려해야 하며, VPN 사용이 허용되는지 확인해야 함.
- 비슷한 기능을 제공하는 다른 오픈소스 프로젝트로는 OpenVPN, SoftEther VPN 등이 있으며, 사용자는 자신의 요구 사항에 맞는 도구를 선택해야 함.

## Comments



### Comment 24179

- Author: neo
- Created: 2024-04-03T08:34:14+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=39900329) 
- **유용한 작은 도구에 대한 토론**
  - 한 사용자는 특정 Firefox 탭을 Wireguard를 사용하는 홈 라우터로 프록시하는 데 이 도구를 사용함. 이 도구는 애플리케이션 계층 프록시 프로토콜이나 SSH 없이도 작동함.
  - 다른 사용자는 Wireguard와 함께 사용하기 위해 [soks](https://github.com/dariost/soks)를 선호함. 기존의 Wireguard 인터페이스를 재사용하며, 사용자는 자신의 블로그 포스트에서 이에 대해 자세히 설명함.
  - 또 다른 도구로는 [onetun](https://github.com/aramperes/onetun)이 있음.
  - 한 사용자는 SSH 터널을 대체할 수 있는 도구로서, pproxy를 언급함. pproxy는 다양한 터널 프로토콜을 서로 변환하고 라우팅 기능을 제공함. 사용자는 SSH SOCKS5를 HTTP 프록시로 변환하는 데 사용함.

- **다양한 프록시 클라이언트에 대한 정보**
  - 여러 멀티 프로토콜 프록시 클라이언트가 이 기능을 지원함. 오픈 소스 예시로는 [sing-box](https://github.com/SagerNet/sing-box), [clash-meta](https://github.com/muink/Clash.Meta) 및 기타 clash 기반 클라이언트, [xray](https://github.com/xtls/xray-core)가 있음.
  - 폐쇄 소스 클라이언트로는 [Surge Mac/iOS](https://nssurge.com/)가 있음.

- **사용자 공간 서버 구현에 대한 질문**
  - 한 사용자는 tun/tap 장치 없이 완전히 사용자 공간에서 실행되는 서버 구현이 있는지 궁금해함. 이를 위해서는 어떤 종류의 사용자 공간 IP 스택이 필요할 것으로 추측함.

- **특정 VPN 서비스를 위한 도구에 대한 추천**
  - Mullvad VPN을 위한 도구로 [mullvad-proxy](https://github.com/imiric/mullvad-proxy)를 사용한 좋은 경험을 공유함. Mullvad CLI 도구를 내장하고 있어 서버 전환을 쉽게 할 수 있으며, 호스트 기계와는 격리되어 있음. 또한 nginx와 몇 가지 스크립트로 구성되어 있어 SOCKS5 지원이 좋을 것으로 기대됨.

- **Go 언어로 작성된 도구에 대한 긍정적인 반응**
  - 한 사용자는 Go 언어로 이와 같은 도구를 쉽게 작성할 수 있을 것이라고 생각했고, 실제로 그렇게 되어 있음을 발견함.

- **개인적인 사용 사례에 대한 토론**
  - 한 사용자는 이러한 도구를 사용하여 Thunderbird 이메일 연결을 Tailscale 출구 노드를 통해 프록시하고 싶다는 생각을 함. 이를 통해 모든 트래픽을 출구 노드로 리디렉션하지 않고도 이메일 연결만 프록시할 수 있음.

- **sing-box의 기능에 대한 언급**
  - sing-box도 동일한 기능을 제공한다는 정보를 공유함.
