Skip to content

farsightsec/ifupdown-multi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ifupdown-multi

ifupdown-multi integrates support for multiple default gateways on independent network connections into the Debian ifupdown network interface configuration system. It adds new multi_* options to the /etc/network/interfaces file format in order to more easily configure Linux's policy based routing.

The policy information used to configure each network interface using ifupdown-multi is saved when ifup is run. This allows network interfaces using ifupdown-multi to be brought up or down cleanly as needed.

Installation

The ifupdown-multi Debian package should be used if possible.

Manual installation can be accomplished by running the following commands:

    # install -m 0755 ifupdown-multi.py /usr/local/lib/ifupdown-multi.py
    # ln -sf /usr/local/lib/ifupdown-multi.py /etc/network/if-up.d/ifupdown-multi
    # ln -sf /usr/local/lib/ifupdown-multi.py /etc/network/if-down.d/ifupdown-multi

ifupdown-multi is implemented in Python and requires the Python runtime to be installed on the system and available during boot.

Configuration

See the ifupdown-multi-interfaces(5) manpage for details.

The following example shows a basic configuration with two network interfaces attached to two Internet providers.

    auto eth0
    iface eth0 inet static
        address 198.51.100.123
        netmask 255.255.255.0
        multi_table 1
        multi_gateway 198.51.100.1

    auto eth1
    iface eth1 inet static
        address 203.0.113.234
        netmask 255.255.255.0
        multi_table 2
        multi_gateway 203.0.113.1

Caveats

  • Do not specify a prefix in multi_gateway_preferred_prefixes that overlaps one of the subnets directly attached to the host.

  • IPv6 is supported, but it is implemented in a slightly different way than IPv4. The multi_gateway_weight option is not supported for IPv6 gateways. The first IPv6 gateway configured is used instead, unless a specific prefix is configured to use a particular gateway using the multi_gateway_prefixes option.

  • ifup disables stateless address autoconfiguration when the static method is used with the inet6 address family, however it does not disable the learning of routes from IPv6 router advertisements. It is recommended to place an executable script in the /etc/network/if-pre-up.d directory containing something like the following contents:

#!/bin/sh
if test "$IFACE" = "--all"; then
    exit 0
fi
if test "$METHOD" != "static"; then
    exit 0
fi
IFACE="$(echo $IFACE | cut -f1 -d:)"
echo 0 > /proc/sys/net/ipv6/conf/$IFACE/autoconf
echo 0 > /proc/sys/net/ipv6/conf/$IFACE/accept_dad
echo 0 > /proc/sys/net/ipv6/conf/$IFACE/accept_ra
echo 0 > /proc/sys/net/ipv6/conf/$IFACE/accept_ra_defrtr
echo 0 > /proc/sys/net/ipv6/conf/$IFACE/accept_ra_pinfo
echo 0 > /proc/sys/net/ipv6/conf/$IFACE/accept_ra_rtr_pref
echo 0 > /proc/sys/net/ipv6/conf/$IFACE/accept_redirects
echo 0 > /proc/sys/net/ipv6/conf/$IFACE/accept_source_route
echo 0 > /proc/sys/net/ipv6/conf/$IFACE/dad_transmits

About

multiple default gateway support for ifupdown

Resources

License

Stars

Watchers

Forks

Packages

No packages published