У меня есть потребность отправить некоторые UDP-пакеты от eth0 на хосте к себе, также на eth0.
У меня есть некоторый рабочий код Go, но он использует интерфейс обратной связи вместо eth0, как и ожидалось.
package main
import (
"net"
)
func main() {
ip := net.ParseIP("192.168.1.158")
src := net.UDPAddr{IP: ip, Port: 8888,}
dest := net.UDPAddr{IP: ip, Port: 88}
conn, _ := net.DialUDP("udp", &src, &dest)
conn.Write([]byte("hi"))
}
192.168.1.158 - это основной и единственный IP-адрес для интерфейса на моей машине.
Выполнение следующей команды показывает мне traffi c:
sudo tcpdump udp -v -i lo
Однако я ожидал бы, что трафик c будет связан с системным интерфейсом с IP-адресом, который я определил.
Я пропустил здесь шаг?
Я также попробовал этот немного другой подход, но с теми же результатами:
src, _ := net.ResolveUDPAddr("udp", "192.168.1.158:8888")
dest, _ := net.ResolveUDPAddr("udp", "192.168.1.158:88")