Skip to content

Default IPv6 route overwrites "iface" argument of send #2879

@oXis

Description

@oXis

Brief description

Cannot send an IPv6 packet on a specific interface using iface argument of send

Environment

  • Scapy version: 2.4.4
  • Python version: 3.8.5
  • Operating System: Manjaro (up-to-date)

How to reproduce

Install vmware, vmnet1 should be up. enp42s0 is the default interface. Fire up wireshark and sniff on enp42s0.

Actual result

>>> send(IPv6(dst="fe80::2d85:c733:b1:eaf9"), iface="enp42s0")
WARNING: Mac address to reach destination not found. Using broadcast.
.
Sent 1 packets.

Works, wireshark reports an IPv6 packet.

>>> send(IPv6(dst="fe80::2d85:c733:b1:eaf9"), iface="vmnet1")
WARNING: Mac address to reach destination not found. Using broadcast.
.
Sent 1 packets.

Doesn't work, the packet is actually sent to enp42s0, we can see it in wireshark.

Expected result

The packet should be sent to vmnet1.

Related resources

If you remove enp42s0 and try again, it works, and the packet is sent to vmnet1 correctly and appears in wireshark.

>>> conf.route6.remove_ipv6_iface("enp42s0")
>>> send(IPv6(dst="fe80::2d85:c733:b1:eaf9"), iface="vmnet1")
WARNING: The conf.iface interface (enp42s0) does not support IPv6! Using vmnet1 instead for routing!
WARNING: The conf.iface interface (enp42s0) does not support IPv6! Using vmnet1 instead for routing!
WARNING: more The conf.iface interface (enp42s0) does not support IPv6! Using vmnet1 instead for routing!
WARNING: Mac address to reach destination not found. Using broadcast.
.
Sent 1 packets.

It seems that the packet is always sent to the default route6, even when iface is specified. Is it a bug or am I doing something wrong 🤔 ?
I can't find a way to create a default scapy internal route6...

Thanks 👍

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions