Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I have used Ubuntu since Ubuntu 8.10; today I'm working with Ubuntu 12.04 Server.

I am having difficulty keeping static routes on booting. I would usually put the route commands

/sbin/route add -net <IP>/<MASK> <GW> dev <ethX>

in /etc/rc.local or I would create a file (named routes) inside the directory /etc/network/if-up/, but I notice that on Ubuntu 12.04 it isn't working.

If I type the commands in the shell, they work, but the same commands don't work when they are in the specified file.

I already tried to change the file name to other names thinking that my file name (routes) could be erroneous in Ubuntu 12.04, but that also did not work.

I notice also that command /sbin/ifconfig works, less the /sbin/route.

What changed in network set-up?

How can I define static routes on Ubuntu 12.04?

share|improve this question
    
Just to check: is rc.local executable and it starts with the shebang line? Maybe its a problem with your command. You can try redirect stderr to a file (your_command > stderr.txt 2>&1) and inspect its output... –  Salem Jul 25 '12 at 16:59
    
You should set routes in /etc/network/interfaces, not in /etc/rc.local. And new commands you should use is ip add and ip route. One command to rule the net. :) –  Anders Jul 26 '12 at 0:37
add comment

3 Answers 3

You can put static routes in /etc/network/interfaces:

auto eth0
iface eth0 inet static
      address 192.168.1.2
      netmask 255.255.255.0
      up route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
      up route add -net 172.16.0.0 netmask 255.255.0.0 gw 192.168.1.1
share|improve this answer
    
I will try it. Thanks, Eric Carvalho. –  Frank Allan Jul 25 '12 at 17:15
1  
Syntax for /sbin/ip: up ip route add 192.168.0.0/24 via 192.168.1.1 –  w00t Jan 23 at 13:01
add comment

You can try this (add it to /etc/network/interfaces), this is almost complete way for setting routes:

auto eth0
iface eth0 inet static
    post-up /sbin/route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
    post-up /bin/mount -t nfs 192.168.0.203:/motd/ /motd/
share|improve this answer
add comment

I found very often that the correct place to define a static route is in /etc/network/interfaces, it is ok if you are going to globally restart the network with /etc/init.d/networking restart for example. But if you are going to use ifdown and ifup to individually shutdown an interface, ifup will end with the error:

ifup eth1

RTNETLINK answers: File exists
Failed to bring up eth1.

Because of it tries to define a route but it is already defined. The interface will be up anyway but, ifup will not update /run/network/ifstate so next time you will us ifdown you will not able to do it unless you use the --force flag.

To make ifup to continue configuring even if routes are already defined, you can use this format when defining routes in /etc/network/interfaces

up ip route add 172.16.0.0/24 via 192.168.10.1 || true
up ip route add 192.168.0.0/16 via 192.168.10.1 || true

This way you will have the warning in the output but the interface configuration will be completed

ifup eth1

RTNETLINK answers: File exists
RTNETLINK answers: File exists
ssh stop/waiting
ssh start/running, process 18553
share|improve this answer
1  
Why not simply add a "down ip route del 192.168.0.0/16 via 192.168.10.1" to the config? –  w00t Jan 23 at 12:59
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.