Fix network config (#11587)

This commit is contained in:
gnattu 2024-05-13 21:20:47 +08:00 committed by GitHub
parent 717afcdc82
commit f396a95f05
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -412,7 +412,9 @@ public class NetworkManager : INetworkManager, IDisposable
interfaces.RemoveAll(x => x.AddressFamily == AddressFamily.InterNetworkV6); interfaces.RemoveAll(x => x.AddressFamily == AddressFamily.InterNetworkV6);
} }
_interfaces = interfaces; // Users may have complex networking configuration that multiple interfaces sharing the same IP address
// Only return one IP for binding, and let the OS handle the rest
_interfaces = interfaces.DistinctBy(iface => iface.Address).ToList();
} }
} }
@ -1017,7 +1019,7 @@ public class NetworkManager : INetworkManager, IDisposable
result = string.Empty; result = string.Empty;
int count = _interfaces.Count; int count = _interfaces.Count;
if (count == 1 && (_interfaces[0].Equals(IPAddress.Any) || _interfaces[0].Equals(IPAddress.IPv6Any))) if (count == 1 && (_interfaces[0].Address.Equals(IPAddress.Any) || _interfaces[0].Address.Equals(IPAddress.IPv6Any)))
{ {
// Ignore IPAny addresses. // Ignore IPAny addresses.
count = 0; count = 0;
@ -1049,7 +1051,7 @@ public class NetworkManager : INetworkManager, IDisposable
return true; return true;
} }
_logger.LogWarning("{Source}: External request received, no matching external bind address found, trying internal addresses.", source); _logger.LogDebug("{Source}: External request received, no matching external bind address found, trying internal addresses", source);
} }
else else
{ {
@ -1087,7 +1089,7 @@ public class NetworkManager : INetworkManager, IDisposable
if (extResult.Length == 0) if (extResult.Length == 0)
{ {
result = string.Empty; result = string.Empty;
_logger.LogWarning("{Source}: External request received, but no external interface found. Need to route through internal network.", source); _logger.LogDebug("{Source}: External request received, but no external interface found. Need to route through internal network", source);
return false; return false;
} }