Closed Bug 88217 Opened 23 years ago Closed 8 years ago

default domain (domain suffix appended to non-FQDN hostnames)

Categories

(Core :: Networking, enhancement)

x86
All
enhancement
Not set
normal

Tracking

()

RESOLVED WONTFIX
Future

People

(Reporter: benc, Unassigned)

References

(Blocks 1 open bug)

Details

(Keywords: helpwanted)

The default domain (domain suffix appended to non-FQDN hostnames) should be
configurable. This would be much more useful than the existing
www.<HOSTNAME>.com and requested www.<HOSTNAME>.[org|net|edu] features.

DCHP does support configuring this:

3.17. Domain Name

http://www.faqs.org/rfcs/rfc2132.html

   This option specifies the domain name that client should use when
   resolving hostnames via the Domain Name System.

   The code for this option is 15.  Its minimum length is 1.

    Code   Len        Domain Name
   +-----+-----+-----+-----+-----+-----+--
   |  15 |  n  |  d1 |  d2 |  d3 |  d4 |  ...
   +-----+-----+-----+-----+-----+-----+--

However, many DHCP servers do not seem to use this, and often I want to override
 it.
Blocks: 88218
Summary: [RFE] default domain → [RFE] default domain
Target Milestone: --- → mozilla1.0
there's already a bug filed to make this configurable, but I can't find it at
the moment (it may well be WONTFIX).
Whiteboard: DUPEME
benc: i'm not sure i understand what you are proposing.  DHCP is not always
available, and when it is, how does it help us choose a hostname domain suffix?

are you suggesting that if the DHCP server specifies a domain name with a 
suffix of XYZ that we should assume a suffix of XYZ when a user enters a hostname
without a domain suffix?

i agree that it would be nice to have a preference someplace for users to tell
mozilla what the default hostname domain suffix should be, but i'm not sure i 
like the idea of some auto detection method based on DHCP.
The DHCP discussion is a bit of a red-herring. If I work at foo.com, and I type
in a URL http:/web/, I expect it to let the os resolve it to web.foo.com.
Currently, Moz tries to be clever and turns http://web/ into http://www.web.com/
-- emphatically NOT the same thing. This breaks the corporate intranet at both
my current and previous jobs. Essentially disallows me from using Moz at all.

I know the www.<HOSTNAME>.com stuff is clever and all, but it needs to be
configurable so that Moz at least tries the default domain at some point!
I think what the original requestor is asking for is to
have hostnames resolved per the standard resolver configuration,
eg. if I have my resolver configured to a default domain of 'xyz.bar'
and enter hostname 'foo', Mozilla should simply give 'foo' to the
resolver and let it resolve it to 'foo.xyz.bar', not try to get cute
and equate 'foo' to 'www.foo.com'.

Short form: the URL http://foo/ should go to the same host as would
be pinged by 'ping foo' at a command/shell prompt in the OS in question.
At least on Linux, it appears to work as requested, using the domain info in
/etc/resolv.conf.  If I enter "intranethost", it goes to the right place.  If
I'm directly connected to the internet, then it can't go there, so it tries to
go to "www.intranethost.com".
I'm saying that I (the user) should be able to set default domain in a profile.

Despite the fact that the OS, the shell, and DHCP being able to provide this
information, it often isn't the default domain I want to use for URL's with
hostnames.

I think some of the comments that I made in bug 88218 are relevant here. Please
look at those, because this RFE fits in with a larger change in networking
philosophy of Mozilla I am proposing.

DHCP can provide a default domain, but I often see that DHCP administrators did
NOT configure this (for example, our corporate dialup at Netscape neglected to
do this).

chris:

I belive the actual behavior is that your hostname is sent to the resolver, so
if your resolver has a default domain or search domains, they are checked. THEN,
if that fails, mozilla autoamatically uses that "www.<hostname>.com" query that
I dislike so much.

My point is that a user should be able to override the system system whether
that is resolv.conf, DHCP, or an environment variable (in UNIX, rarely used, but
its there).

benc, you're right about the usefulness of being able to direct Moz with what
domain to use -- but I see that as a true RFE. 

At least on Solaris 2.8 and Debian testing, with a properly configured
/etc/resolv.conf (domain foo.com,search foo.com), http://web/ does NOT resolve
to web.foo.com as it does when I ping it. This is using 9.1, pulling the
binaries off of the website. This seems to me to be a bug, more than an RFE. But
I'd rather wait a bit before opening another bug. 
I'm starting to feel like I don't even know what mozilla is "supposed" to do
anymore... does anyony know where the existing docs are?
Blocks: 80808
This is the job of the resolver. Any sane OS (and Windows) provides a way to do
this, and if they don't you should take up with them rather then bloat Mozilla
by trying to make it a resolver library.

Since I'm only familiar with UNIX, I'll explain how this works on that platform.
An application ("Mozilla") passes any input it needs to resolve to a function
like gethostbyname(). It doesn't matter whether it's "foo" or "www.yahoo.com".
The resolver checks one of it's configuration files (commonly /etc/resolv.conf)
for the search path (there can be multiple). It then talks to the DNS server
it's configured to use, and asks for the IP of foo.search1. Then foo.search2.
Then just foo. If a user doesn't like the system defaults, they set the
enviroment variable "LOCALDOMAIN" to whatever they want their search path to be.
If you want "yahoo" in the URL bar to go to a particular famous website, set
LOCALDOMAIN to "com". It's not the applications place to be fiddling with any of
that.

There IS an open bug about making some key combination change 'foo' to
www.foo.com in the URL bar (shift+enter maybe), but to do it automatically sends
kids looking for information on the whitehouse to a porn site.

If multiple search engines were implemented (bug 84908), you could use Google's
"Feeling Lucky" or Netscape's "Keyword" systems to find a site based on input,
but just slaping on .com is NOT the way to try and locate relevant content.
No. The job of the resolver is to do name resolution. Resolvers always have (and
always will) support the use of a literal, "." terminated string in the request.

What your are talking about is the search domain and default domain completion
routines that are typical in most resolvers.

Asa said not to hurt your feelings, but history will.

What you are describing is the current "standard" resolver behavior for doing
searches. This has changed over time, I can think of changes in the way MacOS
and Solaris did this for a fact. Most of the information I have on these changes
has to do with the fact that these search methods are really mindless and
wasteful on DNS servers. As the usage paterns of the network change, we can
expect resolver behavior to continue to evolve.

My point is that authors are lazy, and create unclear pointers when they do not
use FQDNs. (This is the same horrible problem we have with serving file: URLs,
and I have a component full of those problems). The point is that the user is
probably aware of and should have the power to set this context. 

Since it is clear that various context changes for default domain do not work
reliabily in many cases, we should certainly offer this feature.

If you don't like it, you won't need to use it.
Whiteboard: DUPEME
The DHCP example cited in Ben's original report is just a way for DHCP to
control a DHCP client's resolver domain/search variables, and as such is
completly irrelevant. Resummarizing, as 'default domain' already is
configurable, though the resovler.

Is
  foo -> www.foo.com
  foo.com -> www.foo.com
documented anywhere? Are there any other substitutions the current
implementation does?
Summary: [RFE] default domain → [RFE] configurable URL guessing
I think you are missing the point of this RFE. You should at least check with an
active contributor of a bug before changing the summary. If the bug is stale,
that's a different story.

Your questions about hostname expansion are covered in other bugs.

The point is that people move from network to network, either by dialing
different ISPs, switching buildings, or connecting to VPN's.

When they do, the desired default domain changes. In many cases, users remain
"stuck" with their old resolver configuration. It would be prudent to solve this
problem at the mozilla level. 

I've given other supporting examples in other dns bugs I've filed, so I think
most people know where I'm coming from. Here's an example for the record, in
this bug:

I share a laptop at home with someone. The laptop was originally conigured for
pacbell.net (DSL service). So the default domain is "pacbell.net".

Currently, we use Mindspring DSL service for most connections. When we connect,
their DHCP server does not chnage the default domain to "mindspring.com". 

(Here you see a dialup service that does not successfully modify the resolver
configuration).

For our telecommuting, both of use make VPN connections. In my case, I connect
to the Netscape campus via a VPN (called SERA), and it does not change my
default domain to "mcom.com".

There are certain individuals who persist in sending out daily emails to us,
which often contain a single, unqualified hostname. Because they mean
hostname.mcom.com, what I want is a profile-level pref that lets me fully
qualify hostnames with the default domain of my choice. 

Because I do not have this feature, clicking on this link results in a failure
to connect to hostname.pacbell.net. I have to cut the link into a location
field, and then hack in the mcom.com link by hand.

Changing the default domain on the computer is not a solution, because I have to
restart in windows.

The basic design principle here is that a user should be able to disambiguate a
hostname reference at the application level. The LOCALDOMAIN example is the UNIX
way (because utilties run from a shell inherit the variables), but it does not
solve user level problems (like a UNIX user switching proxies) or non-UNIX users.

A more subtle design aspect is in play here as well: URLs are basically scripted
interfaces to network objects (a principle suggested in RFC 1630 and RFC 1738).
As such the user interaction is different from interactive services, like UNIX
utilities. If you click on "http://hostname" in an email, if it does not work,
you cannot easily correct it (what if it's inline images in an email, you are
going to save the file to disk, open it in composer, hack in the
domainnames...?). If you are using telnet, or ping, or anything in a UNIX
environment, you can just say "oh, duh, TELNET hostname.mcom.com" and type it again.

I think this explaination is sufficiently bulletproof.

All of the hostname -> www.hostname.com stuff is in other bugs, and the problem
descriptions are current, so lets stick to the topic here. 

NOTE: I am not suggesting we remove the other features.
Summary: [RFE] configurable URL guessing → [RFE] default domain
> The point is that people move from network to network, either by dialing
> different ISPs, switching buildings, or connecting to VPN's.

You *DO* realize that's an argument to ***USE*** the resolver for expantion,
don't you? Or do you intend to go into prefs every time you switch between those
networks and reset your domain? The DHCP example you originally mentioned
interacts with the RESOLVER. Mozilla can't/won't/shouldn't get at that information.

> The basic design principle here is that a user should be able to disambiguate
> a hostname reference at the application level.

I so incredibly disagree Mozilla is the place for any such thing.

> NOTE: I am not suggesting we remove the other features.

I am. But that's another issue.

> I think this explaination is sufficiently bulletproof.

Bullet... "resistant".

-------

Why don't you just set your search path to "mcom.com". That sounds like the
behaviour you want. Or do you really need to be able to type just 'www' to
access your ISPs web server? If so, you can have multiple search paths. Even
Windows does this. Where's the problem? Do you really think EVERY network
application should have to implement this so you can set EACH one to something
differant? Hell, why not rewrite all of TCP/IP inside Mozilla. I mean, we're a
platform right?! :)

Please explain exactly how UNIX/W2k+ doesn't already give you the behaviour you
want. How familiar are you with DNS?
re:  "use the resolver"

I think I have provided many examples of how the system level setting should be
used, but the lack of robustness means a user-preference is a desirable feature.

re: "so incredibly disagree"

Don't use the feature. I promise not to set the default to "mcom.com",
"packetgram.com" or "mozilla.org" :)

re: "change the default domain"
In windows that means rebooting. Also, I shouldn't have to edit a system level
preference when I'm trying to change the prefered behavior within an
application. That should be an application-level preference. 

re: "If so, you can have multiple search paths"
You mean "why not configure your laptop to search "pacbell.net, mcom.com,
mindspring.com, and othercompany.com"?

What horrible pile of mindless DNS queries for every hostname.

re: "all of TCP/IP"
I'm not one of those "we are a platform" people.

re: "How familiar are you with DNS?"

I've never been a hostmaster for a living, if that is what you mean.

I've been a DNS hostmaster off and on in the last 10 years, including being a
delegated adminstrator for some apple.com subnets. I've configured BIND more
often than I'd like to admit, and have read a couple editions of DNS & BIND
cover to cover. I also re-wrote parts othe resolver documentation for two
resolvers (MacTCP and OT-TCP/IP). 

Here's what I recollect that is most relevant to the point you are making:

In the mid 90's, resolvers qualified hostnames with the default domain
differently than they do now. Subdomains were much more heavily used, and
resolvers would send out numerous extraneous queries if a request was not "."
terminated when sent to the resolver (almost no programs did this).

The behavior of searching "UP" the DNS tree (a machine called
host.subdomain.domain.com was presumed to have users that were looking for other
hosts at subdomian.domain.com) as well as the search domain feature (a list of
abritrary domains to be scanned for hostnames), were both user-convenince
features, based on a line-command, typed hostname, local subdomain, single
physical connection based world. 

Most current resolver technology is a bit smarter (for example I think they
assume that any two-label domain should be sent as a FQDN first (try
hostname.com, before it tried hostname.com.defaultdomain.com, then hostname.com). 

Today's nework continue to evolve, networks have disparate performance (at least
a dozen bugs have been filed asking for things like caching to deal with slow
DNS servers), connectivity to multiple-networks, multi-user usage of a single
machine. This feature would address browing problems that occur with URLs that
have ambiguous DNS information. It would allow users across any platform to have
a simple solution to the problem.

Lets not forget that the resolver search domain behavior was added because extra
searches were assumed to be better than returning a lot of "hostname not found"
errors. This feature is presumed to be useful when the user is uncertain of the
FQDN that is needed for the foward lookup. 

My argument is that a user KNOWS what the FQDN is, but that our software forces
them to tell the resolver that they don't. The resolver should never be sent on
a wild goose chase through DNS when the user already knows the desired FQDN. The
best case scenario is that the resolver might hit the right fqdn on the first
query. The likely scenario is that the resolver will make several spurious
queries before the using the correct fqdn. An undesriable result would be
completion to the wrong hostname, because most end users do not understand the
exact behavior of the domain search sequence.

Many people take the attitude that extraneous DNS queries are okay because:
1- They are UDP
2- They take up a low % of network traffic.

This is wrong for two reasons: 
1- You should never do a search for something when you know what you are looking
for already. That is inelegant.
2- Any extraneous network traffic is potentially bad, because it is like
littering. Most of the time it is annoying, but if everyone does it, the effects
are disproprotionate to the inconvenince of an individual simply not littering.
For example, even a 1% increase of data transmission on a congested ethernet
wire can result in very large slow-downs in end-user performance. 
3- With the advent of negative DNS caching on servers, extraneous DNS queries
consume real memory resources on key network systems.

This is more detail than I thought was necessary to explain this RFE, but I
would say, "yes", I'm familar with the problem.
> Don't use the feature.

I certainly wouldn't. Just trying to prevent a Bad, bloaty feature from being
checked in for others.

> In windows that means rebooting.

Not in any recent version, and how often are you changing this? You set it to
mcom.com...if you get fired, and you use windows 95, yes, you'll have to reboot
for your new jobs domain. I don't see why you when you switch ISPs you need/want
mindspring/etc in your search path. For domains where it is desirable, DHCP
updates it automatically.

> Also, I shouldn't have to edit a system level preference when I'm trying to
> change the prefered behavior within an application. That should be an
> application-level preference.

See, the great thing about DNS being done outside the application is it's
consistant. Add mcom.com to your search path... You want neon.mcom.com to load
in Moz? Type in 'neon'. You want to ping neon.mcom.com? "ping neon". You want to
telnet to neon.mcom.com? "telnet neon". You want to FTP to neon.mcom.com? "ftp
neon".

Should ftp, ping, telnet, ssh, and thousands of other programs implement their
own DNS domain searching? (oh, wait, they do! it's in the resolver) I don't see
how Moz doing it would be superior.

> You mean "why not configure your laptop to search "pacbell.net, mcom.com,
> mindspring.com, and othercompany.com"

See above. I don't understand why you need and want to search pacbell.net and
mindspring.com. Just because they're your ISPs doesn't mean they need to be your
DNS domain/search path. And if they are already set, as you seem to say, then
you're already doing queries on them. And if you add seperate searching to Moz,
you're going to end up looking up stuff like
'what-i-typed-in.mcom.com.mindspring.com'.

> I've never been a hostmaster for a living, if that is what you mean.

Just making sure you had a good grasp of DNS theory and practice, so I didn't
have to overly explain certain technical things.

> It would allow users across any platform to have a simple solution to
> the problem.

I'll concede it does provide cross platform, slightly easier access to the
search path. As mentioned above though, it will end up working WITH the search
path, resulting in (1+x)*(1+y) lookups rather then 1+x. 2 items in your search
path, 2 in some new mozilla pref, you're doing NINE lookups if you type in
'misspelted'.

> Lets not forget that the resolver search domain behavior was added because
> extra searches were assumed to be better than

Good point, although I've always though resolvers should have a host alias
database, where I could manually add entries, say, 'neon' -> 'neon.mcom.com', so
I could just ping and telnet neon. I have a lot of machines in a lot of
differant domains I have to access, way too many to add to a search path. (Note
this is differant from a 'hosts' file, in that I don't control the DNS for those
machines... I want to associate neon to neon.mcom.com, not it's IP address).
There were at least two occasions I was almost bored enough to patch libresolv
to use /etc/host-aliases for that.

> My argument is that a user KNOWS what the FQDN is, but that our software
> forces them to tell the resolver that they don't.

I don't understand this whole paragraph. Seems contradictory. As you already
mentioned, if a host with at least two parts is entered, it's tried without the
search path first.

If I'm still missing something, and there is user benefit from this, I'm not
religiously against it. But even for your complex setup (two companies, two
ISPs), I still don't see how it wouldn't be better to not let the resolver
search on the two companies paths. What type of users in what type of situation
would care or benefit from this?
The extra query problem is worth looking at in a performance context. I've been
meaning to look at that more (as well as write a bug that suggests we make
explicit queries to resolver to reduce the number of outbound DNS queries for
certain situations.
Bugs targeted at mozilla1.0 without the mozilla1.0 keyword moved to mozilla1.0.1 
(you can query for this string to delete spam or retrieve the list of bugs I've 
moved)
Target Milestone: mozilla1.0 → mozilla1.0.1
Blocks: 2875
Depends on: 127396
Target Milestone: mozilla1.0.1 → Future
nsbeta1 anyhow, I seem to see more and more sites that would benefit from this
feature inside our corporate network everyday.
Keywords: helpwanted, nsbeta1
moving neeti's futured bugs for triaging.
Assignee: neeti → new-network-bugs
[RFE] is deprecated in favor of severity: enhancement.  They have the same meaning.
Severity: normal → enhancement
Summary: [RFE] default domain → default domain
Blocks: 166765
adt: nsbeta1-
Keywords: nsbeta1nsbeta1-
Blocks: 91587
Assignee: general → darin
OS: other → All
Summary: default domain → default domain (domain suffix appended to non-FQDN hostnames)
dear sirs, I just would like DNS resolve to work, i.e

if I enter http://xxx, firefox should ask nslookup on my w2k box for the ip of xxx, which resolves on my box to e.g xxx.domain.co.at. this is the main reason, we cannot spread firefox, because IE supports that and firefox does not.

strange, for file:////xxx/somepath/somefile it works.

If you afraid of security with, make it an option and leave it us, if we force fqdn or accept local host + domain suffix.
Assignee: darin → nobody
QA Contact: benc → networking
Is this behaviour ever going to be sorted?

As far as I'm concerned the OS should resolve the web, so if I enter http://servername and servername would resolve as servername.mydomain.com then that's what should be used.

Having to add separate "no proxy" entries for each non-FQDN in our Intranet is a nonsense and halts any idea of migrating to Firefox for many of our clients.
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.