GNU/Linux >> Znalost Linux >  >> Linux

Je možné mít více výchozích bran pro odchozí připojení?

Vyřešil jsem to sám. Zdá se, že existuje velmi málo informací o síťových věcech, které můžete s Linuxem dělat, a tak jsem se rozhodl své řešení podrobně zdokumentovat a vysvětlit. Toto je moje konečné nastavení:

  • 3 síťové karty:eth0 (drát), wlan0 (vestavěná wifi, slabá), wlan1 (usb wifi adaptér, silnější signál než wlan0)
  • Všechny v jedné podsíti, každá s vlastní IP adresou.
  • eth0 by se mělo ve výchozím nastavení používat pro příchozí i odchozí provoz.
  • Pokud eth0 selže, měl by být použit wlan1.
  • Pokud selže wlan1, měl by být použit wlan0.

První krok :Vytvořte novou směrovací tabulku pro každé rozhraní v /etc/iproute2/rt_tables . Říkejme jim rt1, rt2 a rt3

#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1  inr.ruhep
1 rt1
2 rt2
3 rt3

Druhý krok :Konfigurace sítě v /etc/network/interfaces . Toto je hlavní část a já se pokusím vysvětlit co nejvíce:

auto eth0 wlan0
allow-hotplug wlan1

iface lo inet loopback

iface eth0 inet static
address 192.168.178.99
netmask 255.255.255.0
dns-nameserver 8.8.8.8 8.8.4.4
    post-up ip route add 192.168.178.0/24 dev eth0 src 192.168.178.99 table rt1
    post-up ip route add default via 192.168.178.1 dev eth0 table rt1
    post-up ip rule add from 192.168.178.99/32 table rt1
    post-up ip rule add to 192.168.178.99/32 table rt1
    post-up ip route add default via 192.168.178.1 metric 100 dev eth0
    post-down ip rule del from 0/0 to 0/0 table rt1
    post-down ip rule del from 0/0 to 0/0 table rt1

iface wlan0 inet static
wpa-conf /etc/wpa_supplicant.conf
wireless-essid xyz
address 192.168.178.97
netmask 255.255.255.0
dns-nameserver 8.8.8.8 8.8.4.4
    post-up ip route add 192.168.178.0/24 dev wlan0 src 192.168.178.97 table rt2
    post-up ip route add default via 192.168.178.1 dev wlan0 table rt2
    post-up ip rule add from 192.168.178.97/32 table rt2
    post-up ip rule add to 192.168.178.97/32 table rt2
    post-up ip route add default via 192.168.178.1 metric 102 dev wlan0
    post-down ip rule del from 0/0 to 0/0 table rt2
    post-down ip rule del from 0/0 to 0/0 table rt2

iface wlan1 inet static
wpa-conf /etc/wpa_supplicant.conf
wireless-essid xyz
address 192.168.178.98
netmask 255.255.255.0
dns-nameserver 8.8.8.8 8.8.4.4
    post-up ip route add 192.168.178.0/24 dev wlan1 src 192.168.178.98 table rt3
    post-up ip route add default via 192.168.178.1 dev wlan1 table rt3
    post-up ip rule add from 192.168.178.98/32 table rt3
    post-up ip rule add to 192.168.178.98/32 table rt3
    post-up ip route add default via 192.168.178.1 metric 101 dev wlan1
    post-down ip rule del from 0/0 to 0/0 table rt3
    post-down ip rule del from 0/0 to 0/0 table rt3

Pokud zadáte ip rule show měli byste vidět následující:

0:  from all lookup local 
32756:  from all to 192.168.178.98 lookup rt3 
32757:  from 192.168.178.98 lookup rt3 
32758:  from all to 192.168.178.99 lookup rt1 
32759:  from 192.168.178.99 lookup rt1 
32762:  from all to 192.168.178.97 lookup rt2 
32763:  from 192.168.178.97 lookup rt2 
32766:  from all lookup main 
32767:  from all lookup default 

To nám říká, že provoz příchozí nebo odchozí z adresy IP „192.168.178.99“ bude používat směrovací tabulku rt1. Zatím je vše dobré. Ale provoz, který je generován lokálně (například chcete ping nebo ssh ze stroje někam jinam), vyžaduje zvláštní zacházení (viz velká citace v otázce).

První čtyři post-up řádky v /etc/network/interfaces jsou jednoduché a vysvětlení lze nalézt na internetu, pátý a poslední řádek je ten, který dělá kouzlo:

post-up ip r add default via 192.168.178.1 metric 100 dev eth0

Všimněte si, že jsme neurčili směrovací tabulku pro tento post-up řádek. Pokud neurčíte směrovací tabulku, informace se uloží do main směrovací tabulku, kterou jsme viděli v ip rule show . Tento dodatečný řádek vloží výchozí trasu do "hlavní" tabulky směrování, která se používá pro místně generovaný provoz, který není odpovědí na příchozí provoz. (Například MTA na vašem serveru se pokouší odeslat e-mail.)

Všechna tři rozhraní vkládají do hlavní směrovací tabulky výchozí trasu, i když s různými metrikami. Podívejme se na main směrovací tabulka s ip route show :

default via 192.168.178.1 dev eth0  metric 100 
default via 192.168.178.1 dev wlan1  metric 101 
default via 192.168.178.1 dev wlan0  metric 102 
192.168.178.0/24 dev wlan0  proto kernel  scope link  src 192.168.178.97 
192.168.178.0/24 dev eth0  proto kernel  scope link  src 192.168.178.99 
192.168.178.0/24 dev wlan1  proto kernel  scope link  src 192.168.178.98

Vidíme, že hlavní tabulka tras má tři výchozí trasy, i když s různými metrikami. Nejvyšší priorita je eth0, potom wlan1 a potom wlan0, protože nižší metrická čísla znamenají vyšší prioritu. Od eth0 má nejnižší metriku, toto je výchozí trasa, která se bude používat po dobu eth0 je nahoře. Pokud eth0 klesne, odchozí provoz se přepne na wlan1 .

S tímto nastavením můžeme napsat ping 8.8.8.8 v jednom terminálu a ifdown eth0 v jiném. ping by měl stále fungovat, protože ifdown eth0 odstraní výchozí trasu související s eth0 , odchozí provoz se přepne na wlan1 .

Přídavné řádky zajišťují, že související tabulky směrování budou odstraněny z databáze zásad směrování (ip rule show ), když se rozhraní vypne, aby bylo vše uklizené.

Problém, který zbývá, je, že když vytáhnete zástrčku z eth0 výchozí trasa pro eth0 je stále tam a odchozí provoz selže. Potřebujeme něco, co by monitorovalo naše rozhraní a spouštělo ifdown eth0 pokud je problém s rozhraním (např. selhání síťové karty nebo někdo vytahuje zástrčku).

Poslední krok :zadejte ifplugd . To je démon, který sleduje rozhraní a spouští ifup/ifdown pokud vytáhnete zástrčku nebo pokud je problém s připojením wifi /etc/default/ifplugd :

INTERFACES="eth0 wlan0 wlan1"
HOTPLUG_INTERFACES=""
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"

Nyní můžete vytáhnout zástrčku na eth0 , odchozí provoz se přepne na wlan1 a pokud zásuvku vložíte zpět, odchozí provoz se přepne zpět na eth0 . Váš server zůstane online, dokud bude fungovat kterékoli ze tří rozhraní. Pro připojení k vašemu serveru můžete použít ip adresu eth0 a pokud se to nepodaří, ip adresu wlan1 nebo wlan0.


Linux poskytuje lepší řešení než vaše skriptované řešení:propojení aktivních záloh.

Tímto způsobem bude mít váš počítač pouze jeden IP adresu (a jednu mac adresu) a automaticky a transparentně přepínat rozhraní, pokud se jedno rozhraní stane nedostupným. Žádné přerušení jakéhokoli připojení TCP (ani k vaší interní síti LAN ani k internetu).

Sám toto nastavení používám k automatickému převzetí služeb při selhání z eth0 na wlan0 na mém notebooku s debianem, když odpojím svůj notebook od dokovací stanice.

Moje /etc/network/interfaces:

# The primary network interface
allow-hotplug eth0
iface eth0 inet manual
        bond-master bond0
        bond-primary eth0

# The secondary network interface
allow-hotplug wlan0
iface wlan0 inet manual
        pre-up sleep 5
        wpa-conf /etc/wpa_supplicant.conf
        bond-master bond0
        bond-primary eth0

# The bonding interface
allow-hotplug bond0
iface bond0 inet dhcp
        bond-slaves eth0 wlan0
        bond-primary eth0
        bond-mode active-backup
        bond-miimon 10
        bond_downdelay 10
        bond_updelay 4000

Toto nastavení můžete snadno rozšířit tak, aby zahrnovalo více zařízení WLAN. Nastavení primary_reselect možnost na better (automaticky vybere nejrychlejší odkaz) by zde mělo pomoci.

Další informace najdete na https://wiki.linuxfoundation.org/networking/bonding a https://wiki.debian.org/Bonding

A (samozřejmě) dokumentaci linuxového jádra na https://www.kernel.org/doc/Documentation/networking/bonding.txt


Linux
  1. Linux – Deep Freeze Like Software pro Fedoru?

  2. Jak zadat heslo pro více Windows?

  3. Čekat na dokončení stahování více souborů?

  1. Opravdu není nastavení výchozích možností připojení pro Udisky možné?

  2. Whitelist IP v CSF pro vzdálená připojení MySQL

  3. Je možné mít adresářovou historii bash

  1. Je možné, aby kořenový a domovský oddíl měly různé systémy souborů a byly umístěny na samostatných fyzických zařízeních?

  2. Clusterssh alternativa pro správu více serverů SSH

  3. Je možné, aby L2TP VPN provedla automatickou konfiguraci trasy pro klienta během připojení?