GN⁺: Wireproxy: HTTP/SOCKS5 프록시로 제공되는 WireGuard 클라이언트
(github.com/pufferffish)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 정적 라우팅
사용법
./wireproxy -c [config 경로]
- 사용자 공간 wireguard 클라이언트로 프록시 기능을 제공함.
-
-h
는 도움말,-c
는 설정 파일 경로,-s
는 조용한 모드,-d
는 백그라운드 실행,-v
는 버전 출력,-n
은 설정 파일의 유효성만 검사하는 모드임.
빌드 지침
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 등이 있으며, 사용자는 자신의 요구 사항에 맞는 도구를 선택해야 함.
Hacker News 의견
-
유용한 작은 도구에 대한 토론
- 한 사용자는 특정 Firefox 탭을 Wireguard를 사용하는 홈 라우터로 프록시하는 데 이 도구를 사용함. 이 도구는 애플리케이션 계층 프록시 프로토콜이나 SSH 없이도 작동함.
- 다른 사용자는 Wireguard와 함께 사용하기 위해 soks를 선호함. 기존의 Wireguard 인터페이스를 재사용하며, 사용자는 자신의 블로그 포스트에서 이에 대해 자세히 설명함.
- 또 다른 도구로는 onetun이 있음.
- 한 사용자는 SSH 터널을 대체할 수 있는 도구로서, pproxy를 언급함. pproxy는 다양한 터널 프로토콜을 서로 변환하고 라우팅 기능을 제공함. 사용자는 SSH SOCKS5를 HTTP 프록시로 변환하는 데 사용함.
-
다양한 프록시 클라이언트에 대한 정보
- 여러 멀티 프로토콜 프록시 클라이언트가 이 기능을 지원함. 오픈 소스 예시로는 sing-box, clash-meta 및 기타 clash 기반 클라이언트, xray가 있음.
- 폐쇄 소스 클라이언트로는 Surge Mac/iOS가 있음.
-
사용자 공간 서버 구현에 대한 질문
- 한 사용자는 tun/tap 장치 없이 완전히 사용자 공간에서 실행되는 서버 구현이 있는지 궁금해함. 이를 위해서는 어떤 종류의 사용자 공간 IP 스택이 필요할 것으로 추측함.
-
특정 VPN 서비스를 위한 도구에 대한 추천
- Mullvad VPN을 위한 도구로 mullvad-proxy를 사용한 좋은 경험을 공유함. Mullvad CLI 도구를 내장하고 있어 서버 전환을 쉽게 할 수 있으며, 호스트 기계와는 격리되어 있음. 또한 nginx와 몇 가지 스크립트로 구성되어 있어 SOCKS5 지원이 좋을 것으로 기대됨.
-
Go 언어로 작성된 도구에 대한 긍정적인 반응
- 한 사용자는 Go 언어로 이와 같은 도구를 쉽게 작성할 수 있을 것이라고 생각했고, 실제로 그렇게 되어 있음을 발견함.
-
개인적인 사용 사례에 대한 토론
- 한 사용자는 이러한 도구를 사용하여 Thunderbird 이메일 연결을 Tailscale 출구 노드를 통해 프록시하고 싶다는 생각을 함. 이를 통해 모든 트래픽을 출구 노드로 리디렉션하지 않고도 이메일 연결만 프록시할 수 있음.
-
sing-box의 기능에 대한 언급
- sing-box도 동일한 기능을 제공한다는 정보를 공유함.