Техно Уголок
April 9, 2022

Настройка Amnezia VPN за NAT

Вступление

В данной инструкции описывается частный случай настройки Amnezia на своей собственном сервере, который стоит в локальной сети за раутером.

У раутера должен быть статический внешний IP адрес от Вашего Интернет провайдера. Допустим, что это будет: 87.250.250.242 (это адрес взят для примера, на самом деле это один из адресов ya.ru)

По сути сервер - это просто ПК с виндой.

На сервере установлено:

  • Windows 10
  • VirtualBox (как гипервизор для настройки виртуальных машин)
  • внутри VirtualBox создана машина для Amnezia (1xCPU, 2Gb RAM, 20Gb SSD) с установленным Debian 10 без GUI - только ssh server и default utilities

High Level схема

Настройки виртуальной машины

Settings -> Network -> Attached To - Bridged Adapter -> Name: тут выбрать имя интерфейса локальной сети сервера

Тут важна настройка Bridged Adapter .

При такой настройке виртуальная машина получит IP адрес от домашнего раутера из вашей локальной сети. Т.е. как-будто в локальной сети включили новый ПК.

Настройки на раутере

Нужно определить какой IP адрес был выдан виртуальной машине.

Дальше сделать так, чтобы раутер всегда выдавал ей один и тот же адрес. Обычно это называется как-то вроде "Привязка MAC и IP адресов".

Допустим, что машина получила IP: 192.168.0.110

Настроить проброс портов в сторону виртуальной машины:

для ssh (это нужно для первичной настройки сервера Amnezia), например,

port 8448 -> IP: 192.168.0.110 port 22 

для Cloak (это порт, под который будет маскироваться трафик при выборе наиболее высокой степени защиты)

port 443 -> IP: 192.168.0.110 port 443

Настройки Debian

Открыть root доступ

nano /etc/ssh/sshd_config
PermitRootLogin yes

Сохранить конфигурацию.

Перезагрузить SSH Server

/etc/init.d/sshd restart

Добавить необходимые репозитарии Debian 10

nano /etc/apt/sources.list

Закомментарить все что там есть, и добавить следующее

deb http://deb.debian.org/debian buster main contrib non-free
deb-src http://deb.debian.org/debian buster main contrib non-free
deb http://deb.debian.org/debian buster-updates main contrib non-free
deb-src http://deb.debian.org/debian buster-updates main contrib non-free
deb http://deb.debian.org/debian buster-backports main contrib non-free
deb-src http://deb.debian.org/debian buster-backports main contrib non-free
deb http://security.debian.org/debian-security/ buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security/ buster/updates main contrib non-free

Обновить репозитарии

apt-get update
Hit:1 http://security.debian.org/debian-security buster/updates InRelease
Hit:2 http://deb.debian.org/debian buster InRelease
Get:3 http://deb.debian.org/debian buster-updates InRelease [51.9 kB]
Get:4 http://deb.debian.org/debian buster-backports InRelease [46.7 kB]
Fetched 98.6 kB in 1s (155 kB/s)
Reading package lists... Done

Настройки на оборудовании, которое будет подключаться к Amnezia Server

Допустим, что подключаться будет ноутбук с Windows 10.

Установить приложение Amnezia.

Дальше идем по инструкции от создателей Amnezia - https://ru.amnezia.org/guides/setup-manual/

Запустите AmneziaVPN

Внизу нажимаем на "Настроить собственный сервер" (Setup your own server).

Заполнение данных для подключения

В следующем окне заполните данные для подключения к серверу:

  • IP-адрес и порт для SSH (87.250.250.242:8448)
  • Имя пользователя под которым будет производиться настройка сервера - root
  • Пароль для пользователя: {root password}

Выбрать Run Setup Wizard.

Далее выбрать High censorship level, будет установлен контейнер OpenVpn over Cloak

Если что-то идет не так, то смотрим логи - чтобы открыть панель логов надо нажать на клавиатуре символ ~ (на английской раскладке, активировав окно с амнезией), выбрать Ssh log.

Приложение подключается к серверу, устанавливает Docker Container на нем, настраивает порт 443 для подключения к этому контейнеру.

В Linux shell у вас будет нечто подобное после установки:

 1620 ?        Ssl    0:31 /usr/sbin/dockerd -H fd://
 1625 ?        Ssl    0:29  \_ docker-containerd --config /var/run/docker/containerd/containerd.toml --log-level info
 5395 ?        Sl     0:01  |   \_ docker-containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/19fef9a899202964e8a85cd6e7e5d3289
 5412 ?        Ss     0:00  |       \_ dumb-init /opt/amnezia/start.sh
 5444 ?        Ss     0:00  |       |   \_ /bin/bash /opt/amnezia/start.sh
 5445 ?        S      0:01  |       |   |   \_ tail -f /dev/null
10736 ?        S      0:34  |       |   \_ openvpn --config /opt/amnezia/openvpn/server.conf --daemon
10741 ?        Sl     1:02  |       |   \_ ck-server -c /opt/amnezia/cloak/ck-config.json
 6251 ?        Ss     0:00  |       \_ /bin/bash /opt/amnezia/start.sh
 6286 ?        S      0:01  |       |   \_ tail -f /dev/null
10710 ?        Ss     0:00  |       \_ /bin/bash /opt/amnezia/start.sh
10742 ?        S      0:01  |           \_ tail -f /dev/null
 5504 ?        Sl     0:00  \_ /usr/sbin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 443 -container-ip 172.29.172.2 -container-port 443

После этого в приложении нажимает кнопку Подключиться. Если возникают проблемы, например, сообщение - "Отключено", то снова смотрим в логи.

У меня было нечто подобное:

2022-04-09 15:13:55 debug >LOG:1649506435,F,There are no TAP-Windows nor Wintun adapters on this system. You should be able to create an adapter by using tapctl.exe utility.
2022-04-09 15:13:55 debug >FATAL:There are no TAP-Windows nor Wintun adapters on this system. You should be able to create an adapter by using tapctl.exe utility.
2022-04-09 15:13:55 warning QObject::connect: Cannot queue arguments of type 'amnezia::ErrorCode'
(Make sure 'amnezia::ErrorCode' is registered using qRegisterMetaType().)
2022-04-09 15:13:55 debug Mananement server error: The remote host closed the connection
2022-04-09 15:13:55 debug PrivilegedProcess stateChanged QProcess::NotRunning
2022-04-09 15:13:55 debug VpnProtocol::setConnectionState "Отключено"
2022-04-09 15:13:55 debug Connection state: 'Отключено'
2022-04-09 15:13:55 debug VpnLogic::onConnectionStateChanged "Отключено"
2022-04-09 15:13:55 debug SystemTrayNotificationHandler::setTrayState VpnProtocol::Disconnected

Дело было в этом:

FATAL:There are no TAP-Windows nor Wintun adapters on this system.

Надо поставить TAP Driver.

Скачиваем тут https://build.openvpn.net/downloads/releases/tap-windows-9.21.2.exe

и пробуем подключиться снова.