EVE-NG FRR MININET CONFIG

[TOC]

EVE-NG FRR与MININET安装

FRR EVE-NG MiniNet关系

  • eve-ng是一个基于容器(主机)进行虚拟化网络环境的虚拟网络软件,

    • 此类软件一般在进行协议模拟的时候,需要其他组件支持具体的路由/主机的虚拟化
    • 一般而言这个组件是使用FRRouting实现的
    • 也就是说eve-ng负责模拟外部网络,FRRouting负责模拟网络中的具体主机
  • mininet和eve-ng功能类似,但eve-ng提供了图形界面

    • 本实验通过让eve-ng ISIS连接Mininet的R1
    • 让用户使用eve-ng的图形化界面配置mininet中使用FRR虚拟化的节点

Mininet安装

mininet一个基于python标准库进行虚拟化网络环境的虚拟网络软件,启动仅需要python环境即可

而老师提供的ubuntu镜像,自带python环境(ubuntu默认自带)

直接导入虚拟机FRR Mininet虚拟机,通过Gitee下载课程资料SRv6_Sandbox2024(git clone xxx)

  • 前置

    • python2/python3 interpreter (ubuntu系统内置无需安装)
    • FRRouting (前文已经讲述)
  • 环境配置

    • python代码项目文件执行

如何使用Mininet?

  • 首先进入项目文件SRv6_Sandbox2024的目录下
  • 执行下列代码即可
sudo python3 router-full.py
如果是高版本frr,例如10.1.1,则使用如下命令
sudo python3 router-full.py mgmt

此时相关的使用frr虚拟化的节点的配置文件位于/tmp

如何修改frr虚拟化节点的配置文件?

# sudo vtysh --vty_socket /tmp/节点名
# 例如
sudo vtysh --vty_socket /tmp/r1

FRRouting安装

在上面那个镜像中安装

https://docs.frrouting.org/projects/dev-guide/en/latest/building-frr-for-ubuntu2004.html

按照官方的教程直接编译按照即可,注意官方有多个版本的教程

对于Ubuntu请遵循此版本的教程,以免发生不可测的编译错误

EVE-NG安装

一般的安装配置的方式是基于镜像的方式

直接导入虚拟机EVE-NG-SRV6即可,导入的镜像包含以下内容

  • centos系统
  • EVE-NG本体

启动系统即可启动系统

ISIS Networking

虚拟机网络配置

对于该部分IPv6有不理解的地方的可以参考本文的附录:Appendix-VMWare开启IPv6支持配置

(此处不使用IPv6临时地址,此处的IPv6地址未长期地址)

  • 本机虚拟机分配网段

    • IPv4: 192.168.134.1/24
    • IPv6: fd15:4ba5:5a2b:1008::/64
  • FRR MiniNet主机网络

    • IPv4: 192.168.134.128/24
    • IPv6: fd15:4ba5:5a2b:1008:f50e:3744:af3:ab0f/64
  • EVE-NG主机网络

    • IPv4: 192.168.134.130
    • IPv6: fd15:4ba5:5a2b:1008:aa3:51da:c6c2:6c9c/64

frr mininet R1 config

R1 ISIS

password: sr

SRv6_Sandbox2024

sudo python3 router-full.py mgmt

Vtysh(located in Any): xterm need apt install

sudo vtysh --vty_socket /tmp/r1
sh run
config
interface ens33
 ipv6 address 2024::2/64
 ipv6 address fe80::2024/64
 ipv6 router isis DEAD
end
write
# write 之后会立即生效

R1 Network by Namespace

本节相关指令

mininet> dump
sudo rm -rf /var/run/netns/r1 # 删除frr r1虚拟化的网卡
sudo ln -s /proc/{r1虚拟化的pid--要改}/ns/net /var/run/netns/r1 # 将mininet虚拟化的网卡link到frr r1
sudo ip link set netns r1 ens33 # 将虚拟化的frr r的虚拟网卡link到ubuntu的ens33物理网卡
# sudo ip -n r1 link set ens33 netns 1

# 配置ipv4 非必须 博主测试用
#sudo ip netns exec r1 ip addr add 192.168.134.128/24 dev ens33
# ipv6 config
sudo ip netns exec r1 ip -6 addr add fd15:4ba5:5a2b:1008:f50e:3744:af3:ab0f/64 dev ens33
# sudo ip netns exec r1 ip -6 addr add fd15:4ba5:5a2b:1008:2870:d6f9:f8ad:b41f/64 dev ens33
# 接口启用
sudo ip netns exec r1 ip link set ens33 up

回到前面打开的mininet,输入dump寻找r1的进程id即pid=7392

mininet> dump
<Host ha: eth-har1:10.0.10.1 pid=7392> 
<Host hb: eth-hbr4:10.0.20.1 pid=6329> 
<Host hc: eth-hcr3:10.0.30.1 pid=6331> 
<Host hd: eth-hdr7:10.0.70.1 pid=6333> 
<LinuxRouter r1: eth-r1ha:10.0.0.5,eth-r1r2:None,eth-r1r4:None,eth-r1r3:None pid=6337> 
<LinuxRouter r2: eth-r2r1:10.0.0.6,eth-r2r3:None,eth-r2r9:None pid=6339> 
<LinuxRouter r3: eth-r3hc:10.0.0.7,eth-r3r2:None,eth-r3r4:None,eth-r3r1:None,eth-r3r5:None pid=6341> 
<LinuxRouter r4: eth-r4hb:10.0.0.8,eth-r4r1:None,eth-r4r3:None pid=6343> 
<LinuxRouter r5: eth-r5r3:10.0.0.9,eth-r5r6:None,eth-r5r7:None,eth-r5r8:None pid=6345> 
<LinuxRouter r6: eth-r6r5:10.0.0.10,eth-r6r7:None,eth-r6r9:None pid=6347> 
<LinuxRouter r7: eth-r7hd:10.0.0.11,eth-r7r5:None,eth-r7r6:None,eth-r7r8:None pid=6349> 
<LinuxRouter r8: eth-r8r7:10.0.0.12,eth-r8r5:None pid=6351> 
<LinuxRouter r9: eth-r9r6:10.0.0.13,eth-r9r2:None pid=6353>

因此ln -s /proc/{r1虚拟化的pid--要改}/ns/net /var/run/netns/r1

应为ln -s /proc/7392/ns/net /var/run/netns/r1

此处pid视情况而定

重新打开一个terminal(bash)

sudo rm -rf /var/run/netns/r1
sudo ln -s /proc/3794/ns/net /var/run/netns/r1
sudo ip link set netns r1 ens33

# 为虚拟网卡分配IPv4和IPv6(这个是默认的IP不同电脑不同)
sudo ip netns exec r1 ip addr add 192.168.134.128/24 dev ens33
sudo ip netns exec r1 ip -6 addr add fd15:4ba5:5a2b:1008:f50e:3744:af3:ab0f/64 dev ens33
# 接口启用
sudo ip netns exec r1 ip link set ens33 up

eve-ng R3 config

http server config

如果发现启动EVE-NG服务器的时候,发现无法虚拟化的错误

请参考本文的附录:Appendix-支持EVE-NG的虚拟化

EVE-NG镜像

  • user: root
  • password: eve

EVE-NG WEB后台

  • user: admin
  • password: eve

启动EVE-NG的镜像则自动开启WEB服务,可以看出web服务地址http://192.168.134.1301737708253715.jpg

网页配置文件修复

cd /opt/unetlab/html/templates
cp ./intel/h3cvsr.yml ./amd/h3cvsr.yml 

查看cloud对应的虚拟化网卡的网络信息

eve-ng中的虚拟网卡pnet0-9对应cloud0-9

其中只有pnet0可以通过NAT走外部网络本机中就是虚拟机的192.168.134.1/24网段

ifconfig | head -n 50

R3 Networking by cloud0

需要EVE-NG-Win-Client-Pack-2.0 连接到虚拟节点

需要预先安装

选择full的配置文件

add an object -> network -> cloud1(pnet0)

从新增的cloud1连线到VSR3然后选择接口为em3

image-20241126133430586

R3 ISIS

双击VSR3进入SSH

# 进入配置模式GigabitEthernet4/0对应em3接口
# 缩写G4/0
sys
interface GigabitEthernet4/0
 port link-mode route
 isis ipv6 enable 1
 ipv6 address fd15:4ba5:5a2b:1008:aa3:51da:c6c2:6c9c/64
end
save

查看配置情况

display ipv6 interface GigabitEthernet4/0
返回结果Receives已经有数值说明网络已通畅
<R3>display ipv6 interface GigabitEthernet4/0
GigabitEthernet4/0 current state: UP
Line protocol current state: UP
IPv6 is enabled, link-local address is FE80::5200:FF:FE03:3
  Global unicast address(es):
    FD15:4BA5:5A2B:1008:AA3:51DA:C6C2:6C9C, subnet is FD15:4BA5:5A2B:1008::/64 [                                                                                                                                   DUPLICATE]
  Joined group address(es):
    FF02::1
    FF02::2
    FF02::1:FF03:3
    FF02::1:FFC2:6C9C
  MTU is 1500 bytes
  ND DAD is enabled, number of DAD attempts: 1
  ND reachable time is 30000 milliseconds
  ND retransmit interval is 1000 milliseconds
  Hosts use stateless autoconfig for addresses
IPv6 Packet statistics:
  InReceives:                    94
  InTooShorts:                   0
  InTruncatedPkts:               0
  InHopLimitExceeds:             0
  InBadHeaders:                  0
  InBadOptions:                  0
  ReasmReqds:                    0

ICMP

R3 ICMP

测试ISIS,通过在R3(EVE-NG)发送ICMP报文给R1(FRR MiniNet)测试

ping ipv6 fd15:4ba5:5a2b:1008:f50e:3744:af3:ab0f source GigabitEthernet 4/0
返回结果表明连通性测试成功
<R3>ping ipv6 fd15:4ba5:5a2b:1008:f50e:3744:af3:ab0f
Ping6(56 data bytes) 1::2 --> FD15:4BA5:5A2B:1008:F50E:3744:AF3:AB0F, press CTRL_C to break
56 bytes from FD15:4BA5:5A2B:1008:F50E:3744:AF3:AB0F, icmp_seq=0 hlim=64 time=0.787 ms
56 bytes from FD15:4BA5:5A2B:1008:F50E:3744:AF3:AB0F, icmp_seq=1 hlim=64 time=0.357 ms
56 bytes from FD15:4BA5:5A2B:1008:F50E:3744:AF3:AB0F, icmp_seq=2 hlim=64 time=0.325 ms
56 bytes from FD15:4BA5:5A2B:1008:F50E:3744:AF3:AB0F, icmp_seq=3 hlim=64 time=0.419 ms
56 bytes from FD15:4BA5:5A2B:1008:F50E:3744:AF3:AB0F, icmp_seq=4 hlim=64 time=0.442 ms

--- Ping6 statistics for fd15:4ba5:5a2b:1008:f50e:3744:af3:ab0f ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.325/0.466/0.787/0.166 ms

frr mininet R1 ICMP

# in mininet
xterm r1
ping -6 fd15:4ba5:5a2b:1008:aa3:51da:c6c2:6c9c

返回

image-20250123211848089

Appendix

VMWare开启IPv6支持配置

image-20241126211855055

原始分配IP

protocol@protocol-virtual-machine:~/Desktop$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.134.128  netmask 255.255.255.0  broadcast 192.168.134.255
        inet6 fd15:4ba5:5a2b:1008:f50e:3744:af3:ab0f  prefixlen 64  scopeid 0x0<global>
        inet6 fd15:4ba5:5a2b:1008:2870:d6f9:f8ad:b41f  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::d2bc:da5e:4334:72b8  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:a6:0f:fd  txqueuelen 1000  (Ethernet)
        RX packets 590  bytes 586878 (586.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 356  bytes 36437 (36.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 139  bytes 12878 (12.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 139  bytes 12878 (12.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

支持EVE-NG的虚拟化

详细可以搜索csdn 关键词 “彻底关闭HyperV”
  1. 关闭高级组件中的HyperV、虚拟化x2以及wsl
  2. 关闭HV主机服务
  3. bcd配置

配置说明

FRR Mininet R1

protocol-virtual-machine# sh run
Building configuration...

Current configuration:
!
frr version 10.3-dev-MyOwnFRRVersion
frr defaults traditional
hostname protocol-virtual-machine
service integrated-vtysh-config
!
interface ens33 # 配置物理接口ens33的ipv6
 ipv6 address 2024::2/64
 ipv6 address fe80::2024/64
 ipv6 router isis DEAD # 走isis路由DEAD
exit
!
interface eth-r1ha
 ipv6 address 2001:1a::1/64
 ipv6 router isis DEAD
exit
!
interface eth-r1r2
 ipv6 address 2001:12::1/64
 ipv6 router isis DEAD
exit
!
interface eth-r1r3
 ipv6 router isis DEAD
exit
!
interface eth-r1r4
 ipv6 address 2001:14::1/64
 ipv6 router isis DEAD
exit
!
interface lo
 ipv6 address fc00:1::1/64
 ipv6 router isis DEAD
exit
!
router isis DEAD # 配置isis路由
 # area address 10
 # system id 0101.0101.0101
 # NSEL 00
 net 10.0101.0101.0101.00
exit
!
segment-routing
 srv6
  encapsulation
   source-address fc00:1::1
exit
!
end

EVE-NG R3

<R3>display current-configuration
#
 version 7.1.064, Release 1340P1201
#
 sysname R3
#
isis 1
 is-level level-1
 cost-style wide
 distribute bgp-ls
 # area address 10
 # system id 0000.0000.0003
 # NSEL 00
 network-entity 10.0000.0000.0003.00 
 #
 address-family ipv6 unicast
  fast-reroute lfa
  fast-reroute ti-lfa
  segment-routing ipv6 locator 333
#
 ip unreachables enable
 ip ttl-expires enable
#
 password-recovery enable
#
vlan 1
#
irf-port
#
interface NULL0
#
interface GigabitEthernet1/0
 port link-mode route
 isis ipv6 enable 1
 isis cost 20
 ipv6 address 3::2/64
#
interface GigabitEthernet2/0
 port link-mode route
 isis ipv6 enable 1
 isis cost 40
 ipv6 address 1::2/64
#
interface GigabitEthernet3/0
 port link-mode route
 isis ipv6 enable 1
 ipv6 address 39::3/64
#
interface GigabitEthernet4/0 # 绑定R3端口4的IP到EVE-NG的物理IP
 port link-mode route
 isis ipv6 enable 1
 ipv6 address FD15:4BA5:5A2B:1008:AA3:51DA:C6C2:6C9C/64
#
bgp 100
 router-id 3.3.3.3
 peer 39::9 as-number 300
 #
 address-family link-state
  peer 39::9 enable
 #
 address-family ipv6 unicast
  import-route-append direct
  import-route-append static
  import-route-append isisv6 1
  peer 39::9 enable
#
segment-routing ipv6
 locator 333 ipv6-prefix 33:: 64 static 32
#
 scheduler logfile size 16
#
line class aux
 user-role network-operator
#
line class console
 user-role network-admin
#
line class vty
 user-role network-operator
#
line aux 0
 authentication-mode none
 user-role network-admin
 idle-timeout 0 0
#
line con 0
 user-role network-admin
 idle-timeout 0 0
#
line vty 0 63
 user-role network-operator
#
performance-management
#
domain system
#
 domain default enable system
#
role name level-0
 description Predefined level-0 role
#
role name level-1
 description Predefined level-1 role
#
role name level-2
 description Predefined level-2 role
#
role name level-3
 description Predefined level-3 role
#
role name level-4
 description Predefined level-4 role
#
role name level-5
 description Predefined level-5 role
#
role name level-6
 description Predefined level-6 role
#
role name level-7
 description Predefined level-7 role
#
role name level-8
 description Predefined level-8 role
#
role name level-9
 description Predefined level-9 role
#
role name level-10
 description Predefined level-10 role
#
role name level-11
 description Predefined level-11 role
#
role name level-12
 description Predefined level-12 role
#
role name level-13
 description Predefined level-13 role
#
role name level-14
 description Predefined level-14 role
#
user-group system
#
return

image-20241119105131952

[1] http://poilzero.cn/usr/uploads/2024/12/321207283.png
[2] http://poilzero.cn/usr/uploads/2024/12/793649925.png
[3] http://poilzero.cn/usr/uploads/2024/11/3394337190.png
[4] http://poilzero.cn/usr/uploads/2025/01/2899797659.jpg

Last modification:January 24, 2025
如果觉得我的文章对你有用,请随意赞赏。咖啡(12RMB)进度+100%,一块巧克力(1RMB)进度+6%。
(赞赏请备注你的名称哦!后台记录中来自理工小菜狗)