(На основе превосходного исследования Криспуса Камау. Вайргард VPN учебники для Типичная установка и Цепная установка, кажется, у меня может быть решение (непроверенный!) в формате, который показывает, как можно работать с несколько необычными/сложными настройками, или, по крайней мере, дает вам представление. Большое спасибо СК!)
С помощью: https://github.com/iamckn/chained-wireguard-ansible
Как это работает:
Клиент (vpn0
) 10.200.200.0/24
(WG0
) - Посредник (ворота0
) 10.100.100.0/24
(WG0
) Ворота (WG0
) ▪ Общедоступный Интернет
Предполагается, что Unbound настроен как на посреднике, так и на шлюзе для локального разрешения DNS.
Конфигурация ворот
Настройте интерфейс VPN шлюза (WG0
).
Файл: /etc/wireguard/wg0.conf
# СЕРВЕР
[Интерфейс] # Ворота
Приватный ключ = GATE_PRIVATE_KEY
Адрес = 10.100.100.1/24
ListenPort = 53701
Сохранение конфигурации = ложь
# КЛИЕНТЫ
[Первый] # Посредник
Публичный ключ = MIDDLEMAN_PUBLIC_KEY
PresharedKey = MIDDLEMAN_PRESHARED_KEY
Разрешенные IP-адреса = 10.0.0.0/8
Конфигурация брандмауэра. команды:
# Отслеживание VPN-соединения
## Отследить входную цепочку
iptables -A INPUT -m conntrack --ctstate СВЯЗАННО,УСТАНОВЛЕНО -j ПРИНЯТЬ
## Следить за цепочкой переадресации
iptables -A FORWARD -m conntrack --ctstate СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ
# Разрешить входящие соединения WireGuard/VPN-трафик на прослушиваемом порту
iptables -A INPUT -p udp -m udp --dport 53701 -m conntrack --ctstate NEW -j ПРИНЯТЬ
# Разрешить как TCP, так и UDP рекурсивный DNS-трафик
iptables -A INPUT -s 10.100.100.0/24 -p tcp -m tcp --dport 53 -m conntrack --ctstate NEW -j ПРИНЯТЬ
iptables -A INPUT -s 10.100.100.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ПРИНЯТЬ
# Разрешить пересылку пакетов, которые остаются в VPN-туннеле
iptables -A FORWARD -i wg0 -o wg0 -m conntrack --ctstate NEW -j ПРИНЯТЬ
# Настраиваем НАТ
iptables -t nat -A POSTROUTING -s 10.100.100.0/24 -o enp7s0 -j MASQUERADE
Поднимите интерфейс VPN шлюза и включите автоматический перезапуск службы WireGuard при загрузке:
wg-быстро wg0
systemctl включить wg-quick@wg0
Конфигурация посредника
Настройте интерфейс посредника, обращенный к воротам (ворота0
). Здесь посредник выступает в роли клиента.
Файл: /etc/wireguard/gate0.conf
[Интерфейс] # Посредник
Приватный ключ = MIDDLEMAN_PRIVATE_KEY
Адрес = 10.100.100.2/32
DNS = 10.100.100.1
Сохранение конфигурации = ложь
# РАВНИКИ
[Узел] # Ворота
Публичный ключ = GATE_PUBLIC_KEY
PresharedKey = MIDDLEMAN_PRESHARED_KEY
Конечная точка = GATE_PUBLIC_IP:53701
Разрешенные IP-адреса = 0.0.0.0/0
#PersistentKeepalive = 21
Настройте клиентский интерфейс посредника (WG0
). Здесь посредник выступает в роли сервера.
Файл: /etc/wireguard/wg0.conf
# СЕРВЕР
[Интерфейс] # Посредник
Приватный ключ = MIDDLEMAN_PRIVATE_KEY
Адрес = 10.200.200.1/24
ListenPort = 53701
Сохранение конфигурации = ложь
# КЛИЕНТЫ
[Узел] # ПК
Публичный ключ = CLIENT_PUBLIC_KEY
PresharedKey = CLIENT_PRESHARED_KEY
Разрешенные IP-адреса = 10.200.200.2/32
Конфигурация брандмауэра. команды:
iptables -A INPUT -m conntrack --ctstate СВЯЗАННО,УСТАНОВЛЕНО -j ПРИНЯТЬ
iptables -A FORWARD -m conntrack --ctstate СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ
iptables -A INPUT -p udp -m udp --dport 53701 -m conntrack --ctstate NEW -j ПРИНЯТЬ
iptables -A INPUT -s 10.200.200.0/24 -p tcp -m tcp --dport 53 -m conntrack --ctstate NEW -j ПРИНЯТЬ
iptables -A INPUT -s 10.200.200.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ПРИНЯТЬ
iptables -A FORWARD -i wg0 -o wg0 -m conntrack --ctstate NEW -j ПРИНЯТЬ
iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -o enp41s0 -j MASQUERADE
# Настроить NAT цепочки VPN
iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -j SNAT --to-source 10.100.100.2
Настройте маршрутизацию политики на посреднике для маршрутизации трафика от клиента к шлюзу.
echo "1 посредник" >> /etc/iproute2/rt_tables
# Перенаправляем весь трафик на гейт
ip route add 0.0.0.0/0 dev gate0 table middleman
# ИЛИ пересылать трафик только на 4.2.2.2 (например), на гейт
#ip route add 4.2.2.2/32 dev gate0 table middleman
IP-правило добавления от посредника поиска 10.200.200.0/24
Поднимите интерфейсы WireGuard посредника и включите автоматический перезапуск службы WireGuard при загрузке:
wg-быстро до ворот0
systemctl включить wg-quick@gate0
wg-быстро wg0
systemctl включить wg-quick@wg0
Конфигурация клиента
Файл: /etc/wireguard/vpn0.conf
[Интерфейс]
Приватный ключ = CLIENT_PRIVATE_KEY
Адрес = 10.200.200.2/32
DNS = 10.200.200.1
# РАВНИКИ
[Первый] # Посредник
Публичный ключ = MIDDLEMAN_PUBLIC_KEY
PresharedKey = CLIENT_PRESHARED_KEY
Конечная точка = MIDDLEMAN_PUBLIC_IP:53701
Разрешенные IP-адреса = 0.0.0.0/0
#PersistentKeepalive = 21
Наконец, активируйте WireGuard на клиенте.