Materials covered in this lab include:


enabling ip forwarding

installation and configuration of Quagga

configuring OSPF between our three (or more) systems


enabling ip forwarding - installation and configuration of Quagga - configuring OSPF_ubuntu


IP forwarding needs to be enabled in the Linux kernel before the system will forward between interfaces.


This is done via a kernel sysctl value.


To enable forwarding from the command line type:


sysctl -w net.ipv4.ip_forward=1


To enable forwarding for ipv6 from the command line type:


sysctl -w net.ipv6.conf.all.forwarding=1


To insure that these values survive a reboot it is necessary to edit /etc/sysctl.conf where you uncomment


#net.ipv4.ip_forward=1


and


#net.ipv6.conf.all.forwarding=1


Once this is done, it is now possible to create a subnet and assign an ip address to a second interface and then forward a packet arriving on one interface to a destination located on another.


Installing Quagga


Quagga is the routing software suite that we're going to use to support dynamic routing.


We can install it on ubuntu by typing:


$ sudo apt-get install quagga


once installed:


cd /etc/quagga


We need to edit the daemons file, we are going to enable the zebra and ospfd daemons


edit /etc/quagga/daemons and change:


zebra=no

ospfd=no


to yes


before either of the daemons will start configuration files need to be copied into place.


$ sudo cp /usr/share/doc/quagga/examples/zebra.conf.sample /etc/quagga/zebra.conf

$ sudo cp /usr/share/doc/quagga/examples/ospfd.conf.sample /etc/quagga/ospfd.conf


and have their permissions changed:


$ sudo chown quagga.quaggavty /etc/quagga/*.conf

$ sudo chmod 640 /etc/quagga/*.conf


now you can start the routing daemons by typing:


/etc/init.d quagga start


verify that they have started by typing:


ps -fu quagga


The quagga daemons have a cisco style cli, each one listens on it's own port, by default they only listen on localhost. You can telnet to them by typing:


telnet localhost 2601 (for zebra)

telnet localhost 2604 (for ospfd)


log in with the default password (zebra)


lets configure vtysh so that we don't have to use telnet to each individual daemon.


Copy the vtysh config file into place:


cp /usr/share/doc/quagga/examples/vtysh.conf.sample /etc/quagga/vtysh.conf


Edit


/etc/quagga/vtysh.conf


set the hostname entry to:


hostname localhost


then save the file and fix the permissions again:


chown quagga.quaggavty /etc/quagga/*.conf

chmod 640 /etc/quagga/*.conf


then restart quagga


/etc/init.d/quagga restart


set the vtysh pager to something reasonable otherwise actually using it is rather ugly.


$ sudo echo VTYSH_PAGER=more >> /etc/environement


rather than reread the environment we can simply do the following to make this shell work better.


$ export VTYSH_PAGER=more


Interacting with the router


now type:


$ sudo vtysh


once you're at the prompt, you're talking to the combined zebra and ospf routing processes.


# show running-config


the cli from now on is cisco style.


For the sake of generating a combined configuration file type:


# write


Now there is a Quagga.conf configuration file that accurately reflects the contents of both preexisting configuration files...


# exit


you can now remove /etc/quagga/zebra.conf and /etc/quagga/ospfd.conf and restart quagga and the daemons will use the new config.


Configuration


for those of you that know Cisco routers this will seem fairly familiar.


from the command line


$ sudo vtysh

# configure terminal

# router-id 10.X.254.Y


where the X is the group and Y is the pc number


configure interface eth0:1


# interface eth0:1

# ip address 10.x.0.y/26

# description backbone

# ipv6 nd suppress-ra

# exit


configure interface eth0:2


# interface eth0:2

# description host subnet N


replace N with your PC number


# ip address 10.x.y.1/24

# ipv6 nd suppress-ra

# exit


back up one more level


# exit

# show running-config


then write the configuration


# write


Configure OSPF


# conf t

# router ospf

# network 10.X.0.0/16 area 0.0.0.0

# exit


Add a password for the ospf process on the network interface where we're going to be using it.


# interface eth0:1

# ospf authentication-key groupX


where X is the group number.


Back out and write the configuration


# exit

# exit

# write


Now, we are going to configure a static route for an attached subnet, and redistribute that route into ospf


# conf t

# ip route 10.X.Y.0/24 eth0:2

# router ospf

# redistribute static

# exit

# exit

# write


Checking the status of your ospf process


localhost# show ip route

localhost# show ip ospf neighbor


Done with ospf exercise, you should now be able to ping any of the router interfaces within your group.