fix(NetworkConfigManager): enhance validation for /30 networks by ensuring local and remote IPs do not conflict with network and broadcast addresses, improving IP generation accuracy
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m41s

This commit is contained in:
2026-01-24 00:52:35 +07:00
parent 4ff9ae0f46
commit 32255c6a3a
+14
View File
@@ -1003,6 +1003,13 @@ function NetworkConfigManager() {
if (dVal % 4 !== 0) continue; // Базовый адрес должен быть кратен 4
if (dVal + 2 > 255) continue; // Проверяем, что remoteIp не превышает 255
// Для /30 dVal + 1 и dVal + 2 всегда валидны (не сетевой и не broadcast)
// Но нужно проверить, что эти IP не являются сетевыми или broadcast для других сетей /30
const localLastOctet = dVal + 1;
const remoteLastOctet = dVal + 2;
// Проверяем, что Local IP не является сетевым адресом (кратен 4) или broadcast (кратен 4 + 3)
if (localLastOctet % 4 === 0 || localLastOctet % 4 === 3) continue;
// Проверяем, что Remote IP не является сетевым адресом (кратен 4) или broadcast (кратен 4 + 3)
if (remoteLastOctet % 4 === 0 || remoteLastOctet % 4 === 3) continue;
}
// Проверяем, что IP входят в диапазон пула
@@ -1037,6 +1044,13 @@ function NetworkConfigManager() {
// Для /30 dVal + 1 и dVal + 2 всегда валидны (не сетевой и не broadcast)
if (prefix >= 30) {
if (dVal + 2 > 255) continue; // Проверяем, что remoteIp не превышает 255
// Дополнительно проверяем, что IP не являются сетевыми или broadcast для других сетей /30
const localLastOctet = dVal + 1;
const remoteLastOctet = dVal + 2;
// Проверяем, что Local IP не является сетевым адресом (кратен 4) или broadcast (кратен 4 + 3)
if (localLastOctet % 4 === 0 || localLastOctet % 4 === 3) continue;
// Проверяем, что Remote IP не является сетевым адресом (кратен 4) или broadcast (кратен 4 + 3)
if (remoteLastOctet % 4 === 0 || remoteLastOctet % 4 === 3) continue;
}
// Проверяем, что IP входят в диапазон пула и отличаются