Routing for multiple uplinks with CentOS 7
How do you configure a Linux host to connect a local network to the Internet through multiple providers? Linux Advanced Routing and Traffic Control HOWTO is a good starting point. However, it only describes the commands, not where to put them.
With Red Hat and CentOS 7 the commands are split between several files. Following the HOWTO, assume that eth0 is connected to the LAN, eth1 to provider 1 and eth2 to provider 2.
Edit /etc/iproute2/rt_tables and add one line for T1 and one for T2. This creates two custom routing tables.
Optionally edit /etc/sysconfig/network and add NOZEROCONF=yes to get rid of the zero-config routing rules that are created by default.
In /etc/sysconfig/network-scripts/ there should be configuration files for all network cards: ifcfg-eth0, ifcfg-eth1 and ifcfg-eth2. Edit the files and remove GATEWAY, as we will add our gateways manually.
Create three new files named route-eth0, route-eth1 and route-eth2. They should contain the routing commands from the HOWTO. For example the route-eth1 could contain:
$P1_NET dev eth1 src $IP1 table T1 default via $P1 table T1 $P1_NET dev eth1 src $IP1
Optionally add a default as well (see the HOWTO for more advanced setups):
default via $P1
This covers the routes. Create rule-eth1 and rule-eth2 with the rules, for example rule-eth1:
from $IP1 table T1
Try it out and see how the routing tables change when a network interface is started or stopped.
This is just a starting point. My goal is to point out where the configuration in the HOWTO should go in Red Hat/CentOS 7, not to create a full-blown configuration. Good luck!