1.9 KiB
1.9 KiB
D5: NetNS Runtime Case (Ready)
Дата: 2026-03-09
Что зафиксировано
SingBoxможет работать в отдельномnetnsбез влияния на основной VPN-контур.- Для запуска внутри namespace используется адаптивный exec-режим:
- default:
nsenter --net=/var/run/netns/<name> -- ... - fallback:
ip netns exec <name> ...
- default:
- Подготовка
netns(veth/route/NAT) и запуск runtime используют единый механизм выбора exec-mode. - GUI debug toggle (
Debug netns) изменяетnetns_enabledчерез API, делаетprovisionиrestartдля активных клиентов.
Рефакторинг модулей
- Go:
selective-vpn-api/app/transport_netns.go— setup/cleanup/NAT/spec.selective-vpn-api/app/transport_netns_exec.go— exec-mode selection (nsenter|ip) и wrappers.
- GUI:
selective-vpn-gui/netns_debug.py— вычисление состояния netns-кнопки и общий toggle pipeline (patch -> provision -> restart).selective-vpn-gui/vpn_dashboard_qt.py— только UI-обвязка и вызов helper-модуля.
Минимальный runtime-check
POST /api/v1/transport/clients/<id>/restart->ok=true.GET /api/v1/transport/clients/<id>/health->status=up.systemctl status <unit>->active (running).systemctl show <unit> -p ExecStart-> команда черезnsenter(илиip netns execпри fallback).
Полезные конфиг-ключи клиента
netns_enabled: boolnetns_name: stringnetns_exec_mode: auto|nsenter|ip(optional)netns_nsenter_bin: /usr/bin/nsenter(optional)netns_ip_bin: /sbin/ip(optional)netns_setup_strict: bool(optional)netns_auto_cleanup: bool(optional)