📒 

The hosts file in Linux is a crucial system file used to map hostnames to IP addresses. This file allows users to define custom domain name resolutions, which can be particularly useful for local development, testing, or overriding DNS lookups for specific domains. In this article, we’ll walk through how to edit the hosts file in Linux, providing step-by-step instructions and important considerations.

Understanding the Hosts File

The hosts file is a simple text file that resides on your Linux system, typically located at:

/etc/hosts

When you attempt to access a website or service using a hostname, the system checks this file first before querying DNS servers. This means you can use the hosts file to redirect domain names to specific IP addresses without changing DNS settings.

Why Edit the Hosts File?

You may want to edit the hosts file for several reasons, including:

  • Testing new websites: Point a domain to a local development server without changing DNS records.
  • Blocking websites: Redirect unwanted domains to 127.0.0.1 (localhost) to prevent access.
  • Custom domain resolution: Override DNS settings for specific applications or services.

Steps to Edit the Hosts File in Linux

Step 1: Open a Terminal

To edit the hosts file, you’ll need to use the terminal. Open your terminal application. You can typically find it in your applications menu or by pressing Ctrl + Alt + T.

Step 2: Backup the Hosts File

Before making any changes, it’s a good idea to create a backup of the current hosts file. Run the following command:

sudo cp /etc/hosts /etc/hosts.backup

This command creates a copy of the original hosts file named hosts.backup in the same directory.

Step 3: Open the Hosts File for Editing

Use a text editor to open the hosts file. You can use editors like nano, vi, or gedit. Below is how to do it with nano, which is user-friendly for beginners:

sudo nano /etc/hosts

Step 4: Edit the Hosts File

Once the hosts file is open in the editor, you will see lines that look like this:

127.0.0.1 localhost

To add a new hostname and IP address mapping, navigate to the bottom of the file and add a new line in the following format:

IP_address hostname

For example, to point the domain example.local to your local machine, you would add:

127.0.0.1 example.local

To block a website, you could redirect it to localhost:

127.0.0.1 unwanted-website.com

Make sure that each entry is on a new line, and separate the IP address and hostname with whitespace (spaces or tabs).

Step 5: Save Changes and Exit

If you are using nano, save your changes by pressing CTRL + O, then press Enter to confirm. Exit the editor by pressing CTRL + X.

If you are using vi, press Esc, type :wq, and then press Enter to save and exit.

Step 6: Verify Your Changes

To ensure that your changes are applied, you can verify them by running the following command:

cat /etc/hosts

This will display the contents of the hosts file. You should see your newly added entries listed there.

Step 7: Test the Changes

To test whether the hostname resolves to the desired IP address, you can use the ping command:

ping example.local

If everything is set up correctly, the output should show that example.local resolves to 127.0.0.1.

Important Considerations

  • Administrative Privileges: Editing the hosts file requires administrative privileges. You need to use sudo to edit the file.
  • Order Matters: The system processes the hosts file from top to bottom. If there are multiple entries for the same hostname, the first match is used.
  • Flushing DNS Cache: If changes don’t seem to take effect, you may need to flush your DNS cache. This can vary by distribution and may require restarting networking services.

Conclusion

Editing the hosts file in Linux is a straightforward process that can help you customize how your system resolves hostnames. Whether for development, testing, or blocking unwanted sites, the hosts file provides a powerful way to control hostname resolution locally. By following the steps outlined in this guide, you can easily make and verify changes to the hosts file, enhancing your control over your Linux environment.