Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    DHCP contains a search domain, causing incorrect 404…

    Scheduled Pinned Locked Moved Firewalling
    16 Posts 3 Posters 6.0k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Cry HavokC
      Cry Havok
      last edited by

      Err, no, that says that <anything>resolves to 10.0.1.110.  Wikipedia has a good article for detail.

      Very simply, if the name you are looking up isn't qualified (doesn't end in .) then it is assumed to be in the current domain.  This means that if your doman is hannonhill.com. and somebody does a DNS lookup for www.google.com, the first attempt will be for www.google.com.hannonhill.com.  If you're using wildcard records then that will resolve.

      There are 2 solutions.  The first is to stop using wildcard records.  The other is to educate people to always fully qualify hostnames.  Guess which one will work ;)</anything>

      1 Reply Last reply Reply Quote 0
      • B
        bradley.wagner
        last edited by

        Should the same be true in the browser though? For example, why if I type http://google.com does it correctly resolve to google (not http://google.com.ourdomain.com) but if I type http://asdfasdfasdfasdf.com it goes to our Apache's 404 page. It seems like if it's going to catch EVERYTHING we shouldn't be able to hit anything outside not just domains that don't exist.

        Also, how would you go about taking an entire domain and pointing it to a single IP? For example, we also host a bunch of sub-domains on the whatever1.com and I don't want to have to add an entry to the DNS every time we setup a new sub-domain.

        Thanks!

        1 Reply Last reply Reply Quote 0
        • K
          ktims
          last edited by

          As far as I understand most resolvers will assume a fully-qualified query even if you don't specify one, and if they don't get a response will then check the search domain. nslookup, at least some implementations, doesn't do this.

          I don't use wildcard DNS so I'm not sure if there's a way to specify that the wildcard should only go one level deep, but I suspect not.

          1 Reply Last reply Reply Quote 0
          • B
            bradley.wagner
            last edited by

            @ktims:

            As far as I understand most resolvers will assume a fully-qualified query even if you don't specify one, and if they don't get a response will then check the search domain. nslookup, at least some implementations, doesn't do this.

            I don't use wildcard DNS so I'm not sure if there's a way to specify that the wildcard should only go one level deep, but I suspect not.

            Does that mean that if I had an entry in my company's DNS for www.google.com in the mycompany.com origin:

            
            $ORIGIN mydomain.com.
            @     IN        SOA     apps.mydomain.com. (
                                    2001062501 ; serial
                                    21600      ; refresh after 6 hours
                                    3600       ; retry after 1 hour
                                    604800     ; expire after 1 week
                                    86400 )    ; minimum TTL of 1 day
            
                    IN      NS      apps.mydomain.com.
            
            www.google.com     IN        A        10.0.1.110
            
            

            it would actually result in www.google.com never making it out of the office? Also, if that's the case why isn't the wildcard entry doing that now? If it's resolving everything to an internal server, I should never be able to get out.

            I think ultimately I would like it to STOP appending our domain to unqualified queries and stop sending:

            
            search mydomain.com
            
            

            in the DHCP leases and this is where PFSense comes back into it.

            1 Reply Last reply Reply Quote 0
            • B
              bradley.wagner
              last edited by

              Another bizarre happening: when I remove the wildcard, things like jira.mydomain.com which used to resolve to our internally hosted JIRA instance no longer work even though there is definitely an entry for this in our public DNS that should route it back to our office and through our Apache instance.

              I tried a "dig jira.mydomain.com" and got no answer from within the office even though I do get an answer from outside.

              What gives?

              1 Reply Last reply Reply Quote 0
              • K
                ktims
                last edited by

                Does that mean that if I had an entry in my company's DNS for www.google.com in the mycompany.com origin:

                I'm pretty sure this is resolver implementation dependent. It depends if the resolver first searches the search domain, or first checks for a matching FQDN. I think most implementations do the latter, and only fall back to the search domain if no FQDN is found - in which case that record wouldn't normally be hit and www.google.com would resolve normally - but as you've seen with nslookup, this isn't always the case.

                I tried a "dig jira.mydomain.com" and got no answer from within the office even though I do get an answer from outside.

                I'm not totally sure about this one, the pfSense box could be acting as an authoritative server, or it could be a cache issue, or it could be that your zone isn't configured properly. Post your zone file and the results of dig +trace internally and we'll see.

                I think ultimately I would like it to STOP appending our domain to unqualified queries and stop sending:

                If you really want to override this, you'll need to modify /etc/inc/services.inc and change the default config. While you can override the domain-name option in config.xml, from a quick glance at the code, it looks like there's no way to disable it entirely. Removing it from the default config block should work though, look for the line that reads

                option domain-name "{$syscfg['domain']}";
                ```and remove it, then restart dhcpd and re-request all your leases.
                1 Reply Last reply Reply Quote 0
                • B
                  bradley.wagner
                  last edited by

                  @ktims:

                  I'm not totally sure about this one, the pfSense box could be acting as an authoritative server, or it could be a cache issue, or it could be that your zone isn't configured properly. Post your zone file and the results of dig +trace internally and we'll see.

                  Here is our db.office file:

                  
                  $ORIGIN hannonhill.com.
                  
                  @     IN        SOA     apps.hannonhill.com. office.hannonhill.com. (
                                          2001062501 ; serial
                                          21600      ; refresh after 6 hours
                                          3600       ; retry after 1 hour
                                          604800     ; expire after 1 week
                                          86400 )    ; minimum TTL of 1 day
                  
                          IN      NS      apps.hannonhill.com.
                  
                  ; external
                  
                            IN      A       64.13.223.43
                  www   IN      A       64.13.223.43
                  
                  ; internal
                  
                  mysql  IN      A       10.0.1.103
                  proxy  IN      A        10.0.1.110
                  
                  ; used to have the following wildcard
                  ; *      IN       A       10.0.1.110
                  
                  

                  The proxy is our front-end Apache server that handles all the proxying for things like support.hannonhill.com (our JIRA instance).

                  The results of the "dig +trace" are:

                  
                  ; <<>> DiG 9.4.2-P2 <<>> +trace
                  ;; global options:  printcmd
                  .			518256	IN	NS	C.ROOT-SERVERS.NET.
                  .			518256	IN	NS	D.ROOT-SERVERS.NET.
                  .			518256	IN	NS	E.ROOT-SERVERS.NET.
                  .			518256	IN	NS	F.ROOT-SERVERS.NET.
                  .			518256	IN	NS	G.ROOT-SERVERS.NET.
                  .			518256	IN	NS	H.ROOT-SERVERS.NET.
                  .			518256	IN	NS	I.ROOT-SERVERS.NET.
                  .			518256	IN	NS	J.ROOT-SERVERS.NET.
                  .			518256	IN	NS	K.ROOT-SERVERS.NET.
                  .			518256	IN	NS	L.ROOT-SERVERS.NET.
                  .			518256	IN	NS	M.ROOT-SERVERS.NET.
                  .			518256	IN	NS	A.ROOT-SERVERS.NET.
                  .			518256	IN	NS	B.ROOT-SERVERS.NET.
                  ;; Received 500 bytes from 10.0.1.110#53(10.0.1.110) in 1 ms
                  
                  .			518400	IN	NS	a.root-servers.net.
                  .			518400	IN	NS	b.root-servers.net.
                  .			518400	IN	NS	c.root-servers.net.
                  .			518400	IN	NS	d.root-servers.net.
                  .			518400	IN	NS	e.root-servers.net.
                  .			518400	IN	NS	f.root-servers.net.
                  .			518400	IN	NS	g.root-servers.net.
                  .			518400	IN	NS	h.root-servers.net.
                  .			518400	IN	NS	i.root-servers.net.
                  .			518400	IN	NS	j.root-servers.net.
                  .			518400	IN	NS	k.root-servers.net.
                  .			518400	IN	NS	l.root-servers.net.
                  .			518400	IN	NS	m.root-servers.net.
                  ;; Received 492 bytes from 128.63.2.53#53(H.ROOT-SERVERS.NET) in 100 ms
                  
                  

                  If I do a "dig support.hannonhill.com" from inside the office, I get:

                  
                  ; <<>> DiG 9.4.2-P2 <<>> support.hannonhill.com
                  ;; global options:  printcmd
                  ;; Got answer:
                  ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 47773
                  ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
                  
                  ;; QUESTION SECTION:
                  ;support.hannonhill.com.		IN	A
                  
                  ;; AUTHORITY SECTION:
                  hannonhill.com.		86400	IN	SOA	apps.hannonhill.com. office.hannonhill.com. 2001062501 21600 3600 604800 86400
                  
                  ;; Query time: 0 msec
                  ;; SERVER: 10.0.1.110#53(10.0.1.110)
                  ;; WHEN: Tue Mar  3 13:36:37 2009
                  ;; MSG SIZE  rcvd: 88
                  
                  

                  But when I login to a server outside the office and try the same dig it correctly gets routed to our office:

                  
                  ; <<>> DiG 9.2.4 <<>> support.hannonhill.com
                  ;; global options:  printcmd
                  ;; Got answer:
                  ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28217
                  ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
                  
                  ;; QUESTION SECTION:
                  ;support.hannonhill.com.		IN	A
                  
                  ;; ANSWER SECTION:
                  support.hannonhill.com.	86400	IN	CNAME	office.hannonhill.com.
                  office.hannonhill.com.	86400	IN	A	69.15.214.217
                  
                  ;; Query time: 146 msec
                  ;; SERVER: 66.33.216.208#53(66.33.216.208)
                  ;; WHEN: Tue Mar  3 10:35:23 2009
                  ;; MSG SIZE  rcvd: 77
                  
                  

                  I would think that since the support.hannonhill.com is not listed in our internal DNS it should be consulting the external DNS servers.

                  1 Reply Last reply Reply Quote 0
                  • K
                    ktims
                    last edited by

                    Okay, well your zone file doesn't include records for support or jira, so they won't be resolved. You also don't have a record for apps.hannonhill.com, which is specified as your NS server, and that could cause problems as well. This configuration will be even more problematic if the internal zone file is separate and different than what's published to the Internet DNS, which is probably why you're having these issues. If you provide a zone file, the server is authoritative for that domain, and it won't refer queries to another server for that domain.

                    If you want to have special internal DNS records for your LAN servers, I think the best way to do this is to create a separate subdomain, say office.hannonhill.com and use that for all internal services, and refer all other queries to the Internet NS for hannonhill.com. You should be able accomplish this with a zone file similar to the following, on your internal DNS server - the Internet DNS won't need to change:

                    
                    $ORIGIN hannonhill.com.
                    
                    @     IN        SOA     dns129.a.register.com. root.register.com. (
                                            200012300; serial
                                            10800; refresh after 6 hours
                                            3600       ; retry after 1 hour
                                            604800     ; expire after 1 week
                                            86400 )    ; minimum TTL of 1 day
                    
                            IN      NS      dns129.a.register.com.
                            IN      NS      dns249.d.register.com.
                            IN      NS      dns025.b.register.com.
                            IN      NS      dns243.c.register.com.
                    
                    $ORIGIN office.hannonhill.com.
                    
                            IN      NS      ns1.office.hannonhill.com.
                    
                    ns1     IN      A      10.0.1.1      ; your internal nameserver with this zone file
                    
                    mysql   IN      A       10.0.1.103
                    proxy   IN      A       10.0.1.110
                    
                    

                    Basically this should refer any queries for hannonhill.com to the registered Internet name servers (I took these from what's currently set in DNS), but point resolvers at ns1.office.hannonhill.com. for that domain. You'd then set the internal pfSense domain to office.hannonhill.com. This a) won't expose any of your internal configuration to the internet since the Internet DNS doesn't contain the NS record for office.hannonhill.com, or any of the records under that domain, and b) should solve your wildcard DNS problem since you don't have any wildcards on the internal domain, which the local server is authoritative for. You can still use wildcards on the Internet DNS if you wish, but as long as the pfSense domain is office.hannonhill.com and you've got it set up this way, you shouldn't run into any issues.

                    1 Reply Last reply Reply Quote 0
                    • B
                      bradley.wagner
                      last edited by

                      @ktims:

                      Okay, well your zone file doesn't include records for support or jira, so they won't be resolved. You also don't have a record for apps.hannonhill.com, which is specified as your NS server, and that could cause problems as well. This configuration will be even more problematic if the internal zone file is separate and different than what's published to the Internet DNS, which is probably why you're having these issues. If you provide a zone file, the server is authoritative for that domain, and it won't refer queries to another server for that domain.

                      Sorry, I truncated everything but what I thought was the relevant part of the file. We do have an entry for the nameserver apps.hannonhill.com that points to its internal IP. I did not realize that with the zone file the server would be authoritative for that domain; that helps!

                      We'll look into creating another subdomain to be used internally. Still sounds like it won't solve the problem of having to put DNS entries in our zone file for all of our internal application servers that need to point to our Apache instance and then proxied to the appropriate place. The wildcard took care of this for us before.

                      1 Reply Last reply Reply Quote 0
                      • K
                        ktims
                        last edited by

                        I think your only alternative is to remove the search domain entirely, which also means your users will have to enter the FQDN in their browser/client. And it means you have to make a small change to the pfSense code.

                        I still think the best route is to actually maintain a zone file instead of using a catchall. Where wildcards are useful is sites like deviantart and sourceforge that use subdomains for user accounts. If you've got a relatively static set of hostnames it makes more sense to maintain a proper zone.

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post
                        Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.