Howto add permanent static routes in Ubuntu
Posted by admin on June 18th, 2008
Email This Post
If you're new here, you may want to subscribe to my RSS feed. Thanks for visiting!
Advantages of Static Routes
- Easy to configure
- No routing protocol overhead
Disadvantages of Static Routes
- Network changes require manual reconfiguration
- Network outages cannot be automatically routed around
- Does not scale well in large networks.
Add a Static route using “route” command
route add [-net|-host] <IP/Net> netmask <Mask> gw <Gateway IP> dev <Int>X
Example
route add -net 10.10.10.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0
route add -host 10.10.1.1 netmask 255.255.255.0 gw 192.168.1.1 dev eth0
This adds the route immediatly to the Kernel IP routing table. To confirm the route has been successfully, simply type the “route” command with no arguements:
route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.254 * 255.255.255.0 U 0 0 0 eth0
localnet * 255.255.255.0 U 0 0 0 eth0
10.10.10.0 * 255.255.255.0 U 0 0 0 eth0
10.10.1.1 * 255.255.255.0 U 0 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
Use
netstat -rn
to print the Kernel IP Routing table.
To keep the Static Route persistent or you want to add the route entries to the network script files (not using the route command) then all you need to do is to edit the file
/etc/network/interfaces
and the static routes in the following format:
up route add [-net|-host] <host/net>/<mask> gw <host/IP> dev <Interface>
Example
up route add -net 172.20.11.0/16 gw 172.20.10.254 dev eth1
And the file will like the following
sudo cat /etc/network/interfaces
The output should show something like this
sudo cat /etc/network/interfaces
The output should show something like this
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0 eth1
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.254
# dns-* options are implemented by the resolvconf package, if installed
iface eth1 inet static
address 172.20.10.1
netmask 255.255.255.0
broadcast 172.20.10.255
gateway 172.20.10.254
# static route
up route add -net 172.20.11.0/16 gw 172.20.10.254 dev eth1
The above has 2 Ethernet interfaces and the static route is added to the interface eth1.
For the change to /etc/network/interface to take effect. please restart the “networking” service as follows:
sudo /etc/init.d/networking restart
NOTE: If you added the route already using the “route” then there is no need to restart the networking service because, the next time server is restarted this takes effect.



June 20th, 2008 at 7:14 am
Is the
upstuff there a typo or a sudo-like command?June 20th, 2008 at 9:56 am
@llaurén
No you need to add the syntax in /etc/networ/interfaces file
July 28th, 2008 at 4:50 pm
It does not work:
$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
iface eth0 inet dhcp
auto eth0
up route add -net 172.20.11.0/16 gw 172.20.10.254 dev eth0
Renders…
$ sudo /etc/init.d/networking stop
* Deconfiguring network interfaces…
/etc/network/interfaces:13: misplaced option
ifdown: couldn’t read interfaces file “/etc/network/interfaces”
[fail]
AND
$ sudo /etc/init.d/networking start
* Configuring network interfaces…
/etc/network/interfaces:13: misplaced option
ifup: couldn’t read interfaces file “/etc/network/interfaces”
[fail]
July 30th, 2008 at 11:31 pm
You need to put the up route option after the iface line it is attached to. You’re putting it above all your iface lines.
July 30th, 2008 at 11:33 pm
Or rather, after the iface static line. You’re using DHCP and I didn’t notice that line there. You may need to configure the route in your dhcp server instead. I don’t think that the iface dhcp line accepts options in the same way as the iface static.
November 7th, 2008 at 2:36 pm
I have found your statement to be true - if using DHCP, then the up command is ignored. So if your using a weak DHCP server like W2003’s version that only partially adds static routes - is there any other place I can add the route add command? so at boot up the route gets added to the routing table?
November 20th, 2008 at 5:36 pm
You could add it to rc.local which gets run last. The only problem with this option is that anything that loads before rc.local will not be able to use this route.