
Ist es möglich, den Wireguard-Server so einzurichten, dass nur eine Liste von IPs [A, B, C, ...] über Wireguard getunnelt wird – während der restliche Datenverkehr ignoriert wird und über die Nicht-Wireguard-Schnittstelle läuft?
Anders gesagt, ich versuche, einigen externen Personen Zugriff auf ein Wireguard-VPN zu gewähren, möchte aber nicht, dass sie das VPN verwenden können, um andere IPs/Sites als die von mir angegebene zu durchsuchen (während sie über ihre eigene Nicht-VPN-Schnittstelle/-Verbindung tun können, was sie wollen).
Danke
Antwort1
Sie können iptables verwenden.
Ersetzen Sie eth0
durch die Netzwerkschnittstelle, die eine Verbindung zum Internet und 10.6.0.1/24
zu Ihrem Client-Subnetz herstellt.
Fügen Sie dies irgendwo in Ihrer Wireguard-Konfiguration unter [INTERFACE] ein.
# 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
Zum Beispiel:
[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]
...
Für ein nahtloses Erlebnis auf der Clientseite müssen Sie dies auch AllowedIPs
in der Clientkonfiguration konfigurieren. Andernfalls versuchen die Clients, über das VPN auf das Internet zuzugreifen, und diese Anfragen werden einfach abgebrochen.
Dem obigen Beispiel folgend könnte die Konfiguration des Clients folgendermaßen aussehen:
[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 = ...
Dokumentation: