Percorso predefinito non in LAN

Ho una networking che in linea di principio sembra così:

H1---\ /----Inet1 H2---->---GW1---< H3---/ \----GW2-----Inet2 
  • H1 e H2 = Host che hanno bisogno di accesso a Internet con GW1
  • Inet1 = collegamento Internet tramite connessione 3G
  • Inet2 = collegamento a 5GHz a Internet (non sempre in su)
  • GW1 = Funziona come router, selezionando automaticamente la "migliore" connessione tra Inet1 e Inet2 (quest'ultimo tramite GW2).
  • GW2 = router wifi a 5GHz

Ed ecco il problema: H3 necessita solo di accesso a Internet quando Inet2 è in su. Quello che stavo pensando di fare era una tabella di routing che sembra così:

  • percorrere la via GW2 tramite GW1
  • path predefinito è via GW2

Per prima cosa ho impostato il path su GW2 tramite GW1 senza alcun problema. Ma quando provo

route add default gw 1.2.3.4

(1.2.3.4 è l'IP di GW2), si lamenta "SIOCADDRT: Nessun dispositivo" È il problema che il gw predefinito sto cercando di impostare non è raggiungibile direttamente? C'è un approccio diverso che mi permetterebbe di raggiungere questo objective?

Un approccio alternativo (e ipotetico): poiché H3 utilizza un IP statico, è ansible fare una magia con iptables su GW1 per inoltrare i pacchetti da H3 a GW3, così "truccando" H3 nell'utilizzo di GW2 come router predefinito?

PS: Questa domanda è una domanda di follow-up a questa.

    2 Solutions collect form web for “Percorso predefinito non in LAN”

    Il tuo approccio alternativo potrebbe essere raggiunto utilizzando il routing basato su criteri. Qualcosa lungo le righe di (i comandi dovrebbero essere eseguiti su GW1):

     # Create rule for matching the source address in route table 999 ip rule add from 1.2.3.4/32 table 999 # Add default router to the table ip route add default via <GW2> table 999 

    Non ho la possibilità di testare i comandi, ma dovrebbero essere corretti. Le regole di routing nella tabella 999 non sono visibili nella normale $ ip route show – è necessario aggiungere l'ID tabella: il $ ip route show table 999 .

    Poiché la tua domanda è leggera su specifiche, la risposta sarà anche leggera su specifiche:

    1. Impostare il gateway predefinito di H3 in GW1.
    2. GW1 deve sempre percorrere il traffico da H3 a GW2.

    L'"intelligenza" di come percorrere i pacchetti deve risiedere nei router, non nelle caselle finali. Quindi il gateway predefinito deve essere uno direttamente accessibile nella stessa substring; quel gateway deve quindi capire cosa fare con i pacchetti per get where dovrebbero andare.

      Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.