(Bazat pe excelentul lui Chrispus Kamau Wireguard VPN tutoriale pentru Configurare tipică și Configurare înlănțuită, se pare că am o soluție (netestat!) într-un format care arată cum ar putea fi gestionate setările oarecum neobișnuite/complexe... sau cel puțin să vă ofere o idee. Multumesc mult CK!)
Prin intermediul: https://github.com/iamckn/chained-wireguard-ansible
Cum functioneaza:
Client (vpn0
) â 10.200.200.0/24
â (wg0
) â intermediar (poarta0
) â 10.100.100.0/24
â (wg0
) Poartă (wg0
) â Internet public
Se presupune că Unbound este configurat atât pe Middleman, cât și pe Gate pentru rezoluția DNS locală.
Configurarea porții
Configurați interfața VPN a porții (wg0
).
Fişier: /etc/wireguard/wg0.conf
# SERVER
[Interfață] # Poarta
PrivateKey = GATE_PRIVATE_KEY
Adresa = 10.100.100.1/24
ListenPort = 53701
SaveConfig = false
# CLIENȚI
[Peer] # Middleman
PublicKey = MIDDLEMAN_PUBLIC_KEY
PresharedKey = MIDDLEMAN_PRESHARED_KEY
AllowedIPs = 10.0.0.0/8
Configurare firewall. comenzi:
# Urmăriți conexiunea VPN
## Urmăriți lanțul de intrare
iptables -A INPUT -m conntrack --ctstate RELATED,STABLISHED -j ACCEPT
## Urmărește lanțul înainte
iptables -A FORWARD -m conntrack --ctstate RELATED,STABLISHED -j ACCEPT
# Permiteți conexiunile WireGuard de intrare/traficul VPN pe portul de ascultare
iptables -A INPUT -p udp -m udp --dport 53701 -m conntrack --ctstate NOU -j ACCEPT
# Permite atât traficul DNS recursiv TCP, cât și UDP
iptables -A INPUT -s 10.100.100.0/24 -p tcp -m tcp --dport 53 -m conntrack --ctstate NOU -j ACCEPT
iptables -A INPUT -s 10.100.100.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NOU -j ACCEPT
# Permiteți redirecționarea pachetelor care rămân în tunelul VPN
iptables -A FORWARD -i wg0 -o wg0 -m conntrack --ctstate NOU -j ACCEPT
# Configurați NAT
iptables -t nat -A POSTROUTING -s 10.100.100.0/24 -o enp7s0 -j MASQUERADE
Afișați interfața VPN a porții și activați serviciul WireGuard să repornească automat la pornire:
wg-quick up wg0
systemctl enable wg-quick@wg0
Configurația intermediarului
Configurați interfața intermediarului orientată spre poarta (poarta0
). Aici intermediarul acționează ca client.
Fişier: /etc/wireguard/gate0.conf
[Interfață] # Middleman
PrivateKey = MIDDLEMAN_PRIVATE_KEY
Adresa = 10.100.100.2/32
DNS = 10.100.100.1
SaveConfig = false
# PEERS
[Peer] # Poarta
PublicKey = GATE_PUBLIC_KEY
PresharedKey = MIDDLEMAN_PRESHARED_KEY
Punct final = GATE_PUBLIC_IP:53701
AllowedIPs = 0.0.0.0/0
#PersistentKeepalive = 21
Configurați interfața intermediarului orientată către client (wg0
). Aici intermediarul acționează ca server.
Fişier: /etc/wireguard/wg0.conf
# SERVER
[Interfață] # Middleman
PrivateKey = MIDDLEMAN_PRIVATE_KEY
Adresa = 10.200.200.1/24
ListenPort = 53701
SaveConfig = false
# CLIENȚI
[Peer] # PC
PublicKey = CLIENT_PUBLIC_KEY
PresharedKey = CLIENT_PRESHARED_KEY
IP-uri permise = 10.200.200.2/32
Configurare firewall. comenzi:
iptables -A INPUT -m conntrack --ctstate RELATED,STABLISHED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate RELATED,STABLISHED -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 53701 -m conntrack --ctstate NOU -j ACCEPT
iptables -A INPUT -s 10.200.200.0/24 -p tcp -m tcp --dport 53 -m conntrack --ctstate NOU -j ACCEPT
iptables -A INPUT -s 10.200.200.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NOU -j ACCEPT
iptables -A FORWARD -i wg0 -o wg0 -m conntrack --ctstate NOU -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -o enp41s0 -j MASQUERADE
# Configurați lanțul VPN NAT
iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -j SNAT --to-source 10.100.100.2
Configurați rutarea politicii pe intermediar pentru a direcționa traficul de la client la poartă.
echo "1 intermediar" >> /etc/iproute2/rt_tables
# Redirecționați tot traficul către poartă
IP route add 0.0.0.0/0 dev gate0 table middleman
# SAU redirecționați numai traficul către 4.2.2.2 (de ex.), către poartă
#ip route add 4.2.2.2/32 dev gate0 table middleman
regulă ip adăugați de la 10.200.200.0/24 intermediar de căutare
Afișați interfețele WireGuard ale intermediarului și activați serviciul WireGuard să repornească automat la pornire:
wg-quick up gate0
systemctl enable wg-quick@gate0
wg-quick up wg0
systemctl enable wg-quick@wg0
Configurare client
Fişier: /etc/wireguard/vpn0.conf
[Interfață]
PrivateKey = CLIENT_PRIVATE_KEY
Adresa = 10.200.200.2/32
DNS = 10.200.200.1
# PEERS
[Peer] # Middleman
PublicKey = MIDDLEMAN_PUBLIC_KEY
PresharedKey = CLIENT_PRESHARED_KEY
Punct final = MIDDLEMAN_PUBLIC_IP:53701
AllowedIPs = 0.0.0.0/0
#PersistentKeepalive = 21
În cele din urmă, activați WireGuard pe client.