golang 实现创建 vxlan

golang 的 netlink 包对 ip命令做了封装可能方便的实现创建vxlan

直接贴代码

func createVxlan() {
	fmt.Println("多播方式 -i= 指数据从哪个接口传输 -h 指定VTEP端点ip")

	i := flag.Int("i", 2, "-i= 指数据从哪个接口传输")
	h := flag.String("h", "", "指定VTEP端点ip 无类型ip")
	flag.Parse()
	fmt.Println("端口index: ", *i)
	fmt.Println("ip地址:", *h)

	attrs := netlink.NewLinkAttrs()
	attrs.Name = "vxlan0"
	attrs.MTU = 1600

	//构建一个vxlan 结构体
	//以下配置方式类似命令 ip link add vxlan0 type vxlan id 4100 group 224.1.1.1 dstport 4789 dev enp0s3
	vxlan := &netlink.Vxlan{
		LinkAttrs:    attrs,                  //可以配置 VTEP端点的信息 例如名字 MTU
		VxlanId:      4100,                   //指定 VNI
		Group:        net.IPv4(224, 1, 1, 1), //配置多播ip
		Port:         4789,                   //指定端口
		VtepDevIndex: *i,                     //代表 VXLAN 数据从哪个接口传输  使用 ip link show 可以看到对应的ip
	}
	netlink.LinkAdd(vxlan)
	netlink.LinkSetUp(vxlan)

	addr, _ := netlink.ParseAddr(*h)
	netlink.AddrAdd(vxlan, addr) //给vxlan  VTEP 网桥配置ip

}
使用 go build 后可以在局域网内的主机上执行 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寂寞的4角钱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值