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

Multi Homing issues with address selection #2019

Open
agowa opened this issue Feb 20, 2024 · 1 comment
Open

Multi Homing issues with address selection #2019

agowa opened this issue Feb 20, 2024 · 1 comment

Comments

@agowa
Copy link

agowa commented Feb 20, 2024

I noticed an issue in the case where ifname = ethX is used with ethX having multiple dynamic IPv6 addresses configured (technically also applies to IPv4, but having multiple IPv4s is not a common scenario as it is most of the times just multi homed via NATs, or multiple interfaces).
Currently i2pd doesn't honor the reachability scope of the IPs on a link (I.E. it implements the address selection in a non rfc compliant way).

i2pd currently also does not allow to specify a bind dynamically e.g. just the hosts part without the prefix (or via match).

This is an issue when the network advertises an (1) ULA + GUA, (2) potentially (not tested) link local + GUA [if something causes link local to get reconfigured after the GUA], (3) multiple GUA (different prefixes), (4) GUA + privacy extension where inbound to them is firewalled (sadly a bunch of ISP provided e-waste), (5) working GUA + stale GUA e.g. when dynamic prefix changed.

It looks like currently the choice of address i2pd binds to is dependent on the order the interface IPs appear in e.g. ip -6 addr (aka. the order they're returned by the kernel). Because these IPs are dynamic configuring them literally within the address6 = or similar section is undesirable. As a workaround a user could write a custom script to update it in the config and restart i2pd though.

Also on another note, does ifname, ifname4, ifname6, address4, address6, ... support a list or just just a single address each? If it already supports a list it may be missing some documentation about the correct syntax to specify multiple. The inability to specify multiple interfaces and/or IPs technically also affects IPv4 multi homing scenarios (well at least if they're without a NAT, e.g. on a server).

@r4sas
Copy link
Member

r4sas commented Feb 20, 2024

If you know how to implement it with boost, covering unix, mac, android and windows - PR's are welcome.

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

No branches or pull requests

2 participants