《零入门kubernetes网络实战》视频专栏地址
https://www.ixigua.com/7193641905282875942
本篇文章视频地址(稍后上传)
本篇文章介绍一下,使用
github.com/vishvananda/netlink
来操作tun设备
1、安装github.com/vishvananda/netlink |
go get github.com/vishvananda/netlink
2、源代码如下 |
代码如下:
package main
import (
"github.com/vishvananda/netlink"
)
const tunName = "tun19"
func main() {
la := netlink.LinkAttrs{
Name: tunName,
Index: 8,
MTU: 1500,
}
tun := netlink.Tuntap{
LinkAttrs: la,
Mode: netlink.TUNTAP_MODE_TUN,
}
l, err := netlink.LinkByName(tunName)
if err == nil {
// 先将tun虚拟网络设备Down掉
netlink.LinkSetDown(l)
// 将tun虚拟网络设备删掉
netlink.LinkDel(l)
}
// 每次创建新的tun设备
err = netlink.LinkAdd(&tun)
if err != nil {
panic(err)
}
l, err = netlink.LinkByName(tunName)
ip, err := netlink.ParseIPNet("10.244.1.3/24")
addr := &netlink.Addr{IPNet: ip, Label: ""}
if err = netlink.AddrAdd(l, addr); err != nil {
panic(err)
}
err = netlink.LinkSetUp(l)
if err != nil {
panic(err)
}
}
3、本地编译 |
编译运行,上传到测试服务器上
为了多次测试运行方便,提供了
Makefile文件
具体内容如下:
build:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
scp:
scp main root@10.211.55.122:/root
all:
make build && make scp
4、登录到测试服务器上 |
ip a s eth0
ip link sh tun19
./main
ip link sh tun19
ethtool -i tun19
点击 下面 返回 专栏目录 |
<<零入门kubernetes网络实战>>技术专栏之文章目录