Site icon WinCert

IPv6 – breaking down the DisabledComponents registry value

<p>I’ve gotten an elevated number of requests recently on &OpenCurlyDoubleQuote;how do I disable IPv6” or &OpenCurlyDoubleQuote;what’s the best way to configure IPv6 in my environment”&period; I’m not entirely certain of why I’ve gotten so many recently&comma; and I’m not sure if it’s a coincidence or if there’s more to it&period;<&sol;p>&NewLine;<p>However&comma; what I’ve found is that most IT departments I’ve come across over the years simply go and set IPv6 to completely disabled via setting the <a title&equals;"disabledcomponents" href&equals;"https&colon;&sol;&sol;support&period;microsoft&period;com&sol;kb&sol;929852" target&equals;"&lowbar;blank">disabledcomponents registry value<&sol;a> to 0xffffffff&period; While this does indeed disable IPv6 entirely&comma; I have to warn everyone I come across with this set that Microsoft doesn’t test this setting at all&comma; and support for resolving issues with this set have usually resorted to setting disabledcomponents back to 0x0 and retesting&comma; where things magically work&comma; and that’s the extent of what is done for obvious reasons&period; This can &lpar;and sometimes does&rpar; also break functionality in Windows&comma; and the one that most customers eventually run across is DirectAccess &lpar;with Remote Assistance in second&rpar;&period;<&excl;--more--><&sol;p>&NewLine;<p>With the advent of a lot of my enterprise customers recently starting to roll out DirectAccess to their Windows 7 and &lpar;increasingly&rpar; Windows 8&period;1 clients&comma; this of course is now being revisited for best practices &lpar;or at least best recommendations from the Microsoft guy&rpar;&comma; as DA requires IPv6 enabled in most cases&comma; at least in some way&comma; and especially on Windows 7&period; I made a handy breakdown of the disabledcomponents settings to satisfy a request for just this question recently&comma; and figured I’d repost here my recommendations&comma; and why&period;<&sol;p>&NewLine;<p>There’s 8 bits to the disabledcomponents registry value&comma; and each bit represents a feature or configuration of a functionality of the IPv6 stack in Windows&period;<&sol;p>&NewLine;<ul>&NewLine;<li><strong>Bit 0<&sol;strong> controls ALL of the IPv6 tunnel interfaces&comma; which includes Teredo&comma; ISATAP&comma; 6to4&comma; and IP-HTTPS&period; Setting this to 1 will disable ALL of the tunnel interfaces&comma; which will also break DirectAccess full stop&period; This should &ast;always&ast; be 0 if you’re using IPv6 transition tunnels &lpar;and each tunnel interface can be controlled separately&comma; which is the right way to handle them&rpar;&period;  I generally don’t recommend this ever be set to 0 even if you aren’t using them&comma; as they can each be configured separately&period;  Maybe it’s OCD&comma; maybe it’s good practice&comma; I dunno – but I don’t ever change this from 0 if I can help it because there are other levers for this&comma; and I don’t like to paint in broad brushes when it comes to configuration&comma; as it can sometimes be hard to track down the setting that’s keeping one I’m trying to enable from working in the future&period;<&sol;li>&NewLine;<li><strong>Bit 1<&sol;strong> controls 6to4<&sol;li>&NewLine;<li><strong>Bit 2<&sol;strong> controls ISATAP<&sol;li>&NewLine;<li><strong>Bit 3<&sol;strong> controls Teredo<&sol;li>&NewLine;<li><strong>Bit 4<&sol;strong> controls IPv6 for non-tunnel interfaces&comma; which would include actual physical &lpar;or virtual&comma; in a VM&rpar; network interfaces&comma; dial-up&sol;PPP interfaces&comma; etc&period;<&sol;li>&NewLine;<li><strong>Bit 5<&sol;strong> controls preference of IPv6 or IPv4 in the prefix table – setting this to 1 will cause IPv4 to be preferred when creating a new network connection&comma; and I do recommend setting this in mixed IPv4&sol;IPv6 networks&comma; at least on the client-side &lpar;server-side is a bit murkier&comma; and I generally don’t recommend messing with IPv6 on the back end at all if at all possible&rpar;&period;<&sol;li>&NewLine;<li><strong>Bit 6<&sol;strong> is listed as &OpenCurlyDoubleQuote;reserved”&comma; so…&period; yeah&comma; don’t touch it&period;<&sol;li>&NewLine;<li><strong>Bit 7<&sol;strong> controls IP-HTTPS<&sol;li>&NewLine;<&sol;ul>&NewLine;<p>Why is the above important&quest; Well&comma; 6to4&comma; ISATAP&comma; Teredo&comma; and IP-HTTPS are all considered &OpenCurlyDoubleQuote;IPv6 Transition technologies”&comma; which means nothing other than these are the technologies that a DirectAccess server and client can &lpar;and will&rpar; use to get that tunnel connected when the client does not have an IPv6 address&comma; or is connected to the internet via a NAT tunnel&period; 6to4 and Teredo both require the DirectAccess server to be connected directly to the internet&comma; which was required prior to using Server 2012’s DirectAccess feature&period; The likelihood is&comma; if you’re using a 2008R2 or UAG server to serve DirectAccess to your clients&comma; you’re using 6to4 or Teredo&comma; so do not disable these if you want DA to continue working&period; ISATAP is generally used when doing &OpenCurlyDoubleQuote;manage-out” of DA clients&comma; so if you’re doing that&comma; again&comma; do not disable ISATAP&period; IP-HTTPS allows DA to work when the 2012 or 2012R2 server is not directly connected to the public internet &lpar;and is using a private IP address&rpar;&comma; and is the <em>only<&sol;em> protocol that works in this scenario&period; I’ve seen a progression to this configuration in new DA installs&comma; which is how this question came up in the first place – if you’re using DA servers situated behind a firewall or not connected to the public internet in any way&comma; how do you configure IPv6 so that things work the way you need them to without leaving other IPv6 transition capabilities in place&quest;<&sol;p>&NewLine;<p>It’s questions like these that keep me coming back to this simple chart&comma; when determining for someone what the best value for the disabledcomponents registry value is&period;  As is the case with most things&comma; one size does not fit all&period;  Also&comma; knowledge is power&comma; so knowing what each bit controls will help you determine what &lpar;if anything&rpar; to set if you’re going to modify IPv6 behavior in a Windows environment&period;  Again&comma; Microsoft’s best practice is to keep things configured as default&comma; and if you’re capable of doing that&comma; then that’s always the best recommendation&period;  However&comma; if you really do feel that you need to change things&comma; simply disabling IPv6 entirely is a bad idea – controlling it in a manageable way is far better&period;<&sol;p>&NewLine;<p>So&comma; without any further rambling&comma; here are some examples I’ve used in the recent past that should help explain for the more visual among us how to configure disabledcomponents for certain configurations&period;  Remembering to list your binary from right to left &lpar;bit 7 will be the leftmost bit&comma; and bit 0 the rightmost when you write it out&rpar;&comma; you would see something like this as your bit field &lpar;use the buit-in Windows calculator in &OpenCurlyDoubleQuote;Programmer” mode if you’re bad at converting binary &lpar;bin&rpar; to hex&rpar;&colon;<&sol;p>&NewLine;<div>7 6 5 4 3 2 1 0<&sol;div>&NewLine;<p>if you wanted to disable IPv6 tunnel interfaces and prefer IPv4 across your network &lpar;you’re not using DirectAccess&comma; and have no need for any tunnel creation&rpar;&comma; you would have a binary number that looked like this&colon;<&sol;p>&NewLine;<pre>1 0 1 0 1 1 1 0  &equals;&equals;  0xAE<&sol;pre>&NewLine;<p>This has bits 7&comma; 5&comma; 3&comma; 2&comma; and 1 &OpenCurlyDoubleQuote;enabled”&comma; thus disabling IP-HTTPS&comma; setting IPv4 preference&comma; and disabling Teredo&comma; ISATAP&comma; and 6to4 as well&period;  You could set bit 0 as well&comma; but that would be sort of redundant&comma; and I prefer only making the changes I need to if possible&comma; so I don’t generally recommend it&period;  You would thus put the value &OpenCurlyDoubleQuote;0xAE” into the disabledcomponents registry value to configure this setting&period;<&sol;p>&NewLine;<p>Let’s say you’re using DirectAccess with Windows 7 clients&comma; and you needed to have 6to4 or Teredo enabled&comma; but didn’t want ISATAP functionality and were not going to be using IP-HTTPS as your DA servers are attached directly to the internet&colon;<&sol;p>&NewLine;<pre>1 0 1 0 0 1 0 0  &equals;&equals;  0xA4<&sol;pre>&NewLine;<p>This has bits 7&comma; 5&comma; and 2 &OpenCurlyDoubleQuote;enabled”&comma; thus disabling IP-HTTPS&comma; setting IPv4 preference&comma; and disabling ISATAP while leaving 6to4 and Teredo enabled&period;  You would thus put the value &OpenCurlyDoubleQuote;0xA4” into the disabledcomponents registry value to configure this setting&period;<&sol;p>&NewLine;<p>As a last example&comma; let’s say you are using Server 2012 DA servers behind a firewall&comma; and thus will be using IP-HTTPS to connect your external clients to your DA infrastructure&period;  You do not need any other tunnel technology &lpar;and in fact would <em>want<&sol;em> these disabled&rpar;&colon;<&sol;p>&NewLine;<pre>0 0 1 0 1 1 1 0  &equals;&equals;  2E<&sol;pre>&NewLine;<p>This has bits 5&comma; 3&comma; 2&comma; and 1 &OpenCurlyDoubleQuote;enabled” thus setting IPv4 preference&comma; and disabling Teredo&comma; ISATAP&comma; and 6to4&period;<&sol;p>&NewLine;<p>Hopefully this helps someone the next time they come across a request to &OpenCurlyDoubleQuote;disable IPv6&excl;” or help answer the question &OpenCurlyDoubleQuote;which IPv6 settings do I actually need to set&quest;”  Yes&comma; this can be done with PowerShell and Group Policy as well&comma; before the comments blow up about that&period;<&sol;p>&NewLine;<p>Happy admin’ing&period;<&sol;p>&NewLine;<p>Courtesy&colon; <a href&equals;"http&colon;&sol;&sol;www&period;cluberti&period;com&sol;blog&sol;" target&equals;"&lowbar;blank">Cluberti&period;com<&sol;a><&sol;p>&NewLine;

Exit mobile version