Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make block local work in IPv6 as well #509

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

roop
Copy link
Collaborator

@roop roop commented Feb 3, 2023

Fixes #323.

The actual code changes are in eduvpn/tunnelkit (Commit).

The original code used to do:

  • Find the default route
  • Find the broadest route routing into the gateway of the default route
  • Partition that route into two routes (to make that override the original route), routing into the tunnel

In IPv6, the following things make this not work:

  • Some default routes route into non-existant "utun" interfaces (maybe not cleaned up by the OS yet)
    • Solution: Need filter out these routes
  • The broadest route can be a link-local address
    • Solution: Need to find a link-layer address that routes into the interface of the default route (broadest, if there are many)

To test it:

  • Connect to a wifi network that allocates a public IPv6 address to our machine (say A)
  • In another machine (say B), connect to the same wifi network
  • run ifconfig en0 in Machine B, note down the secured IPv6 address
  • From Machine A, ping6 to the Machine B's IPv6 address (should work)
  • In Machine A, connect to a VPN server that sets block-local
  • From Machine A, ping6 to the Machine B's IPv6 address (should not work while tunnel is on)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

block-local doesn't work
2 participants