WireGuard 아웃바운드의 동작 방식
현재 코어에서 WireGuard는 네트워크 계층 터널형 아웃바운드입니다. 클라이언트가 내부에 WireGuard 네트워크 장치를 만들고 이 노드와 일치하는 TCP 또는 UDP 트래픽을 터널로 전송하며 운영체제의 전체 기본 라우팅을 가져오지는 않습니다.
설정에는 로컬 인터페이스와 원격 Peer가 모두 설명되어야 합니다. 로컬 주소와 개인 키는 클라이언트 인터페이스에 속하고 서버 엔드포인트, 공개 키 및 Allowed IPs는 Peer에 속하므로 두 필드 집합을 서로 바꿀 수 없습니다.
단일 Peer 최소 설정
Peer가 하나뿐이면 엔드포인트와 Peer 키를 노드 최상위에 직접 입력하는 간소화된 형식을 사용할 수 있습니다.ip 와 함께 사용하는 ipv6 최소 하나를 입력해야 하며 그렇지 않으면 클라이언트가 로컬 터널 주소를 만들 수 없습니다.
name필수- 정책 그룹과 규칙에서 참조하는 노드 이름입니다.
type필수- 고정값
wireguard。 private-key필수- Base64로 인코딩된 클라이언트 개인 키이며 비밀로 유지해야 합니다.
ip조건부 필수- WireGuard 네트워크에서 사용하는 클라이언트 IPv4 주소입니다. 다음 항목과
ipv6중 최소 하나가 있어야 합니다. ipv6조건부 필수- WireGuard 네트워크에서 사용하는 클라이언트 IPv6 주소입니다. IPv6를 사용하지 않으면 생략할 수 있습니다.
server필수- 원격 Peer의 도메인 또는 IP 주소입니다.
port필수- 원격 Peer의 WireGuard 포트입니다.
public-key필수- Base64로 인코딩된 원격 Peer 공개 키입니다.
- 단일 Peer 라우팅현재 구현에서
- 간소화된 형식은 로컬 주소 패밀리에 따라 자동으로
0.0.0.0/0및::/0라우팅을 설정하며 최상위의allowed-ips은 읽지 않습니다.
다중 Peer 전체 형식
여러 Peer가 필요하면 peers 배열을 사용합니다.private-key 및 로컬 ip 또는 ipv6 은 계속 노드 최상위에 두고 서버 엔드포인트와 Peer 키는 각 배열 항목으로 옮깁니다.
각 Peer에는 비어 있지 않은 allowed-ips을 제공하고 네트워크 대역별로 구분해야 합니다. 다음을 사용하면 peers 최상위의 server、port、public-key 및 pre-shared-key 은 무시되며 최상위의 reserved 은 reserved를 별도로 입력하지 않은 Peer의 폴백 값으로 사용됩니다.
| 계층 | 필드 | 요구 사항 |
|---|---|---|
| 노드 최상위 | private-key、ip、ipv6 | 로컬 WireGuard 인터페이스 설명 |
| 노드 최상위 | peers | 하나 이상의 원격 Peer 포함 |
| 노드 최상위 | reserved | 각 Peer가 reserved를 별도로 입력하지 않았을 때의 폴백 값 |
| 각 Peer | server、port、public-key | 원격 엔드포인트 및 신원 설명 |
| 각 Peer | allowed-ips | 비어 있으면 안 되며 여러 Peer는 네트워크 대역별로 구분해야 함 |
| 각 Peer | pre-shared-key、reserved | 서버에서 명시적으로 요구할 때만 입력 |
키, 라우팅 및 연결 필드
키와 값 형식은 노드 초기화 시 검증됩니다. 네트워크에는 연결되지만 터널 안에 트래픽이 없다면 Clash 규칙을 바꾸기 전에 Allowed IPs, MTU 및 연결 유지를 먼저 확인하세요.
pre-shared-key필요한 경우- Base64로 인코딩된 추가 사전 공유 키이며 해당 Peer와 일치해야 합니다.
reserved필요한 경우- 정확히 3바이트인 WireGuard 예약 값이며 일부 WARP 노드에서 필요합니다.
persistent-keepalive필요한 경우- 초 단위로 연결 유지 패킷을 주기적으로 전송하며 NAT 뒤의 클라이언트에서 자주 사용합니다.
mtu필요한 경우- 내부 WireGuard 장치 MTU이며 입력하지 않으면 현재 구현은 1408을 사용합니다.
udp필요한 경우- 이 노드와 일치한 UDP 앱 트래픽이 WireGuard 아웃바운드로 들어가도록 허용합니다.
dialer-proxy필요한 경우- 다른 아웃바운드나 정책 그룹을 통해 WireGuard 엔드포인트에 연결합니다.
원격 DNS 및 AmneziaWG
WireGuard 아웃바운드는 터널로 들어가는 도메인 요청에 전용 리졸버를 사용할 수 있습니다. AmneziaWG 옵션은 서버에서 같은 확장을 사용할 때만 입력하며 각 필드는 AmneziaWG 버전 제약도 받습니다.
remote-dns-resolve필요한 경우- 다음 값으로 설정하면
true일 때 현재 WireGuard 아웃바운드를 원격 조회에 사용할 수 있습니다. 기본값은false。 dns조건부 적용- 원격 조회에 사용할 DNS 서버이며 다음 조건에서만 적용됩니다:
remote-dns-resolve: true을 선택했을 때만 적용됩니다. amnezia-wg-option고급- 이 객체가 있으면 AmneziaWG를 활성화합니다. 매개변수는 해당 서버 설정에서 가져와야 합니다.
표준 설정을 클라이언트 필드로 매핑
표준 WireGuard [Interface] 의 Address와 PrivateKey는 최상위 주소와 개인 키에 매핑합니다. 또한[Peer] 의 Endpoint, PublicKey 및 AllowedIPs는 Peer 필드에 매핑합니다. 표준 설정의 ListenPort는 로컬 수신 포트이므로 원격 port。
로 잘못 입력하면 안 됩니다. 아래 두 키는 형식만 유효한 예시 값이며 실제 인증에 사용할 수 없습니다. 단일 Peer 간소화 형식에서는 최상위 allowed-ips을 읽지 않습니다. 라우팅 범위를 직접 설정해야 한다면 peers 배열을 사용하고 각 Peer 안에 allowed-ips를 입력하세요.
- missing local address가 발생하면 올바른
ip또는ipv6。 - 키 디코딩 오류가 발생하면 설정 파일 경로나 십육진수 텍스트가 아닌 Base64 키를 복사했는지 확인하세요.
- 다중 Peer에서 missing allowed_ips가 보고되면 각 Peer에 비어 있지 않고 명확한 네트워크 대역 목록을 제공하세요.
- 핸드셰이크는 있지만 데이터가 없다면 상대 공개 키, Allowed IPs, NAT, 방화벽 및 MTU를 확인하세요.
proxies:
- name: wg-node
type: wireguard
private-key: ZXhhbXBsZS1jbGllbnQtcHJpdmF0ZS1rZXktMDAwMDA=
ip: 10.0.0.2
server: 203.0.113.10
port: 51820
public-key: ZXhhbXBsZS1wZWVyLXB1YmxpYy1rZXktMDAwMDAwMDA=
udp: true
mtu: 1408
persistent-keepalive: 25