Мобильные устройства часто работают в публичных Wi‑Fi сетях, где защита передаваемых данных оставляет желать лучшего. Termux позволяет превратить Android‑телефон в полноценный Linux‑окружение и, используя его, создать собственный VPN‑сервер. В статье рассматривается пошаговая настройка OpenVPN в Termux, генерация сертификатов, конфигурация сервера и клиентских профилей.
Почему именно OpenVPN в Termux?
- Open‑source, проверенный временем и аудируемый код.
- Поддержка широкого набора шифров и алгоритмов аутентификации.
- Гибкая настройка маршрутизации и firewall‑правил.
- Отсутствие необходимости в дополнительных платных приложениях.
Предварительные требования
- Устройство на Android 8.0+ с установленным Termux.
- Свободный TCP/UDP порт (рекомендовано 1194 UDP) открытый в роутере или в мобильном операторе.
- Минимум 1 ГБ свободного места для сертификатов и логов.
- Базовые знания работы в командной строке Linux.
Установка необходимых пакетов
pkg update && pkg upgrade -y
pkg install openvpn easy-rsa iproute2 wget -y
Пакет iproute2 понадобится для настройки маршрутизации, а easy-rsa — для генерации PKI.
Создание PKI (Public Key Infrastructure)
Перейдём в каталог Easy‑RSA и инициализируем PKI:
mkdir -p $HOME/openvpn/easy-rsa
cp -r /data/data/com.termux/files/usr/share/easy-rsa/ $HOME/openvpn/easy-rsa/
cd $HOME/openvpn/easy-rsa
./easyrsa init-pki
Сгенерируем корневой сертификат (CA):
./easyrsa --batch build-ca nopass
Создадим серверный сертификат и ключ:
./easyrsa build-server-full server nopass
И клиентский сертификат (для примера – пользователь mobile):
./easyrsa build-client-full mobile nopass
Сгенерируем dh параметры и tls-crypt ключ (повышает безопасность от атак типа DoS):
openvpn --genkey --secret ta.key
./easyrsa gen-dh
Подготовка конфигурации сервера
Создадим каталог для финальных файлов и скопируем туда необходимые элементы:
mkdir -p $HOME/openvpn/server
cp pki/ca.crt pki/private/ca.key pki/issued/server.crt pki/private/server.key pki/dh.pem ta.key $HOME/openvpn/server/
Основной конфигурационный файл server.conf:
cat > $HOME/openvpn/server/server.conf <<'EOF'
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-crypt ta.key
cipher AES-256-GCM
auth SHA256
user nobody
group nogroup
persist-key
persist-tun
keepalive 10 60
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
status openvpn-status.log
log-append openvpn.log
verb 3
EOF
Убедитесь, что файл имеет права доступа 600:
chmod 600 $HOME/openvpn/server/
Запуск OpenVPN сервера
Для первого запуска используем:
openvpn --config $HOME/openvpn/server/server.conf
Если всё прошло успешно, в логах появятся строки Initialization Sequence Completed. Чтобы сервер работал в фоне, запустим его через nohup:
nohup openvpn --config $HOME/openvpn/server/server.conf &
Создание клиентского профиля
Соберём клиентский .ovpn файл, включив в него сертификаты и ключи:
cat > $HOME/openvpn/client/mobile.ovpn <<'EOF'
client
dev tun
proto udp
remote YOUR_PUBLIC_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
auth SHA256
key-direction 1
$(cat $HOME/openvpn/easy-rsa/pki/ca.crt)
$(cat $HOME/openvpn/easy-rsa/pki/issued/mobile.crt)
$(cat $HOME/openvpn/easy-rsa/pki/private/mobile.key)
$(cat $HOME/openvpn/server/ta.key)
verb 3
EOF
Замените YOUR_PUBLIC_IP на ваш внешний IP‑адрес (или DDNS‑имя). Файл mobile.ovpn можно перенести на Android‑устройство через scp, adb pull или любую облачную службу.
Подключение клиента
Установите приложение OpenVPN for Android и импортируйте полученный .ovpn. После импорта нажмите «Connect» – соединение должно установиться, а в журнале появиться строка CONNECTED,SUCCESS.
Тестирование и отладка
- Проверьте ваш публичный IP через
curl ifconfig.meдо и после подключения – они должны различаться. - Для трассировки маршрута используйте
traceroute 8.8.8.8и убедитесь, что трафик идёт через туннель. - Логи сервера находятся в
$HOME/openvpn/server/openvpn.log. При ошибках ищите строкиERRORилиWARN.
Автозапуск и повышение безопасности
Чтобы сервер автоматически стартовал после перезагрузки Termux, добавьте команду в ~/.bashrc:
echo "nohup openvpn --config $HOME/openvpn/server/server.conf &" >> ~/.bashrc
Для ограничения доступа к портам используйте iptables (встроенный в Termux как iptables-nft):
iptables -A INPUT -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
Не забудьте сохранить правила, чтобы они сохранялись между сессиями (например, скриптом save-iptables.sh).
Заключение
Развёртывание OpenVPN‑сервера в Termux позволяет превратить обычный Android‑телефон в надёжный шлюз для защищённого доступа к интернету в любой точке мира. При правильной настройке вы получаете:
- Контроль над шифрованием и политиками доступа.
- Гибкую маршрутизацию и возможность объединения нескольких мобильных устройств в единую VPN‑сеть.
- Минимальные затраты – всё работает на уже имеющемся устройстве.
Если вам требуется более масштабное решение, настройка серверов в облаке, аудит безопасности или интеграция VPN‑сети с корпоративными сервисами, команда RybinskLab готова помочь. Мы предоставляем услуги по проектированию, внедрению и поддержке VPN‑инфраструктур любой сложности, а также обучаем персонал работе с Termux и Linux‑инструментами.
Свяжитесь с нами, и мы разработаем оптимальное решение под ваш бизнес.