Настройка 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
Настройки виртуальной машины
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
nano /etc/ssh/sshd_config PermitRootLogin yes
/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}
Далее выбрать 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.
Скачиваем тут https://build.openvpn.net/downloads/releases/tap-windows-9.21.2.exe