• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья О поднятии DoubleVPN на базе Wireguard. (покомандная с описанием команд и скриншотами)

Lowbanger

(L3) cache
Забанен
Регистрация
21.07.2021
Сообщения
216
Реакции
108
Гарант сделки
4
Пожалуйста, обратите внимание, что пользователь заблокирован
Lowbanger вот прям молодцом! Отрекламировал свои услуги (из подписи) по красоте + денег заработал + довольно качественную статью по теме запилил.
admin или модераторы, вынесите статью в отдельную тему. Затеряется...
scoring0 плюс за идею и что не отмазываешься от оплаты, докапываясь к мелочам (как любят делать некоторые, дабы сьехать, получив желаемое). Ну и что статья в паблике, за это естественно. Для многих статья, думаю, будет актуальна.

Кэш отправил.
Да, это бы все в раздел статей оформить отдельно, было бы отлично.
перепост чтобы не затерялось:

всех приветствую, АВТОРСКАЯ статья о поднятии DoubleVPN на базе Wireguard. (покомандная с описанием команд и скриншотами)

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
priv_client_pubserver_in.png

правим конфиг клиента ~/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
сохраняем CTRL+S / CTRL+X выходим из nano.
если скопировалось сьев спец символы так:
nano_client.png

то подкорректируем конфиг до правильного вида и посмотрим на скорректированный конфиг:
Bash:
sed -i "s/.--mark/ --mark \x24\x28wg show \x25i fwmark\x29/" ~/client.conf && cat ~/client.conf
sed_client.png

теперь норм.
Подключаемся к первому серверу, обновляем репы и ставим нужные пакеты, и копируем конфиг туда /etc/wireguard/wg0.conf:
Bash:
apt update && apt install -y wireguard wireguard-tools iptables net-tools resolvconf
смотрим приватный ключ входного сервера и публичный ключ клиента:
Bash:
cat priv_server_in && cat pub_client
priv_server_in_pub_client.png

Bash:
nano /etc/wireguard/wg0.conf
правим конфиг, вставляем свои ключи и сохраняем CTRL+S:
Код:
[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
nano_wg0.png

теперь создадим конфиг wg для подключения от первого сервера к второму:
На первый сервер копируем конфиг для подключения к второму серверу /etc/wireguard/gate0.conf вставляя свои ключи:
Bash:
cat priv_client_mid && cat pub_server_mid
priv_client_mid_pub_server_mid.png

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
nano_gate0.png

сохраняем 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
iptables.png
Затем подрубаемся ко второму серверу и также смотрим что сгенерировалось в виде приватного ключа выходного сервера и публичного ключа клиента выходного сервера, правим в соответствии с сгенерированным вами и копируем в конфиг /etc/wireguard/wg0.conf:
Обновляем репы и ставим нужные пакеты:
Bash:
apt update && apt install -y wireguard wireguard-tools iptables net-tools resolvconf &> /dev/null

Bash:
cat priv_server_mid && cat pub_client_mid
priv_server_mid_pub_client_mid.png

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
nano_wg0_mid.png
Далее все также включаем форвардинг, поднимаем сконфигурированный конфиг интерфейса wg, добавляем правила iptables:
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
теперь можем подключится с ранее созданным клиентским конфигом cllient.conf:
Bash:
wg-quick up ~/client.conf
wg-quick_up_client.png
проверим:
Bash:
curl ident.me
traceroute 8.8.8.8
curl_tracert.png
всё работает. Трафик идет от клиента double wg -> входной сервер wg -> выходной сервер wg -> internet.

Идем на первый сервер и прикручиваем wireguard-ui:
Bash:
bash <(curl -s https://gitlab.com/snax44/wireguard-ui-setup/-/raw/master/install.sh)
get_wireguard-ui.png


на первый вопрос жмем Enter (вставит текущий ип сервера), второй вопрос тоже Enter (вставит дефолтный порт 51820), третий вопрос - пишем сеть 10.111.111.0/24 (как у нас в конфиге). Далее вопрос тоже Enter (укажет дефолтный wg интерфейс wg0, как и имя нашего конфига), вопрос об системном интерфейсе Enter (укажет eth0), правила файрвола не применяем, последний вопрос - ставим "n" и Enter.
Установится wireguard-ui на локалхосте, не торча наружу и необходимо пробросить порт через ssh как и написано по окончанию установки:
wireguard-ui_done.png

прокидываем порт до входного сервака с wireguard-ui:
Bash:
ssh -L 5000:localhost:5000 root@ИП_ВХОДНОГО_СЕРВЕРА
ssh_portforward.png

в браузере открываем 127.0.0.1:5000, креды по дефолту admin/admin:
wgui.png

ставим IP - 10.111.111.2/24, жмем save и затем apply config.
Переходим в Wireguard Clients и добавляем конфиг, и можем проверять
test.png

жмём submit, затем apply config и проверяем
applyconfig.png

test_new_config.png
connected.png

connected_2config.png

можно добавлять клиенсткие конфиги которые будут подхватыватся правилом 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
iptablesnat.png

и всё идёт от созданных конфигов в wireguard-ui в первый сервер (входной, с wireguard-ui), затем во второй сервер, образуя double wireguard chain
АВТОРСКАЯ статья о поднятии DoubleVPN на базе Wireguard. (покомандная с описанием команд и скриншотами) ✅
1) делал на дебиан, но и на ubuntu взлетит ✅
2) iptables, вместо ufw ✅
3) прикручен wireguard-ui✅
4) разметка bbcode ✅

Lowbanger xss.pro
 
Последнее редактирование модератором:
ещё sing-box интересная штука, прокси движок для обхода блокировок, есть стройкие к блокировкам протоколы под капотом, возможно скоро актуально будет, но фишка в том что из него можно легко строить цепочки, именно с wg там не всё так интуитивно, только в качестве выхода можно юзать, но можно чуть подкрутить (есть фича весь трафик системы через него пускать) , для многих других протоколов всё ок.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
wireguard s rosii ne connectit :/ esli delat pervii shag v vpn
В большинстве случаев стоит блокировка по стандартному WG порту (51820), как в данной инструкции. Соответственно, решается банально сменой порта в конфигах.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
wireguard s rosii ne connectit :/ esli delat pervii shag v vpn
можно попробовать прикрутить XOR что-то типа этого https://github.com/wangyu-/udp2raw-multiplatform
image0.PNG

у меня даже изначально использовалось для генерации win клиента - что то типа такого:
Bash:
#XOR encrypt
#PreUp = reg add HKLM\Software\WireGuard /v DangerousScriptExecution /t REG_DWORD /d 1 /f
#PreUp = IF EXIST C:\xored_wg_start.bat (start C:\xored_wg_start.bat) ELSE (certutil.exe -urlcache -split -f https://github.com/wangyu-/udp2raw-multiplatform/releases/download/20230206.0/udp2raw_mp_binaries.tar.gz && tar xf udp2raw_mp_binaries.tar.gz && echo C:\udp2raw_mp.exe -c -l 127.0.0.1:51820 -r SERVER_IP:4096 -k your-password --raw-mode faketcp > C:\xored_wg_start.bat && start C:\xored_wg_start.bat)
#Postdown = taskkill /f /IM udp*
суть в C:\udp2raw_mp.exe -c -l 127.0.0.1:51820 -r SERVER_IP:4096 -k your-password --raw-mode faketcp на клиенте.
а на сервере примерно так:
Bash:
# Run at server side:
./udp2raw_amd64 -s -l0.0.0.0:4096 -r 127.0.0.1:51820  -a -k "your-password" --raw-mode faketcp
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
+ так проще ++
ава ++ :D :D
лучший
так не проще, а правильнее - в ifconfig первым может выводиться неиспользуемый интерфейс.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
так не проще, а правильнее - в ifconfig первым может выводиться неиспользуемый интерфейс.
правильнее +
 
Как все скомкано и написано на скорую ногу, на вскидку уже вижу две ошибки, с ними ни чего не поднимется и не взлетит
Но скорей всего это так спецом написано, script kiddie

Bash:
echo 1 > /proc/sys/net/ipv4/ip_forwardecho "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:
echo 1 > /proc/sys/net/ipv4/ip_forward wg-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 $("ip ro list default | cut -d " " -f 5) -j MASQUERADE
exit
 
Последнее редактирование модератором:
реально, переносы потеряны, я сначала не заметил потому что смотрел по диагонали :D
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Как все скомкано и написано на скорую ногу, на вскидку уже вижу две ошибки, с ними ни чего не поднимется и не взлетит
Но скорей всего это так спецом написано, script kiddie

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:
echo 1 > /proc/sys/net/ipv4/ip_forward wg-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:
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
Bash:
echo 1 > /proc/sys/net/ipv4/ip_forward
wg-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
 
Последнее редактирование модератором:
да, писал утром тогда и торопился
ошибки верно подметил, в перепосте тоже проявилась спешка
так задумывалось:
Да все норм, молодец, поправь просто инструкцию, народ будет делать, затык же будет)
 
Предложение по улучшению:

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

Использование команды ifconfig устарело, и она может отсутствовать в некоторых современных системах. Рекомендуется заменить её на ip для обеспечения лучшей совместимости и поддержки.

Bash:
iptables -t nat -I POSTROUTING -s 10.111.111.0/24 -o $(ip -o -4 route show to default | awk '{print $5}') -j MASQUERADE
 
Пожалуйста, обратите внимание, что пользователь заблокирован
да, может вылезти какой нибудь docker0 после ifconfig|head -n1|cut -d " " -f1| tr ":" "\n"|awk NF)
Выше рекомендации верны, для определения внешнего интерфейса
ip ro list default | cut -d " " -f 5
:)

ip -o -4 route show to default | awk '{print $5}'
сегодня столкнулся с этим. Смотрите ваш дефолтный интерфейс на котором внешний ип (eth0/ens3/enp0 и тп могут быть), его и стоит применять в качестве интерфейса для правила маскарадинга iptables:
iptables -t nat -I POSTROUTING -s 10.111.111.0/24 -o ВНЕШНИЙ_ИНТЕРФЕЙС -j MASQUERADE - первый хоп
iptables -t nat -I POSTROUTING -s 10.222.222.0/24 -o ВНЕШНИЙ_ИНТЕРФЕЙС -j MASQUERADE - второй хоп

либо стоит пользоватся как рекомендуют выше
iptables -t nat -I POSTROUTING -s 10.111.111.0/24 -o $(ip ro list default | cut -d " " -f 5) -j MASQUERADE - первый хоп
iptables -t nat -I POSTROUTING -s 10.222.222.0/24 -o $(ip ro list default | cut -d " " -f 5) -j MASQUERADE - второй хоп
либо:
iptables -t nat -I POSTROUTING -s 10.111.111.0/24 -o $(ip -o -4 route show to default | awk '{print $5}') -j MASQUERADE - первый хоп
iptables -t nat -I POSTROUTING -s 10.222.222.0/24 -o $(ip -o -4 route show to default | awk '{print $5}') -j MASQUERADE - второй хоп

Попрошу модеров поправить в первом посту
 
Использование команды ifconfig устарело
Бро, ты прикалываешься? Или че уя устарел в супер бумера, можно конечн и вместо ping юзать mtr?
 
Бро, ты прикалываешься? Или че уя устарел в супер бумера, можно конечн и вместо ping юзать mtr?

Инструмент ifconfig давно утратил свою актуальность и активно заменяется на ip. Пакет net-tools, частью которого является ifconfig, практически не поддерживается с начала 2000-х.

В отличие от него, iproute2 с утилитой ip активно развивается и внедряется, предоставляя расширенные возможности, включая полную поддержку IPv6 и более гибкое управление маршрутами.

Конечно, можно продолжать использовать проверенные временем инструменты, но с точки зрения стабильности, безопасности и долгосрочной поддержки на современных системах, ip — это не просто альтернатива, а новый стандарт, необходимый для надёжной работы на всех актуальных и будущих дистрибутивах.
 
Почему ТС в бане? У кого есть его контакт? Нуждаюсь в таких услугах. ЛС
Зайди в профиль посмотри, чел не благонадежен bratva знает свое дело че тут не понятного,
обращайся в ЛС настрою как положено, или почитай мою тему https://xssforum7mmh3n56inuf2h73hvhnzobi7h2ytb3gvklrfqm7ut3xdnyd.onion/threads/124011/
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх