[Python] Generate ICMPv6 Packet Too Big Error in Mininet Topology

Discussão em 'Python' iniciado por Stack, Abril 14, 2025.

  1. Stack

    Stack Membro Participativo

    How do I get my router in Mininet to send the "Packet Too Big" error back to the host before the host fragments the packet?

    In Wireshark, I am only able to view the fragmented packets when I use the command "h1 ping6 -s 2001:db8::254".

    Any assistance would be appreciated as I am extremely new to networking. Thank you.


    # Run with sudo ./topo.py

    import os
    import subprocess
    from mininet.net import Mininet
    from mininet.node import Controller, OVSSwitch, RemoteController
    from mininet.cli import CLI
    from mininet.log import setLogLevel, info

    # Ensure Open vSwitch service is running
    def start_ovs():
    info("*** Starting Open vSwitch service\n")
    os.system("service openvswitch-switch start") # Alternative: subprocess.run(["service", "openvswitch-switch", "start"])

    def dfpsTopology():
    net = Mininet(controller=Controller, switch=OVSSwitch)

    info("*** Adding controller\n")
    net.addController('c0')

    info("*** Adding hosts\n")
    attacker = net.addHost('h1', ip='2001:db8::1/64')
    router = net.addHost('h2', ip='2001:db8::254/64') # Acting as router
    victim = net.addHost('h3', ip='2001:db8::2/64')

    info("*** Adding switch\n")
    s1 = net.addSwitch('s1')

    info("*** Creating links\n")
    net.addLink(attacker, s1)
    net.addLink(router, s1)
    net.addLink(victim, s1)

    info("*** Starting network\n")
    net.start()

    info("*** Configuring global IPv6 addresses on each host\n")
    attacker.cmd('ip -6 addr add 2001:db8::1/64 dev h1-eth0')
    router.cmd('ip -6 addr add 2001:db8::254/64 dev h2-eth0')
    victim.cmd('ip -6 addr add 2001:db8::2/64 dev h3-eth0')

    info("*** Configuring router (h2) to forward packets\n")
    router.cmd('sysctl -w net.ipv6.conf.all.forwarding=1')

    print("[*] Launching fragmentation attack simulator on h1...")
    h1 = net.get("h1")
    h1.cmd("xterm -e 'python3 simGUI.py' &") # Run simGUI.py in xterm

    print("[*] Launching decision tree system on h3...")
    h3 = net.get("h3")
    h3.cmd("xterm -e 'python3 monGUI.py' &") # Run monGUI.py in xterm

    info("*** Running CLI\n")
    CLI(net)

    info("*** Stopping network\n")
    net.stop()

    if __name__ == '__main__':
    setLogLevel('info')
    start_ovs() # Start Open vSwitch before running the topology
    dfpsTopology()

    Continue reading...

Compartilhe esta Página