ZBLOG

golang netlink添加路由

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

package main

import (
	"fmt"
	"github.com/vishvananda/netlink"
	"net"
)

func main() {
	// 获取默认路由表
	routeList, err := netlink.RouteList(nil, netlink.FAMILY_ALL)
	if err != nil {
		fmt.Println("获取路由表失败:", err)
		return
	}

	fmt.Println("当前路由表:")
	for _, route := range routeList {
		fmt.Printf("%+v\n", route)
	}

	// 创建要添加的路由对象
	route := &netlink.Route{
		Dst:       nil, // 设置目标地址为 nil 表示默认路由
		Gw:        net.ParseIP("192.168.0.1"), // 设置网关 IP 地址
		Scope:     netlink.SCOPE_UNIVERSE,    // 设置作用域为全局(INTERNET)
	}

	err = netlink.RouteAdd(route) // 添加路由
	if err != nil {
		fmt.Println("添加路由失败:", err)
		return
	}

	fmt.Println("成功添加新的路由")

	routeList, err = netlink.RouteList(nil, netlink.FAMILY_ALL) // 重新获取更新后的路由表

	fmt.Println("更新后的路由表:")
	for _, route := range routeList {
		fmt.Printf("%+v\n", route)
	}
}

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

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

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


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?