12

At my office, there is a Windows Server 2008 router, 192.168.16.1, which is our default gateway. This sends data through our main internet connection. This works perfectly.

192.168.16.1 also has another internet connection that is currently sitting unused. This connects to a router, 192.168.1.254 which then connects to our secondary internet connection.

I have set up Routing and Remote Access to route the 192.168.1.* range to our internal network, and I am able to ping 192.168.1.254 from my desktop that has an IP address of 192.168.16.22.

I have a very intensive upload and download task for a linux box in the same office, so I want to set up a static route so I do not tie up our main internet connection and affect my co-workers. So, my plan is to set up this box with a static route.

From the linux box, I am able to ping 192.168.1.254, but I am unable to add a static route to the destination server in our data center:

$ sudo route add -host 123.123.123.123 gw 192.168.1.254 dev eth0
SIOCADDRT: No such process

From extensive googling, this error message seems to indicate that I am unable to access 192.168.1.254 to set up a route, yet I can ping it. I attempted to add a static route to 192.168.1.254, which worked perfectly, but this did not solve the issue (as expected).

I am not advanced enough at networking to diagnose this issue further as my background is software development, not system administration. I would be very grateful for any advice given.

Thank you for your time.

Steve Rukuts
  • 332
  • 2
  • 3
  • 12

3 Answers3

10

Is the desktop on 192.168.16.0/24?

You cannot add a route (to any target) via a gateway which you are not directly connected to, because your computer does not know how to find it's way to the router without going through the default route.

3molo
  • 4,340
  • 5
  • 30
  • 46
3

You can get the "SIOCADDRT: No such process" error if "You attempted to set a route for a network before setting a host route for the gateway which handles traffic for that network."

e.g. for local -> 172.19.0.1 -> 172.19.0.xx

[root@local]# route add -net 172.19.0.0 gw 172.19.0.1 netmask 255.255.255.0 dev eth0
SIOCADDRT: No such process

ANSWER: First create a host route, then create a net route.

e.g. for network in question: local -> 192.168.1.254 -> 123.123.123.123

sudo route add -host 192.168.1.254 dev eth0

sudo route add -net 123.123.123.123 netmask 255.255.255.255 gw 192.168.1.254 dev eth0

A static route will still load the network, I guess it depends ;). The upload/download traffic has to cross the network. So it will affect other users of the network. You can bandwidth-limit the traffic or move that traffic to quieter hours if you wish to reduce affect on other network users. e.g. rsync has good bandwidth limiting options.

I had a similar issue with routing and SIOCADDRT. local -> dockerserver -> dockercontainer. Adding host route then net route made the routing work in one direction.

This helped me https://support.symantec.com/en_US/article.TECH142841.html

Full routing example, routing working both ways:

dockerserver=172.19.0.1
dockerservernet=172.19.0.0
dockercontainer=172.19.0.25
local=192.168.111.23
localnet=192.168.111.0

### 0. create host route for gw and net route local->docker
[root@local]# route add -host $dockerservernet dev eth0
[root@local]# route add -net $dockerservernet gw $dockerserver netmask 255.255.255.0 dev eth0

### 1. route on dockerserver to local
[root@dockerserver ~]# route add -net $localnet netmask 255.255.255.0 dev eno1
[root@dockerserver ~]# ping $local

### 2. route FROM dockercontainer to local (via gateway dockerserver)
[root@dockercontainer /]# route add -net $localnet netmask 255.255.255.0 gw gateway dev eth1
[root@dockercontainer /]# ping $local
gaoithe
  • 183
  • 7
0

Regarding the part of the question about setting persistent routes in an AWS EC2 instance running Ubuntu, the correct place to place static routes to persist through an AWS reboot, stop, and start is /etc/rc.local.

Within that file, you need to place your routes in the line above the last line. Your lines should look just like this:

route add -net XXX.XXX.XXX.XXX netmask XXX.XXX.XXX.XXX gw XXX.XXX.XXX.XXX

Running the sudo command will be lost on reboot.

techraf
  • 4,163
  • 8
  • 27
  • 44
Duke Hall
  • 103
  • 4