transmission / portcheck

Server component for portcheck.transmissionbt.com
MIT License
1 stars 1 forks source link

Peer listening port reports closed, but router shows port opened by UPNP and Canyouseeme.org can see serviec #7

Open dunxd opened 1 year ago

dunxd commented 1 year ago

What is the issue?

The Peer listening port is reported as closed in Transmission settings on MacOS 13.2.1.

image

However, my router shows the port as being opened by Transmission.

image

MacOS firewall is allowing incoming connections for Transmission. image### Which application of Transmission? Canyouseeme.org shows that the port is visible image

Files are transferring ok, so it may be the test in the settings panel that is not working correctly.

Which version of Transmission?

4.0.1

ckerr commented 1 year ago
dunxd commented 1 year ago

Sorry - hit save before finishing draft.

I am using transmission-mac 4.0.1.

https://portcheck.transmissionbt.com/60953 shows a page only showing 0.

dunxd commented 1 year ago

I've used the Randomize button to generate a new port. This is updating my router UPNP settings correctly, and canyouseeme.org can see the new port, but portcheck.transmissionbt.com/{portnumber} still shows 0.

titer commented 1 year ago

In case this is an IPv4 vs IPv6 problem, these two commands in a Terminal would test them separately:

curl -4 https://portcheck.transmissionbt.com/{port-number}; echo
curl -6 https://portcheck.transmissionbt.com/{port-number}; echo
dunxd commented 1 year ago

IPv4 version returns 1 IPv6 version returns 0

I don't believe my router supports UPNP via IPv6. If I manually open the IPv6 port on my firewall, the IPv6 command returns 1 and the Settings page shows the port is open.

However, if I want to randomise my port each time Transmission starts, manually forwarding doesn't work well.

Torrents are still working fine, I guess over IPv4, so perhaps this is cosmetic.

kelson42 commented 1 year ago

@titer @ckerr After our efforts to get that problem with IPv6 fixed, I finally wanted to test with my own Transmission-GTK 3.00 (bb6b5a062e) Ubuntu client and was pretty surprised and disappointed that actually it was still failing for me! But thank you @dunxd, you have pretty much nailed it and I believe to be exactly in the same situation: 2 public IPs, one in IPv4 and one in IPv6 and portcheck.transmissionbt.com seems to work only with IPv4:

$ curl -4 https://portcheck.transmissionbt.com/9008; echo
1
$ curl -6 https://portcheck.transmissionbt.com/9008; echo
0

Like for @dunxd, it seems that something is wrong between Transmission and my Fritz!box as the port seems not open (or relayed) properly in IPv6 but works properly in IPV4. But I guess Transmission can work perfectly work (in IPv4), so the check should not be reported as a failure.

Maybe the portcheck.transmissionbt.com should be smarter (probably not) or then the transmission client should be. Not sure exactly what is the current logic, but I could imaging something like: test specifically IPv4 and if fail then test specifically IPv6. Not sure how exactly how behind the door the software works and if both values are relevant or not.

So at the end not sure where the ticket should stay, here or moved to Transmission software itself?

dunxd commented 1 year ago

If I manually set the port in my routers IPv6 to forward to my device, then curl -6 https://portcheck.transmissionbt.com/9008; echo does return 1. So the issue is that some (at least mine) routers don't support UPnP or NAT-PMP for IPv6.

My suggestion would be that the Settings screen listening port check can handle a third outcome:

ckerr commented 1 year ago

@dunxd this Transmission UI suggestion is still off-topic in the portcheck repo, same as it was when you suggested it a few hours ago here :smile_cat: This is a web service that has no concept of Transmission's UI.

titer commented 1 year ago

AFAICT there is no ticket open about this in the transmission repo, so maybe move this one there?

If useful, the server-side component could be exposed with v4-only and v6-only hostnames to make it a little easier to test one or the other. But ultimately, I believe the problem reported here could only be addressed with changes on the application side, making it run two separate checks instead of just one

kelson42 commented 1 year ago

@ckerr I guess your expertise will be needed to:

dunxd commented 1 year ago

See my comment above that was marked as off-topic. suggesting how the client UI might deal with different results from checking IPv4 and IPv6 connectivity. At the time of posting this issue, I thought the issue may be with portcheck but it seems it is more of a client UI issue so would make sense to transfer to transmission\transmission since I included the screenshots and discussion shows this isn't an issue with portcheck.

beroset commented 1 year ago

See also https://github.com/transmission/transmission/issues/5607#issuecomment-1604410611

kelson42 commented 1 year ago

@ckerr Can we transfer this ticket to transmission/transmission because the portcheck works properly IMHO.

theirongiant82 commented 11 months ago

This is still broken in 4.0.4, even if you use static port mapping without uPNP.

Transmission will run for a while and report the port as open, but after a few days I start to see a warning from the tracker that my port is blocked. So this is not just a UI bug, and it's more than a port check failing. Does Transmission self-report closed ports to trackers? Or does the tracker find out due to multiple unsuccessful attempts?

The only workaround is to quit & relaunch the app.

Edit: I curl'ed portcheck:

$ curl -4 https://portcheck.transmissionbt.com/12345; echo
1
$ curl -6 https://portcheck.transmissionbt.com/12345; echo
curl: (7) Couldn't connect to server

My ISP does not assign IPv6 addresses. I have an Asus AX88U router that should support IPv6 WAN addresses.

zkrige commented 10 months ago

Port forwarding is setup and curl -4 https://portcheck.transmissionbt.com/33335; echo shows "1"

transmission 4.0.4 just doesnt connect and downloads are extremely slow, app shows port is closed

transmission 3.0 downloads are fast and app shows "port open"

dunxd commented 1 week ago

The problem as far as I can see it is that the UI shows a problem if IPv6 is enabled on the client, but for some reason cannot connect (i.e. the router blocks it) even if IPv4 is working perfectly. This makes troubleshooting really hard.

In my opinion the UI should show seperate indicators for IPv4 and IPv6 connections, so it is possible for users to see what is not working and take appropriate action. Many users won't care of IPv6 is working or not, if IPv4 is, so this false indication of a global problem is wasting people's time.

You might want to completely disable IPv6 on your client as well as on your router, since I think if it is enabled on the client then Transmission always shows a problem.

theirongiant82 commented 1 week ago

Except it's not a false indicator. Ports appear open for about 24 hours after restarting Transmission. During that time, Transmission reports the port is open.

If a torrent is added after 24 hours or so, the tracker reports that it cannot reach my client and to try unblocking ports. Transmission now shows the port as closed.

They're already open from the firewall. I have to assume that Transmission sends its open ports in the announce.

dunxd commented 1 week ago

I'm not saying it will fix your problem, but if you don't need it turn IPv6 off on your computer. That's one less thing to worry about and it's only when you do this that the port indicator in Transmission is helpful for troubleshooting.

Have you tried the other methods mentioned above to manually troubleshoot?

theirongiant82 commented 1 week ago

Disabling IPv6 across a LAN isn't practical in homes with Apple HomeKit, Google Home, and other popular IoT platforms that use IPv6 for broadcast and control. Even HomePods and other smart speakers used for audio playback will utilize IPv6 on LAN. So does the AppleTV, a popular accessory for those watching movies and TV shows. AirPlay and Mirroring rely on IPv6 to establish the session.

I would assume that at least 20% of your Mac users have something in their house that depends on IPv6, and disabling that stack just to fix Transmission would be unacceptable.

dunxd commented 1 week ago

You seem to be mistaking me for the developer of Transmission. I am a user like you.

I suggested a step you could take to troubleshoot the problem you added to the Issue I created last year.

I'm not suggesting that every user of Transmission should turn off IPv6 on their client. I am suggesting that you turn it off on the computer you run Transmission on to see if that is any way related to the problem you are having. You can of course suit yourself, but in that case I suggest you create your own issue instead of hijacking this one.