From 0b542721e9396358630c28f6d9b329ba2595ec73 Mon Sep 17 00:00:00 2001 From: crStiv Date: Fri, 27 Dec 2024 02:44:39 +0100 Subject: [PATCH] Update nat.go --- p2p/nat/nat.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/p2p/nat/nat.go b/p2p/nat/nat.go index c656044268..8d922c97f3 100644 --- a/p2p/nat/nat.go +++ b/p2p/nat/nat.go @@ -21,6 +21,7 @@ import ( "errors" "fmt" "net" + "os" "strings" "sync" "time" @@ -133,7 +134,13 @@ func Map(m Interface, c <-chan struct{}, protocol string, extport, intport int, // Mapping operations will not return an error but won't actually do anything. type ExtIP net.IP -func (n ExtIP) ExternalIP() (net.IP, error) { return net.IP(n), nil } +func (n ExtIP) ExternalIP() (net.IP, error) { + if IsKubernetesEnvironment() { + return net.IP(n), nil + } + return net.IP(n), nil +} + func (n ExtIP) String() string { return fmt.Sprintf("ExtIP(%v)", net.IP(n)) } // These do nothing. @@ -240,3 +247,12 @@ func (n *autodisc) wait() error { } return nil } + +// IsKubernetesEnvironment detects if the process is running inside Kubernetes cluster +// by checking for the presence of standard K8s environment variables. +func IsKubernetesEnvironment() bool { + if _, exists := os.LookupEnv("KUBERNETES_SERVICE_HOST"); exists { + return true + } + return false +}