Fiddler and IPv6-only environments


I recently got a bug report from a user who was attempting to use Fiddler in a pure-IPv6 environment, where IPv4 is entirely disabled. On startup, he saw the following message:

image

The problem here is an obscure one, which makes it somewhat interesting. What’s happening is that Fiddler is trying to create an IPv4 listener socket listening on port 8888 locally. However, because this is a pure IPv6 environment, permission to create such a socket is denied.

By default, Fiddler will create an IPv4 listen socket unless the following three criteria are met:

  1. The computer supports IPv6 (Vista+ support it by default; various installs are required for XP)
  2. The Enable IPv6 option is ticked inside Tools > Fiddler Options > General
  3. The Allow remote computers to connect option is set inside Tools > Fiddler Options > Connections

Now, the first two requirements are somewhat self-explanatory, but the third bears some explanation. If only the first two requirements are met, Fiddler will be able to connect to IPv6 sites, but the browser will only be able to connect to Fiddler using IPv4.

The reason that the third requirement exists is that some clients (particularly IE6’s WinINET, and likely others) don’t support IPv6-literal proxy addresses, and hence attempting to poke [::1]:8888 into the system proxy settings would fail for such clients. So, Fiddler cannot safely bind to IPAddress.IPv6Loopback, and will bind to IPAddress.Loopback instead. However, if you enable the Allow remote computers to connect option, Fiddler will instead bind to IPAddress.IPv6Any which allows connecting on both IPv4 and IPv6 addresses on any adapter.

In the future, I may change Fiddler such that the preference fiddler.network.proxy.registrationhostname defaults to localhost which would resolve the IE6 concern as well without the “Allow external clients to connect” option being set. But that option is a fine workaround for now.

Please do note, after setting the Allow remote computers to connect option, you must restart Fiddler. You should get a prompt from the Windows Firewall asking for permission to listen for external connections at that time. You should choose to Allow Fiddler to listen for connections to avoid failures due to the firewall.

-Eric

Comments (4)

  1. EricLaw says:

    To change the proxy registrationhostname, press Alt+Q to get to the QuickExec box. Type the following and hit enter:

    prefs set fiddler.network.proxy.registrationhostname localhost

    Restart Fiddler.

  2. Fleet Command says:

    "…some clients (particularly IE6’s WinINET, and likely others) don’t support IPv6-literal proxy addresses…"

    Reading this blog post made me badly feel like Windows is not ready for IPv6.

    [EricLaw] Maybe you should read it again. Or when you said "Windows" did you mean: "Users of Windows XP running IE6 have limits to their IPv6 support?" In which case, your conclusion would be correct.

  3. Eli says:

    Why not just check if your running on XP since vista and above don't need workarounds?

  4. EricLaw [MSFT] says:

    @Eli: It's a fine idea, although as I mentioned, I'm not convinced that all "modern" applications will know how to handle an IPv6 literal even on WinVista+. However, the "right" fix is probably not to use IPvX literals at all and just use "localhost."

    One thing to keep in mind is the scale of this problem– in 8 years, with millions of users of Fiddler, I've had exactly one user ever come to me with a problem here– so this issue isn't a top-priority to address.  :-)