ZBLOG

golang netlink添加路由

在 Golang 中,可以使用 github.com/vishvananda/netlink 包来添加路由。以下是一个简单的示例代码:

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/vishvananda/netlink"
  5. "net"
  6. )
  7. func main() {
  8. // 获取默认路由表
  9. routeList, err := netlink.RouteList(nil, netlink.FAMILY_ALL)
  10. if err != nil {
  11. fmt.Println("获取路由表失败:", err)
  12. return
  13. }
  14. fmt.Println("当前路由表:")
  15. for _, route := range routeList {
  16. fmt.Printf("%+v\n", route)
  17. }
  18. // 创建要添加的路由对象
  19. route := &netlink.Route{
  20. Dst: nil, // 设置目标地址为 nil 表示默认路由
  21. Gw: net.ParseIP("192.168.0.1"), // 设置网关 IP 地址
  22. Scope: netlink.SCOPE_UNIVERSE, // 设置作用域为全局(INTERNET)
  23. }
  24. err = netlink.RouteAdd(route) // 添加路由
  25. if err != nil {
  26. fmt.Println("添加路由失败:", err)
  27. return
  28. }
  29. fmt.Println("成功添加新的路由")
  30. routeList, err = netlink.RouteList(nil, netlink.FAMILY_ALL) // 重新获取更新后的路由表
  31. fmt.Println("更新后的路由表:")
  32. for _, route := range routeList {
  33. fmt.Printf("%+v\n", route)
  34. }
  35. }

这个示例中,我们首先通过 RouteList 函数获取当前系统的默认路由表,并打印出来。然后创建一个新的 netlink.Route 对象,并设置网关的 IP 地址和作用域。接下来使用 RouteAdd 函数将该路由添加到系统的路由表中。

最后,我们再次通过 RouteList 获取更新后的路由表,并打印出来以验证新路由是否成功添加。

请确保在运行此代码之前导入了正确的依赖包,并根据实际需求修改目标地址、网关和作用域等参数。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=17771

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?