Update nat.go

This commit is contained in:
crStiv 2024-12-27 02:44:39 +01:00 committed by GitHub
parent 341647f186
commit 0b542721e9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -21,6 +21,7 @@ import (
"errors" "errors"
"fmt" "fmt"
"net" "net"
"os"
"strings" "strings"
"sync" "sync"
"time" "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. // Mapping operations will not return an error but won't actually do anything.
type ExtIP net.IP 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)) } func (n ExtIP) String() string { return fmt.Sprintf("ExtIP(%v)", net.IP(n)) }
// These do nothing. // These do nothing.
@ -240,3 +247,12 @@ func (n *autodisc) wait() error {
} }
return nil 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
}