IP Sub-Networking Mini-Howto: Routing

## 7. Routing

If you are using a Linux PC with two network interfaces to route between two (or more) subnets, you need to have IP Forwarding enabled in your kernel. Do a

            cat /proc/ksyms | grep ip_forward

You should get back something like...

    00141364 ip_forward_Rf71ac834

If you do not, then you do not have IP-Forwarding enabled in your kernel and you need to recompile and install a new kernel.

For the sake of this example, let us assume that you have decided to subnetwork you C class IP network number 192.168.1.0 into 4 subnets (each of 62 usable interface/host IP numbers). However, two of these subnets are being combined into a larger single network, giving three physical networks.

These are :-

    Network         Broadcast       Netmask                 Hosts
    192.168.1.0     192.168.1.63    255.255.255.192         62
    192.168.1.64    192.168.1.127   255.255.255.192         62
    182.168.1.128   192.168.1.255   255.255.255.126         124 (see note)

Note: the reason the last network has only 124 usable network addresses (not 126 as would be expected from the network mask) is that it is really a 'super net' of two subnetworks. Hosts on the other two networks will interpret 192.168.1.192 as the network address of the 'non-existent' subnetwork. Similarly, they will interpret 192.168.1.191 as the broadcast address of the 'non-existent' subnetwork.

So, if you use 192.168.1.191 or 192 as host addresses on the third network, then machines on the two smaller networks will not be able to communicate with them.

This illustrates an important point with subnetworks - the usable addresses are determined by the SMALLEST subnetwork in that address space.

## 7.1 The routing tables

Let us assume that a computer running Linux is acting as a router for this network. It will have three network interfaces to the local LANs and possibly a fourth interface to the Internet (which would be its default route.

Let us assume that the Linux computer uses the lowest available IP address in each subnetwork on its interface to that network. It would configure its network interfaces as

    Interface       IP Address      Netmask
    eth0            192.168.1.1     255.255.255.192
    eth1            192.168.1.65    255.255.255.192
    eth2            192.168.1.129   255.255.255.128

The routing it would establish would be

    Destination     Gateway         Genmask         Iface
    192.168.1.0     0.0.0.0         255.255.255.192 eth0
    192.168.1.64    0.0.0.0         255.255.255.192 eth1
    192.168.1.128   0.0.0.0         255.255.255.128 eth2

On each of the subnetworks, the hosts would be configured with their own IP number and net mask (appropriate for the particular network). Each host would declare the Linux PC as its gateway/router, specifying the Linux PCs IP address for its interface on to that particular network.

Robert Hart Melbourne, Australia March 1997.