My trusty Slackware box died, and I had to replace it with an already built Linux Mint v18. I was hoping this would be a drop-in replacement, but routing has changed over the years with iproute2. I was hoping just adding "route add default gw eth1" would work - and it does - but the issue is my gateway computer can't establish a connection to anything on eth0.

Simplified layout:


The Gateway has eth0, and eth1, and is a firewall for everything on The router generally handles WiFi devices on

Current configuration, I let KDE network manager bring up the interfaces, and just added the gw command as stated above:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface         UG    100    0        0 eth1   U     1      0        0 eth0   U     1      0        0 eth1

This is working; all devices on are routed properly, and I can connect to the gateway from and the internet without issue.

However, I can't initiate so much as a ping from the gateway to anything on I ran tcpdump, and found the source IP was changed to (eth1). So this tells me the packets are going out the wrong interface, even though I set the metric for the gateway line to be higher than the others, and therefore not considered first.

I've read a number of stackexchange posts, and a few sites such as policy routing, and linux-ip, but I just can't seem to find a solution.

I'm not terribly familiar with iproute2, but what I've been able to pull together, just to get working is:

echo "1 admin" >> /etc/iproute2/rt_tables
ip rule add from priority 1 table admin
ip rule add to priority 1 table admin
ip route add table admin dev eth0
ip route cache flush

This makes sense to me; create a table which has higher priority than the defaults, create a rule from/to, then add a route on the same table to send it over eth0. But, this is not working.

It seems like there is something I'm missing, but I can't find it.

# uname -a
Linux neXuss2 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
  • When the packets for eth0 go to the wrong interface, you should only see them on eth1 with the tcpdump parameter -i eth1. If they go out to the correct interface, then the routing table of the clients in network may hold an incorrect routing entry for the network Ip forwarding must be enabled anyway, as @telcoM stated in his answer.
    – gerhard d.
    Commented Mar 15, 2022 at 19:54
  • I see, this is a very old question. Is it still active?
    – gerhard d.
    Commented Mar 15, 2022 at 19:56
  • @gerhardd. Define "active"! You can see answers, comments, and you can see whether any answer had been accepted.
    – U. Windl
    Commented Sep 30, 2022 at 6:44

1 Answer 1


You should not need iproute2 for such a simple case.

However, you should check that the master switch for IP routing is on: make sure your /etc/sysctl.conf includes the line


and then run sudo sysctl -p to make it take effect immediately.

The default value for net.ipv4.ip_forward sysctl is 0, which disables all IPv4 routing functionality completely.

Also, you should check the basics: verify that the eth0 interface actually has a link and is not producing errors. ethtool eth0 to verify link state and ethtool -S eth0 to view the statistics counters in the NIC driver.

  • That was disabled, I enabled it, and ran sysctl, but it had no effect. Routing from eth0 to eth1 is working, but talking to computers on eth0 is not. Ethtool shows no errors.
    – Lucas
    Commented Dec 9, 2018 at 22:16

You must log in to answer this question.

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