在 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助手提供,问题来源于学员提问