From 2bdad8445e742c71e1a820f87fb73c0136d7eac8 Mon Sep 17 00:00:00 2001 From: shats Date: Sat, 24 Jan 2026 18:21:28 +0700 Subject: [PATCH] feat(NetworkConfigManager): add support for local-address parameter in GRE tunnel configuration for home routers, improving network setup clarity --- frontend/src/NetworkConfigManager.jsx | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/frontend/src/NetworkConfigManager.jsx b/frontend/src/NetworkConfigManager.jsx index 54b8994..5eb2970 100644 --- a/frontend/src/NetworkConfigManager.jsx +++ b/frontend/src/NetworkConfigManager.jsx @@ -1513,6 +1513,12 @@ function NetworkConfigManager() { // Используем DNS домен для remote-address, если он есть, иначе IP const remoteAddress = iface.server2Info?.dns || iface.server2Info?.ip || iface.server2Name; + // Проверяем, является ли текущий сервер home роутером + const isHomeRouter = server.type === 'home'; + + // Если это home роутер, добавляем local-address с IP адресом этого сервера + const localAddressParam = isHomeRouter && server.ip ? ` local-address=${server.ip}` : ''; + // Проверяем наличие пароля: ipsecPasswordId должен быть не пустым и пароль должен быть загружен const hasIpsecPassword = iface.ipsecPasswordId && iface.ipsecPasswordId.trim() !== '' && @@ -1522,14 +1528,20 @@ function NetworkConfigManager() { if (hasIpsecPassword) { // GRE туннель с IPSec через ipsec-secret (автоматическая настройка) code += `# Создание GRE туннеля с IPSec (автоматическая настройка через ipsec-secret)\n`; + if (isHomeRouter) { + code += `# Home роутер: используется local-address=${server.ip}\n`; + } const mtuParam = iface.mtu ? ` mtu=${iface.mtu}` : ''; - code += `/interface gre add name="${iface.interfaceName}" remote-address=${remoteAddress} keepalive=10s allow-fast-path=no ipsec-secret="${iface.ipsecPassword}"${mtuParam}\n`; + code += `/interface gre add name="${iface.interfaceName}" remote-address=${remoteAddress}${localAddressParam} keepalive=10s allow-fast-path=no ipsec-secret="${iface.ipsecPassword}"${mtuParam}\n`; code += '\n'; } else { // GRE туннель без IPSec (голый GRE) code += `# Создание GRE туннеля (без IPSec)\n`; + if (isHomeRouter) { + code += `# Home роутер: используется local-address=${server.ip}\n`; + } const mtuParam = iface.mtu ? ` mtu=${iface.mtu}` : ''; - code += `/interface gre add name="${iface.interfaceName}" remote-address=${remoteAddress} keepalive=10s allow-fast-path=no${mtuParam}\n`; + code += `/interface gre add name="${iface.interfaceName}" remote-address=${remoteAddress}${localAddressParam} keepalive=10s allow-fast-path=no${mtuParam}\n`; code += '\n'; } }