IPv6 anyone?

Posted by Nick Gammon on Thu 27 May 2010 03:00 AM — 12 posts, 48,097 views.

Australia Forum Administrator #0
Is anyone aware of any MUDs that I could test against that use IPv6?

It seems that IPv6 is getting closer to being needed, and MUSHclient presently only supports IPv4.

Preferably one I can download and test here, I doubt my router supports IPv6, and who knows about my ISP?


http://en.wikipedia.org/wiki/Ipv6
Amended on Thu 27 May 2010 03:01 AM by Nick Gammon
USA #1
I don't think you need a MUD that supports IPv6 to implement support into MUSHclient. I downloaded Smaug as a target to connect to for my (semi-frozen) web-based client, and while Smaug doesn't suppot IPv6, I still got two network interfaces for localhost when I queried: one for IPv4 and one IPv6. As long as you can run over the list of interfaces appropriately, and connect to IPv6 ones okay (even if the server rejects your connection, like Smaug did for me), you should be fine.

I can send you the code I wrote for this if you want. It's in Python, but it's reasonably readable, and it should be pretty easy to translate to C++ given how low-level the API I used is.

EDIT: ...assuming I can get into my sadly keelhauled Linux partition...
Amended on Thu 27 May 2010 03:07 AM by Twisol
USA #2
I burned a LiveCD of Ubuntu 10.4 so I could mount and grab my files. First I must say, 10.4 is slick! Second, I seem to have already deleted my Python code (because I can't bear the language). It's really a shame, but it was pretty simple actually.

I just used socket.getaddrinfo() and looped over the interfaces provided; if I could create a valid socket with it, I used it, otherwise I moved to the next one. It's fairly IP-version agnostic.
Australia Forum Administrator #3
I don't see how MUSHclient can connect to an Ipv6 server right now, since it doesn't have the appropriate code in it. For one thing, the IP addresses stored internally are a 4-byte field.
USA #4
Nick Gammon said:

I don't see how MUSHclient can connect to an Ipv6 server right now, since it doesn't have the appropriate code in it. For one thing, the IP addresses stored internally are a 4-byte field.


I didn't say it could now, I just said you didn't need an IPv6 MUD to do it. It's just a matter of being able to handle the list of interfaces, and store the appropriate data. Beyond that, connecting is more or less the same deal.
Amended on Thu 27 May 2010 06:21 AM by Twisol
Australia #5
Discworld MUD has IPv6 up and running, if you are still looking for a MUD to test implementation with!

discworld.starturtle.net (2a01:348:19e:2::2) port 4242

They are having IPv4 line troubles and are encouraging players to use IPv6 if possible at the moment, so I'm sure lots of MUSHclient-using players would love to see support. The ones with progressive ISPs, anyway... not me. ;)
Australia Forum Administrator #6
I did some investigation a while back, and it seems that my version of the Microsoft compiler does not support IPv6. This isn't too surprising, it is about 15 years old.

However as discussed in another thread a while back, I am reluctant to shell out over $2000 to upgrade. From the Microsoft web site "Buy from $2,084".

Compare this to Apple which uses gcc/g++, and they offer the full development environment for Apple, iPhone, iPad etc. for no charge (and around only around $100 per year it you actually want to sell through the Apple Store, something you are not required to do for normal apps).

And compare to gcc/g++ which is free for Unix, Cygwin, etc.

And avr-gcc which is free for microprocessors like the Arduino.

I am giving MUSHclient away, I receive a small number of donations, basically barely enough to cover the cost of keeping the web site up, if that.

So what can we do? Well I am guessing that people will have released some sort of proxy/tunnel that will let you convert IPv4 at home into IPv6 on the Web. Google for "ipv6 proxy" and you will find a few.

This would, or should, operate similar to a SSH-tunnel. That is, you connect locally to your tunnel program using IPv4 (ie. using MUSHclient) and configure it to forward onwards using IPv6 to your MUD. This page describes how stunnel works:

http://www.gammon.com.au/mushclient/stunnel.htm

Now that is for SSH, and not IPv6, but I don't see why something virtually identical should not be usable for IPv6.

If anyone finds such a thing, please let us know.

My problem would be that I doubt my router supports it, and I don't know about my ISP either.
USA #7
Nick Gammon said:
I did some investigation a while back, and it seems that my version of the Microsoft compiler does not support IPv6. This isn't too surprising, it is about 15 years old.

Sorry to be that person, but I don't think compilers support IP protocols. Did you mean MFC? >_>

Nick Gammon said:
My problem would be that I doubt my router supports it, and I don't know about my ISP either.

http://ipv6-test.com/
Australia Forum Administrator #8
Twisol said:

Sorry to be that person, but I don't think compilers support IP protocols. Did you mean MFC? >_>


I didn't mean the C++ language per se. I meant the include files and supplied DLLs.
USA #9
Nick Gammon said:
I didn't mean the C++ language per se. I meant the include files and supplied DLLs.

Yeah, it's just a nitpick. Your "compiler" absolutely supports IPv6, you just can't use MFC (you'd need to use Winsock). Since the networking code currently present uses MFC, IPv6 support is infeasible. :)
Australia Forum Administrator #10
Twisol said:

http://ipv6-test.com/



When both protocols are available, your browser uses

IPv4

Your internet connection is not IPv6 capable

N/A

unable to contact IPv6 test server

#11
FWIW, if you want to test and work on anything IPv6 in windows, you can get it working even over an IPv4 ISP and router using an IPv6 tunnel. An example is gogo6:

http://gogonet.gogo6.com/page/freenet6-ipv6-services

(You might also need to run 'ipv6 install' at a command prompt to get this to work)

This has worked well for me, especially in conjunction with the netsh port proxy to get MUSHclient to run.

K