# Data Networking/Fall 2014/Priya
## Technology

The following topics are essential to the successful implementation of our servers and solutions. The details of the protocols used and servers implemented are provided in the reference links below.

### Protocols

* DNS
* DHCP
* HTTP

### Servers

* DNS-SERVER
* DHCP-SERVER
* WEB-SERVER

### Configuration Details

* BIND (DNS) Configuration
* ISC-DHCP (DHCP) Configuration
* APACHE (WEB-SERVER) Configuration

## Design Algorithm & Flow Chart

In the first part of this section, we'll explain the design algorithm that we used for developing our network. The second part of the section illustrates, using graphical representation, the algorithm we just discussed. The details of each part is linked to the two titles below.

### Flow Chart
## Testing

We have tested the working of our servers successfully. In this section we present the screenshots for testing results of add-ons we have implemented in our project.
The Testing Results can be seen here....

## Working with an Example

A simple disciption of how a client requests for a webpage in a network and the behavior of DHCP, DNS and WEB server is explained in this section. Here a client enters a network by requesting for neunetworks.com.
Working Example is described here...

## Add-ons
### NFS (Network File System)

NFS allows a server to share a specified directory and files with clients over a network. NFS offers several advantages such as:
       1. Instead of duplicating data on each client, the data can be kept on a server and shared across on the network
       2. Administration of NFS export is simplified, since security needs to be applied on one NFS server only.
    NFS Configuration illustrates how to install and configure NFS on an ubuntu machine.

### Web Server - IP Tables & Firewall

The Apache2 web server comes with a pre-installed firewall, that, by default, accepts all incoming connections. To add more security to our web server, we've implemented and configured iptables to provide more enhanced security. To configure iptables and firewall for Ubuntu 14.04, please follow the next link.
    Configuring iptables & firewall

### Web Server - SSH

We've enabled only one workstation to access and modify the web server. To do so, we've installed openSSH-server on the Apache2 Web Server workstation, and openSSH-client on the remote workstation. The following sub-section link references the commands used to install and configure openSSH on a server and a client.
    Web Server - openSSH-server & client configuration

### Web Server - Backup (rsync)

To ensure that the server will be able to host many clients, and ensure that the system doesn't come to a halt in case the main server breaks down, we've created a backup server that had an updated duplicate files from the main server. We'll configure the backup web server exactly as we did with the main server. (refer to Apache2 Configuration Steps for details) To keep the backup web server updated with the latest verion of html files from the main server, we have to setup a passwordless ssh connection between the main and the backup web servers (refer to openSSH server & client configuration). Then we have to enable auto-sync function, so that the backup web server periodically connects to main web server and download the latest version of the hosted web pages. To do so, please follow the guide to setting up rsync.

### DNS Server Backup

As DNS is very critical for the company, we had created a slave server by using DHCP server to provide a backup. The following link talks about how to configure slave server. Configuration the Slave server (ns2)

## Future Improvements
### DHCP

* Support for DHCPv6 - As the Internet is slowly migrating to IPv6, its very important to migrate the individual company networks to IPv6 to get the complete benfits of the technology. Configuration wise, DHCPv6 is identical to v4.
* Implementation of superscope - DHCP superscope give a flexibility for DHCP server to allocate addresses from multiple subnets. This will give the flexibility for a company to expand the network with a smooth transition and will not effect the existing setup. Configuration of superscope is done, by simply adding the next subnet level into dhcpd.conf.

### DNS

* Support for DHCPv6 - Once the network is ready for DHCPv6, make appropriate changes to DNS records to enter IPv6 records.

### Security

* Enhance overall security of the network by installing IPS and IDS to monitor and access the behavior of the traffic flowing to these servers.

## Citation

* https://help.ubuntu.com/community/BIND9ServerHowto
* https://help.ubuntu.com/10.04/serverguide/httpd.html
* http://httpd.apache.org/docs/2.4/
* https://help.ubuntu.com/community/isc-dhcp-server

### Books

* Computer Networking A TopDown Approach - KUROSE | ROSS
* The DHCP Handbook - Ralph Droms | Ted Lemon
* DNS and BIND - Cricket Liu | Paul Albitz (OReilly)