Перейти к содержанию

Расширенные варианты

Используй это, когда базовый A-B и сценарий chain уже работают.

Несколько клиентов (B и C)

  • Установи несколько клиентов на разных узлах OpenWrt.
  • Используй разные config dirs для каждого клиента, чтобы избежать конфликтов.
xp2p client install --path /etc/xp2p --config-dir config-client-b --link "<LINK_B>" --force
xp2p client install --path /etc/xp2p --config-dir config-client-c --link "<LINK_C>" --force

Разделение маршрутизации по CIDR

xp2p client redirect add --path /etc/xp2p --config-dir config-client --cidr 10.0.101.0/24 --tag proxy-10-63-30-11
xp2p client redirect add --path /etc/xp2p --config-dir config-client --cidr 10.0.102.0/24 --tag proxy-10-63-30-12

Режим full-tunnel

Full-tunnel mode доступен только когда клиент работает в TUN mode (client.tun_enabled = true). Он заменяет default routes на TUN интерфейс, добавляет bypass routes ко всем настроенным endpoints и переключает DNS resolvers на client.dns_servers на время активности full-tunnel.

Переключить через CLI:

xp2p client mode tun full

Вернуться на split-tunnel:

xp2p client mode tun split

Вернуться в proxy mode:

xp2p client mode proxy
[client]
tun_enabled = true
tun_mode = "full"
dns_servers = ["1.1.1.1", "8.8.8.8"]

Windows Server 2016

На Windows Server 2016 Wintun-адаптер может периодически оставаться disconnected после рестартов (IPv4 остаётся Tentative, routes не применяются). В этом случае xp2p держит смену режима в pending и повторяет попытки через рестарты сервиса, пока адаптер не станет up/preferred. Cleanup выполняется перед каждым стартом. Следующие сообщения xray ожидаемы при пересоздании адаптера: Failed to find matching adapter name, Removed orphaned adapter.

Контракт стабильности full-tunnel

Full-tunnel — это runtime mode сервиса и он должен оставаться активным, пока Desired mode — full-tunnel.

  • Рестарты сервиса из-за apply/watchers не должны откатывать routes или DNS, если Desired остаётся tun_mode=full.
  • Когда адаптер не готов (Tentative / disconnected / отсутствует IPv4), runtime держит full-tunnel в pending и повторяет bring-up адаптера между рестартами (с rate limits).
  • Routes и DNS override должны применяться только после того, как адаптер сообщает up/preferred, чтобы избежать connectivity flapping.
Задержка повторов в pending

Когда full-tunnel является Desired, но адаптер не готов, runtime входит в FullPending и логирует:

  • full-tunnel pending; deferring route apply until restart

Повторы используют exponential backoff с максимумом 30 секунд (начиная с 2 секунд). Pending state и расписание повторов сохраняются в CONFIG_ROOT/xp2p-client.tun-full.json (phase, pending_reason, retry_count, next_retry_at), чтобы рестарты следовали одному контракту.

DNS маршрутизация по доменам (только Linux/OpenWrt)

xp2p client dns-forward add -d corp.test.com -t 10.0.101.142:53 --with-forward
xp2p client dns-forward add -d lab.test.com -t 10.0.102.142:53 --with-forward

Очистка

xp2p client redirect remove --path /etc/xp2p --config-dir config-client --cidr 10.0.101.0/24 --tag proxy-10-63-30-11
xp2p client dns-forward remove -d corp.test.com --with-forward
xp2p client remove --path /etc/xp2p --config-dir config-client --all --ignore-missing --quiet