我需要从主机上的 eth0 向自身发送一些 UDP 数据包,也在 eth0 上。我有一些可用的 Go 代码,但它似乎使用的是环回接口而不是 eth0 预期的那样。package mainimport ( "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 地址。运行以下命令会显示流量:sudo tcpdump udp -v -i lo但是,我希望流量来自/来自具有我定义的 IP 地址的系统接口。我在这里错过了一步吗?我也尝试过这种略有不同的方法,但结果相同:src, _ := net.ResolveUDPAddr("udp", "192.168.1.158:8888")dest, _ := net.ResolveUDPAddr("udp", "192.168.1.158:88")
1 回答
波斯汪
TA贡献1811条经验 获得超4个赞
但是,我希望流量来自/来自具有我定义的 IP 地址的系统接口。
这只是错误的期望,与 Go 无关。
只需尝试ping 192.168.1.158
检查tcpdump -i lo -n icmp
数据tcpdump -i eth0 -n icmp
实际传输的位置即可。您将看到数据包在lo
接口上传输。类似的 aip route get 192.168.1.158
将向您显示到您的本地地址的路由通过该lo
接口。
- 1 回答
- 0 关注
- 325 浏览
添加回答
举报
0/150
提交
取消