-
Notifications
You must be signed in to change notification settings - Fork 217
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
IPv6 Support #107
Comments
Have you tried putting the address in brackets? (e.g. |
@nilsding It won't work as Syncplay server's interface doesn't listen on IPv6. |
Hi, the provided patch should allow you to use IPv6
|
It does, but it means either IPv6 or IPv4 which is not ideal. |
@Uriziel
Can't test with IPv6, as the client doesn't like the format. As far as I know, Windows doesn't do that by default: |
Are there any news about this? I would like IPv6 support as at the moment my client is behind CGN sometimes causing connection issues and my server is a cheap NAT VPS with only 20 open ports IPv4. I am also using Cjdns and Yggdrasil-network that are IPv6-only mesh/overlay/mixnetworks. I cannot use the patch above as at least one party requires IPv4 and that |
@ccxcz is working on this at master...ccxcz:endpoints, but has problems with having time, so he hasn't opened a PR yet. If you would like to try it, I have a server running it The server side command is |
@albertosottile has also done some work on IPv6 at https://github.com/albertosottile/syncplay/tree/IPv6 |
I apologize if I did not comment before, but I just moved to a new country and did not have much free time lately. The code in my IPv6 branch (https://github.com/albertosottile/syncplay/tree/IPv6) should fully support IPv6, with the nice feature of having a single server that supports both IPv4 and IPv6 clients in the same room. I do not know if this is possible with @ccxcz code given that the patch uses multiple endpoints for the server (I like the idea of returning the Deferred() for catching debug info, though). The patch was "finished" weeks ago, but unfortunately, I could not (and still cannot) test it properly because my ISP and my LAN do not support IPv6 at all. I made some preliminary tests using VPSs and everything seemed to work fine but, of course, further tests are needed before releasing it. @Mikaela if you could run the server and the client from that branch, and provide some feedback to us, that would be great. I understand that you have a peculiar network setting, though ( |
With Ccx's branch I am using IPv6 (I am behind CGN) and he is using IPv4 (so there is no problem with mixed IP clients, we havn been using this setup for a long time (what is the time in those commits?)). I have specified the endpoints separately in the server side for that sysctl option to avoid https://serverfault.com/questions/408667/how-do-i-disable-ipv4-mapped-ipv6 , without it I would get error about port already being in use. I understood that his code also supports Unix sockets, but we didn't test that. I fear that I cannot give promises on testing, but the easiest way to get IPv6 is installing Miredo on Linux or enabling the inbuild client on Windows, even if there are a lot better transition methods. |
@albertosottile Do I need to do something special on the server or the client with your branch? Edit: Like with Ccx's branch I have to specify I added the remote on both, fetched it, and checkouted to IPv6, then ran the server with
and attempted to connect to y.relpda.mikaela.info:14404 (Yggdrasil) and relpda.mikaela.info:14404 (IPv6-only) and I kept receiving "Error connecting with the server" or similar message. Everything started working again on returning to Ccx's branch. |
What happens if you put the hostname in square brackets or use an IPv6 IP
address?
|
So this patch was a really quick job that had two goals: get something working so it can be used and tested, and to showcase the serverFromString/clientFromString API so it can be discussed whether it's worth making a breaking change to configuration or not and if so then how. Twisted provides plugin mechanism so anyone can easily add things that can be listened on or connected to. In the Twisted core you get support for TCP over IPv4 and IPv6, Unix sockets (handy for Tor or similar), TLS, inherited filedescriptors (handy for UCSPI), SystemD socket activation, and possibly more in the non-core parts of Twisted. I used --endpoint option both in client and server. In retrospect --connect and --listen respectively would be way more intuitive names. What surprised me when writing the patch was that there was absolutely no error handling for those very obviously fatal errors. Adding it to server as easy as the logic was simple, but the client is tangled mess of many possible event loops and UI frameworks, so I gave up on adding that as a trivial change. |
Is there any timeline for official IPv6 support? I just noticed that 1.6.2 was released and I thught about this.
Sorry, I still haven't had the time to test this, but I hope it's not hanging on me as no one replied to ccxcz above either. |
Reliable IPv6 support would be great. I am not super fond of breaking changes if they can be avoided, so I would need a strong case for why one would be desirable. I am on IPv4 so am only of limited assistance in moving things forwards, but in terms of what I'd ideally want to see is something which changes Syncplay as little as possible to achieve the end result. This is to: (a) reduce the likelihood of the change introducing unexpected problems which are hard to track down; (b) help maintain forwards and backwards compatibility; and (c) avoid the need to update guidance and respond to queries from users who do not know why things stopped working how they expected. I do not know why we need new client command line switches as included in the @ccxcz code - maybe there is a great rationale, if so I would need to hear it. In terms of what @albertosottile proposes I've heard reports from people that it doesn't work (i.e. the post from @Mikaela Mikaela) but no reports from anyone that it does work - as such, for now I'm waiting for someone who knows more about IPv6 than me to help move things forwards (e.g. by confirming issues, proposing fixes, and/or saying it actually works for them). |
TL;DR status update from albertosottile so it won't get lost to IRC:
|
Sidenote to avoid forgetting what we did today: Reversing this behavior is not possible using Twisted. However, it should be possible to create a socket that listens to both IPv4 and IPv6 interfaces overriding the OS settings (e.g. by setting EDIT: "fixed" in albertosottile@eeb0138 by reverting the server to |
@albertosottile I've made an initial attempt at fixing the connection error handling in your branch: http://syncplay.pl/Fix_connection_error_handling.patch - this is based on the guidance at https://twistedmatrix.com/documents/16.4.1/core/howto/endpoints.html#persistent-client-connections |
Closed by PR #215. |
Just wanted to leave a suggestion for IPv6 support. I was in the IRC for a somewhat related issue, and someone there told me I should create an issue here. They also said that it should already have it, but when I tried to put in my IPv6, it read everything after the first colon as the port. (Since IPv6 format is abcd:123:12cd:ab34:1b3d:a2c4:a23d:1bc4, using colons.) Just a suggestion, as finding my IPv4 was a pain in the behind, and more and more ISPs are handing out IPv6s nowadays. If it does already support it, could you update the guide with how to use it? Because the obvious way doesn't work. ^^;
Thanks for your time!
The text was updated successfully, but these errors were encountered: