T-110.5102 Laboratory Works in Networking and Security (5-10 cr)

Lab A3: IPv6


Description of the exercise

In this exercise you will collect knowledge about Internet Protocol version 6 (IPv6). The main task is to build a small network.

Material

  • RFC 4291 - IP version 6 Addressing Architecture
  • RFC 2375 - IPv6 Multicast Address Assignment
  • RFC 2460 - Internet Protocol, Version 6 (IPv6) Specification
  • RFC 2461 - Neighbor Discovery for IP version 6 (IPv6)
  • IPv6 HOWTO - Very much information about IPv6 and Linux
  • IPv6 - Ubuntu Wiki - Iinformation about IPv6 and Ubuntu
  • ifconfig, route, tcpdump & scp manual pages

Preparation

Please familiarize yourself with the network topology before you start doing this assignment.
Network topology
When you feel ready to start the actual assignment, check that the radvd daemon is not running.

Use a prefix length of 64 for IPv6 addresses in this exercise.

Work tasks

  1. Build a small network.

    Configure your network as described.
    The Virtual Machines (VM) are connected according to the network topology shown above. Each line represents a crossover connection to another machine. Use Lab1 as the Router and the other two VMs as Nodes.

    Add the following addresses to the /etc/hosts file on each VM.

    		::1 localhost
    	3ffe:300:10:3::2 Node1
    	3ffe:300:10:4::2 Node2
    	3ffe:300:10:3::1 Router Router-0
    	3ffe:300:10:4::1 Router-1
    	

    Set up Lab1 to act as a router. Use the following sysctl commands (note that the last one will avoid messing up eth0 interface, update: you should do the last one on all of your VMs to prevent problems with misconfiguration):

    		~> sysctl -w net.ipv6.conf.default.forwarding=1
    	~> sysctl -w net.ipv6.conf.all.forwarding=1
    	~> sysctl -w net.ipv6.conf.eth0.accept_ra=0	
    	
  2. Add static addresses to eth1 on each VM and eth2 on the Router. Activate all interfaces. On Node1 and Node2, add necessary routes.
    1.1 What do the systcl commands do?  1 p
    1.2 List all commands that you used to add static addresses to the router and all the nodes and interfaces. Explain one of the add address commands.
    1 p
    1.3
    List the command that you used to add the default route on Node 1, and explain it. 1 p
    1.4
    List interface information from Node 1, as well as the IPv6 routing table. Explain the IPv6 information from the interface and the routing table. What does a double colon (::) indicate?
    3 p
    1.5
    Start the tcpdump program on each machine. From Node1, ping the Router and Node2. You should get a return packet for each ping you have sent. If not, recheck your network configuration. Show the headers of successful ping return packets. Show ping6 output as well as tcpdump output. 2 p
  3. Rebuild your network.

    Router

    Install IPv6 Router Advertisement Daemon (radvd)

    Modify the content of radvd.conf file to be used in your network (If radvd.conf file does not exist create one under /etc directory). Start the router advertisement daemon (radvd). Note: Verify with 'ps' -command, that radvd started up properly. If radvd refuses to start up (process exits with non-zero value) then the error can be e.g. typo in radvd.conf file.

    Check that router advertisement packets are sent to each interface periodically.

    On Node1, Node2:

    Remove all static addresses from the interfaces and run the interfaces down.

    Bring the interfaces on Node1 and Node2 back up.
    Start the tcpdump on Node1 and capture all packets. Stop capturing packets after receiving first few ICMP6 packets.

    Ping Node2 from Node1. You should get a return packet for each ping you have sent. If not, recheck your network configuration.

    2.1
    Explain your modifications to radvd.conf. Which options are mandatory? 2 p
    2.2
    Analyse captured packets and explain what happens, when you set up the interface.
    2 p
    2.3
    How is the host-specific part of the address determined in this case?
    1 p
    2.4
    Show and explain the output of a traceroute(1) from Node1 to Node2. 1 p
  4. Connect to the global IPv6 network

    As a final assigment, we will connect one of the machines to the global IPv6 network. Currently the virtual machines don't have a native IPv6 connection to the outside world. This is because the current switches in the building don't support IPv6. However we can still get connected.

    Test first that you cannot ping for example ipv6.google.com using ping6. Now install Miredo. Try to ping again. If you don't get connection, you can try to change the Teredo server in /etc/miredo.conf . Use for example teredo.trex.fi.
    3.1
    How does Teredo work / How can you be connected to the IPv6 network even without native support for it? 2 p
    3.2
    What is your global IPv6 address? How is this address constructed? 2 p