Networking section
Routes under Debian
When you need to add a networking route, there generally are two ways to do it:
- manually adding a route at the command prompt: this means that the machine will "understand" the route for as long as it is running. However, when you reboot the machine, it will have "forgotten" the route. This is called a non-persistent route.
- adding a route to the networking configuration files, so that it will be in place regardless of reboots or network restarts. This is called a persistent route.
Manipulating non-persistent routes
From the days of yore, the venerable route command enables us to view, add, change and delete routes. Its most known use is for printing the current routing table:
#route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.70.0 212.214.172.50 255.255.255.0 UG 0 0 0 eth1 192.168.67.0 * 255.255.255.0 U 0 0 0 eth0 212.214.172.0 * 255.255.255.0 U 0 0 0 eth1 default 212.214.172.1 0.0.0.0 UG 0 0 0 eth1
The addition of -n makes sure the route command does not try to substitute DNS names for IP addresses it knows. The second most used incarnation of route lies in the addition of a route, as has happened in the previous example. The route was added to the routing table using something like this:
#route add -net 192.168.70.0 netmask 255.255.255.0 gw 212.214.172.40
However, there is a newer command available to us, that gives us a bit more options (however, at the cost of losing the well-known output format): this is the ip command, which is part of the essential iproute2 package:
#ip route show 192.168.70.0/24 via 212.214.172.50 dev eth1 src 192.168.67.10 192.168.67.0/24 dev eth0 proto kernel scope link src 192.168.67.10 212.214.172.0/24 dev eth1 proto kernel scope link src 212.214.172.50 default via 212.214.172.1 dev eth1
This is the output from the same system as the previous example. However, we see something interesting here: "ip" is capable of adding extra information to the route, like the first line shows (it's using "via"). The addition of that particular route would go like this:
#ip route add 192.168.70.0/24 via 212.214.172.50 src 192.168.67.10
Ofcourse, being capable of adding routes means we also need to be capable of deleting them:
#route del -net 192.168.70.0 netmask 255.255.255.0 #ip route del 192.168.70.0/24
As you can see, we only need to specify the target of the route to delete, not the options