Skip to content

ndproxy - add cloud example and refer to it in ipv6 document #717

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

Merged
merged 2 commits into from
May 7, 2025

Conversation

AdSchellevis
Copy link
Member

Add an example where ndproxy can be of use

@AdSchellevis AdSchellevis added the feature Adding new functionality label May 6, 2025
@Monviech
Copy link
Member

Monviech commented May 7, 2025

@AdSchellevis I've tested this but I had to change two things to make it work:

  • Use the WAN MAC in "Downlink MAC Address"
  • Set WAN interface to either promiscuous or allmulti mode

Afterwards my client with the ULA could ping the internet.

All in all this setup seems pretty promising as it eliminates most of the pain points of using the GUA on the LAN side. Thank you.

@AdSchellevis
Copy link
Member Author

@Monviech it might be the case that my wan was in promisc as I installed the package from the repo on our end. just to be sure, did you reboot the machine (clean state) to validate if the lan mac doesn't work? In my setup it didn't make much of a difference, but I may have to check the source to understand what they actually try to do there.

@AdSchellevis
Copy link
Member Author

I think it should be wan in our case indeed as we try to update the ND database from our wan end, ref https://github.com/AlexandreFenyo/ndproxy/blob/dd93a2498569dff70e5c2654f51cc196e64d8300/ndpacket.c#L363

According to the source, they need promisc in order for the proxy to work

https://github.com/AlexandreFenyo/ndproxy/blob/dd93a2498569dff70e5c2654f51cc196e64d8300/ndpacket.c#L52-L58

In theory we should only need a limited "proxy" feature, which registers the addresses we use on our end (actually the mapped ones from the local net), ndp offers a proxy flag for these cases, but not a full proxy option.

I'll update the doc and retest it on my end. Still not a huge fan of this stuff, the code doesn't look very well organized in my humble opinion, but having a option which fits sane architectural choices beats having none in suppose.

@Monviech
Copy link
Member

Monviech commented May 7, 2025

It would still be pretty cool if the code would only join the needed multicast groups selectively, which I think would remove the need for promisc or allmulti.

The kernel should be able to handle this natively.

EDIT: But yeah, reading the source they make it pretty clear...

@AdSchellevis
Copy link
Member Author

To some degree it would make sense if the kernel could handle this, but realistically, this isn't very different from how arp works on IPv4, it needs a proxy too in order to answer to off link requests (https://man.freebsd.org/cgi/man.cgi?query=choparp)

Searching google a bit, seems to suggest it's roughly the same on linux (https://github.com/setaou/ndp-proxy)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature Adding new functionality
Development

Successfully merging this pull request may close these issues.

2 participants