在 Go 的 netlink
库中,AddrAdd
函数用于将一个 IP 地址添加到指定的网络接口。以下是使用 AddrAdd
添加地址的示例代码:
示例代码
package main
import (
"fmt"
"log"
"net"
"github.com/vishvananda/netlink"
)
func main() {
ifName := "eth0" // 替换为你的网络接口名
ip := "192.168.1.100/24" // 替换为你要添加的 IP 地址
// 获取网络接口
link, err := netlink.LinkByName(ifName)
if err != nil {
log.Fatalf("Error getting link: %v", err)
}
// 解析 IP 地址
addr, err := netlink.ParseIPNet(ip)
if err != nil {
log.Fatalf("Error parsing IP address: %v", err)
}
// 创建 Addr 对象
address := &netlink.Addr{IPNet: addr, Label: ""} // Label 可选
// 添加地址到网络接口
err = netlink.AddrAdd(link, address)
if err != nil {
log.Fatalf("Error adding address: %v", err)
}
fmt.Printf("Successfully added address %s to interface %s\n", ip, ifName)
}
代码说明
获取网络接口:
- 使用
netlink.LinkByName(ifName)
来获取指定名称的网络接口。
- 使用
解析 IP 地址:
- 使用
netlink.ParseIPNet(ip)
将字符串形式的 IP 地址转换为*net.IPNet
类型。
- 使用
创建 Addr 对象:
- 构造一个
netlink.Addr
实例,包含解析后的地址。
- 构造一个
添加地址:
- 调用
netlink.AddrAdd(link, address)
来将该地址添加到指定的网络接口上。
- 调用
错误处理:
- 在每一步都检查错误,以确保正确执行操作。
注意事项
- 请替换示例中的
ifName
和ip
为实际需要操作的值。 - 在运行此程序时,通常需要管理员权限,因为修改网络配置需要特权。
- 如果该地址已经存在于接口上,你可能会收到相应的错误消息。可以在调用之前先检查一下是否已存在相同的地址。
内容由零声教学AI助手提供,问题来源于学员提问