- Регистрация
- 20.01.2011
- Сообщения
- 7,665
- Розыгрыши
- 0
- Реакции
- 135
Всех приветствую, АВТОРСКАЯ статья о поднятии DoubleVPN на базе Wireguard. (покомандная с описанием команд и скриншотами)
client double wg -> 1hop -> 2hop -> internet
Генерируем ключи для первого и второго сервера и клиентов:
Создадим конфиг для клиента, с которого будет устанавливатся подключение к 1hop wg
сначала смотрим что сгенерировалось в качестве приватного ключа клиента и публичного ключа входного сервера:
правим конфиг клиента ~/client.conf:
сохраняем CTRL+S / CTRL+X выходим из nano.
Подключаемся к первому серверу, обновляем репы и ставим нужные пакеты, и копируем конфиг туда /etc/wireguard/wg0.conf:
смотрим приватный ключ входного сервера и публичный ключ клиента:
Посмотреть вложение 92023
правим конфиг, вставляем свои ключи и сохраняем CTRL+S:
теперь создадим конфиг wg для подключения от первого сервера к второму:
На первый сервер копируем конфиг для подключения к второму серверу /etc/wireguard/gate0.conf вставляя свои ключи:
Посмотреть вложение 92025
сохраняем CTRL+S / CTRL+X выходим из nano.
Далее включаем форвардинг, добавляем таблицу маршрутизации, поднимаем сконфигурированные конфиги интерфейсов wg, добавляем правила iptables:
Затем подрубаемся ко второму серверу и также смотрим что сгенерировалось в виде приватного ключа выходного сервера и публичного ключа клиента выходного сервера, правим в соответствии с сгенерированным вами и копируем в конфиг /etc/wireguard/wg0.conf:
Обновляем репы и ставим нужные пакеты:
Посмотреть вложение 92028
Далее все также включаем форвардинг, поднимаем сконфигурированный конфиг интерфейса wg, добавляем правила iptables:
теперь можем подключится с ранее созданным клиентским конфигом cllient.conf:
проверим:
всё работает. Трафик идет от клиента double wg -> входной сервер wg -> выходной сервер wg -> internet.
Идем на первый сервер и прикручиваем wireguard-ui:
Посмотреть вложение 92032
на первый вопрос жмем Enter (вставит текущий ип сервера), второй вопрос тоже Enter (вставит дефолтный порт 51820), третий вопрос - пишем сеть 10.111.111.0/24 (как у нас в конфиге). Далее вопрос тоже Enter (укажет дефолтный wg интерфейс wg0, как и имя нашего конфига), вопрос об системном интерфейсе Enter (укажет eth0), правила файрвола не применяем, последний вопрос - ставим "n" и Enter.
Установится wireguard-ui на локалхосте, не торча наружу и необходимо пробросить порт через ssh как и написано по окончанию установки:
Посмотреть вложение 92033
прокидываем порт до входного сервака с wireguard-ui:
Посмотреть вложение 92034
в браузере открываем 127.0.0.1:5000, креды по дефолту admin/admin:
Посмотреть вложение 92035
ставим IP - 10.111.111.2/24, жмем save и затем apply config.
Переходим в Wireguard Clients и добавляем конфиг, и можем проверять
Посмотреть вложение 92036
жмём submit, затем apply config и проверяем
Посмотреть вложение 92037
Посмотреть вложение 92038Посмотреть вложение 92039
Посмотреть вложение 92040
можно добавлять клиенсткие конфиги которые будут подхватыватся правилом iptables (просмотреть правило:
Посмотреть вложение 92041
и всё идёт от созданных конфигов в wireguard-ui в первый сервер (входной, с wireguard-ui), затем во второй сервер, образуя double wireguard chain
АВТОРСКАЯ статья о поднятии DoubleVPN на базе Wireguard. (покомандная с описанием команд и скриншотами)
1) делал на дебиан, но и на ubuntu взлетит
2) iptables, вместо ufw
3) прикручен wireguard-ui
4) разметка bbcode
by: Lowbanger
client double wg -> 1hop -> 2hop -> internet
Генерируем ключи для первого и второго сервера и клиентов:
Bash:
wg genkey > priv_server_in && cat priv_server_in | wg pubkey > pub_server_in && wg genkey > priv_server_mid && cat priv_server_mid | wg pubkey > pub_server_mid
Bash:
wg genkey > priv_client && cat priv_client | wg pubkey > pub_client && wg genkey > priv_client_mid && cat priv_client_mid | wg pubkey > pub_client_mid
Создадим конфиг для клиента, с которого будет устанавливатся подключение к 1hop wg
сначала смотрим что сгенерировалось в качестве приватного ключа клиента и публичного ключа входного сервера:
Bash:
cat priv_client && cat pub_server_in
правим конфиг клиента ~/client.conf:
Bash:
nano ~/client.conf
Код:
[Interface]
Address = 10.111.111.1/24
PrivateKey = IApZPxYykx0WQyd8G8Ty7PGVitgCAh1ayqdhLVzJ/Vk= ## приватный ключ клиента double wg
MTU = 1200
DNS = 1.1.1.1
PostUp = iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
PreDown = iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
[Peer]
PublicKey = MopoFKCwIDdu7+xDZsUhK2oJiuvzeJN01KesSfkSe3U= ## публичный ключ входного сервера
AllowedIPs = 0.0.0.0/0
Endpoint = ИП_ВХОДНОГО_СЕРВЕРА:51820
PersistentKeepalive = 20
если скопировалось сьев спец символы так:
Посмотреть вложение 92021
то подкорректируем конфиг до правильного вида и посмотрим на скорректированный конфиг:
Посмотреть вложение 92022
теперь норм.
Посмотреть вложение 92021
то подкорректируем конфиг до правильного вида и посмотрим на скорректированный конфиг:
Bash:
sed -i "s/.--mark/ --mark \x24\x28wg show \x25i fwmark\x29/" ~/client.conf && cat ~/client.conf
теперь норм.
Bash:
apt update && apt install -y wireguard wireguard-tools iptables net-tools resolvconf
Bash:
cat priv_server_in && cat pub_client
Bash:
nano /etc/wireguard/wg0.conf
Код:
[Interface]
Address = 10.111.111.2/24
SaveConfig = true
ListenPort = 51820
PrivateKey = aHuQGLwXBTZazyqXF4OCs5EpM/LogK3wXn+1Wwu68F8= ##приватный ключ входного сервера
MTU = 1500
[Peer]
PublicKey = 3WTQi2IMxyP3xMaxCVb5JdtoROmBeSBwtu2MvtGjYVY= ##публичный ключ клиента double wg
AllowedIPs = 10.111.111.1/24
теперь создадим конфиг wg для подключения от первого сервера к второму:
На первый сервер копируем конфиг для подключения к второму серверу /etc/wireguard/gate0.conf вставляя свои ключи:
Bash:
cat priv_client_mid && cat pub_server_mid
Bash:
nano /etc/wireguard/gate0.conf
Код:
[Interface]
Address = 10.222.222.1/32
PrivateKey = MDJ9NRQNdexg4gkFr0uatr3cfo0AQcsp7F+8V3g9+n4= ## приватный ключ клиента выходного сервера
MTU = 1500
PostUp = ip route add 0.0.0.0/0 dev gate0 table middleman
PostUp = ip rule add to 10.111.111.0/24 table main
PostUp = ip rule add from 10.111.111.0/24 table middleman
PostUp = wg set gate0 peer igNB9yPndX9ZYW7wOGKLFSy6kebeNVQpogL0yb5yOW0= allowed-ips 0.0.0.0/0 ## публичный ключ выходного сервера
PostDown = ip route del 0.0.0.0/0 dev gate0 table middleman
PostDown = ip rule del to 10.111.111.0/24 table main
PostDown = ip rule del from 10.111.111.0/24 table middleman
[Peer]
PublicKey = igNB9yPndX9ZYW7wOGKLFSy6kebeNVQpogL0yb5yOW0= ## публичный ключ выходного сервера
AllowedIPs = 10.222.222.2/24
Endpoint = ИП_ВЫХОДНОГО_СЕРВЕРА:51820
PersistentKeepalive = 20
сохраняем CTRL+S / CTRL+X выходим из nano.
Далее включаем форвардинг, добавляем таблицу маршрутизации, поднимаем сконфигурированные конфиги интерфейсов wg, добавляем правила iptables:
Bash:
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "1 middleman" >> /etc/iproute2/rt_tables
wg-quick up wg0 &> /dev/null
wg-quick up gate0 &> /dev/null
iptables -I FORWARD -i wg0 -o wg0 -j ACCEPT
iptables -t nat -I POSTROUTING -s 10.111.111.0/24 -o $(ifconfig|head -n1|cut -d " " -f1| tr ":" "\n"|awk NF) -j MASQUERADE
iptables -t nat -I POSTROUTING -s 10.111.111.0/24 -j SNAT --to 10.222.222.1
exit
Обновляем репы и ставим нужные пакеты:
Bash:
apt update && apt install -y wireguard wireguard-tools iptables net-tools resolvconf &> /dev/null
Bash:
cat priv_server_mid && cat pub_client_mid
Bash:
nano /etc/wireguard/wg0.conf
Код:
[Interface]
Address = 10.222.222.2/24
SaveConfig = true
ListenPort = 51820
PrivateKey = EKVIFEIyB7hrtXk4LlM5mRu2jcTLyk49Hfavo2juNkM= ## приватный ключ выходного сервера
MTU = 1500
[Peer]
PublicKey = Mg4CMEpNwsL5NuGZlhRxkf9zoW7m1IkxcW4gisw0IFM= ## пубиличный ключ клиента выходного сервера
AllowedIPs = 10.222.222.1/24
Bash:
echo 1 > /proc/sys/net/ipv4/ip_forwardwg-quick up wg0 &> /dev/null
iptables -I FORWARD -i wg0 -o wg0 -j ACCEPT
iptables -t nat -I POSTROUTING -s 10.222.222.0/24 -o $(ifconfig | cut -d " " -f1| tr ":" "\n" | awk NF | head -n1) -j MASQUERADE
exit
Bash:
wg-quick up ~/client.conf
Bash:
curl ident.me
traceroute 8.8.8.8
Идем на первый сервер и прикручиваем wireguard-ui:
Bash:
bash <(curl -s https://gitlab.com/snax44/wireguard-ui-setup/-/raw/master/install.sh)
на первый вопрос жмем Enter (вставит текущий ип сервера), второй вопрос тоже Enter (вставит дефолтный порт 51820), третий вопрос - пишем сеть 10.111.111.0/24 (как у нас в конфиге). Далее вопрос тоже Enter (укажет дефолтный wg интерфейс wg0, как и имя нашего конфига), вопрос об системном интерфейсе Enter (укажет eth0), правила файрвола не применяем, последний вопрос - ставим "n" и Enter.
Установится wireguard-ui на локалхосте, не торча наружу и необходимо пробросить порт через ssh как и написано по окончанию установки:
Посмотреть вложение 92033
прокидываем порт до входного сервака с wireguard-ui:
Bash:
ssh -L 5000:localhost:5000 root@ИП_ВХОДНОГО_СЕРВЕРА
в браузере открываем 127.0.0.1:5000, креды по дефолту admin/admin:
Посмотреть вложение 92035
ставим IP - 10.111.111.2/24, жмем save и затем apply config.
Переходим в Wireguard Clients и добавляем конфиг, и можем проверять
Посмотреть вложение 92036
жмём submit, затем apply config и проверяем
Посмотреть вложение 92037
Посмотреть вложение 92038Посмотреть вложение 92039
Посмотреть вложение 92040
можно добавлять клиенсткие конфиги которые будут подхватыватся правилом iptables (просмотреть правило:
iptables -L -t nat
) с учетом настроенными выше нами адресами(это уже сделано, вводить не надо, оставлено для информации):
Bash:
iptables -t nat -I POSTROUTING -s 10.111.111.0/24 -o $(ifconfig|head -n1|cut -d " " -f1| tr ":" "\n"|awk NF) -j MASQUERADE
iptables -t nat -I POSTROUTING -s 10.111.111.0/24 -j SNAT --to 10.222.222.1
и всё идёт от созданных конфигов в wireguard-ui в первый сервер (входной, с wireguard-ui), затем во второй сервер, образуя double wireguard chain
АВТОРСКАЯ статья о поднятии DoubleVPN на базе Wireguard. (покомандная с описанием команд и скриншотами)
1) делал на дебиан, но и на ubuntu взлетит
2) iptables, вместо ufw
3) прикручен wireguard-ui
4) разметка bbcode
by: Lowbanger