# Data Networking/Fall 2017/PaDhAAi
## Project Objective

The objective of this project is to design a dynamic, secure internetwork for a startup company using Linux environment using Ubuntu 16.04. We have designed and implemented Domain Name Server (DNS) using BIND, Dynamic Host Configuration Protocol (DHCP) using isc-dhcp-server, WebServer and Firewall. We have also implemented Backup System which will make the system robust.

## Project Team members

Palak Sharma
Dhanisha Phadate
Ashwath Shunti
Andrews Tito

## Domain Name System (DNS)
### Behaviour of Protocol

DNS is a distributed database which will provide the response that translates hostname to IP address like a directory service. One of the key elements of DNS is DNS servers which maps the domain name to the corresponding IP address. All DNS messages and responses are sent within UDP on port 53. There are 5 types of DNS records – A, NS, CNAME, MX, AND PTR.

### Signalling

A host is identified by two ways, hostname and IP address and DNS is employed to translate a hostname to IP address. Other application layer protocols also employ DNS which also provide other functions like host aliasing, mail server, aliasing and load redistribution. An application will invoke client-side DNS which sends a query to the local DNS server to obtain IP address. The local DNS server then forwards the query message root DNS. The Root DNS replies to local DNS with IP address of TLD servers. The local DNS will then send message query to TLD servers. The TLD servers respond to local DNS with IP address of authoritative DNS which contain the mapping of hostname to IP address. Finally, local DNS server sends a query to authoritative DNS server which response with IP address of the desired mapping of a hostname.

### PRIMARY DNS ::: MASTER DNS

1.STATIC IP (IPv4 and IPv6) is assigned to the DNS server using : sudo nano “/etc/network/interfaces”.
2.Rebooting the network interfaces to check if the IP address are assigned to the virtual machine: sudo /etc/init.d/networking restart
3.Installing the bind9 library using : sudo apt-get install bind9
4.Configuring the options file : sudo nano /etc/bind/named.conf.options
a.Adding the IP addresses of all the trusted client
b.Allowing the recursion of queries from trusted devices mentioned above , and added the IP address of the Master DNS server, to listen-on.
c.Adding the forwarders
5.Configuring the local host file : sudo nano /etc/bind/named.conf.local
a.Adding the forward query mapping , also allowing the request to be transferred to the Slave DNS server having IP address : 192.168.34.16
b.Adding reverse query mapping for IPv4 and IPv6,also allowing the request to be transferred to the Slave DNS server having IP address : 192.168.34.16
6.Creating a Forward Zone Database :
sudo mkdir /etc/bind/zones
cd /etc/bind/zones
sudo cp ../db.local ./db.padhaai.iot
sudo nano /etc/bind/zones/db.padhaai.iot
a.Including the name servers
b.Including the IPv4 address mapping
c.Including the IPv6 address mapping
7.Creating a reverse zone database :
sudo cp ../db.127 ./db.192.168.34
sudo nano /etc/bind/zones/db.192.168.34
a.Inverse IPv4 mapping
b.Inverse IPv6 mapping
8.Applying Checks :
sudo named-checkconf : to check if the bind library is installed properly , If the configuration files have no syntax errors, you will return to your shell prompt and see no error messages.
sudo named-checkzone db.padhaai.iot /etc/bind/zones/db.padhaai.iot: to check the forward zone configuration file
sudo named-checkzone 34.168.192.in-addr.arpa /etc/bind/zones/db.192.168: to check the reverse zone configuration file
9.Restarting the BIND service : sudo service bind9 restart
PRIMARY DNS is configured, moving towards secondary DNS

### SECONDARY DNS ::: SLAVE DNS

1. For the Slave Server repeat steps 1 to 5 a. Static IP to Slave DNS server:
sudo nano “/etc/network/interfaces”
b. Configuring the options file :
sudo nano /etc/bind/named.conf.options
c. Configuring the local host file :
sudo nano /etc/bind/named.conf.local
DNS CLIENT Configuring DNS client: sudo vi /etc/resolvconf/resolv.conf.d/head
TEST CASES :
Forward Mapping (IPv4) :
Forward Mapping (IPv6) :
REVERSE MAPPING (IPv4 ) :
REVERSE MAPPING (IPv6) :