Сделал серверный контейнер и клиентскую виртуальную машину для продвинутых пользователей, для применения в случае серьезной цензуры интернета.
Образ маскирует интернет-трафик под скачивание почты с Gmail (протокол IMAP с шифрованием, TLS-запросы на imap.gmail.com
, порт 993) по умолчанию, также есть режим маскировки под DNS-запросы на фиктивный домен int.loc
, с прямым подключением к серверу по порту DNS 53. Почта и DNS — наиболее «живучие» протоколы, которые будут блокироваться в последнюю очередь.
Интернет из виртуальной машины можно раздать на все устройства внутри домашней сети (компьютеры, смартфоны, приставки). Для этого необходимо указать IP-адрес виртуальной машины в качестве шлюза и DNS-сервера. Устанавливать дополнительное ПО на конечных устройствах не требуется.
Файлы здесь:
ftp://serv.valdikss.org.ru/Downloads/Temp/cenvm-belarus/
Внимание! Клиентская виртуальная машина предназначена для временного использования в случае цензурирования интернета, в сети с домашним маршрутизатором. Она маршрутизирует весь трафик, в ней нет фильтров по интерфейсам или IP-диапазонам.
Для технически неподкованных пользователей, без опыта работы с Linux, рекомендуется использовать Outline, установив его на собственный сервер. Он гораздо проще в установке и использовании, но, с большой вероятностью, не сможет обеспечить доступ в интернет в случае введения действительно жесткой интернет-цензуры.
rootfs.tar.xz
— системный серверный контейнер, может быть запущен в systemd-nspawn или LXD. Содержит Cloak, dnstt в качестве фронт-энда, v2ray в качестве бек-енда.
Экспортирует порты 53 (5300 в контейнере, нужно делать маппинг 53 → 5300, см. пример ниже) и 993.
Пример для systemd. Предварительно загрузить rootfs.tar.xz на сервер, далее выполнить:
apt -y install systemd-container
machinectl import-tar rootfs.tar.xz cen
mkdir -p /etc/systemd/nspawn/
echo -e "[Network]\nVirtualEthernet=yes\nPort=tcp:993\nPort=udp:53:5300\nPort=tcp:53:5300" > /etc/systemd/nspawn/cen.nspawn
systemctl enable --now systemd-networkd.service
machinectl enable cen
machinectl start cen
sleep 10
systemctl -M cen disable --now ferm
machinectl copy-from cen /root/cloak_adminuid.txt cloak_adminuid.txt
machinectl copy-from cen /root/cloak_pubkey.txt cloak_pubkey.txt
machinectl copy-from cen /root/dnstt-server.pub dnstt-server.pub
machinectl copy-from cen /root/v2ray_uuid.txt v2ray_uuid.txt
Дополнительная настройка не требуется.
CenVM.ova
— клиентский образ виртуальной машины для VirtualBox и других систем виртуализации. Представляет собой программный маршрутизатор, который нужно запустить в виртуальной машине, настроить, и далее использовать IP-адрес виртуальной машины в качестве шлюза и DNS-сервера для всех необходимых устройств в домашней сети.
- Установите VirtualBox, скачайте и импортируйте образ CenVM.ova.
- Убедитесь, что в настройках виртуальной машины, во вкладке Network у Adapter 1 указан сетевой интерфейс, через который вы получаете интернет на компьютер, а у Adapter 2 указан внутренний сетевой интерфейс VirtualBox (host-only adapter).
- Запустите виртуальную машину.
- Войдите под именем
root
, пароль1
. - Скачайте файлы
cloak_adminuid.txt
,cloak_pubkey.txt
,dnstt-server.pub
,v2ray_uuid.txt
с удалённого сервера в директорию/root
, например, с помощью sftp:
sftp root@1.2.3.4
get cloak_adminuid.txt
get cloak_pubkey.txt
get dnstt-server.pub
get v2ray_uuid.txt
- Пропишите IP-адрес сервера в файле
/usr/local/etc/config.sh
, например, с помощью nano. - Перезагрузите виртуальную машину.
- Настройте компьютер на использование IP-адреса виртуальной машины в качестве шлюза и DNS-сервера. Посмотреть IP-адрес виртуальной машины можно командой
ip -br a
, вам нужен адрес вида192.168.56.xxx
.
По умолчанию виртуальная машина настроена на маскировку под imap.gmail.com
, порт 993. Чтобы использовать маскировку под DNS, замените порт 6001
на 6002
в файле /usr/local/etc/v2ray.json.template
и перезагрузите машину.
"outbounds": [{
"protocol": "vmess",
"settings": {
"vnext": [{
"address": "127.0.0.1",
"port": 6001, // ←←← ВОТ ЭТОТ
"users": [{ "id": "==UUID==", "alterId": 64 }],
"domainStrategy": "UseIP"
}]
}
}],