secdev / secdev/scapy

support rfc8950 nexthop in Linux routing table

Open
#3,124 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Python
Stars
12.6k
Forks
2.2k
Avg merge
1d 4h
Merged PRs (30d)
56

Description

Brief description

An IPv6 only link can transparently transport IPv4 packets (no IPv4 configured on link) using a IPv6 nexthop's MAC

example setup https://ungleich.ch/u/blog/how-to-route-ipv4-via-ipv6/

$ ip route
default via inet6 fe80::21b:21ff:febb:6934 dev wlp0s20f3 src 169.265.0.30
Environment
  • Scapy version: 2.4.4
  • Python version: 3.8.6
  • Operating System: Centos 8
How to reproduce

send IPv4 packet at L3 with sr()

Actual result

scapy doesn't properly set up L2, packets never got sent (silent failure)

Expected result

based on routing table, scapy automatically sets Ether()

Related resources

https://tools.ietf.org/html/rfc8950
https://ungleich.ch/u/blog/how-to-route-ipv4-via-ipv6/

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at Scapy's sr() path for sending an IPv4 packet at layer 3, then inspect how the Linux routing table and Ether() setup determine the layer-2 destination. Reproduce the IPv4-over-IPv6 nexthop example from RFC 8950 and confirm that packets are sent with the expected Ethernet setup instead of failing silently.

Written by the indexing model from the issue text.

Assessment

Tech stack
linux, python
Domain
networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.