The Linux hostname and FQDN (Fully qualified Domain Name) have been confusing for a long time, and today they are dedicated to figuring out the details of their use.
First, set Hostname/fqdn
Setting up hostname in a Linux system is simple, such as:
$ hostname florian
If you want to set the FQDN, you need to configure the/etc/hosts.
$ cat /etc/hosts127.0.0.1 localhost192.168.1.1 florian.test.com florian
The format of the/etc/hosts configuration file is:
ip fqdn [alias]...
That is, the first list is the host IP address, the second is the host FQDN address, the third column is an alias later, you can omit it, or at least include hostname.
The first behavior of the configuration item for the above configuration file is the configuration of localhost, and the second behavior of the host name Florian Configuration fqdn=florian.test.com,ip=192.168.1.1.
As for the domain name suffix of the FQDN, it is best to maintain consistency with the hostname configuration of the file/etc/sysconfig/network:
$ cat /etc/sysconfig/networkNETWORKING=yesHOSTNAME=test.com
Second, view Hostname/fqdn
After the configuration is complete, you can use the shell command to view the hostname and FQDN:
-f florianflorian.test.com
Use ping to test whether the IP mapping of the hostname is successful.
$ ping florianPING florian.test.com (192.168.1.1) 56(84) bytes of data.$ ping florian.test.comPING florian.test.com (192.168.1.1) 56(84) bytes of data.
You can also use the Python command to get hostname and FQDNs.
$ python python2.6.6 (r266:84292, Dec72011,20:48: 22) [GCC 4.4. 6 20110731 (Red Hat 4.4. 6-3)] on linux2type "help", " Copyright ", or " license " for more information. >>> import socket>>> socket.gethostname () ' Florian ' >>> Socket.getfqdn () Florian.test.com '
Third, using IP settings hostname the FQDN problem
The above describes how to set the hostname and FQDN normally , but sometimes the IP address is used directly as the hostname, which can be a bit different at this point.
192.168.1.1$ hostname && hostname -f192.168.1.1192.168.1.1
We found that using the IP as hostname, using the shell command query hostname and FQDN are IP addresses!!! This is because the DNS protocol resolves the contents of the hostname, and when it is found to be an IP address, the/etc/hosts file is no longer queried.
Using Python again, you will find that the FQDN obtained by Python is still florian.test.com!!!
$ pythonpython2.6.3 Mr266:84292, Dec72011,20:48: 22) [GCC 4.4. 6 20110731 (Red Hat 4.4. 6-3)] on linux2type "help", " Copyright ", or " license " for more information. >>> import socket >>> socket.gethostname () ' 192.168.1.1 ' >>> Socket.getfqdn () ' florian.test.com '
Even refreshing the DNS cache is useless:
$ service nscd reload
Comment The second line of the/etc/hosts file:
cat /etc/hosts127.0.0.1 localhost# 192.168.1.1 florian.test.com florian
Refresh the DNS cache:
$ Service NSCD Reload
We found the FQDN back to normal.
$ pythonpython2.6.3 Mr266:84292, Dec72011,20:48: 22) [GCC 4.4. 6 20110731 (Red Hat 4.4. 6-3)] on linux2type "help", " Copyright ", or " license " for more information. >>> import socket >>> socket.gethostname () ' 192.168.1.1 ' >>> Socket.getfqdn () ' 192.168.1.1 '
The reason for this behavior is that the logic and DNS of the Python parsing FQDN are not exactly the same, it will query the corresponding IP address according to hostname, and then get the configuration line corresponding to the IP address in/etc/hosts (the first row is valid). Then parse the FQDN column and the alias column and return the first containing character '. ' The value of the corresponding column.
Therefore, when using IP settings hostname, there are two points to note:
- First, set the hostname to the IP address
- Next, remove the configuration item that contains the IP in the/etc/hosts
For the sake of insurance, we can add the following configuration in the/etc/hosts as far forward as possible:
cat /etc/hosts127.0.0.1 localhost192.168.1.1 192.168.1.1
This way, even if a configuration item that contains the IP does not take effect after that, Python prioritizes the second line of configuration items and obtains the same FQDN address as the IP address. Of course, using the shell command hostname to get the FQDN is also not an error, because hostname has been set to the IP address form.
Iv. references
- Linux under Configuration fqdn:https://onebitbug.me/2014/06/25/settings-fqdn-in-linux/
- Linux Fundamentals: Setting FQDN and hostname:http://www.chenshake.com/linux-foundation-set-fqdn-hostname/
- Is it valid for a hostname to start with a digit?: http://serverfault.com/questions/638260/is-it-valid-for-a-hostname-to- Start-with-a-digit
Http://www.cnblogs.com/fanzhidongyzby/p/5154443.html
Use Shell/python to get Hostname/fqdn explanation (RPM)