What is a valid hostname label?

6,803

Solution 1

What the RFC says is actually immaterial here. The RFC specifies what goes on at the DNS level, but that's moot if ping doesn't make a DNS query in the first place. When ping receives an all-numeric argument, it interprets it as an IP address.

IPv4 addresses are technically 32-bit numbers. They are almost always written in dot-decimal notation, so-called “dotted quads” like 127.0.0.1. But they can also be written as a single number in decimal like 2130706433 or in hexadecimal like 0x7f000001.

$ ping 2130706433    # 127*2^24 + 1
PING 2130706433 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.027 ms
$ ping 0.0.25.192
connect: Invalid argument

Addresses in the range 0.0.0.0/8 are reserved for use as source addresses in broadcasts. You can't send a packet to them, which is why connect(2) returns EINVAL.

Many programs, including most ping implementations, have no option to force a DNS lookup. You would run into similar trouble if you made a local network with all-numeric subdomains, and ended up with a valid hostname that looked like a dotted quad.

If your local network has a name, ping 6592.mynetwork will work. But you're likely to run into similar trouble down the line, as sooner or later you'll want to omit the domain name. Just go with the flow and include a letter, preferably at the start.

Solution 2

Well, not exactly... What Wikipedia, and in turn the RFCs say is that since the original RFC 952, which didn't allow leading numerics, you can now have them. ( Per RFC 1123 ) You still can't have all numeric though, which is your problem.

Your '6952' isn't a valid hostname, while '6952x' should be fine. But, RFCs aside, I've had problems within the last year or so with leading numerics. I'd avoid them, unless there's a compelling reason not to.

Share:
6,803

Related videos on Youtube

tshepang
Author by

tshepang

I do software development for a living and as a hobby. My favorite language is Rust, and I've used Python much in the past. My OS of choice is Debian.

Updated on September 17, 2022

Comments

  • tshepang
    tshepang over 1 year

    I set up my hostname to a number, where running hostname gives:

    6592
    

    But when I run ping 6592, I get:

    connect: Invalid argument
    

    I checked the related Wikipedia page, and it does say that such a hostname is allowed (IIUC). What am I missing?

  • tshepang
    tshepang about 13 years
    Can you quote where in RFC 1123 where it's said the name can't be entirely numeric. I can't find it.
  • Justin Ethier
    Justin Ethier about 13 years
    Exactly, the only thing I found was this: a segment of a host domain name is now allowed to begin with a digit and could legally be entirely numeric (see Section 6.1.2.4).
  • tshepang
    tshepang about 13 years
    The statement you quoted doesn't address my question. Maybe you misunderstood (or I'm missing something?).
  • Finbarr
    Finbarr about 13 years
    I think there's ambiguity in the text between the original, 'no leading numeric' RFC and the later 'leading numeric OK' version. That's the point. All I know is fully-numeric hostnames cause frequent breakage, so they're a poor practice. RFCs are not laws, nor are they guaranteed to be perfectly implemented.