How to have two network interfaces wifi and ethernet (as a backup) working together

14,213

Solution 1

I would use device bonding, meaning you are creating a new virtual device for which you assign the network settings (e.g. IP address, mask, etc.) and then you enslave both the ethernet and wifi interfaces to that interface.

Something like:

 $ sudo modprobe bonding
 $ sudo ifconfig bond0 192.168.0.1 netmask 255.255.0.0
 $ sudo ifenslave bond0 eth0 wlan0

This has the advantage of covering all your scenarios from 1 to 5 with one exception: you have only 1 IP address. If that would be a problem, then you could always create an "alias" (e.g. bond0:0) and give a different IP address for that one. Then you would always have both IP addresses reachable even if only 1 interface is active.

More details can be found online. E.g.: http://www.codekoala.com/posts/bonding-eth0-and-wlan0-arch-linux/

Solution 2

Bonding was exactly what I needed, so I adapted this answer. I can backup both interfaces and designate the ethernet interface as the primary one. In fact I didn't want a different address for each interface. I thought I had to do it with different ones but the solution with only one address and automatic backup is exactly what I wanted. (I also tested with 3 different addresses and it worked.)

Here's my new /etc/network/interfaces file:

auto lo
iface lo inet loopback

auto bond0
iface bond0 inet static
address 192.168.1.10
netmask 255.255.255.0
network 192.168.1.0
gateway 192.168.1.1
# Bonding
bond-slaves none
bond-primary eth0
bond-mode active-backup
bond-miimon 100
bond-downdelay 200
bond-updelay 200

auto wlan0 
#allow-hotplug wlan0
iface wlan0 inet manual
# Bonding
bond-master bond0
bond-primary eth0
bond-mode active-backup
wpa-ssid xxxxxxxxxxxxxxx
wpa-bssid XX:XX:XX:XX:XX:XX
wpa-psk  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

auto eth0
iface eth0 inet manual
# Bonding
bond-master bond0
bond-primary eth0
bond-mode active-backup
Share:
14,213

Related videos on Youtube

Admin
Author by

Admin

Updated on September 18, 2022

Comments

  • Admin
    Admin almost 2 years

    I have a raspberry 2 with a wifi interface and an ethernet interface. wifi is my main connection with the ability to just plug in the ethernet as a backup method. I want to assign different static address for each interface.

    What I want is to be able :

    1. to boot with only the USB wifi connected on the first address
    2. to boot with only the ethernet connected on the second address
    3. to boot with both wifi and ethernet and be able to use both addresses
    4. to boot with only the wifi; then hotplug the ethernet and be able to use both addresses.
    5. when both wifi and Ethernet are connected, to be able to keep the other connection when one of them is down for a reason or anothe.

    I couldn't manage to do this. If someone could help me I would be very thankful.

    Here's my /etc/network/interfaces file :

    auto lo
    iface lo inet loopback
    
    auto wlan0
    #allow-hotplug wlan0
    iface wlan0 inet static
    address 192.168.1.10
    netmask 255.255.255.0
    gateway 192.168.1.1
    wpa-ssid my-network
    wpa-bssid XX:XX:XX:XX:XX:XX
    wpa-psk  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    
    auto eth0
    iface eth0 inet static
    address 192.168.1.20
    netmask 255.255.255.0
    gateway 192.168.1.1
    
    • goldilocks
      goldilocks almost 9 years
      There is a potential complication if you are using Raspbian or another distro which configures ifplugd by default, although it maybe a helpful complication WRT #4, hotplugging ethernet.
    • Jonathan Roberts
      Jonathan Roberts almost 9 years
      You say what you want to happen but not what problem you are experiencing.