Учитывая следующий код:Как получить все IP-адреса, назначенные машине?
// iptest
package main
import (
"fmt"
"net"
"os"
)
func main() {
host, _ := os.Hostname()
addrs, _ := net.LookupIP(host)
for _, addr := range addrs {
if ipv4 := addr.To4(); ipv4 != nil {
fmt.Println("IPv4: ", ipv4)
}
}
}
У меня проблема, где он возвращает только первый IP-адрес, назначенный адаптеру. Это кажется проблемой только для систем, имеющих определенный суффикс DNS. Если он не определен, он отлично работает и сообщает обо всех назначенных IP-адресах.
'LookupIP' может искать IP-адрес только через распознаватель с заданным именем хоста. Он ничего не знает о том, какие IP-адреса связаны с интерфейсами. – JimB
Спасибо @JimB. Любая идея, почему она будет работать нормально в системе, которая не имеет DNS-суффикса? – siliconghost
Если у него нет имени DNS, это, вероятно, означает, что оно указано в/etc/hosts или просмотрено через другой механизм через /etc/nsswitch.conf. Если вам нужны все локальные IP-адреса, вы должны сами их перечислить. – JimB