We help IT Professionals succeed at work.
Troubleshooting Question

Disable negative caching in Windows DNS service

58 Views
Last Modified: 2020-09-30
This is a follow up for this question since the problem still is not resolved.

We have an hMailServer instance which anti-spam module checks against a number of BL DNS suffixes. Also, we have running the Windows DNS service and the machine is a domain controller (I know, that's not very good setup, but we are a small company, can't afford too many servers).
The problem is seemingly a negative DNS answer stuck in our DNS service cache even though all its DNS forwarders respond with a resolved address.

(10.0.0.6 is the machine with the DNS service)
D:\>dig +short 19.248.212.206.zen.spamhaus.org @1.1.1.1
127.0.0.3

D:\>dig +short 19.248.212.206.zen.spamhaus.org @10.0.0.6

D:\>dig  19.248.212.206.zen.spamhaus.org @10.0.0.6

; <<>> DiG 9.11.9 <<>> 19.248.212.206.zen.spamhaus.org @10.0.0.6
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: FORMERR, id: 1097
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 9387a532f250e7a3 (echoed)
;; QUESTION SECTION:
;19.248.212.206.zen.spamhaus.org. IN    A

;; Query time: 15 msec
;; SERVER: 10.0.0.6#53(10.0.0.6)
;; WHEN: Tue Sep 01 10:59:00 EDT 2020
;; MSG SIZE  rcvd: 72


Here is from the DNS service log:
DNS Server log file creation at 9/1/2020 11:01:31 AM
Log file wrap at 9/1/2020 11:01:31 AM

Message logging key (for packets - other items use a subset of these fields):
    Field #  Information         Values
    -------  -----------         ------
       1     Date
       2     Time
       3     Thread ID
       4     Context
       5     Internal packet identifier
       6     UDP/TCP indicator
       7     Send/Receive indicator
       8     Remote IP
       9     Xid (hex)
      10     Query/Response      R = Response
                                 blank = Query
      11     Opcode              Q = Standard Query
                                 N = Notify
                                 U = Update
                                 ? = Unknown
      12     [ Flags (hex)
      13     Flags (char codes)  A = Authoritative Answer
                                 T = Truncated Response
                                 D = Recursion Desired
                                 R = Recursion Available
      14     ResponseCode ]
      15     Question Type
      16     Question Name

9/1/2020 11:01:36 AM 1030 PACKET  000000000D4F74A0 UDP Rcv 10.0.0.6        9c67   Q [2001   D   NOERROR] A      (2)19(3)248(3)212(3)206(3)zen(8)spamhaus(3)org(0)
UDP question info at 000000000D4F74A0
  Socket = 412
  Remote addr 10.0.0.6, port 59544
  Time Query=30196, Queued=0, Expire=0
  Buf length = 0x0fa0 (4000)
  Msg length = 0x0048 (72)
  Message:
    XID       0x9c67
    Flags     0x0120
      QR        0 (QUESTION)
      OPCODE    0 (QUERY)
      AA        0
      TC        0
      RD        1
      RA        0
      Z         0
      CD        0
      AD        1
      RCODE     0 (NOERROR)
    QCOUNT    1
    ACOUNT    0
    NSCOUNT   0
    ARCOUNT   1
    QUESTION SECTION:
    Offset = 0x000c, RR count = 0
    Name      "(2)19(3)248(3)212(3)206(3)zen(8)spamhaus(3)org(0)"
      QTYPE   A (1)
      QCLASS  1
    ANSWER SECTION:
      empty
    AUTHORITY SECTION:
      empty
    ADDITIONAL SECTION:
    Offset = 0x0031, RR count = 0
    Name      "(0)"
      TYPE   OPT  (41)
      CLASS  4096
      TTL    0
      DLEN   12
      DATA   
        Buffer Size  = 4096
        Rcode Ext    = 0
        Rcode Full   = 0
        Version      = 0
        Flags        = 0

9/1/2020 11:01:36 AM 1030 PACKET  000000000D4F74A0 UDP Snd 10.0.0.6        9c67 R Q [0181   D   FORMERR] A      (2)19(3)248(3)212(3)206(3)zen(8)spamhaus(3)org(0)
UDP response info at 000000000D4F74A0
  Socket = 412
  Remote addr 10.0.0.6, port 59544
  Time Query=30196, Queued=0, Expire=0
  Buf length = 0x0fa0 (4000)
  Msg length = 0x0048 (72)
  Message:
    XID       0x9c67
    Flags     0x8101
      QR        1 (RESPONSE)
      OPCODE    0 (QUERY)
      AA        0
      TC        0
      RD        1
      RA        0
      Z         0
      CD        0
      AD        0
      RCODE     1 (FORMERR)
    QCOUNT    1
    ACOUNT    0
    NSCOUNT   0
    ARCOUNT   1
    QUESTION SECTION:
    Offset = 0x000c, RR count = 0
    Name      "(2)19(3)248(3)212(3)206(3)zen(8)spamhaus(3)org(0)"
      QTYPE   A (1)
      QCLASS  1
    ANSWER SECTION:
      empty
    AUTHORITY SECTION:
      empty
    ADDITIONAL SECTION:
    Offset = 0x0031, RR count = 0
    Name      "(0)"
      TYPE   OPT  (41)
      CLASS  4096
      TTL    0
      DLEN   12
      DATA   
        Buffer Size  = 4096
        Rcode Ext    = 0
        Rcode Full   = 1
        Version      = 0
        Flags        = 0


Question: is it possible to disable the negative caching in the windows DNS service?
Comment
Watch Question

CERTIFIED EXPERT
Distinguished Expert 2019

Commented:
Negative caching is a short duration
60,120 seconds.

Use -debug to see the TTL.

You could setup a Linux filtering SMTP proxy .......
zc2
CERTIFIED EXPERT

Author

Commented:
Negative caching is a short duration
60,120 seconds.
Is there a way to reduce it even more?

Use -debug to see the TTL.
Please see attached the result of the following command:
dig -debug 19.248.212.206.zen.spamhaus.org @10.0.0.6 2>dns_debug.txt
I don't know how to read these data. Please help.

May be it is not the caching time, but what prevents the DNS server to retrieve the actual record, and how to fix that?

You could setup a Linux filtering SMTP proxy
There is a number of reasons preventing this solution.
dns_debug.txt
DrDave242Principal Support Engineer
CERTIFIED EXPERT

Commented:
According to this, you can configure the TTL of negative responses by setting the MaxNegativeCacheTtl registry value, and disable caching of negative responses entirely by setting it to zero:

https://docs.microsoft.com/en-us/windows-server/networking/dns/troubleshoot/disable-dns-client-side-caching 

Note that this is done on the client side (i.e., on the machine that's caching negative responses, not on the server that's giving out the negative responses), since caching is a function of the DNS Client service. There is a server-side cache too, of course, but now that I think about it, I don't know if negative responses get cached there at all.
zc2
CERTIFIED EXPERT

Author

Commented:
DrDave242,
That registry value was set after I got a solution on that my other question I mentioned. That does not help much though. hMailServer still (sometimes) does not see a DNSBL resolving. I am blaming the windows DNS service. I cannot set the system DNS server to an external one, because this machine is a domain controller and it needs its own DNS service running and be used.
CERTIFIED EXPERT
Top Expert 2014

Commented:
From https://www.spamhaus.org/faq/section/DNSBL%20Usage
Your DNSBL blocks nothing at all!
      Sometimes a misconfiguration can make it appear that a DSNBL is blocking nothing.

    The most common reason for this is a spelling error in the mailserver or DNSBL configuration.
    If you are using a free "open DNS resolver" service such as the Google Public DNS (8.8.8.8) in most cases they will return a "not listed" (NXDOMAIN) reply from Spamhaus' public DNSBL servers.
        We recommend using your own DNS servers when doing DNSBL queries to Spamhaus. If this is not possible, contact us for other options.

NOTE: Other free/open DNS resolvers include Alternate DNS, Comodo Secure, DNS.Watch, DynDNS, FreeDNS, Hurricane, NeuStar DNS Advantage, Norton ConnectSafe, OpenNIC, Puncat, Quad9, SafeDNS, Uncensored, Verisign, Yandex.DNS, or large cloud/outsourced public DNS servers, such as the ones operated by Level3, Verizon or AT&T. There are many more; this is not a complete list.

I think to solve your issue of queries to spamhaus not returning your expected results (which I don't think has to do with negative caching), you will have to configure your DNS servers not to use forwarders, but instead to only rely on root hints.

Also -
Free Use vs Commercial Use
      Use of the Spamhaus DNSBLs via DNS queries to our public DNSBL mirrors is free of charge for low-volume non-commercial use. To check if you qualify for free use, please see the Spamhaus DNSBL Usage Terms.

Use of the Spamhaus DNSBLs by ISPs, corporations and networks with high email traffic, or commercial spam filter companies requires a subscription to either the dedicated Data Feed Service (rsync) or to DQS (Data Query Service), both run by Spamhaus Technology. Compare those options here.
zc2
CERTIFIED EXPERT

Author

Commented:
The DNS service used the following forwarders:
84.200.69.80
84.200.70.40
8.20.247.20
1.1.1.1

I've removed them now relying on the root hints only.
CERTIFIED EXPERT
Distinguished Expert 2019

Commented:
Presumably you have conditional forwarders based on the setting...
Negative cache shield against a DOS and resource consumption if you get the same source.

How do you see it impacting you?

Caching and negative caching is a function of the caching DNS server. Forwarders are merely there to assist.
you could if you have RBL list, define conditional forwarders directing requests on the s\pecific RBL to the DNS servers listed as authoritative for it. Though it could be involved as some may have several DNS servers through out...
zc2
CERTIFIED EXPERT

Author

Commented:
Presumably you have conditional forwarders based on the setting...
What do you call "conditional"? I don't think that Windows DNS service has that feature. The forwarders were just a list in the DNS service preferences and I guess were used starting from the top of the list, the others probably were used only in a case of a timeout.
Negative cache shield against a DOS and resource consumption if you get the same source.
May be, but it may be harmful when a DNS BL is involved, since the BL records may appear dynamically.
How do you see it impacting you?
The problem is described in my previous question. The hMailServer log reports that a DNS request with a BL suffix brings no record. If I do the same request manually, I can see a record returned. Setting the value of MaxNegativeCacheTtl = 0 did not help.
CERTIFIED EXPERT
Distinguished Expert 2019

Commented:
it does, you can add a forwarder for all, or you can add a forwarder for a specific domain.
which DNS server
https://medium.com/tech-jobs-academy/dns-forwarding-and-conditional-forwarding-f3118bc93984

If it is on the list, for the duration it is active, your server will either reject or defer the messages depending on your setting.
You are relying on a third party provider. the error message when your system rejects the connection is that the source is listed as spam.
The point of relying on a third party entity is because you can not implement this on your own.

Double check whether the request you are making is the same.
not sure what your forwarders are such that the request through the wrong forwarder returns the wrong information.
I.e. you call a wrong number and ask a question before verifying that you called the right place. you would rely on the response.
consider this you want to go to store 1. in your rush, you dialed store 2. preoccupied, you did not notice the store name announcement. you then ask whether they are open tomorrow at a specific time. they tell you they are not.
A day later, you run into a friend who asks whether you got the item you mentioned while telling you he went to Store A and got the item yesterday..
zc2
CERTIFIED EXPERT

Author

Commented:
Double check whether the request you are making is the same.
Yes, I am issuing the same request, and the local windows DNS (10.0.0.8) responds with NXDOMAIN, not trying to check again.
PS C:\> host 81.143.130.170.new.spam.dnsbl.sorbs.net 8.8.8.8
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:

81.143.130.170.new.spam.dnsbl.sorbs.net has address 127.0.0.6

PS C:\> host 81.143.130.170.new.spam.dnsbl.sorbs.net 10.0.0.8
Using domain server:
Name: 10.0.0.8
Address: 10.0.0.8#53
Aliases:

Host 81.143.130.170.new.spam.dnsbl.sorbs.net not found: 3(NXDOMAIN)

Open in new window

The windows DNS has all forwarder removed, relying only on the root hints.

Is there a way to change this behaviour?
DrDave242Principal Support Engineer
CERTIFIED EXPERT

Commented:
You may want to perform a packet capture on your DNS server to see whether it's actually sending that query out to one of the root servers and getting a response.

Have you checked the root hints on your server to make sure they're all in the list and that their names are able to resolve?

Also, since you're definitely getting a response from 8.8.8.8, what happens if you configure it as your DNS server's only forwarder? (I wouldn't leave it configured like that, but it could be useful while testing.)

zc2
CERTIFIED EXPERT

Author

Commented:
perform a packet capture
Instead of packet capturing I turned on the DNS service debug logging. I see that it actually  records every request inbound and outbound. I can see that when a NXDOMAIN is queried, no attempts to re-request the root servers is made. But after a couple of minutes when I repeated the attempt, i actually makes request to some external DNS server. I conclude the NXDOMAIN is cached for a minute or so.
Have you checked the root hints on your server to make sure they're all in the list and that their names are able to resolve?
Not sure what you mean. The list of root servers came with windows and probably updates with windows updates which we do regularly. Since we don't have general issues with DNS resolving, I guess those roots are OK.
configure it as your DNS server's only forwarder?
I had that setup once. No difference. In fact, I tried to put different forwarders in different order, trying to find one which always returns a DNS BL record even if it is a fresh one. No avail.

I added an event listener to hMailServer which tries to check the DNS BL on every connection to the mail server. My idea was to pre-cache the answer, since sometimes the first query to a world DNS server does not bring result, but the second attempt does.
That surely does not help much, since NXDOMAINs are also cached.
CERTIFIED EXPERT
Distinguished Expert 2019

Commented:
You are entering a battle in a loosing war.

Each caching server has a negative cache. You are focusing on your own server. while the issue could be with your upstream, forwarder.
in this case it is google's.
When an entity is spaming it hits not just you but many others, at the time of the initial flury, some may also use google and will get a negative response. which will be retained

The negative response will be cached for 30 minutes. Based on the Zone settings for dnsbl.sorbs.net

You could try limiting your negative caching by adding conditional redirects for dnsbl.sorbs.net as an example to the authoritative servers responsible for this zone. it will reflect the authoritatie informaztion as it is added.
dig dnsbl.sorbs.net. NS
zc2
CERTIFIED EXPERT

Author

Commented:
Each caching server has a negative cache.
Why most of the forwarders / external public servers return a positive record right away? Following that logic they would also respond with cached negative answers. But they do not. Only windows DNS does.

I am trying to add the conditional forwarders.
CERTIFIED EXPERT
Top Expert 2014
Commented:
This one is on us!
(Get your first solution completely free - no credit card required)
UNLOCK SOLUTION
CERTIFIED EXPERT
Distinguished Expert 2019

Commented:
Without a basis for your question it is hard to answer. it is the same as telling your colleague that whenever you call a specific vendor you are waiting on hold for at least 45 minutes. Your colleague as a retort says, that is not possible. Every time I call, i get through right away.

The debug I asked to use
nslookup -debug query
you posted a debug of running dig  with a query that returned no results.
nslookup -debug contain less extraneous information.

The suggestion footech could reduce your .....your DNS could retrieve the entire ZONE from them, such that your server will be authoritative ......no caching/...
zc2
CERTIFIED EXPERT

Author

Commented:
footech,
Yes we do fit all three of those. It's about 1K requests per day.
D:\>grep .zen. "C:\Program Files (x86)\hMailServer\Logs\hmailserver_2020-09-02.log" | wc
   1160   15089  147483

D:\>grep .zen. "C:\Program Files (x86)\hMailServer\Logs\hmailserver_2020-09-01.log" | wc
    872   11363  110859

D:\>grep .zen. "C:\Program Files (x86)\hMailServer\Logs\hmailserver_2020-08-31.log" | wc
   1167   15208  147902

Open in new window


I understand that direct querying the BL provider's NS would abuse their server. So I would prefer an other option if possible.
Is there a DNS query I could issue to force our server to ignore the cache and do the resolving again? I could put that to the hMailServer's event connection handler.

Here are the current root hints:
root hint 1/2root hints 2/2Please advice if I need to alter them. The DNS server's OS is Windows2012R2


arnold,
I set a conditional forwarder for Sorbs as follows:sorbs CFPlease advice, is this a correct way to do so.

I will post a debug of a negative resulted query as soon as I could catch one. Do you need a debug output of a query with a positive result?
zc2
CERTIFIED EXPERT

Author

Commented:
here is a nslookup debug

D:\>nslookup -debug 231.14.19.72.new.spam.dnsbl.sorbs.net. 10.0.0.8 >D:\temp\231.14.19.72.new.spam.dnsbl.sorbs.net@10.0.0.8.txt
*** server04 can't find 231.14.19.72.new.spam.dnsbl.sorbs.net.: Non-existent domain
------------
Got answer:
    HEADER:
	opcode = QUERY, id = 1, rcode = NOERROR
	header flags:  response, auth. answer, want recursion, recursion avail.
	questions = 1,  answers = 1,  authority records = 0,  additional = 0

    QUESTIONS:
	8.0.0.10.in-addr.arpa, type = PTR, class = IN
    ANSWERS:
    ->  8.0.0.10.in-addr.arpa
	name = server04
	ttl = 3600 (1 hour)

------------
Server:  server04
Address:  10.0.0.8

------------
Got answer:
    HEADER:
	opcode = QUERY, id = 2, rcode = NXDOMAIN
	header flags:  response, want recursion, recursion avail.
	questions = 1,  answers = 0,  authority records = 1,  additional = 0

    QUESTIONS:
	231.14.19.72.new.spam.dnsbl.sorbs.net, type = A, class = IN
    AUTHORITY RECORDS:
    ->  dnsbl.sorbs.net
	ttl = 359 (5 mins 59 secs)
	primary name server = rbldns0.sorbs.net
	responsible mail addr = dns.isux.com
	serial  = 1599160150
	refresh = 7200 (2 hours)
	retry   = 7200 (2 hours)
	expire  = 604800 (7 days)
	default TTL = 3600 (1 hour)

------------
------------
Got answer:
    HEADER:
	opcode = QUERY, id = 3, rcode = NXDOMAIN
	header flags:  response, want recursion, recursion avail.
	questions = 1,  answers = 0,  authority records = 1,  additional = 0

    QUESTIONS:
	231.14.19.72.new.spam.dnsbl.sorbs.net, type = AAAA, class = IN
    AUTHORITY RECORDS:
    ->  dnsbl.sorbs.net
	ttl = 359 (5 mins 59 secs)
	primary name server = rbldns0.sorbs.net
	responsible mail addr = dns.isux.com
	serial  = 1599160150
	refresh = 7200 (2 hours)
	retry   = 7200 (2 hours)
	expire  = 604800 (7 days)
	default TTL = 3600 (1 hour)

------------

Open in new window


D:\>nslookup -debug 231.14.19.72.new.spam.dnsbl.sorbs.net. 8.8.8.8 >D:\temp\231.14.19.72.new.spam.dnsbl.sorbs.net@8.8.8.8.txt
Non-authoritative answer:
------------
Got answer:
    HEADER:
	opcode = QUERY, id = 1, rcode = NOERROR
	header flags:  response, want recursion, recursion avail.
	questions = 1,  answers = 1,  authority records = 0,  additional = 0

    QUESTIONS:
	8.8.8.8.in-addr.arpa, type = PTR, class = IN
    ANSWERS:
    ->  8.8.8.8.in-addr.arpa
	name = dns.google
	ttl = 21429 (5 hours 57 mins 9 secs)

------------
Server:  dns.google
Address:  8.8.8.8

------------
Got answer:
    HEADER:
	opcode = QUERY, id = 2, rcode = NOERROR
	header flags:  response, want recursion, recursion avail.
	questions = 1,  answers = 1,  authority records = 0,  additional = 0

    QUESTIONS:
	231.14.19.72.new.spam.dnsbl.sorbs.net, type = A, class = IN
    ANSWERS:
    ->  231.14.19.72.new.spam.dnsbl.sorbs.net
	internet address = 127.0.0.6
	ttl = 3599 (59 mins 59 secs)

------------
------------
Got answer:
    HEADER:
	opcode = QUERY, id = 3, rcode = NOERROR
	header flags:  response, want recursion, recursion avail.
	questions = 1,  answers = 0,  authority records = 1,  additional = 0

    QUESTIONS:
	231.14.19.72.new.spam.dnsbl.sorbs.net, type = AAAA, class = IN
    AUTHORITY RECORDS:
    ->  dnsbl.sorbs.net
	ttl = 1799 (29 mins 59 secs)
	primary name server = rbldns0.sorbs.net
	responsible mail addr = dns.isux.com
	serial  = 1599162783
	refresh = 7200 (2 hours)
	retry   = 7200 (2 hours)
	expire  = 604800 (7 days)
	default TTL = 3600 (1 hour)

------------
Name:    231.14.19.72.new.spam.dnsbl.sorbs.net
Address:  127.0.0.6

Open in new window

CERTIFIED EXPERT
Top Expert 2014

Commented:
You have some root hints that are out-of-date.  See https://www.iana.org/domains/root/servers

I'm not aware of any way to bypass or otherwise ignore the cache on the server.  To the best of my knowledge, negative caching is a part of the RFCs that is required.
CERTIFIED EXPERT
Distinguished Expert 2019
Commented:
This one is on us!
(Get your first solution completely free - no credit card required)
UNLOCK SOLUTION
zc2
CERTIFIED EXPERT

Author

Commented:
footech,
Thank you, I have updated the list of the root servers.

arnold,
I've added all "dnsbl.sorbs.net" NS servers as conditional forwarders for "dnsbl.sorbs.net".
I checked the DNS service log and I can see sometimes a request is made to a Sorbs' NS, but there is no received packed. Does that indicate they somehow prevents direct access to their NS servers or just some of UDP packets have lost and that's normal?
CERTIFIED EXPERT
Distinguished Expert 2019

Commented:
SORBS has a dedictated service where potentially you either get access to the zone transfer rights....
it s impossible to determine why you hit a non response...
zc2
CERTIFIED EXPERT

Author

Commented:
SORBS has a dedictated service where potentially you either get access to the zone transfer rights....
What is the service and how to use that?
zc2
CERTIFIED EXPERT

Author

Commented:
The DNS service log says a request was made to a Sorbs forwarder, but a NXDOMAIN was returned. After a couple of minutes a similar request returns 127.0.0.6
Is that normal?
9/4/2020 2:05:24 PM 15A0 PACKET  000000B7A79F2080 UDP Rcv 10.0.0.6        dca9   Q [0001   D   NOERROR] A      (3)244(2)14(2)19(2)72(8)problems(5)dnsbl(5)sorbs(3)net(0)
9/4/2020 2:05:24 PM 15A0 PACKET  000000B7BF2E80D0 UDP Snd 216.12.212.155  e72b   Q [0001   D   NOERROR] A      (3)244(2)14(2)19(2)72(8)problems(5)dnsbl(5)sorbs(3)net(0)
9/4/2020 2:05:24 PM 15A0 PACKET  000000B7B156A1E0 UDP Rcv 216.12.212.155  e72b R Q [0385 A D  NXDOMAIN] A      (3)244(2)14(2)19(2)72(8)problems(5)dnsbl(5)sorbs(3)net(0)
9/4/2020 2:05:24 PM 15A0 PACKET  000000B7A79F2080 UDP Snd 10.0.0.6        dca9 R Q [8381   DR NXDOMAIN] A      (3)244(2)14(2)19(2)72(8)problems(5)dnsbl(5)sorbs(3)net(0)

Open in new window

CERTIFIED EXPERT
Distinguished Expert 2019

Commented:
it could be if the IP was just registered.

I do not have access to the SORBS underlying data to respond with knowledge.
An entity might try to delist their IP and it gets relisted through the SORBS detection network.
zc2
CERTIFIED EXPERT

Author

Commented:
I made a script which sends me the DNS server log each time the hMailServer fails to find a BL domain but on an attempt after 5 minutes the BL record can be found using a public DNS server (1.1.1.1)
After monitoring this for I while, I can say in about 50% cases the BL record can also be obtained from the local DNS service, but in the other half the local service still returns NXDOMAIN not even trying to request an authority DNS again.

As I understand, there is no way to disable the negative cache on the windows DNS service.

Using the BL provider's NS servers as BL domain suffix conditional servers does not help much. They often return NXDOMAIN on a first request (even though they return a BL record after a while).

Gain unlimited access to on-demand training courses with an Experts Exchange subscription.

Get Access
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Empower Your Career
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE

Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions
Unlock the solution to this question.
Join our community and discover your potential

Experts Exchange is the only place where you can interact directly with leading experts in the technology field. Become a member today and access the collective knowledge of thousands of technology experts.

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.