package util import "net" func GetHostIPs() ([]net.IP, error) { var ips []net.IP ifaces, err := net.Interfaces() if err != nil { return nil, err } for _, iface := range ifaces { // Skip down or loopback interfaces if iface.Flags&net.FlagUp == 0 || iface.Flags&net.FlagLoopback != 0 { continue } addrs, err := iface.Addrs() if err != nil { continue // skip interfaces we can't read } for _, addr := range addrs { var ip net.IP switch v := addr.(type) { case *net.IPNet: ip = v.IP case *net.IPAddr: ip = v.IP } // Skip loopback or unspecified if ip == nil || ip.IsLoopback() || ip.IsUnspecified() { continue } ips = append(ips, ip) } } return ips, nil }