Documentos de Académico
Documentos de Profesional
Documentos de Cultura
with
more than one physical or virtual network device) you could use the following ip routing setup to
use a specific gateway for each network.
Create a configuration file in /etc/network/if-up.d/ (like /etc/network/if-up.d/routing) and add one
section for each network card (eth0, eth1, …), like:
#!/bin/bash
IP=/sbin/ip
case "$IFACE" in
eth0)
$IP route flush table 10
$IP route add table 10 to [NETWORK-1]/[MASK-BITS-1] dev eth0
$IP route add table 10 to default via [GATEWAY-1] dev eth0
$IP rule add from [NETWORK-1]/[MASK-BITS-1] table 10 priority 10
$IP route flush cache
;;
eth1)
$IP route flush table 20
$IP route add table 20 to [NETWORK-2]/[MASK-BITS-2] dev eth1
$IP route add table 20 to default via [GATEWAY-2] dev eth1
$IP rule add from [NETWORK-2]/[MASK-BITS-2] table 20 priority 20
$IP route flush cache
;;
[...]
esac
After restarting the network service the configuration should be active. If you do not know what
mask bits to use, take a look at the ip subnet calculator.
Using Multiple network device to connect to the internet
It happens sometimes that you get more than one connection to the internet. Also it might not be
usefull in most of the cases, there are few cases when it get really usefull to be able to use the first
connection for accessing the Internet and the second connection to access some specific networks
or hosts.
Here I'm going to explain how to achieve this setting.
It happens sometimes that you get more than one connection to the internet, for instance, the
place I work at, I get one connection using a private internet provider (which is real good), and
another one using ADSL from our telecom network. The last one can be accessed using WIFI and
allow us to run some specific programs (some dialers like software) which require a telecom
connection.
Well, I could have made the choice of only using the wireless connection, but to be honest I rather
download my software, packages, iso ... at full speed.
So, get let right into the deal.
In this article, I will assume that the wireless connection uses DHCP to retrieve internet settings
and is called wlan0, the second connection is called eth0 and is configured using static settings (ip
address 193.164.0.4, netmask 255.255.255.0, dns 193.164.0.253 and gateway 193.164.0.254). I
want to access internet using eth0 but for networks using IP adresses range 192.168.0.0/16
(192.168.*) and 192.169.0.0/24 (192.169.0.*), i want to use wlan0.
The file where everything happen is /etc/network/interfaces, people which want to know more
about this file go read the man interfaces.
So edit /etc/network/interfaces
user@localhost:$ vi /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# This is a list of hotpluggable network interfaces.
# They will be activated automatically by the hotplug subsystem.
mapping hotplug
script grep
map eth0
#configuration of wlan0 with dhcp
iface wlan0 inet dhcp
#configuring wireless settingd
wireless-essid mywirelessnetwork
wireless-key XXXXXXXXXXXXXXXXX
#add the route for the wireless interface for specific adresses
up route add -net 192.168.0.0/16 gw mywirelessnetwork dev wlan0
up route add -net 193.169.0.0/24 gw mywirelessnetwork dev wlan0
#remove default gateway generated by dhcp
up route del default gw mywirelessnetwork
#starts automatically at boot up
auto wlan0
#configuring eth0 device with static settings
iface eth0 inet static
address 193.164.0.4
netmask 255.255.255.0
gateway 193.164.0.254
#force to use eth0 dns
dns-nameservers 193.164.0.253
#start automatically at boot up
auto eth0
Here you are. You might want to restart your network interfaces.
user@localhost$sudo /etc/init.d/networking restart
Linux Advanced Routing & Traffic Control HOWTO
Chapter 4. Rules - routing policy database
Next, you set up the routing rules. These actually choose what routing table to route with. You
want to make sure that you route out a given interface if you already have the corresponding
source address:
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
This set of commands makes sure all answers to traffic coming in on a particular interface get
answered from that interface.
Now, this is just the very basic setup. It will work for all processes running on the router itself, and
for the local network, if it is masqueraded. If it is not, then you either have IP space from both
providers or you are going to want to masquerade to one of the two providers. In both cases you
will want to add rules selecting which provider to route out from based on the IP address of the
machine in the local network.
This will balance the routes over both providers. The weight parameters can be tweaked to favor
one provider over the other.
Note that balancing will not be perfect, as it is route based, and routes are cached. This means
that routes to often-used sites will always be over the same provider.
Furthermore, if you really want to do this, you probably also want to look at Julian Anastasov's
patches at http://www.linuxvirtualserver.org/~julian/#routes , Julian's route patch page. They will
make things nicer to work with.