11

On the Linux box there are 2 interfaces:

Bond0: inet addr:170.242.57.113  Bcast:170.242.57.255  Mask:255.255.255.0
Eth4    : inet addr:172.21.136.124  Bcast:172.21.137.255  Mask:255.255.254.0

Because eth4 is on a different network, I want to setup a new route, therefore

used route-eth4
ADDRESS0=172.21.136.0
NETMASK0=255.255.254.0
GATEWAY0=172.21.137.251

But this failled, looked into ifup and worked out that /etc/sysconfig/network-scripts/ifup-routes was the script setting up the routing, issuing the following command

ip route  add 172.21.136.0/23 via 172.21.137.251 dev eth4
RTNETLINK answers: File exists

Looks like the route can’t be added for /23

But works if I do it with 2 /24

ip route  add 172.21.136.0/24 via 172.21.137.251 dev eth4
ip route  add 172.21.137.0/24 via 172.21.137.251 dev eth4
netstat –nr

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irttIface
172.21.137.0    172.21.137.251  255.255.255.0   UG        0 0          0 eth4
172.21.136.0    172.21.137.251  255.255.255.0   UG        0 0          0 eth4
170.242.57.0    0.0.0.0         255.255.255.0   U         0 0          0 bond0
172.21.136.0    0.0.0.0         255.255.254.0   U         0 0          0 eth4
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth4
0.0.0.0         170.242.57.251  0.0.0.0         UG        0 0          0 bond0

It works fine and I don’t understand why it’s not working for the /23

Address:   172.21.136.124        10101100.00010101.1000100 0.01111100
Netmask:   255.255.254.0 = 23    11111111.11111111.1111111 0.00000000
Wildcard:  0.0.1.255             00000000.00000000.0000000 1.11111111
=>
Network:   172.21.136.0/23       10101100.00010101.1000100 0.00000000 (Class B)
Broadcast: 172.21.137.255        10101100.00010101.1000100 1.11111111
HostMin:   172.21.136.1          10101100.00010101.1000100 0.00000001
HostMax:   172.21.137.254        10101100.00010101.1000100 1.11111110
Hosts/Net: 510                   (Private Internet)

Any idea?

1
  • 5
    Stop. Please go read How does Subnetting Work. Keep reading until you understand why you got the "File Exists" error. I'm not trying to be mean, but you're apparently lacking a bit in understanding IP Subnets.
    – Chris S
    Oct 21, 2011 at 15:47

2 Answers 2

9

It works fine and I don’t understand why it’s not working for the /23

Because it's already there - this is what RTNETLINK answers: File exists is telling you.

your netstat -rt output contains this route:

172.21.136.0    0.0.0.0         255.255.254.0   U         0 0          0 eth4

which is conflicting with ip route add 172.21.136.0/23 via 172.21.137.251 dev eth4.

3
  • But how does it know to route to the gateway 172.21.137.251, not sure to understand the meaning of 0.0.0.0
    – rnoooo
    Oct 21, 2011 at 14:30
  • 4
    0.0.0.0 is used for a gatway when the network is local. You don't need a gateway for that network you are connected to it.
    – Zoredache
    Oct 21, 2011 at 15:42
  • 5
    Fwiw I don't think File exists is an acceptable error message. If it is a route that already exists, why not use Route exists as an error message? If not, which file is it that already exists?
    – moritz
    Jul 7, 2012 at 17:37
3

The /23 is already in your table...

netstat -nr

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
172.21.137.0    172.21.137.251  255.255.255.0   UG        0 0          0 eth4
172.21.136.0    172.21.137.251  255.255.255.0   UG        0 0          0 eth4
170.242.57.0    0.0.0.0         255.255.255.0   U         0 0          0 bond0
172.21.136.0    0.0.0.0         255.255.254.0   U         0 0          0 eth4 <----------
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth4
0.0.0.0         170.242.57.251  0.0.0.0         UG        0 0          0 bond0

Also keep in mind that ip route add 172.21.136.0/23 via 172.21.137.251 dev eth4 is a bit non-sensical since 172.21.137.251 is in 172.21.136.0/23

5
  • But how does it know to route to the gateway 172.21.137.251 ?
    – rnoooo
    Oct 21, 2011 at 14:29
  • @rnooooo, remove the old entry and it will work Oct 21, 2011 at 14:31
  • I can see it working before
    – rnoooo
    Oct 21, 2011 at 14:36
  • ip route get 172.21.136.23 172.21.136.23 dev eth4 src 172.21.136.124
    – rnoooo
    Oct 21, 2011 at 14:36
  • But this tell me that it's going to use eth4 to route this ip, but I can't what will be the gateway, how does the box work it out?
    – rnoooo
    Oct 21, 2011 at 14:37

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .