diff --git a/agent/agent.go b/agent/agent.go index 34ee0ff..4016cf9 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -83,22 +83,35 @@ type Agent struct { func generateMachineID() string { var parts []string + // 主机名 if hostname, err := os.Hostname(); err == nil { parts = append(parts, hostname) } + // 获取所有非回环网卡的 MAC 地址,排序后取第一个(最稳定) if interfaces, err := net.Interfaces(); err == nil { var macs []string for _, iface := range interfaces { + // 跳过回环接口、没有 MAC 地址的接口、虚拟接口 if iface.Flags&net.FlagLoopback != 0 || len(iface.HardwareAddr) == 0 { continue } + // 跳过 docker/veth 等虚拟网卡 + name := strings.ToLower(iface.Name) + if strings.HasPrefix(name, "docker") || strings.HasPrefix(name, "veth") || + strings.HasPrefix(name, "br-") || strings.HasPrefix(name, "virbr") { + continue + } macs = append(macs, iface.HardwareAddr.String()) } sort.Strings(macs) - parts = append(parts, macs...) + // 只使用第一个 MAC 地址(最稳定) + if len(macs) > 0 { + parts = append(parts, macs[0]) + } } + // 操作系统和架构 parts = append(parts, runtime.GOOS, runtime.GOARCH) data := strings.Join(parts, "|")