Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Making an asp.net application IPv6 compliant

We have Windows 2003 Servers running SQL Server 2005 and .NET 3.5 [separately].
We have a basic ASP.NET app running on IIS 6.
What, if anything, do I need to do on the application end [IIS,Framework,ASP.NET] to make it IPv6 compatible?

EDIT: We do use System.DirectoryServices, System.DirectoryServices.DirectoryEntry and DirectorySearcher() to authenticate users against AD. Would those calls have to change?

like image 604
eych Avatar asked Aug 09 '10 16:08

eych


2 Answers

The first thing to do would be search your code for any references to System.Net.IPAddress, and see how you're passing information around in those areas:

  • Are you performing any "manual" validation that expects IP addresses to be in the IPv4 format?
  • Do you have any UI components, in the application itself or any configuration tools/pages you have for it, that are hard-coded to an xxx.xxx.xxx.xxx format?
  • How much space do you allocate to store IP addresses in things such as logging tables in databases? 15 characters is ample for an IPv4 address, but an IPv6 address can be considerably bigger.
  • Do you display IP addresses anywhere in your UI? If you do, do you allocate enough screen real-estate to show a full IPv6 address?

There are other questions to answer but they're more infrastructure related and serverfault would be a better place for them.

like image 121
Rob Avatar answered Nov 17 '22 00:11

Rob


This is probably a candidate for ServerFault.com since all your application services are running way above the underlying transport protocol.

Ideally, you shouldn't have to change anything within the application. I say ideally because my own apps (i.e. code I have specifically written) use the IP address in some places to identify internal connections. This'd have to change - but this is specific to my app.

As long as you can ping the server(s) by IP and by name from your client machines, everything else should be expected to work since names are being resolved and packets are being routed. The IP stack will decode the payload and pass it up to whatever service is listening.

The only caveat is that IPv6 addresses have a lot of colons, so check the browsers can make sense of addresses such as this:

_HTTP://[ 2001:0ff8:0000:0000:0000:0000:1986:69af]:80/

The browser should notice that the IP address is in [] brackets and work as usual, but older browsers might fall down.

Any issues you get would make an interesting blog post.

Good luck

Luke

(_HTTP to stop stackoverflow getting confused)

UPDATE:

Adding IIS6 IPv6 issues list link:

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/4c7c6bce-213a-4125-bc36-2202e3b4c8c8.mspx?mfr=true

like image 42
Luke Puplett Avatar answered Nov 16 '22 23:11

Luke Puplett