Wireguard: сделать Double-VPN с помощью двух Ubuntu серверов

Цена договорная
31 октября 2021, 13:44 • 3 отклика • 38 просмотров
Добрый день.

Необходимо связать два Ubuntu сервера через Wireguard, чтобы реализовать double-vpn, при этом пробросить на второй сервер необходимые порты.

Имеется:

- Ubuntu-сервер_1, к которому подключается клиент

- Ubuntu-сервер_2, к которому подключается сервер_1

Реализована должна быть следующая цепочка: ISP клиента -> Ubuntu-сервер_1 (wireguard) -> Ubuntu_сервер_2 (wireguard) -> Интернет.

На Ubuntu-сервере_1 происходит обработка всего поступающего трафика средствами pi-hole для удаления рекламы, трекеров и прочего.

То есть переадресовывать на 2 сервер нужно только тот трафик, который уже обработан.

Также необходимо реализовать два варианта:

1 - проброс портов на сервер 2 ;

2 - оставить возможность подключаться к указанным портам с сервера_1 (на случай, если я буду использовать в качестве второго сервера публичный vpn-сервис, а не собственный сервер).

Например, 10.0.0.1:777 - админка роутера, порт которого проброшен в Wireguard 1-го сервера,

(ниже правила по этому поводу:

iptables -t nat -A PREROUTING -p tcp -i wg0 -d 10.0.0.1 --dport 777 -j DNAT --to 10.0.0.2:777

iptables -t nat -A PREROUTING -p tcp -i wg0 -d 10.0.0.1 --dport 280 -j DNAT --to 10.0.0.11:280 )


Также на сервере используются следующие Iptables правила:

#KDEConnect (доступ должен быть проброшен также на 2 сервер)

iptables -I INPUT -i wg0 -p udp --dport 1714:1764 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -I INPUT -i wg0 -p tcp --dport 1714:1764 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o wg0 -p udp --sport 1714:1764 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o wg0 -p tcp --sport 1714:1764 -m state --state NEW,ESTABLISHED -j ACCEPT


#NTP (должен быть доступен с первого сервера, но если реализуете возможность проброса только wireguard трафика, то это по-умолчанию должно работать нормально)

iptables -I INPUT -p udp -d тут_айпи --dport 123 -j ACCEPT


#wireguard

iptables -I INPUT -p udp -d _тут-айпи-к-которому-подключается-клиент --dport 5557 -j ACCEPT

iptables -A FORWARD -i wg0 -j ACCEPT

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT


#Pi-Hole admin

iptables -A INPUT -p tcp -s 10.0.0.0/24 --dport 82 -j ACCEPT

iptables -A INPUT -p udp -s 10.0.0.0/24 --dport 82 -j ACCEPT


и прочие, остальные порты я по аналогии укажу сам.

https://www.ckn.io/blog/2017/12/28/wireguard-vpn-chained-setup/

может быть поможет в реализации, но решение с пробросом портов обязательно


* напишите 123 в начале ответа, чтобы я понимал, что вы не бот.