diff --git a/frontend/src/NetworkConfigManager.jsx b/frontend/src/NetworkConfigManager.jsx index 51b26f3..025253c 100644 --- a/frontend/src/NetworkConfigManager.jsx +++ b/frontend/src/NetworkConfigManager.jsx @@ -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 входят в диапазон пула и отличаются