Вполне можно обойтись и без сверхмощного роутера дополнив тот, что есть.
Если у провайдера нет ipv6 нет или он не нужен, а на полке пылится не нашедший применения Raspberry PI или даже старенький PC с сетевым портом, то сравнительно легко можно настроить вторую подсеть работающую на тех же проводах с доступом и интернет через VPN.
Например роутер смотрит в сторону домашней сети с 192.168.1.1/24. Тогда сетевому порту PI назначим сразу два постоянных адреса: 192.168.1.2/24 и 192.168.2.1/24. Настроим маскарадинг и VPN и с теперь любого устройства можно будет ходить как обычно по локальной сети, так и в интернет через VPN вручную поменяв настройки IP с авто на любой незанятый адрес в подсети 192.168.2.0/24 и шлюзом 192.168.2.1.
Звучит как что-то сложное, но это довольно легко организовать в моем любимом systemd-networkd
# cat /etc/systemd/network/en0.network
[Match]
# Name of my lan interface
Name=en0
[Network]
DHCP=no
Address=192.168.1.2/24
Address=192.168.2.1/24
DNS=1.1.1.1
DNS=1.0.0.1
IPForward=yes
IPMasquerade=ipv4
LinkLocalAddressing=ipv6
LLMNR=no
IPv6AcceptRA=no
# Route to my VPS
[Route]
Destination=11.22.33.44/32
Gateway=192.168.1.1
GatewayOnlink=no
Можно пойти дальше и отключить DHCP-сервер на роутере после чего поднять такой сервер на PI (это еще несколько строк в том же файле настроек). Получится наоборот - подключенные устройства будут автоматически получать интернет через VPN.
Всем привет!
Комментарий borouhin к статье на Хабре сподвиг меня на эксперименты по запуску amnezia-wg в контейнере Микротика. Если кому интересно, ссылка на репозиторий GitHub - yury-sannikov/amnezia-wg-docker: An amnezia-wg Docker builds
Конечная цель: настроить туннель между микротом и походным роутером на OpenWRT с помощью amnezia-wg.
Заменил 3 версию на 4, предварительно удалив все настройки и пакеты.
Установил Openvpn over Cloak, который работал на 3 версии, и AmneziaWG.
Протокол AmneziaWG работает, а вот Openvpn over Cloak не подключается. В логах приложения висит на Promoting for VPN permissions. На сервере в tcpdump вижу что пакеты прилетают. Телнет проходит.
По интерфейсу есть замечания:
Хотелось бы светлую тему.
Не видно верхней панели.
Заблокированы уведомления приложения. Погуглил в интернетах, пишут что это гугл внёс какие-то изменения для пакетов установленных через APK в Android 13, и разработчики должны внедрить эту поддержку в свое ПО.
Кнопка “Назад” не работает в разделах Settings, Share и на основном экране не выходит из приложения.
На данный момент у меня блокируется wg на домашнем и мобильном интернете. Попробовал ваш wireguard, все без проблем завелось и подключается. Еще бы это внедрить в официальный клиент от wireguard вообще цены бы небыло. Но я так понимаю что это врядли когда произойдет.
Не сам сталкивался, но буквально вчера мне писал человек с такой же проблемой. Замена wg на более раннюю версию помогла, это какой-то баг в amneziawg-tools v1.0.20240120 (может быть и нескольких более ранних, в моём случае помог откат на октябрьскую версию, которая у меня была в собранном виде, промежуточные не пробовали).
Ну или выбросить этот wg вообще, раз с ним ещё и проблемы, и писать конфиг напрямую в unix domain socket по мануалу.
Писать напрямую в сокет пробовал, ошибку -22 выдает, не понял что это значит.
Я тут сейчас посмотрел в релизе v1.0.20240120 код из другого бранча, собрал, попробовал, другую ошибку выдает. В общем если у кого то получилось завести, то буду благодарен, если поделитесь, что конкретно и в какой последовательности делали.
Это ошибка синтаксиса. Два неочевидных момента при записи в сокет:
значения ключиков private_key / public_key надо в сокет писать не в base64, как в конфиг, а в виде hex dump, т.е. “echo ключ_из_конфига | base64 -d | xxd -c 64 -ps”
endpoint может быть только IP, но не hostname.
У меня вместо wg setconf примерно такой скрипт (его формирует ansible, т.к. туннелей и пиров много, но для примера):
END
ip address add 10.13.13.1/30 dev wg13
ip link set wg13 up
Ну и systemd unit, который этот скрипт (в данном примере /usr/local/bin/wg_conf13) вызывает (засунуть всё в файл юнита не получается, т.к. там нет поддержки ни heredoc, ни даже pipe):
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/local/bin/wireguard wg13
ExecStartPost=/usr/local/bin/wg_conf13
ExecStop=ip link delete dev wg13
Restart=Always
[Install]
WantedBy=multi-user.target
P.S. В последних билдах amnezia-wg путь к сокету изменился - теперь не /var/run/wireguard/wgXX.sock, а /var/run/amneziawg/wgXX.sock. Поправил скрипт выше.
не понимаю почему после всей работы заливку релиза пропускают, и разрабы амнезии, и добрые люди выше.
Мне лично было сложно с этим протоколом: пакет для установки модуля и утилит на сервер зарыт на гитхабе без упоминаний в теме, хз каким чудом я его нашел, после установки вижу что man без изменений от оригинала, а команда awg-quick выдаёт мне неверный путь
configuration found at /etc/amnezia/INTERFACE.conf.
конфиги на самом деле в /etc/amnezia/amneziawg/INTERFACE.conf
инфы про параметры S1,S1,Jc,… почему-то нет нигде кроме этой темы
официальный GUI клиент не позволяет вручную добавить конфиг (спасибо soloway выше что смог расшифровать строку vpn://, но добавление конфига таким способом это боль)
идея супер, работает тоже супер, но реализация просто нет слов, без генератора конфигов от soloway я бы даже не стал пробовать
на винде на официальном клиенте и на amneziawg-client-windows вижу потерю исходящих пакетов если передавать быстрее чем 22мбит\сек, на андроид клиенте при этом всё норм
Это вы про приложение от AmneziaWG v.1.1.1? Так его давно уж зарелизили вроде, нет?
А вот для OpenWRT нормального клиента AmneziaWG с luci-мордой и куртизанками для aarch64 видимо ещё лет 10 ждать будем. Похоже amnezia team считает openwrt проклятым местом.
Я новичек в теме. У меня вопрос к разрабам амнезии. А возможно сделать плагины для nekobox? Типо мне удобнее пользоваться прокси сервером локально в телефоне, из-за включённого адгарда на впн. Или можно добавить поддержку запуска как прокси сервера? Было бы очень удобно.
Добрался посмотреть AmneziaVPN клиент. Подключился из него к антизапретовскому впн, и выяснилось, что клиент принудительно всё пихает в тоннель, полностью игнорируя настройки антизапрета.
Подключился к их AmneziaFree, и вот с ним, клиент показал “раздельное туннелирование на сервере”.
После этого попробовал из их клиента настроить разные протоколы на своем сервере, но нигде не нашел возможности включить раздельное туннелирование именно на стороне сервера.
Может кто направить где у них расписано как такое сделать? В доках на сайте попадается только про клиентскую сторону.