Wireguard - 일부 트래픽만 터널링하는 방법

Wireguard - 일부 트래픽만 터널링하는 방법

ips [A, B, C,...] 목록만 Wireguard를 통해 터널링되고 나머지 트래픽은 무시되고 비 Wireguard 인터페이스를 통과하도록 Wireguard 서버를 설정할 수 있습니까?

다르게 말하면, 일부 외부 사람들에게 Wireguard VPN에 대한 액세스 권한을 부여하려고 하지만 그들이 VPN을 사용하여 내가 지정한 IP/사이트가 아닌 다른 IP/사이트를 검색할 수 없도록 하고 싶습니다. VPN이 아닌 인터페이스/연결을 원합니다.

감사해요

답변1

iptables를 사용할 수 있습니다. 인터넷과 클라이언트 서브넷 에 연결되는 네트워크 인터페이스로
바꿉니다 .eth010.6.0.1/24

[INTERFACE] 아래의 Wireguard 구성 어딘가에 삽입하세요.

# Drop all outgoing packets from the client subnet
PreUp = iptables -I FORWARD -s 10.6.0.1/24 -o eth0 -j DROP
## Add your exceptions here

예를 들어:

[Interface]
PrivateKey = ...
Address = 10.6.0.1/24
MTU = 1420
ListenPort = 51820

## Before interface wg0 is up
# Drop all outgoing packets from the client subnet
PreUp = iptables -I FORWARD -s 10.6.0.1/24 -o eth0 -j DROP
# Allow clients to connect to the local network 192.168.0.1/24
PreUp = iptables -I FORWARD -s 10.6.0.1/24 -d 192.168.0.1/24 -j ACCEPT
# Allow clients to connect to tcp port 80 (usually http) on 10.10.0.5
PreUp = iptables -I FORWARD -s 10.6.0.1/24 -d 10.10.0.5 -p tcp --dport 80 -j ACCEPT

## After interface wg0 is down
PostDown = iptables -D FORWARD -s 10.6.0.1/24 -o eth0 -j DROP
PostDown = iptables -D FORWARD -s 10.6.0.1/24 -d 192.168.0.1/24 -j ACCEPT
PostDown = iptables -D FORWARD -s 10.6.0.1/24 -d 10.10.0.5 -p tcp --dport 80 -j ACCEPT

[Peer]
...

클라이언트 측의 원활한 환경을 위해서는 AllowedIPs클라이언트 구성에서도 구성해야 합니다. 그렇지 않으면 클라이언트는 VPN을 사용하여 인터넷에 액세스하려고 시도하며 해당 요청은 시간 초과됩니다.

위의 예에 따르면 클라이언트 구성은 다음과 같습니다.

[Interface]
PrivateKey = ...
Address = 10.6.0.2/24
DNS = 10.6.0.1

[Peer]
PublicKey = ...
AllowedIPs = 192.168.0.1/24, 10.10.0.5
Endpoint = ...
PresharedKey = ...

선적 서류 비치:

관련 정보