Internet Not working eh? How Ubuntu Resolves DNS?

Problem

I upgraded my Ubuntu from 16.04 to 18. And the Internet stopped working. 😦

I tried rebooting interface, adding a new interface to ifconfig. But it did not help.

What helped was an answer on AskUbuntu

How it worked?

The answer is in how Ubuntu lookup domains like http://www.google.com.

Step 1
Check the domain in the local DNS, also called a DNS stub.

Step 2
If Step 1 fails (local DNS lookup is a miss), it contacts a public DNS such as 8.8.8.8 also called Google Public DNS.

Since after the upgrade public DNS was not set, the internet seemed inaccessible!

How to Update Public DNS?

open /etc/resolv.conf
Add DNS=8.8.8.8

Done 🙂

Written with StackEdit.I

Advertisements

NAT Protocol Simplified Explanation

  • The purpose of NAT protocol is to reduce usage of public IPs
  • A host needs a public IP to connect to Internet
  • If the host is part of a LAN with a gateway router, a host can use private IP to make requests to public Internet.
  • The public Internet would see that all the requests are originating from a LAN (i.e. the gateway router)
  • A router has a local LAN IP and a public IP.
  • The request flows as following:
    • A local host in the LAN can make a request to a web server on Internet.
    • The host request goes frpm local host IP and port to the local gateway.
    • The gateway maintains a NAT table.
      • An entry in the NAT table will have the source and destination mapping
        --------------------------------------------------------------------
        Local Host IP | Local Host port | Gateway public IP | Gateway port |
        --------------------------------------------------------------------
        
        • The gateway creates a port that maps request to and from the local host to the public Internet web server.
        • Hence the public server would always see the gateway IP and port and LAN host would be anonymous.
      • NAT is essentially a kind of multiplexing local hosts requests over gateways single IP and multiple ports, assigned to each local host.

Reference

Written with StackEdit.