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
UPNP_GetValidIGD returns Temporary IPv6 Address, causing UPNP_AddPinHole to fail with 606 #600
Comments
I worked around this by grabbing the first normal IPv6 address, for now. So this is still not solved for me, completely :/ |
@Memnarch what is the IGD implementation your router is running ? |
Quite possibly a MiniupnpD (and older router from that company was using that so I assume the newer one does aswell). |
open the description url in your browser you should see the various informations |
So all i can see are the keywords I have attached the document(with .txt because github can docx but .xml is invalid for some reason as filetype..yay?) Regarding (temp)IPv6 and what I understood sofar, just so we are on the same page: |
There is no "temporary" address regarding IPv6 protocol and routing. one address may be temporary if you change it, but that doesn't change anything for routing. With IPv6 a host has typically at least 2 addresses :
the link local address has no meaning on the internet, so for adding a pinhole the global address must be used. The global address can be "temporary" (change from time to time) to avoid being used as an identifer. |
@Memnarch the temporary IPv6 address looks perfectly routable, so there is no reason not using it, except if there is some special feature on your router that it forbid pinhole on an address it has not assigned. So the problem is with your router, you should contact AVM about it. Generally speaking there is no need for an IPv6 address to be assigned by the router to be globally routable, it only needs to have the correct prefix. Also, to my knowledge, there is no way for miniupnpc to know which IP is a "temporary one" and which one was assigned by the router. It takes the one used by default by the OS. |
That seems to be the issue, here. My workaround is to try every routable IPv6 and see which one ends up in an "OK". I then keep that in mind and use it for pinholes. Seems that's the only way for now. |
Platform: Windows 10 x64 21H2
Local-Sourcestate: Commit 51f185f
As I wanted to work with IPv6, I used
UPNP_AddPinHole
and ended up with it returning 606 ("Authorization required")After digging into it, I found out that my IF has 2 IPv6 addresses. A "Normal" one and a "temporary" one (according to IPCONFIG).
The LanAddr argument of
UPNP_GetValidIGD
is filled with the temporary one, which seems to be the cause of it failing. When I used my normal one, by hardcoding it, it worked. ThoughUPNP_DeletePinHole
would still fail with 606, so I ended up working around that by updating a pinhole with a leasetime of 1.I walked through the code but haven't found the exact issue, yet.
Using the "empty" Wildcard for intClient, instead of my local lanadrr failed with 402 ("Invalid Args")
The text was updated successfully, but these errors were encountered: