要实现持久化的路由添加,可以使用 netlink.RouteAdd
函数将路由添加到内核路由表中,并确保在系统重新启动后仍然存在。一种常见的方法是将路由配置写入网络配置文件中,例如 /etc/network/interfaces
(在某些 Linux 发行版上)。
以下是一个示例代码,演示如何使用 netlink
库来添加并持久化路由:
package main
import (
"fmt"
"github.com/vishvananda/netlink"
"net"
)
func main() {
route := &netlink.Route{
Dst: &net.IPNet{
IP: net.ParseIP("192.168.201.0"),
Mask: net.CIDRMask(24, 32),
},
Iface: nil,
Gw: net.ParseIP("0.0.0.0"),
}
err := netlink.RouteAdd(route)
if err != nil {
fmt.Println("添加路由失败:", err)
return
}
err = persistRoute(route)
if err != nil {
fmt.Println("持久化路由失败:", err)
return
}
fmt.Println("成功添加新的路由,并已持久化")
}
func persistRoute(route *netlink.Route) error {
filePath := "/etc/network/interfaces" // 根据实际情况修改路径
configLine := fmt.Sprintf("up ip route add %s via %s dev %s",
route.Dst.String(), route.Gw.String(), route.Iface.Name)
f, err := os.OpenFile(filePath, os.O_APPEND|os.O_WRONLY, 0644)
if err != nil {
return err
}
defer f.Close()
_, err = f.WriteString(configLine + "\n")
if err != nil {
return err
}
return nil
}
在这个示例中,我们定义了一个 persistRoute
函数,它将路由信息写入 /etc/network/interfaces
文件中作为持久化配置。请根据实际情况修改文件路径,并根据网络配置文件的格式进行适当的写入。
记得导入所需的依赖包,并确保以管理员权限运行程序(因为修改系统网络配置可能需要管理员权限)。
内容由零声教学AI助手提供,问题来源于学员提问