Skip to content

Linux WireGuard split‑tunneling app that runs selected apps through a VPN namespace

License

Notifications You must be signed in to change notification settings

s1llya/sillyvpn

Repository files navigation

sillyvpn

Минимальный VPN‑клиент для Linux на базе WireGuard с разделением трафика по приложениям. Приложения запускаются внутри отдельного network namespace, а остальная система использует обычный интернет.

Возможности

  • Импорт .conf (wg‑quick формат)
  • Список приложений по пути (ручной ввод)
  • Запуск выбранного приложения через VPN
  • Логи действий (с очисткой)
  • Без системных сервисов и демонов

Как это работает

  • Создаётся namespace sillyvpn-ns + veth‑пара
  • WireGuard поднимается через wg-quick с Table=off
  • Трафик из namespace помечается и маршрутизируется через WG‑интерфейс
  • DNS в namespace берётся из DNS= в конфиге (или 1.1.1.1/8.8.8.8)

Системные зависимости

  • wireguard-tools (wg, wg-quick)
  • iproute2 (ip, ip netns)
  • iptables
  • pkexec + polkit‑agent

Запуск (AppImage)

AppImage создаётся сборкой и запускается обычным пользователем. Политики/привилегии запрашиваются через pkexec.

Сборка AppImage

./scripts/build_appimage.sh

Результат: src-tauri/target/release/bundle/appimage/sillyvpn_0.1.1_amd64.AppImage

Тестовый сценарий

  1. Импортируйте .conf
  2. Нажмите Enable VPN
  3. Добавьте приложение (пример: /usr/bin/discord)
  4. Нажмите Launch via VPN
  5. Проверьте, что другое приложение использует обычный интернет

Важные замечания

  • Приложение нужно запускать из графической сессии пользователя (не из TTY/ssh)
  • Если polkit‑agent не запущен — привилегированные операции не сработают
  • Приватные ключи не логируются, конфиги хранятся в ~/.config/sillyvpn/

Лицензия

MIT — см. LICENSE