i2pd icon indicating copy to clipboard operation
i2pd copied to clipboard

Multi Homing issues with address selection

Open agowa opened this issue 1 year ago • 1 comments

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).

agowa avatar Feb 20 '24 16:02 agowa

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

r4sas avatar Feb 20 '24 21:02 r4sas