首页 > 系统相关 >Linux 虚拟网络 VXLAN

Linux 虚拟网络 VXLAN

时间:2024-06-18 16:14:03浏览次数:25  
标签:00 ip forever lft 虚拟 link ff Linux VXLAN

VXLAN

img

  • VXLAN本质上是一种隧道技术,在源网络设备与目的网络设备之间的IP网络上,建立一条逻辑隧道,将用户侧报文经过特定的封装后通过这条隧道转发
  • VXLAN已经成为当前构建数据中心的主流技术,是因为它能很好地满足数据中心里虚拟机动态迁移和多租户等需求。

一、使用 Containerlab 模拟网络

a | 拓扑

拓扑

b | 网络拓扑文件

# vxlan.clab.yml
name: vxlan
topology:
  nodes:
    gw1:
      kind: linux
      image: vyos/vyos:1.2.8
      cmd: /sbin/init
      binds:
        - /lib/modules:/lib/modules
        - ./startup-conf/gw1.cfg:/opt/vyatta/etc/config/config.boot

    gw2:
      kind: linux
      image: vyos/vyos:1.2.8
      cmd: /sbin/init
      binds:
        - /lib/modules:/lib/modules
        - ./startup-conf/gw2.cfg:/opt/vyatta/etc/config/config.boot

    server1:
      kind: linux
      image: harbor.dayuan1997.com/devops/nettool:0.9
      exec:
      - ip addr add 10.1.5.10/24 dev net0
      - ip route replace default via 10.1.5.1

    server2:
      kind: linux
      image: harbor.dayuan1997.com/devops/nettool:0.9
      exec:
      - ip addr add 10.1.8.10/24 dev net0
      - ip route replace default via 10.1.8.1


  links:
    - endpoints: ["gw1:eth1", "server1:net0"]
    - endpoints: ["gw2:eth1", "server2:net0"]
    - endpoints: ["gw1:eth2", "gw2:eth2"]

c | VyOS 配置文件

  • gw1.cfg
配置文件
# ./startup-conf/gw1.cfg
interfaces {
    ethernet eth1 {
        address 10.1.5.1/24
        duplex auto
        smp-affinity auto
        speed auto
    }
    ethernet eth2 {
        address 172.12.1.10/24
        duplex auto
        smp-affinity auto
        speed auto
    }
    loopback lo {
    }
    vxlan vxlan0 {
        # 配置 vxlan 设置本端地址,远端地址,vni信息
        address 1.1.1.1/24
        remote 172.12.1.11
        vni 10
    }
}
protocols {
    static {
        # 静态路由,指定到达 10.1.8.0/24 网络的下一条为 1.1.1.2, 1.1.1.2 和 1.1.1.1 组成了 vxlan 隧道
        route 10.1.8.0/24 {
            next-hop 1.1.1.2 {
            }
        }
    }
}
system {
    config-management {
        commit-revisions 100
    }
    console {
        device ttyS0 {
            speed 9600
        }
    }
    host-name vyos
    login {
        user vyos {
            authentication {
                encrypted-password $6$QxPS.uk6mfo$9QBSo8u1FkH16gMyAVhus6fU3LOzvLR9Z9.82m3tiHFAxTtIkhaZSWssSgzt4v4dGAL8rhVQxTg0oAG9/q11h/
                plaintext-password ""
            }
            level admin
        }
    }
    ntp {
        server 0.pool.ntp.org {
        }
        server 1.pool.ntp.org {
        }
        server 2.pool.ntp.org {
        }
    }
    syslog {
        global {
            facility all {
                level info
            }
            facility protocols {
                level debug
            }
        }
    }
    time-zone UTC
}


/* Warning: Do not remove the following line. */
/* === vyatta-config-version: "dns-forwarding@1:mdns@1:ssh@1:webproxy@1:webgui@1:zone-policy@1:broadcast-relay@1:l2tp@1:cluster@1:snmp@1:pppoe-server@2:conntrack@1:wanloadbalance@3:webproxy@2:firewall@5:ntp@1:dhcp-server@5:dhcp-relay@2:system@10:nat@4:quagga@7:qos@1:ipsec@5:conntrack-sync@1:config-management@1:vrrp@2:pptp@1" === */
/* Release version: 1.2.8 */
  • gw2.cfg
配置文件
# ./startup-conf/gw2.cfg
interfaces {
    ethernet eth1 {
        address 10.1.8.1/24
        duplex auto
        smp-affinity auto
        speed auto
    }
    ethernet eth2 {
        address 172.12.1.11/24
        duplex auto
        smp-affinity auto
        speed auto
    }
    loopback lo {
    }
    vxlan vxlan0 {
        # 配置 vxlan 设置本端地址,远端地址,vni信息
        address 1.1.1.2/24
        remote 172.12.1.10
        vni 10
    }
}
protocols {
    static {
        # 静态路由,指定到达 10.1.5.0/24 网络的下一条为 1.1.1.1, 1.1.1.1 和 1.1.1.2 组成了 vxlan 隧道
        route 10.1.5.0/24 {
            next-hop 1.1.1.1 {
            }
        }
    }
}
system {
    config-management {
        commit-revisions 100
    }
    console {
        device ttyS0 {
            speed 9600
        }
    }
    host-name vyos
    login {
        user vyos {
            authentication {
                encrypted-password $6$QxPS.uk6mfo$9QBSo8u1FkH16gMyAVhus6fU3LOzvLR9Z9.82m3tiHFAxTtIkhaZSWssSgzt4v4dGAL8rhVQxTg0oAG9/q11h/
                plaintext-password ""
            }
            level admin
        }
    }
    ntp {
        server 0.pool.ntp.org {
        }
        server 1.pool.ntp.org {
        }
        server 2.pool.ntp.org {
        }
    }
    syslog {
        global {
            facility all {
                level info
            }
            facility protocols {
                level debug
            }
        }
    }
    time-zone UTC
}


/* Warning: Do not remove the following line. */
/* === vyatta-config-version: "dns-forwarding@1:mdns@1:ssh@1:webproxy@1:webgui@1:zone-policy@1:broadcast-relay@1:l2tp@1:cluster@1:snmp@1:pppoe-server@2:conntrack@1:wanloadbalance@3:webproxy@2:firewall@5:ntp@1:dhcp-server@5:dhcp-relay@2:system@10:nat@4:quagga@7:qos@1:ipsec@5:conntrack-sync@1:config-management@1:vrrp@2:pptp@1" === */
/* Release version: 1.2.8 */

d | 部署服务

# tree -L 2 ./
./
├── vxlan.clab.yml
└── startup-conf
    ├── gw1.cfg
    └── gw2.cfg

# clab deploy -t vxlan.clab.yml
INFO[0000] Containerlab v0.54.2 started                 
INFO[0000] Parsing & checking topology file: clab.yaml  
INFO[0000] Creating docker network: Name="clab", IPv4Subnet="172.20.20.0/24", IPv6Subnet="2001:172:20:20::/64", MTU=1500 
INFO[0000] Creating lab directory: /root/wcni-kind/network/5-demo-cni/6-vxlan/2/clab-vxlan 
INFO[0000] Creating container: "server1"                
INFO[0000] Creating container: "gw2"                    
INFO[0001] Creating container: "server2"                
INFO[0001] Creating container: "gw1"                    
INFO[0001] Created link: gw2:eth1 <--> server2:net0     
INFO[0002] Created link: gw1:eth1 <--> server1:net0     
INFO[0002] Created link: gw1:eth2 <--> gw2:eth2         
INFO[0002] Executed command "ip addr add 10.1.5.10/24 dev net0" on the node "server1". stdout: 
INFO[0002] Executed command "ip route replace default via 10.1.5.1" on the node "server1". stdout: 
INFO[0002] Executed command "ip addr add 10.1.8.10/24 dev net0" on the node "server2". stdout: 
INFO[0002] Executed command "ip route replace default via 10.1.8.1" on the node "server2". stdout: 
INFO[0002] Adding containerlab host entries to /etc/hosts file 
INFO[0002] Adding ssh config for containerlab nodes     
INFO[0002] 

标签:00,ip,forever,lft,虚拟,link,ff,Linux,VXLAN
From: https://www.cnblogs.com/evescn/p/18254329

相关文章

  • linux内存管理(十一)- 页面迁移
    这里有一篇很好的博客宋宝华:论Linux的页迁移(PageMigration)完整版-CSDN博客为什么需要页面迁移?试想系统在经过长时间运行,内存块趋于碎片化,想要分配一块大的连续内存已经不可能了。此时并非没有足够的内存,而只是内存碎片化。这个时候如果可以是已经分配的内存聚集在一起就可以得到......
  • 搭建PHP开发环境:Linux篇
    目录一、引言二、环境准备三、安装Web服务器(Apache)Ubuntu/Debian系统:CentOS/RedHat系统:四、安装PHP解释器Ubuntu/Debian系统:CentOS/RedHat系统:五、配置Apache以支持PHPUbuntu/Debian系统:CentOS/RedHat系统:六、安装和配置数据库(MySQL/MariaDB)Ubuntu/Debian系统:......
  • RK3568技术笔记九 编译Linux详细介绍
    在编译前需要按照前面的方法始化编译环境,否则会导致编译失败(若配置过则无需重复配置)。全自动编译包含所有镜像编译,包括:uboot编译、Kernel编译、Recovey编译、文件系统编译、编译完成镜像的更新与打包。      按照前面的方法初始化编译环境后,还需要设置RK_ROOTFS_SYS......
  • linux下使用rpmbuild命令进行打包
    一、创建rpmbuild工作目录linux下,一般在用户家目录下新建rpmbuild目录作为rpmbuild工具的工作目录mkdir-p~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}各目录用途:BUILD编译rpm包的临时目录BUILDROOT编译后生成的软件临时安装目录RPMS最终生成的可安装rpm包......
  • linux内存管理(十)- 页面回收(二)
    本篇了解一下内核是怎样触发页面回收的。触发内存回收的方式有两种,同步和异步回收。alloc_pages在分配内存的时候,如果内存短缺会主动回收内存,这是同步回收;内核有一个或多个kswapd内核线程负责在后台回收内存,这是异步。 看一下shrink_active_liststaticvoidshrink_lruvec(st......
  • linux 配置java环境变量
    1.下载与安装查看操作系统位数uname-m如果输出是x86_64,那么你的系统是64位的;如果输出是i686或i386,那么你的系统是32位的。openJDK下载地址:清华大学开源软件镜像站以jdk11为例,下载地址为:https://mirror.tuna.tsinghua.edu.cn/Adoptium/11/jdk/x64/linux/OpenJDK11U-jdk_x......
  • Linux系统根分区满载清理
    问题说明这里我们在使用centos7.6系统时,遇到根分区满载的问题。进入根分区后,查找了所有的目录,并没有查到大的文件。这里怀疑是文件删除未释放导致。由于系统根分区满载,执行lsof|grepdelete查看对应的已删除的文件但未释放的文件进程时,命令会卡死。这里我们只能换种别的方法进行......
  • linux常用指令(不断更新中)
    1.ls展示路径下所有文件以及子目录2.cd进入对应目录。使用时可以输入前几个字符,点击TAB键,无需手动输入后续字符。3.vim打开文本文件进行编辑。输入i进入可编辑模式。按下esc退出当前模式。输入:wq保存并退出输入:q直接退出4.rz-be上传文件(压缩包)sz下载文件5.......
  • Windows11[虚拟机] Kettle 通过SSH隧道 连接远程[Mac] Mysql数据库
    Kettle无法直接连接使用SSH通道的MySQL,需要通过SSH隧道(推荐),具体操作如下所示:一、搭建XshellSSH隧道转发1、点击“连接”借助Xshell7,首先创建会话mac(名字随便写),右键-->属性,在弹出窗口中填写名称(随便写),填写主机:SSH隧道的ip地 点击“添加”按钮出现如下,填写源主机:localh......
  • Linux创建回收站,防止误删文件 误删除文件恢复
    使用为Centos7创建回收站的方法,可以有效地防止误删文件,并对删除信息进行记录。实现:每个用户都可以使用回收站功能每个用户具有独立的回收站,用户删除的文件会移动到自己专属的回收站中,不会被未授权的用户看到。回收站内按照天建立文件夹,移入的文件添加时间后缀进行重命名,防止......