Adding a route to specific host go out a specific interface
I have a Red Had Linux machine with two NICs:
- eth0 - 10.0.1.253 | 255.0.0.0
- eth1 - 10.0.1.1 | 255.255.255.0
So the first one is on a class A subnet, the second is on a class C subnet.
This is what my routing table looks like:
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.1.0 * 255.255.255.0 U 0 0 0 eth1
link-local * 255.255.0.0 U 1002 0 0 eth0
10.0.0.0 * 255.0.0.0 U 0 0 0 eth0
default 10.0.0.1 0.0.0.0 UG 0 0 0 eth0
The two NICs are connected to separate physical (actually virtual) LAN segments and I have a host connected to the same LAN segment eth0 is with IP 10.0.1.3 | 255.0.0.0 but I can't ping it from this machine because it appears its getting confused and sending out eth1. When I disable eth1 to force the packet to go out eth0 it connects but I need both enabled.
I'm thinking the solution is to add a manual route to my host 10.0.1.3 to force it to go through eth0. I'm not sure given the information above what the command would be to manually the route. Basically I need to send any traffic to 10.0.1.3 out eth0. Any help would be great!!
Solution 1:
# route add -host 10.0.1.3 dev eth0
Solution 2:
On a newer machine using the ip
binary the syntax to add a route is slightly different (but thankfully really consistent for hosts/networks/etc).
ip route add 10.0.1.3 via 10.0.0.1 dev eth0
If you were going to add a new default route for a new 10.0.2.0
network through the eth1
interface it might be something like this.
ip route add 10.0.2.0/24 via 10.0.1.1 dev eth1
Source: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/s1-networkscripts-static-routes.html