53
Building a Linux IPv6 DNS Server Page 1 1. INTRODUCTION OVERVIEW TO OUR PROJECT IPv6 is a key cutting Edge Technology and top 4th Technology all around the world from EFY Magazine resources. It is a Top 6th Technology of Computer Networks from Network Magazine website. The project mainly deals with creating a Dual IP stack node with provision of complete support for both IPV4 and IPV6 in hosts and servers. This can be achieved by making a recursive copy of the kernel and configuring the necessary network properties to support both IPv4 and IPv6. The kernel is configured by using scripts in shell programming and C programming. The main idea of the project is configure a DNS server in Linux with IPv6 name resolution facility. The concept of encapsulation of IPv6 packets within IPv4 headers to carry then an IPv4 network simply called as IPv6 over IPv4 tunneling. Finally Resources are accessed in the network regardless of the platform. 1.2 PINPOINTS OF OUR PROJECT Creating a new kernel from the existing kernel through kernel compilation. Making DNS server in Linux with IPv6 support. Providing backup of existing kernel in Linux. DNS server can be activated or deactivated through Interactive user interface. To promote sharing of files from Windows to Linux or vice versa.

Building A Linux IPv6 DNS Server (Complete Softcopy)

Embed Size (px)

DESCRIPTION

Visit my Wiki for More updates:http://techiehari.wetpaint.comIPv6 is a key cutting Edge Technology and top 4th Technology all around the world from EFY Magazine resources. It is a Top 6th Technology of Computer Networks from Network Magazine website. The project mainly deals with creating a Dual IP stack node with provision of complete support for both IPV4 and IPV6 in hosts and servers. This can be achieved by making a recursive copy of the kernel and configuring the necessary network properties to support both IPv4 and IPv6. The kernel is configured by using scripts in shell programming and C programming. The main idea of the project is configure a DNS server in Linux with IPv6 name resolution facility. The concept of encapsulation of IPv6 packets within IPv4 headers to carry then an IPv4 network simply called as IPv6 over IPv4 tunneling. Finally Resources are accessed in the network regardless of the platform.

Citation preview

Page 1: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 1

1. INTRODUCTION

OVERVIEW TO OUR PROJECT

IPv6 is a key cutting Edge Technology and top 4th Technology all

around the world from EFY Magazine resources. It is a Top 6th Technology

of Computer Networks from Network Magazine website. The project mainly

deals with creating a Dual IP stack node with provision of complete support

for both IPV4 and IPV6 in hosts and servers. This can be achieved by

making a recursive copy of the kernel and configuring the necessary network

properties to support both IPv4 and IPv6. The kernel is configured by using

scripts in shell programming and C programming. The main idea of the

project is configure a DNS server in Linux with IPv6 name resolution

facility. The concept of encapsulation of IPv6 packets within IPv4 headers to

carry then an IPv4 network simply called as IPv6 over IPv4 tunneling.

Finally Resources are accessed in the network regardless of the platform.

1.2 PINPOINTS OF OUR PROJECT

• Creating a new kernel from the existing kernel through kernel

compilation.

• Making DNS server in Linux with IPv6 support.

• Providing backup of existing kernel in Linux.

• DNS server can be activated or deactivated through Interactive user

interface.

• To promote sharing of files from Windows to Linux or vice versa.

Page 2: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 2

1.3 DOCTRINE OF THE REPORT

Chapter 1 discusses about the Introduction, which includes overview

of the project, document conventions followed in the project and brief

description about the organization profile.

Chapter 2 discusses about the Literature Survey, which includes

details about the problem definition, existing system, and proposed

system of our project.

Chapter 3 discusses about the System Specification for our project.

Basically it consists of hardware and software requirements and

network service profiles for our project.

Chapter 4 discusses the System design for our project have the

following components such as data flow diagram and other design

considerations and issues while designing the system.

Chapter 5 discusses about the System Implementation for our project.

It consists of Brief account of project modules.

Chapter 6 discusses the System Testing for our project which have

testing strategies and errors which we have faced while designing the

system.

Chapter 7 discusses the Conclusion and scope for future

enhancement for our project.

Chapter 8 discusses about the References of our project having the

following criteria such as RFCs, Bibliography, Websites, HowTo

guides, FTP sites, Blogs, Forums, PPT’s and PDF’s.

Chapter 9 discusses the appendices of our project which consists of

source codes and snapshots for our project.

Page 3: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 3

1.4 DOCUMENT CONVENTIONS

MAIN SECTION TITLES

Font: Time New Roman Face: Bold Size: 16

SUB SECTION TITLES

Font: Times New Roman Face: Bold Size: 14

Other Text Explanations

Font: Times New Roman Face: Normal Size: 12

1.5 ORGANISATION PROFILE

Maze Net Systems has emerged as IT Solutions Company and today

it’s providing application migrations/solutions and re-engineering for turn

key projects. Maze Net’s offerings range from software development like

data warehousing, financial software services and enterprise system

management solutions, with a rich talent pool of about 25 associates. Maze

Net Systems has its corporate office and development centers in Chennai

(India).

To be a vibrant, customer-oriented, quality driven, state of the art

Technology Company Creating value to employees, customers, shareholders

and society Maze Net Systems has emerged as leading global IT Solutions

Company and is a leader in application migrations and application

reengineering. Maze Net’s offerings range from cross-platform migrations,

Page 4: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 4

software development, and outsourced product development to application

maintenance.

This consultative approach provides a risk-free, cost-effective way for

an organization to design, develop, and/or maintain cutting edge information

systems. Maze Net is a Quality conscious company there by assessed at

CMM LEVEL 4 Certification from Software Engineering Institute.

The customer focus is intended at contributing to the creation of

customer relationships that endure beyond the end of assignments while the

people focus aims at building a learning organization to manage the

demands of rapid technological changes.

The process focus will bring about process focus through well-

defined, institutionalized processes and finally, Maze Net would also work

towards improving the predictability of delivery time, effort and quality of

delivery. Maze Net is on its way to CMM Level 5.

Page 5: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 5

2. LITERATURE SURVEY

2.1 PROBLEM DEFINITION

LINUX kernels up to 2.3 do not support the incorporation of IPv6 into

it. Hence to build a kernel which has provision for both IPv4 and IPv6, we

use kernel version 2.4. In this project, we look closely at IPv6 name

resolution and provide technical support to help the user set up their own

IPv6 Linux DNS server to allow IPv6 name resolution using the latest

version of BIND Configuration tool.

2.2 EXISTING SYSTEM

The existing IPv4 system supports DNS configuration in RedHat

Linux 9 and its prior versions. The graphical tool BIND 9 and prior versions

support DNS configuration of IPv4. The kernel version 2.4 and prior

versions support IPv4 DNS configuration. The BIND tool was introduced to

configure the IPv4 DNS after Linux 6. The existing system namely RedHat

Linux 8 and BIND 8 does not support IPv6 configurations.

2.3 PROPOSED SYSTEM

The proposed system is aimed at removing the drawbacks of the

existing system. Our dual stack server can easily help a user to give IPv6

support to the Linux system. The project has configurations and tunneling is

established through coding written in JAVA. Also, the packets are

transferred from client to the server using the code and cross platform

resources are achieved.

Page 6: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 6

3. SYSTEM SPECIFICATION

3.1 HARDWARE REQUIREMENTS SERVER MACHINE : Red Hat Enterprise / Workstation Linux v3.0

[Server Installation]

CLIENT MACHINE : MS-Windows / Fedora core v3.0

[Client Installation]

PROCESSOR : Intel / AMD Processors (> 533 MHz)

MAIN MEMORY : 32MB RAM

HARD DISK : Minimum 2GB

KEYBOARD : 101 keys

3.2 SOFTWARE REQUIREMENTS PLATFORM USED : RedHat Enterprise / Workstation Linux 3

SOURCE LANGUAGE : Java, C, Shell Scripting

SHELL TYPE : Bash

KERNEL VERSION : 2.4 (Shrike)

KERNEL TYPE : Stable Kernel (Open)

BIND VERSION : 9.0

LANGUAGE TOOL KITS : J2SDK v 1.4, Gcc Compiler

PACKAGE FORMAT : .rpm for Linux, .exe format for

Windows families.

Page 7: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 7

3.3 SERVICE PROFILE DNS (DOMAIN NAME SERVER)

Type : System V-Managed Service

Packages : bind, bind-utils

Daemons : named, rndc

Script : named

Ports : 53(domain), 953(rndc)

Configs : /etc/named.conf

/var/named/*

/etc/rndc.*

3.4 SOFTWARE DESCRIPTION About Kernel

The kernel is the part of the operating system that handles the most

basic functions and control interactions with the computer hardware. The

Linux kernel is very modular. Each driver, for a file system or a piece of

hardware, needs to be compiled into the kernel, or inserted as a module. The

file /proc/file systems contain a list of all the file systems that the kernel

understands.

There are two ways to get IPV6 support. The simplest is to probe the

IPV6 module to the kernel (as root). If this fails, then your distribution didn’t

install the IPV6 module. The second way is to recompile the kernel,

yourself. This sounds like a lot of work, but isn’t that hard.

Page 8: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 8

Kernels, being the backbone of an operating system are of two types:

(i) Open Kernel

(ii) Closed Kernel

The open kernel is a free source and easily modifiable by any one

familiar with Linux. The closed kernel is a kernel of proprietary software

which cannot be modified by normal user.

The open kernel is again of two kinds:

(i) Stable Kernel (2.4.20.8)

(ii) Development Kernel (2.4.19.8)

If the third octet of Linux Kernel Version is Even, it is called as Stable

Kernel and if the third octet of Linux Kernel Version is Odd, it is known as

Development Kernel.

The kernel has release, version and volume specifications each

separated by a period. If the version of the kernel is even, then the kernel is

pointed as a stable kernel and can be used for implementation purposes. If

the version is Odd then the kernel is a development kernel and it is not

advisable for implementation purposes. The Development Kernel is used for

Benchmarking applications.

The Kernel versions prior to 2.3 did not have provisions for IPV6, so

a Program module has to be added by recompiling the kernel. But the

current versions from 2.4 have provisions to support IPv6 and are IPv6 ready

kernels. Appropriate RPMS has to be enabled in the kernel. Most users

won’t have to compile anything to enable IPV6 support.

Page 9: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 9

Almost every Linux distribution comes with IPv6 support out of the

box. For any RedHat 7.3 or RedHat 8.0 user, the user probably doesn’t have

to recompile the kernel. If there is an older version of RedHat, or other

distribution which doesn’t include IPv6 support, then the user has to

recompile the kernel.

Why Linux?

Linux is free. Like UNIX, it is very powerful and is a "real" operating

system. Also, it is fairly small compared to other UNIX operating systems.

Many UNIX operating systems require 500MB or more, whereas Linux can

be run on as little as 150MB of space, and it can run on as little as 2MB of

RAM. Realistically, though, you will want to have room for development

tools, data, and so on, which can take up 250MB or more, and your RAM

should be 16MB.

Here we go some of the Linux advantages:

• Full multitasking - Multiple tasks can be accomplished and multiple

devices can be accessed at the same time.

• Virtual memory - Linux can use a portion of your hard drive as

virtual memory, which increases the efficiency of your system by

keeping active processes in RAM and placing less frequently used or

inactive portions of memory on disk. Virtual memory also utilizes all

your system's memory and doesn't allow memory segmentation to

occur.

Page 10: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 10

• The X Window System - The X Window System is a graphics

system for UNIX machines. This powerful interface supports many

applications and is the standard interface for the industry.

• Built-in networking support - Linux uses standard TCP/IP

protocols, including Network File System (NFS) and Network

Information Service (NIS, formerly known as YP). By connecting

your system with an Ethernet card or over a modem to another

system, you can access the Internet.

• Shared libraries - Each application, instead of keeping its own copy

of software, shares a common library of subroutines that it can call at

runtime. This saves a lot of hard drive space on your system.

• Compatibility with the IEEE POSIX.1 standard - Because of this

compatibility, Linux supports many of the standards set forth for all

UNIX systems.

• Nonproprietary source code - The Linux kernel uses no code from

AT&T, nor any other proprietary source. Other organizations, such as

commercial companies, the GNU project, hackers, and programmers

from all over the world have developed software for Linux.

• Lower cost than most other UNIX systems and UNIX clones - If

you have the patience and the time, you can freely download Linux

off the Internet. Many books also come with a free copy.

• GNU software support - Linux can run a wide range of free software

available through the GNU project. This software includes everything

from application development (GNU C and GNU C++) to system

administration (gawk, groff, and so on), to games (for example, GNU

Chess, GnuGo, NetHack).

Page 11: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 11

Why Preferably Red Hat?

Red Hat Linux is the leading platform for open source computing. It

runs on multiple system architectures, certified by top enterprise software

and hardware vendors, and is supported for seven years.

WHAT DOES IT DO?

Red Hat Linux creates a reliable, secure, high-performance platform

designed for today’s commercial environments—with capabilities that match

or surpass those of proprietary operating systems.

Red Hat Linux is the corporate Linux standard, already at work

running some of the world’s largest commercial, government, and academic

institutions. Red Hat is the world’s leading supplier of commercial-strength

Linux solutions. It delivers the highest levels of reliability and value -

coupling the innovation of open source technology and the stability of a true

enterprise-class platform.

BIND – A Quick Tour

BIND is the most widely used DNS server on the Internet. Red Hat

Linux Uses BIND 9. It provides a stable and reliable infrastructure on which

to base a domain's name and IP address associations.

BIND has gone through numerous revisions over years. The Most

common BIND used since about 1995 was version 8. BIND 9 was released

in September 2000. The development of BIND 9 made important

improvements in security and robustness. In addition it provides IPv6

support, allows eight-bit clean names, and better multi-threading.

Page 12: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 12

The Internet Software Consortium (isc.org), who all are the

maintainers of BIND recommend that all users of older versions Bind

upgrade to version 9 because of its greatly improved security.

An Outlook on Shell Scripting

The UNIX shell program interprets user commands, which are either

directly entered by the user, or which can be read from a file called the shell

script or shell program. Shell scripts are interpreted, not compiled. The shell

reads commands from the script line per line and searches for those

commands on the system, while a compiler converts a program into machine

readable form, an executable file – which may then be used in a shell script.

Apart from passing commands to the kernel, the main task of a shell is

providing a user environment, which can be configured individually using

shell resource configuration files.

BASH IN Nut Shell

Bash is a sh-compatible shell that incorporates useful features from

the Korn shell (ksh) and C shell (csh). It is intended to conform to the IEEE

POSIX P1003.2/ISO 9945.2 Shell and Tools standard. Bash stands for

Bourne Again Shell.

It offers functional improvements over sh for both programming and

interactive use; these include command line editing, unlimited size

command history, job control, shell functions and aliases, indexed arrays of

unlimited size, and integer arithmetic in any base from two to sixty-four.

Page 13: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 13

Bash can run most sh scripts without modification. Like the other

GNU projects, the bash initiative was started to preserve, protect and

promote the freedom to use, study, copy, modify and redistribute software. It

is generally known that such conditions stimulate creativity. This was also

the case with the bash program, which has a lot of extra features that other

shells can't offer.

Luxury of C

The programming language C was developed in 1972 by Dennis

Ritchie at AT & T Bell Laboratory, Murray Hill, New Jersy. It was mainly

influenced by the language by the languages BCPL and B. It was named as

C to present it as the successor B language which was designed earlier by

Ken Thompson in 1970 for the first UNIX system on the DEC PDP – 7

computer.

C proved to be an excellent programming language for writing system

programs; Hence, it got wide popularity especially among the programmers

in research in research centers, universities and colleges. The UNIX

operating system, C compiler and all UNIX applications software are written

in C.

Features / Characteristics of C

C is attractive and popular because of the following reasons.

• General purpose language.

• Structured Language.

• Flexible and Powerful language.

• System programming language.

Page 14: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 14

• Relatively low-level language.

• Machine independent and hence portable.

• Memory addresses are directly accessed by pointers.

• More Built-in functions.

• Free format language.

• Programs are made up of functions.

Java Unleashed

Java is a general-purpose, object-oriented programming language

developed by Sun Microsystems of USA in 1991. Originally call Oak by

James Gosling; one of the inventors of the language, Java was designed for

the development of software for consumer electronic devices like TVs,

VCRs, toasters and such other electronic machines. This goal has a strong

impact on the development team to make the language simple, portable and

highly reliable. The Java team, which included Patrick Naughton,

discovered that the existing language like C and C++ had limitations in

terms of both reliability and portability.

Java is a general purpose, object – oriented programming language.

We can develop two types of java programs:

• Stand alone applications

• Web applets

Page 15: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 15

Stand-alone applications are programs written in java to carry out

certain tasks on a stand-alone local computer. In fact, java can be used to

develop programs for all kinds of applications, which earlier, were

developed using languages like C and C++. As pointed out earlier, Hot Java

itself is java application program.

Executing a stand-alone java program involves two steps.

1. Compiling source code into byte code using javac compiler

2. Executing the byte code program using java interpreter.

Applets are small java programs developed for Internet applications. An

applet located on a distant computer can be downloaded via Internet and

executed on a local computer using a java-capable browser. We can develop

applets for doing everything from simple animated graphics to complex

games and utilities.

Java Features

The inventors of Java wanted to design a language, which could offer

solutions to some of the problems encountered in modern programming.

They wanted the language to be reliable, portable and distributed but also

simple, compact and interactive. Sun Microsystems officially describes java

with the following attributes:

Compiled and Interpreted

Platform-Independent and portable

Object-oriented

Robust and secure

Distributed

Familiar, Simple and small

Page 16: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 16

Multithreaded and Interactive

High Performance

Dynamic and Extensible

The most striking feature of the language is that it is a platform-

neutral language. Java is the first programming language that is not tied to

any particular hardware or operating system. Programs developed in java

can be executed anywhere on any system. We can call java as a

revolutionary technology because it has brought in a fundamental shift in

how we develop and use programs. Nothing like this has happened to the

software industry.

Swing Components

The Swing components conform to the Swing architecture, which

means that they are lightweight, have a pluggable look and feel and so on.

Despite the plethora of features, the components are easy to use. Swing

components and applications commonly present information to the user and

invite the user's interaction using a GUI.

Page 17: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 17

4. SYSTEM DESIGN

4.1 DATA FLOW DIAGRAM Data flow diagram clearly tells about the pipeline and how the

modules are marshaled in the project.

Start

Kernel Compilation

Lookup module (Registering the

clients with server and checks the status)

Building Linux DNS Server

Cross Platform Resource Access

Configuring IPv6 over Ipv4

Stop

Diagram 1. Data flow diagram

Page 18: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 18

4.2 IPV4 HEADER

IPV4 is the internet protocol version 4, the protocol in current usage.

Thus, can be simply called as IP. IP is the transmission mechanism used by

the TCP/IP protocols. It is an unreliable and connectionless datagram

protocol – a best effort delivery service. The term best effort means that IP

provides no error checking or tracking. IP assumes the unreliability of the

underlying layers and does its best to get a transmission through to its

destination, but with no guarantees. The transmission along a physical

network can be destroyed by a number of reasons like bit errors due to noise,

discarding of a datagram because of congestion in routers etc.

The Components of IPv4 header are:

Version Number

This is a 4-bit field that contains the IP version number the

protocol software is using.

Diagram 2. IPv4 Header

Page 19: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 19

Header Length

This 4-bit field reflects the total length of the IP header built by

the sending machine; it is specified in 32-bit words.

Type of Service

The 8-bit (1 byte) Service Type field instructs IP how to

process the datagram properly.

Datagram Length (or Packet Length)

This field gives the total length of the datagram, including the

header, in bytes.

Identification

This field holds a number that is a unique identifier created by

the sending node.

Flags

The Flags field is a 3-bit field, the first bit of which is left

unused (it is ignored by the protocol and usually has no value written to

it).

Fragment Offset

This enables IP to reassemble fragmented packets in the proper

order.

Time to Live (TTL)

This field gives the amount of time in seconds that a datagram

can remain on the network before it is discarded.

Transport Protocol

This field holds the identification number of the transport

protocol to which the packet has been handed.

Page 20: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 20

Header Checksum

The number in this field of the IP header is a checksum for the

protocol header field (but not the data fields) to enable faster processing.

Sending Address and Destination Address

These fields contain the 32-bit IP addresses of the sending and

destination devices.

Options

The Options field is optional, composed of several codes of

variable length.

Padding

The content of the padding area depends on the options

selected. The padding is usually used to ensure that the datagram header

is a round number of bytes.

DF

It stands for don’t fragment, given as an order to the routers not to

fragment the datagram because the destination is incapable of putting

the pieces back together again.

MF

It stands for more fragments it is needed to know if all the fragments

of the datagram have arrived.

What‘s Wrong With IPv4 ?

• Address space exhaustion by year 2005

• Difficult (re-)configuration

• Sophisticated, structured header

• No integrated end-to-end security solution

Page 21: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 21

• NAT is no longer adequate

What Can IPv6 Do Better?

• Increased address space

– 128 bits = 340 trillion trillion trillion addresses

– (2128=340,282,366,920,938,463,463,374,607,431,768,211,456)

– = 67 billion billion addresses per cm2 of the planet surface

• Hierarchical address architecture

– Improved address aggregation

• More efficient header architecture

• Neighbor discovery and autoconfiguration

– Improved operational efficiency

– Easier network changes and renumbering

• Integrated security features

Why Not IPv5 As Successor For IPv4?

On any IP header, the first 4 bits are reserved for protocol version. So

theoretically a protocol number between 0 and 15 is possible:

• 4: is already used for IPv4

• 5: is reserved for the Stream Protocol (STP, RFC 1819 /

Internet Stream Protocol Version 2) (which never really

made it to the public).

The next free number was 6. Hence IPv6 was born!

Page 22: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 22

IPv6 – Key Advantages

These are the prominent key advantages of IPv6

• Global addressing:

– Scaling well beyond 4 trillion public endpoints

– Stateless address auto-configuration

• Plug and play:

– Simple instant-on ad-hoc networking

• Efficient mobility:

– Mobile IPv6, unlike IPv4, does not need the Foreign Agent

• Secure:

– IPSec is a requirement and integral part of the IP layer

– Anonymous addresses ensure privacy

Summary of IPv6 Benefits

• Expanded addressing capabilities

• Structured hierarchy to manage routing table growth

• Server less auto configuration and reconfiguration

• Streamlined header format and flow identification

• Improved support for options / extensions

IPv6 Meets The Challenges

• Enables next generation network-based applications without

additional expense or expertise

• Enables deployment of these applications without major

investment in new network infrastructure

Page 23: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 23

4.3 IPV6 HEADER

The Figure 3. Portrays the IPv6 Header Format

Vers: 4-bit Internet Protocol version number: 6.

Traffic class: 8-bit traffic class value. The 8-bit traffic class field

allows applications to specify a certain priority for the traffic they

generate, thus introducing the concept of Class of Service.

Flow label: 20-bit field. IPv6 introduces the concept of a flow, which

is a series of related packets from a source to a destination that

requires a particular type of handling by the intervening routers.

Payload length: The length of the packet in bytes (excluding

thisheader) encoded as a 16-bit unsigned integer. If length is greater

than 64 KB, this field is 0 and an option header (Jumbo Payload)

gives the true length.

Next header: Indicates the type of header immediately following the

basic IP header. It may indicate an IP option header or an upper layer

protocol. The protocol numbers used are the same as those used in

IPv4

Hop limit: This is the IPv4 TTL field but it is now measured in hops

and not seconds. It was changed for two reasons:

• IP normally forwards datagrams faster than onehop per second

and the TTL field is always decremented on each hop, so, in

practice, it ismeasured in hops and not seconds.

• Many IP implementations do not expireoutstanding datagrams

on the basis of elapsed time.The packet is discarded once the

hop limit is decremented to zero.

Source address: A 128-bit address consists of sending address.

Page 24: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 24

Destination address: A 128-bit address consists of receiving address.

A comparison between the IPv4 and IPv6 header formats will show

that a number of IPv4 header fields have no direct equivalents in the IPv6

header.

4.4 IPV6 ADDRESSING

Like IPv4, IPv6 addresses can be split into network and host parts using subnet masks.

Local host Address

This is a special address for the loopback interface, similiar to IPv4

with its "127.0.0.1". With IPv6, the localhost address is:

0000:0000:0000:0000:0000:0000:0000:0001 or compressed: ::1

Figure 1. IPv6 Header

Page 25: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 25

Packets with this address as source or destination should never leave the

sending host.

Unspecified Address

This is a special address like "any" or "0.0.0.0" in IPv4 . For IPv6 it's:

0000:0000:0000:0000:0000:0000:0000:0000 or: ::

These addresses are mostly used/seen in socket binding (to any IPv6

address) or routing tables.

IPv6 Address With Embedded IPv4 Address

There are two addresses which contain an IPv4 address.

• IPv4-Mapped IPv6 Address

• IPv4-Compatible IPv6 Address

IPv4-Mapped IPv6 Address

IPv4-only IPv6-compatible addresses are sometimes used/shown for

sockets created by an IPv6-enabled daemon, but only binding to an IPv4

address. These addresses are defined with a special prefix of length 96

(a.b.c.d is the IPv4 address):

0:0:0:0:0:ffff:a.b.c.d/96 or in compressed format ::ffff:a.b.c.d/96

For example, the IPv4 address 1.2.3.4 looks like this: ::ffff:1.2.3.4

IPv4-Compatible IPv6 Address

Used for automatic tunneling, which is being replaced by 6to4

tunneling.

0:0:0:0:0:0:a.b.c.d/96 or in compressed format :a.b.c.d/96

Page 26: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 26

4.5 TUNNELING

When IPv6 or IPv6/IPv4 systems are separated from other similar

systems that they wish to communicate with by older IPv4 networks, then

IPv6 packets must be tunneled through the IPv4 network.IPv6 packets are

tunnelled over IPv4 very simply; the IPv6 packet is encapsulated in an IPv4

datagram, or in other words, a complete IPv4 header is added to the IPv6

packet. The presence of the IPv6 packet within the IPv4 datagram is

indicated by a protocol value of 41 in the IPv4 header.

There are two kinds of tunneling of IPv6 packets over IPv4 networks:

• Automatic Tunneling

• Configured Tunneling

Automatic Tunneling

Automatic tunneling relies on IPv4-compatible addresses. The

decision to when to tunnel is made by an IPv6/IPv4 host that has a packet to

send across an IPv4-routed network area.

Configured Tunneling

Configured tunneling is used for host-router or router-router tunneling

of IPv6-over-IPv4. The sending host or the forwarding router is configured

so that the route, as well as having a next hop, also has a tunnel end address

(which is always an IPv4-compatible address).

Page 27: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 27

Overview of Socket Programming

A socket is nothing more than a convenient abstraction. It represents a

connection point into a TCP/IP network, much like the electrical sockets in

your home provide a connection point for your appliances. When two

computers want to converse, each uses a socket. One computer is termed the

server--it opens a socket and listens for connections. The other computer is

termed the client--it calls the server socket to start the connection. To

establish a connection, all that's needed is a server's destination address and

port number.

Each computer in a TCP/IP network has a unique address. Ports

represent individual connections within that address. Each port within a

computer shares the same address, but data is routed within each computer

by the port number. When a socket is created, it must be associated with a

specific port--this process is known as binding to a port.

Socket Transmission Modes

Sockets have two major modes of operation:

• Connection-oriented mode

• Connectionless mode

Connection-Oriented Mode

Connection-oriented sockets operate like a telephone: they must

establish a connection and then hang up. Everything that a flow between

these two events arrives in the same order it was sent.

Page 28: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 28

Connection-oriented operation uses the Transport Control Protocol

(TCP). A socket in this mode must connect to the destination before sending

data. Once connected, the sockets are accessed using a streams interface:

open-read-write-close. Connection-oriented operation is less efficient than

connectionless operation, but it's guaranteed.

Connectionless Mode

Connectionless sockets operate like the mail: delivery is not

guaranteed, and multiple pieces of mail may arrive in an order distinct from

that in which they were sent.

Connectionless operation uses the User Datagram Protocol (UDP). A

datagram is a self- contained unit that has all the information needed to

attempt its delivery. The UDP protocol promises only to make a best-effort

delivery attempt. Connectionless operation is fast and efficient, but not

guaranteed.

Overview of Java Network Cafe

The following sections give a short overview of the capabilities and

limitations of the different network classes provided in the java.net package.

The overview can help to pick the Java classes that best fit your networking

application.

The URL Class

The URL class is an example of what can be accomplished using the

other, lower-level network objects. The URL class is best suited for

applications or applets that have to access content on the World Wide Web.

Page 29: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 29

If all you use Java for is to write Web browser applets, the URL and

URLConnection classes, in all likelihood, will handle your network

communications needs.

The Socket Class

The Socket class provides a reliable, ordered stream connection (that

is, a TCP/IP socket connection). The host and port number of the destination

are specified when the Socket is created.

The connection is reliable because the transport layer (the TCP

protocol layer) acknowledges the receipt of sent data. If one end of the

connection does not receive an acknowledgment within a reasonable period

of time, the other end re-sends the unacknowledged data (a technique known

as Positive Acknowledgment with Retransmission, often abbreviated as

PAR). Once you have written data into a Socket object, you can assume that

the data will get to the other side (unless you receive an IOException, of

course).

The reliable stream connection provided by Socket objects is well

suited for interactive applications. Examples of protocols that use TCP as

their transport mechanism are Telnet and FTP. The HTTP protocol used to

transfer data for the Web also uses TCP to communicate between hosts.

The Server socket Class

The ServerSocket class represents the thing with which Socket-type

connections

Page 30: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 30

communicate. Server sockets listen on a given port for connection requests

when their accept() method is called. The ServerSocket offers the same

connection-oriented, ordered stream protocol (TCP) that the Socket object

does. In fact, once a connection has been established, the accept() method

returns a Socket object to talk with the remote end.

The Datagram socket Class

The DatagramSocket class provides an unreliable, connectionless,

datagram connection (that is, a UDP/IP socket connection).

Unlike the reliable connection provided by a Socket, there is no

guarantee that what you send over a UDP connection actually gets to the

receiver. The TCP connection provided by the Socket class takes care of

retransmitting any packets that get lost. Packets sent through UDP simply

are sent out and forgotten, which means that if you need to know that the

receiver got the data, you will have to send back some sort of

acknowledgment.

Table 1. Classes of the java.net package

Class Purpose

URL

Represents a Uniform Resource Locator.

URLConnection

Retrieves content addressed by URL objects

Socket

Provides a TCP (connected, ordered stream) socket

ServerSocket Provides a server (listening) TCP socket.

Page 31: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 31

DatagramSocket

Provides a UDP (connectionless datagram) socket.

DatagramPacket

Represents a datagram to be sent using a DatagramSocket object.

InetAddress

Represents a host name and its corresponding IP number or numbers.

4.6 DNS IN NUT SHELL

These are the some of the noteworthy features for DNS server.

• DNS stands for Domain Name System.

• It translates (or "maps" as the jargon would have it) from name to

address and from address to name, and some other things.

• Allow machines to be logically grouped by name Domains.

• Provides email routing Information.

The structure of the DNS database, shown in Figure 2., is very similar

to the structure of the UNIX file system. The whole database (or file system)

is pictured as an inverted tree, with the root node at the top. Each node in the

tree has a text label, which identifies the node relative to its parent.

This is roughly analogous to a "relative pathname" in a filesystem,

like bin. Onelabel - the null label, or "" - is reserved for the root node. In

text, the root node is written as a single dot ("."). In the UNIX filesystem, the

root is written as a slash ("/").

Page 32: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 32

Each node is also the root of a new subtree of the overall tree. Each of

these subtrees represents a partition of the overall database - a "directory" in

the UNIX filesystem, or a domain in the Domain Name System. Each

domain or directory can be further divided into additional partitions, called

subdomains in DNS, like a filesystem's "subdirectories." Subdomains, like

subdirectories, are drawn as children of their parent domains.

Figure 2. The DNS database versus a UNIX file system

Figure 3. DNS upside-down tree structure

Page 33: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 33

The Figure 3. Portraits the DNS upside down tree structure which is in

a hierarchical manner. Every domain has a unique name, like every

directory. A domain's domain name identifies its position in the database,

much as a directory's "absolute pathname" specifies its place in the file

system. In DNS, the domain name is the sequence of labels from the node at

the root of the domain to the root of the whole tree, with "." separating the

labels.

DNS Lookups

DNS have a couple of lookups, one is forward lookup and the other is

reverse of forward lookup.

Forward Lookup

- It Resolves Hostname into IP address.

Reverse Lookup

- It Resolves IP address into Host Name.

DNS Server Functions

These are the some of the notable key points in DNS server.

• Internet Domain Support

- Accessing servers through remote network.

• Local Name Resolution

- Resolve the hostnames of systems on your LAN.

• Internet Name Resolution

- Most often used for ISP's DNS server.

Page 34: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 34

Name Server Hierarchy

According to name server hierarchy the prominent features are

• Master Name Server

Contains the master copy of data for a zone.

• Slave Name Server

Provides a backup to the master name server.

• Caching Name Server

Provides a backup of queries and answers

DNS Message Format and Resource Records

All communications inside of the domain protocol are carried in a

single format called a message. The top level format of message is divided

into 5 sections (some of which are empty in certain cases) shown below:

• Header

• Question

• Answer

• Authority

Figure 4. Graphical Representation of DNS Configuration

Page 35: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 35

• Additional

The header section is always present. The header includes fields that

specify which of the remaining sections are present, and also specify

whether the message is a query or a response, a standard query or some other

opcode, etc.

The names of the sections after the header are derived from their use

in standard queries. The question section contains fields that describe a

question to a name server. These fields are a query type (QTYPE), a query

class (QCLASS), and a query domain name (QNAME). The last three

sections have the same format: a possibly empty list of concatenated

resource records (RRs).

The answer section contains RRs that answer the question; the

authority section contains RRs that point toward an authoritative name

HEADER

QUESTION

ANSWER

AUTHORITY

ADDITIONAL

RRs answering the question

the question for the name server

RRs holding additional information

RRs pointing toward an authority

Diagram 3. DNS Message Format

Page 36: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 36

server; the additional records section contains RRs which relate to the query,

but are not strictly answers for the question.

DNS Configuration Files

The default configuration file for BIND is /etc/named.conf,

There are couples of zones in BIND.

• Master Zone

• Slave zone

Master zones are the central player in BIND configuration. Slave

zones look similar to their master counterparts. These are the typical zone

configuration files in our project.

zone "mahendra.com" {

type master;

file "mahendra.com.zone"

};

zone "kernel.org" {

type slave;

masters { 192.168.192.168; };

file "kernel.org.zone";

};

The file directive specifies the text file that holds the zone's database.

The name of the zone file is arbitrary be common examples include:

mahendra.com.zone

mahendra.com.db

Page 37: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 37

db.mahendra.com

mahendra.com

Zone files usually reside in /var/named/ directories. All zone files

must start with a TTL directive. Every zone file must have the following

components such as serial number, refresh time, retry time, and expire time

and TTL parameters.

Installing a Rpm Package in Linux

The modules from the enhanced version cannot be loaded into the

prior versions, because the facilities in the prior versions are restricted and

the modules attached to the degraded version will not cope up with each

other. So for a version which has no support for IPv6 a patch up rpm

corresponding to the kernel version has to be downloaded from the net and

run in the root using the command.

# rpm –ivh <RPM Package>

For e.g. # rpm –ivh j2sdk1.4.0.1-arch-x86.rpm

The switch options in rpm command are explained as follows:

i - Stands for Installation.

v - Stands for Verbose mode.

h - Stands for Hash display while installation.

Through this RPM command we can install goodies of software's in

Linux boxes.

Page 38: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 38

Path setting for java's bin directory can be achieved by /etc/profile

configuration file by passing certain parameters.

Page 39: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 39

5. SYSTEM IMPLEMENTATION 5.1 OUR PROJECT MODULES In Our Project we divided the process into five Modules:

Kernel Compilation and Creation of Patch Work.

Lookup Module.

Configuring IPv6 over IPv4.

DNS Configuration Settings by editing the /etc based config. files.

Cross Platform Resource Access.

Kernel Compilation and Creation of Patch Work

In this module we are creating a new kernel to execute our project. So

we are surmounting the accidental damages to the already existing

kernel.

Building a new kernel providing some benefits as follows:

• Additional drivers.

• Enabling additional features (security patch for example).

• Use a more recent kernel than prebuilt kernels.

• Optimization

"Lower" memory footprint.

Speed, compiled for your hardware.

We can configure the new kernel in two ways.

• Text based configuration – make config , make menuconfig

Page 40: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 40

• GUI basedconfiguration – make xconfig, make gconfig

In our project the necessary files to build a new kernel are kept under the

loading.sh file.

The following commands are used to customize the kernel

• Kernel level commands

These are the kernel commands which are included in our shell program

loading.sh to build, compile, installing the kernel modules.

# make dep >> for dependency checks.

# make clean >> parameter checks.

# make bzImage >> Extracting Kernel image.

• Modules level commands

These are the commands to install modules in the kernel

# make modules >> configuring kernel modules.

# make modules_install >> installing modules.

Lookup Module

The main goal of this module is to check the status of the server by

the client. Initially the server is enabled by specifying a port number which

is greater than 1024 [i.e. it should not be a default port number as assigned

by ICANN].

Then all the clients are registered with the server in the same port

number that is assigned previously at the server side programs by clicking

Page 41: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 41

on Register button .The client name and the port name are entered on their

preferred text boxes.

Successively any client system can be added in the network with the

server by checking the server status through lookup button. A clear

indication will be shown to the user regarding the server status whether it is

active or inactive.

Configuring IPv6 over IPv4

At present we have IPv4 all around the globe. We can’t change the

entire IPv4 network to IPv6 network suddenly. In order to come over this

problem we encapsulated the IPv6 packet support over the IPv4 packets.

This process is known as “IPv6 Tunneling”. It can be accomplished by

writing proper BIND script for our project.

In our project, we created our network name as “Mahendra.com” with

specified IP address. The file db.mahendra.com contains the essential

functional parameters that are needed to configure the server. The forward

lookup contains the zone name as mahendra.com and the reverse lookup

contains IP address as a zone name. All the server and client names and their

IP addresses are configured in BIND script.

DNS Configuration Settings by editing the /etc Based Configuration

Files

The following commands are used to trigger the server / reconfigure.

• # Service named start - The command indicates to start the

named service in Linux network services.

Page 42: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 42

• # Service named stop - The command indicates to stop the

named service in Linux network services.

• # Service named restart - The command indicates to restart the

named service in Linux network services.

• # Chkconfig named on - The command indicates to start the

named service while booting Linux.

DNS panel consists of three components.

• Control panel

• IPv6 address

• IPv4 address

In the control panel dialog box, we can activate the server through

start / restart buttons and deactivated through stop button. Additionally the

close button is used to exit from the control panel if the user clicks on it.

Both IPv6 and IPv4 address panels consists of following components:

• Domain name – represents the name of the entire network.

• Host name - represents the name of the particular client.

• IPv6/IPv4 address- represents the hexadecimal address format and

classful addressing.

Also the user can add the new clients in the network by clicking on the

add button.

Page 43: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 43

Cross Platform Resource Access

In our project, the server is configured under Linux platform and the

clients may under Windows / Linux platform.

We created the interactive java network programs to get connection

between the client and the server. Initially the server is in ON state. Then the

client sends the domain name and port number (default: 2995) as a run time

parameter while executing. Then through SAMBA server we can access the

windows files and directories in Linux or vice versa…We can enable IPv6

support for samba server by installing the preferred patches.

5.2 THE BOTTOMLINE OF THE PROJECT

At Present situation, suddenly we can’t change the entire IPv4

network into IPv6 network. That’s why we chose to select the concept of IP

v6 over IPv4 Tunneling. The above diagram represents the Bottom line of

the Project that resolves the name and IP address for both IPv6 and IPv4

components. The main concept involved in our Project IPv6 over IPv6

Figure 5. The Bottom Line of the Project

Page 44: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 44

Tunneling. The principal function for this concept is encapsulating the IPv6

packets within IPv4 packets.

Page 45: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 45

6. SOFTWARE TESTING

6.1 AN INTRODUCTION

Testing is done to make sure that all processes are executed properly

in order to avoid unprecedented errors and bugs under various

circumstances.

In our Project following testing procedures are followed.

Unit Testing

Integration testing

Validation testing

Output testing

User Acceptance testing

White box testing

Unit Testing

Unit testing focuses verification effort on the smallest limit of

software design. Using the unit test plan prepared in the design phase of the

system, important control paths are tested to uncover the errors within the

module. This testing was carried out during the coding itself. In this testing

each module is going to be working satisfactorily as the expected output

from the module.

Integration Testing

Integration testing is the systematic technique for constructing the

program structure while at the same time conducting test to uncover errors

associated with the interface. The objective is to take tested modules and

Page 46: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 46

build the program structure that has been dictated by design. All modules are

combined in this testing step. Then the entire program is tested as a whole. If

a set of errors is encountered correction is difficult because the isolation of

causes is complicated by vastness of the entire program. Using integrated

test plans prepared in the design phase of the system developed as a guide,

the integration was carried out. All the errors found in the system were

corrected for the next testing steps.

Validation Testing

At the end of the integration testing, software is completely assembled

as a package, interfacing errors have been uncovered and corrected and final

series of software validation testing begins. Validation testing can be defined

in many ways, but a simple definition is that validation succeeds then the

software functions in a manner that can be reasonably accepted by the user.

Software validation is achieved through a series of black box tests that

demonstrate conformity the requirements. Thus, the proposed system under

consideration has been tested by using validation testing and found to be

working satisfactory.

Output Testing

After performing the validation testing the next step is to perform the

output testing of the proposed system. Since no system could be useful if it

does not produce the required output in the specified format. The output

generated by the system under consideration is compared with the format

required by the user. Here the output format is considered in two ways. One

is onscreen and other is printed format. The output format on the screen is

found to be correct as the system design phase according to the user needs

Page 47: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 47

for the hard copy also, the output comes out as a specified requirement by

the user. Hence, the output testing does not result in any correction in the

system.

User Acceptance Testing

User acceptance of a system is a key factor to the success of any

system. The system under consideration was tested for user acceptance by

constantly keeping in touch with the prospective system user at the time of

developing and making changes wherever required.

This is done with regard to the following points:

• Input screen design.

• Output screen design.

• Online message to guide the user.

• Event driven system.

• Format of the reports and other output.

Black Box Testing

Knowing the specified function that a product has been designed to

platform, test can be conducted at each function is fully operational. Black

box test is carried out to test that input to a function properly accepted and

output is correctly produced. A black box test examines some aspects of a

system with little regard for the internal logical structure of the software.

Errors in the following categories were found through Black Box testing:

• Incorrect or missing functions.

• Interface errors.

• Performance error.

Page 48: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 48

• Initialization and termination errors.

White Box Testing

White box testing of software is predicted on a close examination of

procedural detail. The status of the program may be tested at various points

to determine whether the expected or asserted status corresponding to the

actual status.

Using these following test cases can be derived:

• Exercise all logical conditions on their true and false side.

• Execute all loops within their boundaries and their operation bounds.

• Exercise internal data structure to ensure their validity.

6.2 FEATURES TO BE TESTED There are certain modules to be tested to make the project to be

qualitative and will be effective in certain circumstances.

We divided the testing strategy into two counter parts:

• Generic test

• Security test

Generic Test Conditions

Table 2. Generic Test Conditions Conditions to be tested Expected results Click on all links System display appropriate screen.

No error message saying ‘not found’ is given

Use of wrong data type values Display error: Enter numeric or alpha according to the entry

Page 49: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 49

Security Test Conditions

Table 3. Security Test Conditions Conditions to be tested Expected results Provide wrong port no Displays exception : Improper Port

number If Port number is string Displays Number format Exception If String is a number Displays Illegal argument Exception If port number differs between client and server

Displays "Server not active message"

Page 50: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 50

7. CONCLUSION

Our Project would resolve both IPv4 and IPv6 names, since we have

created a dual stack which supports both kinds of name resolution. The

project also includes the tunneling mechanism through name resolution by

the code developed by the code developed in JAVA.

Though the system has been successfully working with the currently

developed modules, it is planned to upgrade the system to accommodate the

IPv6 name server too. These ideas are under consideration and ground work

for further development is on.

These are the Pointers that we have chosen IPV6 as academic Project.

• Long-term solution, Scalable, Reliable, Manageable

• Secure and High-performance IP networks.

Scope of Future Enhancement The Future Enhancement for our project involves:

• Implementation of IPv6 Name Server.

• Implementation of DHCP Name Server.

• Implementation of SAMBA Server.

Page 51: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 51

8. REFERENCES

Supported RFC’s For Our Project

The Supported RFC’s for our projects are

• RFC1886: DNS extension for IPv6

• RFC2373: IPv6 addressing architecture

• RFC2428: FTP extensions for IPv6 & NATs

• RFC2452: IPv6 MIB: TCP

• RFC2463: ICMP for IPv6

• RFC2464: IPv6 over ethernet

• RFC2466: IPv6 MIB: ICMP

• RFC2553: Basic socket API for IPv6

Books Referred

1. M.Beck, H.Bome, M, Dziadzka, U.Kunitz, R.Manus, D,Verwomer

“LINUX Kernal Internals” Addison Wesley Longman (Singapore )

Pvt. Ltd. Indian Branch 482 FIE , Delhi -110092, pp.54-123.

2. Craig Hunt “Linux Network Servers” BPB publications , B-14

connaught place, New Delhi-01, pp.67-78.

3. Kerry Cox “Red Hat Linux administrator’s guide” Prentice Hall of

India pte Ltd, New Delhi -01, pp.101-222.

4. Christopher Negus “Red Hat Linux 9 Bible” WILEY – dreamtech

India Pvt Ltd, New Delhi-01, pp.36-63.

5. Douglas E.Comer “Internetworking with TCP/IP” forth edition,

Pearson Education pte Ltd, New Delhi-92, pp.92-134.

Page 52: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 52

Websites

1. www.ietf.org

2. www.6bone.net

3. www.linuxkernel.org

4. www.sourceforge.net

5. www.ipv6.org

6. www.linux.org

7. www.linuxquestions.org

8. www.desktoplinux.com

9. www.realvnc.com

10. www.redhat.com

Forums

1. www.IPv6forum.com

Blogs

1. www.blogger.com

FTP Sites

1. ftp://tsx-11.mit.edu/pub/linux

How To Guides

1. Linux IPv6 guide from tldp.org

2. Linux DNS guide from tldp.org

Page 53: Building A Linux IPv6 DNS Server (Complete Softcopy)

Building a Linux IPv6 DNS Server

Page 53

Power Point Presentations (PPT) And PDF’s

1. IPv6 Router Experience and Plans, July 2001, Naoya Ikeda,

Enterprise Server Division Hitachi, Ltd. Power Point Presentation

(PPT).

2. Cisco IPv6 status, Tony Hain, Cisco Systems Technical Leader -

IPv6. Power Point Presentation (PPT).

3. IPv6 market status, Yolonda Lamilla, Consulting System Engineer,

Cisco Systems. (PDF).

4. IPv6 on Linux: A Tutorial Approach, Ibrahim Haddad, IP

Network branch at Ericsson Research.(PDF).