As in any Network device or a server, there will be times when you need to add a persistent static route to a target destination in your Debain Linux Server.
Adding a Static route in Debain Linux can be done using the "route" command and editing the network script files.
Advantage of using the route command is that it alters the Kernel IP Routing table dynamically and the static route becomes available as soon as it is been added. However, a reboot of the server looses this static route. This is where it becomes essential to add the static route in the network script files.
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:
DEBIAN:~# 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:
#cat /etc/network/interfaces
The output should show something like this
# 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 eth1iface 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:
/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.
Helpful post, thanks. I’m not a debian fan, but need to use it for a project i’m working on. Seems they don’t follow LSB to the letter (??)
thanks.. problem solve
exactly that way, thx.
ad non-permanent via cli, using the “normal” subnet description.
add permanent in /etc/network/interfaces, using the cdir description.
oh linux, why are u so nerdish? 🙂
How to add a static IPv6 route in linux maschines..??