Sobes.tech
Назад к вопросам
Senior
7

Как узнать MAC-адрес у публичного DNS-сервера 8.8.8.8?

Компании, где спрашивали
Flant

Ответ от нейросети

sobes.tech AI

MAC-адрес — это физический адрес сетевого интерфейса в локальной сети. Публичный DNS-сервер 8.8.8.8 — это удалённый хост в интернете, и напрямую узнать его MAC-адрес невозможно, так как MAC-адреса не передаются через маршрутизаторы и видны только в пределах локальной сети.

Если попытаться получить MAC-адрес 8.8.8.8, например, через ARP, это не сработает, потому что ARP работает только в пределах одного сегмента сети.

В Go можно попытаться выполнить ARP-запрос, но он будет успешен только для устройств в локальной сети. Для удалённых IP это невозможно.

Пример попытки получить MAC-адрес в локальной сети (не для 8.8.8.8):

package main

import (
    "fmt"
    "github.com/mdlayher/arp"
    "net"
)

func main() {
    iface, _ := net.InterfaceByName("eth0")
    client, _ := arp.Dial(iface)
    ip := net.ParseIP("192.168.1.1")
    hwAddr, err := client.Resolve(ip)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    fmt.Println("MAC address:", hwAddr)
}

Но для 8.8.8.8 это не сработает. В итоге, узнать MAC-адрес публичного DNS-сервера невозможно из-за ограничений сетевого протокола.