Topology
Learn More →
Script
#!/usr/bin/env python
from mininet.net import Containernet
from mininet.cli import CLI
from mininet.link import TCLink, Link
from mininet.log import info, setLogLevel
if '__main__' == __name__:
setLogLevel('info')
net = Containernet()
h1 = net.addHost('h1')
h2 = net.addHost('h2')
r1 = net.addDocker('r1', dimage="kathara/quagga:latest", volumes=["/home/user/server-test/test-quagga-ospf/dynamic_routing/r1/quagga:/etc/quagga"])
r2 = net.addDocker('r2', dimage="kathara/quagga:latest", volumes=["/home/user/server-test/test-quagga-ospf/dynamic_routing/r2/quagga:/etc/quagga"])
r3 = net.addDocker('r3', dimage="kathara/quagga:latest", volumes=["/home/user/server-test/test-quagga-ospf/dynamic_routing/r3/quagga:/etc/quagga"])
net.addLink(h1, r1)
net.addLink(h2, r2)
net.addLink(r1, r2)
net.addLink(r1, r3)
net.addLink(r2, r3)
net.build()
r1.cmd("ifconfig r1-eth0 0")
r1.cmd("ifconfig r1-eth1 0")
r1.cmd("ifconfig r1-eth2 0")
r2.cmd("ifconfig r2-eth0 0")
r2.cmd("ifconfig r2-eth1 0")
r2.cmd("ifconfig r2-eth2 0")
r3.cmd("ifconfig r3-eth0 0")
r3.cmd("ifconfig r3-eth1 0")
r1.cmd("ip addr add 192.168.1.254/24 brd + dev r1-eth0")
r1.cmd("ip addr add 12.1.1.1/24 brd + dev r1-eth1")
r1.cmd("ip addr add 13.1.1.1/24 brd + dev r1-eth2")
r2.cmd("ip addr add 192.168.2.254/24 brd + dev r2-eth0")
r2.cmd("ip addr add 12.1.1.2/24 brd + dev r2-eth1")
r2.cmd("ip addr add 23.1.1.2/24 brd + dev r2-eth2")
r3.cmd("ip addr add 13.1.1.3/24 brd + dev r3-eth0")
r3.cmd("ip addr add 23.1.1.3/24 brd + dev r3-eth1")
r1.cmd("/etc/init.d/quagga restart")
r2.cmd("/etc/init.d/quagga restart")
r3.cmd("/etc/init.d/quagga restart")
h1.cmd("ifconfig h1-eth0 0")
h1.cmd("ip address add 192.168.1.1/24 dev h1-eth0")
h1.cmd("ip route add default via 192.168.1.254 dev h1-eth0")
h2.cmd("ifconfig h2-eth0 0")
h2.cmd("ip address add 192.168.2.1/24 dev h2-eth0")
h2.cmd("ip route add default via 192.168.2.254 dev h2-eth0")
CLI(net)
net.stop()
R1 OSPF configured File
root@ubuntu:/home/user/server-test/test-quagga-ospf/dynamic_routing/r1/quagga# cat ospfd.conf
hostname R1
password zebra
router ospf
ospf router-id 12.1.1.1
network 192.168.1.0/24 area 0.0.0.0
network 12.1.1.0/24 area 0.0.0.0
network 13.1.1.0/24 area 0.0.0.0
log file /var/log/quagga/zebra.log
R1 login (OSPF)
root@ubuntu:/home/user/Desktop# docker exec -it f691 bash
root@r1:/# nc localhost 2603
bash: nc: command not found
root@r1:/# nc localhost 2604
bash: nc: command not found
root@r1:/# telnet localhost 2604
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Hello, this is Quagga (version 1.0.20160315).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
User Access Verification
Password:
R1>
Privilege Mode
enable
Lookup OSPF info
R1# show ip ospf
OSPF Routing Process, Router ID: 12.1.1.1
Area ID: 0.0.0.0 (Backbone)
Number of interfaces in this area: Total: 3, Active: 3
Number of fully adjacent neighbors in this area: 2
Area has no authentication
R1# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
12.1.1.2 1 Full/DR 35.437s 12.1.1.2 r1-eth1:12.1.1.1 0 0 0
13.1.1.3 1 Full/DR 36.582s 13.1.1.3 r1-eth2:13.1.1.1 0 0 0
Show ospf Routing table (r1)
R1# show ip ospf route
============ OSPF network routing table ============
N 12.1.1.0/24 [10] area: 0.0.0.0
directly attached to r1-eth1
N 13.1.1.0/24 [10] area: 0.0.0.0
directly attached to r1-eth2
N 23.1.1.0/24 [20] area: 0.0.0.0
via 12.1.1.2, r1-eth1
via 13.1.1.3, r1-eth2
N 192.168.1.0/24 [10] area: 0.0.0.0
directly attached to r1-eth0
N 192.168.2.0/24 [20] area: 0.0.0.0
via 12.1.1.2, r1-eth1
============ OSPF router routing table =============
============ OSPF external routing table ===========
我們能觀察 (Routing Metric)
20 -> ospf 學到的路徑
H1 ping H2 success !!
containernet> h1 ping h2
PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
64 bytes from 192.168.2.1: icmp_seq=1 ttl=62 time=0.169 ms
64 bytes from 192.168.2.1: icmp_seq=2 ttl=62 time=0.132 ms
64 bytes from 192.168.2.1: icmp_seq=3 ttl=62 time=0.114 ms
R2-eth1 shut down
ifconfig r2-eth1 down
Learn More →
eht1 interface -> 會直接 Disappear
OSPF 會快速尋徑
R1# show ip ospf route
============ OSPF network routing table ============
N 13.1.1.0/24 [10] area: 0.0.0.0
directly attached to r1-eth2
N 23.1.1.0/24 [20] area: 0.0.0.0
via 13.1.1.3, r1-eth2
N 192.168.1.0/24 [10] area: 0.0.0.0
directly attached to r1-eth0
N 192.168.2.0/24 [30] area: 0.0.0.0
via 13.1.1.3, r1-eth2
Traceroute
root@ubuntu:/home/user/server-test/test-quagga-ospf# traceroute 192.168.2.1
traceroute to 192.168.2.1 (192.168.2.1), 30 hops max, 60 byte packets
1 192.168.1.254 (192.168.1.254) 0.073 ms 0.021 ms 0.022 ms
2 13.1.1.3 (13.1.1.3) 0.240 ms 0.030 ms 0.025 ms
3 23.1.1.2 (23.1.1.2) 0.049 ms 0.027 ms 0.028 ms
4 192.168.2.1 (192.168.2.1) 0.050 ms 0.042 ms 0.040 ms
侯智晟 Email:meowheckerouo@gmail.com
Jun 6, 2025Nowadays, Most company integrate Large Language Model into the web systems for improve customer experience.
Jun 2, 2025First Present in Black Hat USA 2023
Apr 7, 2025Identifying Services & Operating System & NSE Scanning
Mar 21, 2025or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up