Linux环境下无法使用非权威ping问题
2021/10/19 7:11:59
本文主要是介绍Linux环境下无法使用非权威ping问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Linux环境下无法使用非权威ping问题(github.com/go-ping/ping包)
问题:在Linux环境中手动使用ping命令是可以正常执行的,但是golang程序调用go-ping包则会返回socket: permission denied错误,导致程序失败
程序源码
//测试3个包, 不能ping通则返回false; func pings(ip string) (bool, error) { pinger, err := ping.NewPinger(ip) if err != nil { return false, err } //测试3个包 pinger.Count = 3 pinger.Timeout = 3000000000 //3 秒超时 err = pinger.Run() // Blocks until finished. if err != nil { return false, err } stats := pinger.Statistics() // get send/receive/rtt stats fmt.Println("stats.PacketLoss is; ", stats.PacketLoss) //如果丢包100% if stats.PacketLoss == 100 { return false, nil } //不丢包返回true return true, nil } func main() { b, err := pings("x.x.x.x") fmt.Println("---", b) fmt.Println("err is: ", err) }
具体原因
这是一个sysctl设置,用于限制允许在Alpine上ping的用户ID范围。让所有用户可以ping
临时解决:sudo sysctl -w net.ipv4.ping_group_range="0 2147483647"
永久化,echo "net.ipv4.ping_group_range = 0 2147483647" >> /etc/sysctl.conf
这篇关于Linux环境下无法使用非权威ping问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法