首页 > 解决方案 > 如何通过 Go 中的特定网络接口发送 ICMP 消息?

问题描述

我是 Go 新手。我正在尝试编写一个8.8.8.8通过特定网络接口(例如eth0)执行 ping 操作的程序。使用pingLinux 上的命令,您可以指定-I标志以使 ICMP 消息通过特定网络接口发送。

ping -I enp4s0 8.8.8.8

我怎样才能用 Go 做到这一点?我看过几个包 - github.com/sparrc/go-pinggithub.com/tatsushid/go-fastpinggolang.org/x/net/icmp; 他们似乎都没有让我设置界面。

标签: gonetworkingpingicmpnetwork-interface

解决方案


您可以使用net.DialTCP,或者net.DialIP如果每个接口都有一个不同的 IP 地址,它们将使用该接口返回给您一个连接。然后,您可以自己手动发送 ping。

您还可以使用exechttps://golang.org/pkg/os/exec/ping在网络接口上发送。您可以使用exec与 shell 交互,只需将输出通过管道传输回缓冲区并读取它。


推荐阅读