Wireguard удобный инструмент (хотя и легко определяеться на DPI, но мы сейчас не об этом) сегодня я хочу рассказать как с его помощью можно: Подключаться к компьютерам за NAT (используя другой сервер с публичным IP)  Использовать интернет провайдера за NAT'ом (домашнего провайдера)При этом - подключаясь - к одному серверу, а выходить в интернет через совершенно другой Приступим, для начала установим WireGuard на сервер, я предпочитаю использовать готовый скрипт: Для создания нового клиента на вашем сервере нужно запустить скрипт с параметром имени клиента: Вы получите примерно следующий вывод: Для проверки раборты - можно отсканировать QR телефоном с установленным клиентом WireGuard и добавить новое подключение. Для запуска сервера wireguard выполните: После команды вы увидите туннель, при подключении устройства статус туннеля изменится. Ура, теперь у нас есть рабочий сервер Wireguard и один подключенный клиент - телефон. Теперь создадим новое подключение, для вашей Raspberry pi дома Данные для подключения скопируйте и сохраните, они нам понадабяться для указания их в Raspberrypi Незабудем перезапустить сервис после изменения конфига и заодно добавим сервис в автозапуск: Теперь при запросе статуса sudo wg show  вы увидите два туннеля. Устанавливаем wireguard Создаём файл с конфигом и вставляем туда, то что получили от вашего сервера: Важный момент! обратите внимание на секцию AllowedIPs Мы же не хотим отправить весь трафик в туннель? тогда нужно поменять маску, пример конфигурации: В пункте AllowedIPs вероятно у вас будет указано 0.0.0.0 ::1 - это означает, что весь трафик нужно подать в тунель. Для подачи только части трафика (мы же не хотим что бы домашняя малинка ходила в интернет через VPN) следует изменить этот пункт, сеть стоит взять из поля Address, т.е если у вас: Address = 10.81.54.12/24, то AllowedIPs = 10.81.54.0/24 После сохранения конфигурации давайте поднимем клиент на Raspberry: Теперь у нас должен быть рабочий тунель, который вы сможете увидеть в ifconfig Для проверки работы тунеля можно сделать ping с сервера на IP который вы увидели в ifconfig: ping 10.81.54.12 Если всё успешно, добавляем правила для автозапуска нашего сервиса на Raspberry: Теперь туннель будет стартовать при включении малинки. На данном этапе у нас есть рабочий туннель Сервер <-----> Raspberry pi, и при подключении к серверу, можно подключиться к малинке, например по SSH. А теперь давайте сделаем более сложную конструкцию, мы хотим подключаться к вашему серверу (который например - находится в Германии), а выходить в интернет из вашей домашней сети (например из РФ).  Тут может прозвучать вопрос: Зачем?! На самом деле такой вариант доступа может потребоваться для доступа к некотрым ресурсам, которые почему-то не хотят пускать из-за пределов своей страны. Для реализации такого подключения нам потребуеться: Установленный сервер Wireguard на вашем сервере (мы это сделали чуть выше) Установленный клиент Wireguard на raspberry (это тоже мы сделали) Установить сервер Wireguard на Raspberry Перенаправить порты на Сервере Ход установки одинаковый с тем, что мы проделали вначале Опять же на этом моменте установим себе на телефон новое подключение - к малинке. Посмотрите на каком порту у вас создался сервис !, он нам понадобиться, далее мы будем считать, что wireguard на raspberry в режиме сервера слушает порт 3134 А теперь запустим сервис sudo wg-quick up ./wghub.conf и проверим подключение с мобильного (телефон и raspberry  должны быть в одной сети)  После успешного теста - добавим сервис в автозапуск Настала время самого интересного, собрать всё воедино, для этого нам потребуется всего одна команда,  установим socat Запустим: Разберем что тут происходит, данной командой мы просим socat открыть UDP сокет и слушать его на сервере на порту 3134 и всё что туда попадёт - отправить на 10.81.54.12:3134 - это IP нашей малинки, который мы ей присвоили при установке соединение: Wireguard на сервере <----> Raspberry (клиент) А вот порт - это порт Wireguard сервера который запущен на Raspberry Проверим работу - для этого в настройках соединения на вашем телефоне, укажите внешний IP вашего сервера, вместо локального (домашнего адреса) а вот порт должен остаться старый (тот что используеться сервером wireguard на raspberry). После подключения и проверки IP  адреса (лучше подключаться через LTE для проверки) вы увидите адрес вашего домашнего провайдера (там где стоит ваша Raspberry) Осталось только добавить socat в автозапуск: Выполним на сервере /etc/systemd/system/socat_home.service  Вставим туда: Обновим список демонов и запустим сервис: Ура, теперь у вас есть постоянный доступ к вашей домашней Raspberry и возможность подключаться к интернету через VPN используя IP домашней сети.