拓扑图:
import time
from scapy.all import *
from scapy.contrib.ospf import OSPF_Hdr,OSPF_Hello,OSPF_DBDesc,OSPF_LSA_Hdr,OSPF_Router_LSA,OSPF_Network_LSA,OSPF_Link
from scapy.contrib.ospf import OSPF_LSUpd,OSPF_LSAck,OSPF_LSReq,OSPF_LSReq_Item,OSPF_Router_LSA
hello_pkt = Ether()/IP(src="192.168.100.1", dst="224.0.0.5")/\
OSPF_Hdr(type=1,src='192.168.100.255',area='0.0.0.0')\
/OSPF_Hello(hellointerval=10, deadinterval=40, prio=255,options="E", mask="255.255.255.0")
for i in range(10):
sendp(hello_pkt)
hello_pkt1 = Ether() / IP(src="192.168.100.1", dst="224.0.0.5") \
/ OSPF_Hdr(type=1,src='192.168.100.255',area='0.0.0.0') \
/ OSPF_Hello(hellointerval=10, deadinterval=40, prio=255, options="E",
mask="255.255.255.0",
neighbors='192.168.100.10')
for i in range(10):
sendp(hello_pkt1)
time.sleep(0.5)
hello_pkt2 = Ether(dst='00:e0:fc:70:4b:6f') / IP(src="192.168.100.1", dst="192.168.100.10") \
/ OSPF_Hdr(type=1,src='192.168.100.255',area='0.0.0.0') \
/ OSPF_Hello(hellointerval=10, deadinterval=40, prio=255, options="E",
router="192.168.100.1",mask="255.255.255.0",
neighbors='192.168.100.10',backup='192.168.100.10')
for i in range(3):
sendp(hello_pkt2)
time.sleep(1)
dd_pkt1 =Ether(dst='00:e0:fc:70:4b:6f') / IP(src="192.168.100.1", dst="192.168.100.10")\
/ OSPF_Hdr(type=2,src='192.168.100.255',area='0.0.0.0')\
/ OSPF_DBDesc( mtu=1500,options="E",dbdescr=["MS", "M", "I"],ddseq=2, lsaheaders=[] )
for i in range(2):
sendp(dd_pkt1)
time.sleep(1)
dd_pkt2 =Ether(dst='00:e0:fc:70:4b:6f') / IP(src="192.168.100.1", dst="192.168.100.10")\
/ OSPF_Hdr(type=2,src='192.168.100.255',area='0.0.0.0')\
/ OSPF_DBDesc( mtu=1500,options="E",dbdescr=["MS", "M", "I"],ddseq=2, lsaheaders=[] )
for i in range(2):
sendp(dd_pkt2)
time.sleep(1)
dd_pkt3 =Ether(dst='00:e0:fc:70:4b:6f') / IP(src="192.168.100.1", dst="192.168.100.10")\
/ OSPF_Hdr(type=2,src='192.168.100.255',area='0.0.0.0')\
/ OSPF_DBDesc( mtu=1500,options="E",dbdescr="MS",ddseq=3, lsaheaders=[] )
for i in range(2):
sendp(dd_pkt3)
time.sleep(1)
for i in range(5):
lsupdate = OSPF_LSUpd()
lsupdate.lsacount=4
router_lsa1 = OSPF_Router_LSA(age=100,seq=0x7fffffff,id='192.168.100.255',
adrouter='192.168.100.255',
linklist=[OSPF_Link(type=1, id='1.1.1.1', data='192.168.100.1' ,metric=0),
OSPF_Link(type=3, id='6.6.6.0', data='255.255.255.0', metric=0),
OSPF_Link(type=3, id='5.5.5.0', data='255.255.255.0', metric=0),
OSPF_Link(type=3, id='192.168.100.0', data='255.255.255.0', metric=0),
OSPF_Link(type=1, id='6.6.6.6', data='6.6.6.2', metric=0),
OSPF_Link(type=1, id='5.5.5.5', data='5.5.5.2', metric=0),
OSPF_Link(type=2, id='6.6.6.2', data='6.6.6.2', metric=0),
OSPF_Link(type=2, id='5.5.5.2', data='5.5.5.2', metric=0),
OSPF_Link(type=2, id='192.168.100.1', data='192.168.100.1', metric=0),]
)
router_lsa2 = OSPF_Router_LSA(age=100, seq=0x7fffffff,
id='1.1.1.1',
adrouter='1.1.1.1',
linklist=[OSPF_Link(type=1, id='192.168.100.255', data='192.168.100.10', metric=0)])
network_lsa1 = OSPF_Network_LSA(age=100, id='192.168.100.255',
adrouter='192.168.100.255',
routerlist=['6.6.6.6','5.5.5.5','1.1.1.1','192.168.100.255'])
network_lsa2 = OSPF_Network_LSA(age=100, seq=0x7fffffff,id='1.1.1.1',
adrouter='1.1.1.1',
routerlist=['192.168.100.255','1.1.1.1'])
lsupdate.lsalist.extend(router_lsa1)
lsupdate.lsalist.extend(router_lsa2)
lsupdate.lsalist.extend(network_lsa1)
lsupdate.lsalist.extend(network_lsa2)
lsupd_pkt=Ether() / IP(src="192.168.100.1", dst="224.0.0.5")/OSPF_Hdr(type=4,src='192.168.100.255',area='0.0.0.0') /lsupdate
sendp(lsupd_pkt)
for i in range(5):
lsupdate = OSPF_LSUpd()
lsupdate.lsacount=4
router_lsa1 = OSPF_Router_LSA(age=100,seq=0x7fffffff,id='6.6.6.6',
adrouter='6.6.6.6',
linklist=[OSPF_Link(type=3, id='6.6.6.0', data='255.255.255.0', metric=0),
OSPF_Link(type=1, id='192.168.100.255', data='6.6.6.1', metric=0),
OSPF_Link(type=2, id='6.6.6.2', data='6.6.6.1', metric=0),
])
router_lsa2 = OSPF_Router_LSA(age=100, id='5.5.5.5',
adrouter='5.5.5.5',
linklist=[OSPF_Link(type=3, id='5.5.5.0', data='255.255.255.255', metric=0),
OSPF_Link(type=1, id='192.168.100.255', data='5.5.5.1', metric=0),
OSPF_Link(type=2, id='5.5.5.2', data='5.5.5.1', metric=0),]
)
network_lsa1 = OSPF_Network_LSA(age=100, id='6.6.6.6',
adrouter='6.6.6.6',
routerlist=['6.6.6.6','192.168.100.255'])
network_lsa2 = OSPF_Network_LSA(age=100, id='5.5.5.5',
adrouter='5.5.5.5',
routerlist=['5.5.5.5', '192.168.100.255'])
lsupdate.lsalist.extend(router_lsa1)
lsupdate.lsalist.extend(router_lsa2)
lsupdate.lsalist.extend(network_lsa1)
lsupdate.lsalist.extend(network_lsa2)
lsupd_pkt=Ether() / IP(src="192.168.100.1", dst="224.0.0.5")/OSPF_Hdr(type=4,src='192.168.100.255',area='0.0.0.0') /lsupdate
sendp(lsupd_pkt)
ar2的lsdb:
[ar2]dis ospf lsdb router
OSPF Process 1 with Router ID 1.1.1.1
Area: 0.0.0.0
Link State Database
Type : Router
Ls id : 6.6.6.6
Adv rtr : 6.6.6.6
Ls age : 232
Len : 60
Options : None
seq# : 7fffffff
chksum : 0x17d8
Link count: 3
* Link ID: 6.6.6.0
Data : 255.255.255.0
Link Type: StubNet
Metric : 0
Priority : Low
* Link ID: 192.168.100.255
Data : 6.6.6.1
Link Type: P-2-P
Metric : 0
* Link ID: 6.6.6.2
Data : 6.6.6.1
Link Type: TransNet
Metric : 0
Type : Router
Ls id : 192.168.100.255
Adv rtr : 192.168.100.255
Ls age : 232
Len : 132
Options : None
seq# : 7fffffff
chksum : 0x3b0e
Link count: 9
* Link ID: 1.1.1.1
Data : 192.168.100.1
Link Type: P-2-P
Metric : 0
* Link ID: 6.6.6.0
Data : 255.255.255.0
Link Type: StubNet
Metric : 0
Priority : Low
* Link ID: 5.5.5.0
Data : 255.255.255.0
Link Type: StubNet
Metric : 0
Priority : Low
* Link ID: 192.168.100.0
Data : 255.255.255.0
Link Type: StubNet
Metric : 0
Priority : Low
* Link ID: 6.6.6.6
Data : 6.6.6.2
Link Type: P-2-P
Metric : 0
* Link ID: 5.5.5.5
Data : 5.5.5.2
Link Type: P-2-P
Metric : 0
* Link ID: 6.6.6.2
Data : 6.6.6.2
Link Type: TransNet
Metric : 0
* Link ID: 5.5.5.2
Data : 5.5.5.2
Link Type: TransNet
Metric : 0
* Link ID: 192.168.100.1
Data : 192.168.100.1
Link Type: TransNet
Metric : 0
Type : Router
Ls id : 1.1.1.2
Adv rtr : 1.1.1.2
Ls age : 1066
Len : 36
Options : E
seq# : 80000004
chksum : 0xd764
Link count: 1
* Link ID: 1.1.1.2
Data : 1.1.1.2
Link Type: TransNet
Metric : 1
Type : Router
Ls id : 1.1.1.1
Adv rtr : 1.1.1.1
Ls age : 74
Len : 48
Options : E
seq# : 80000001
chksum : 0x253e
Link count: 2
* Link ID: 1.1.1.2
Data : 1.1.1.1
Link Type: TransNet
Metric : 1
* Link ID: 192.168.100.0
Data : 255.255.255.0
Link Type: StubNet
Metric : 1
Priority : Low
Type : Router
Ls id : 5.5.5.5
Adv rtr : 5.5.5.5
Ls age : 864
Len : 60
Options : None
seq# : 80000001
chksum : 0x2fd2
Link count: 3
* Link ID: 5.5.5.0
Data : 255.255.255.255
Link Type: StubNet
Metric : 0
Priority : Medium
* Link ID: 192.168.100.255
Data : 5.5.5.1
Link Type: P-2-P
Metric : 0
* Link ID: 5.5.5.2
Data : 5.5.5.1
Link Type: TransNet
Metric : 0
[ar2]dis ospf lsdb network
OSPF Process 1 with Router ID 1.1.1.1
Area: 0.0.0.0
Link State Database
Type : Network
Ls id : 6.6.6.6
Adv rtr : 6.6.6.6
Ls age : 1203
Len : 32
Options : None
seq# : 80000001
chksum : 0xeb5a
Net mask : 255.255.255.0
Priority : Low
Attached Router 6.6.6.6
Attached Router 192.168.100.255
Type : Network
Ls id : 192.168.100.255
Adv rtr : 192.168.100.255
Ls age : 1204
Len : 36
Options : None
seq# : 80000001
chksum : 0xe4a7
Net mask : 255.255.255.0
Priority : Low
Attached Router 6.6.6.6
Attached Router 5.5.5.5
Attached Router 1.1.1.1
Type : Network
Ls id : 1.1.1.2
Adv rtr : 1.1.1.2
Ls age : 1417
Len : 32
Options : E
seq# : 80000001
chksum : 0x83c3
Net mask : 255.255.255.0
Priority : Low
Attached Router 1.1.1.2
Attached Router 1.1.1.1
Type : Network
Ls id : 5.5.5.5
Adv rtr : 5.5.5.5
Ls age : 1207
Len : 32
Options : None
seq# : 80000001
chksum : 0x163c
Net mask : 255.255.255.0
Priority : Low
Attached Router 5.5.5.5
Attached Router 192.168.100.255
为什么路由器的路由表不计算路由 不显示5.5.5.0和6.6.6.0网段