In Ubuntu: "service networking restart" e "resolvconf restart" non hanno effetto fino al riavvio


4

Ho una situazione in cui sto usando due ISP, ho un programma che ping periodicamente un indirizzo e se è giù presuppone che l'ISP abbia un problema e cambi la rotta predefinita e le voci del server DNS in / etc / network / interfaces e / file etc / resolvconf / resolv.conf.d / tail, rispettivamente. Cambia queste impostazioni per essere indirizzato all'ISP di backup. Allora corro

sudo service networking restart 
sudo /etc/init.d/resolvconf restart. 

Tuttavia, ciò non cambia la rotta predefinita (visualizzata da ip route ls) o i server DNS in /etc/resolv.conf. Richiede un riavvio. Come posso ottenere queste impostazioni attivate senza un riavvio?


Nessuno dei comandi visualizzati cambia la rotta predefinita, né il DNS. Per fare ciò, dovrai specificare entrambe queste cose da te. Che cosa stai cercando di fare, Esattamente ?
MariusMatutiae

@MariusMatutiae Grazie .. Ho due modem DSL da due ISP diversi e ognuno fornisce un set di indirizzi server DNS. Uno è il principale ISP e l'altro è un ISP fallback con una larghezza di banda inferiore. Quando l'ISP principale è inattivo, sto tentando di modificare la route predefinita all'indirizzo IP del modem DSL dell'ISP di backup e dei server DNS forniti dall'ISP di backup. La modifica delle voci pertinenti nei due file funziona dopo il riavvio. Voglio evitarlo. Posso usare il comando ip route anche per cambiare dinamicamente la route predefinita. È persistente attraverso gli stivali? Che ne dici di cambiare le impostazioni DNS?
Sunny

@MariusMatutiae Se il mio approccio è sbagliato, per favore fammi sapere il modo corretto di gestire tale situazione.
Sunny

Per favore, leggi la mia risposta. Mi ci è voluto un po 'di tempo per scriverlo.
MariusMatutiae

Risposte:


3

Niente di ciò che sto per dirti è persistente attraverso i riavvii, che presumo sia ciò che desideri perché, apparentemente, hai una situazione instabile. In caso contrario, fammi sapere.

Presumo che tu lo faccia non avere un IP statico (di nuovo, se è così, per favore fatemelo sapere). Il server DHCP del Provider 1 rimane attivo quando la linea è inattiva? Se non , poi

 sudo ifdown eth0
 sudo ifup   eth0

ti darà la nuova configurazione. Ma, se invece il server DHCP del Provider 1 fa resta acceso, quindi dovrai farlo manualmente.

  1. Cambia percorso:

    sudo ip route del default 
    sudo ip route add default via 192.168.1.121 dev eth0
    

    dove presumo tu sia connesso via ethernet e che l'indirizzo IP del secondo modem sia 192.168.1.121, se non cambi di conseguenza.

  2. Cambia DNS, il più semplice è: modifica (come sudo) /etc/resolv.conf, elimina le righe con i DNS precedenti, quindi aggiungi le due righe seguenti:

    nameserver 1.2.3.4
    nameserver 9.8.7.6
    

(sostituisci con i tuoi valori).

Se trovi fastidioso, puoi automatizzarlo come segue: crea un eseguibile (!) file, chiamalo line2, con il seguente contenuto:

#!/bin/bash
sudo ip route del default 
sudo ip route add default via 192.168.1.121 dev eth0
sed -i --follow-symlinks 's/First.Old.DNS.IP./First.New.DNS.IP/' /etc/resolv.conf
sed -i --follow-symlinks 's/Second.Old.DNS.IP./Second.New.DNS.IP/' /etc/resolv.conf

e ora eseguendo line2 ti darà la nuova connessione.

Ci sono altri modi più eleganti per cambiare i DNS (usando resolvconf, scrivendo a /etc/resolvconf.d ) ma dal momento che sembra che tu abbia un problema frequente, niente è facile come questo.


Grazie. Upvoted. NON sto usando DHCP. Capisco i comandi ip route e cambiano il percorso predefinito senza il bisogno di riavviare. Il mio problema può ora essere ridotto a cambiare i nameserver senza riavviare. In realtà non mi importa nemmeno se le modifiche non persistono attraverso un riavvio. La semplice modifica delle voci nei file di configurazione DNS non modifica automaticamente i server DNS. Come faccio a ottenere le voci DNS nel file di configurazione per avere effetto senza un riavvio? Questo è ora il mio problema ristretto. Ubuntu non consiglia di cambiare /etc/resolv.conf direttamente.
Sunny

2
@Samir Cambia i DNS come descritto sopra, e le modifiche avvengono immediatamente, senza fare altro. Il motivo per cui Linux (non solo Ubuntu) non consiglia di modificare i DNS direttamente nel file è che il Network Manager lo sovrascriverà. Ma dal momento che non stai chiamando il gestore di rete qui, non ti accadrà nulla di sbagliato.
MariusMatutiae

1
@Samir puoi controllare il set di DNS con cui stai usando nmcli dev list iface eth0.
MariusMatutiae

Hai ragione riguardo alla modifica di /etc/resolv.conf direttamente in assenza del gestore di rete. Provato. Funziona bene. Ho accettato la tua risposta. Risolve il mio problema. A proposito, sono curioso di cosa /etc/init.d/resolvconf restart lo fa? Cos'è questo resolvconf servizio elencato da servizio --status-all ?
Sunny

1
@Samir resolvconf è un pacchetto che esegue l'installazione automatica di server DNS, principalmente dal gestore di rete, ma anche da openvpn, ppp e così via. IMHO, è un inconveniente in situazioni in rapida evoluzione come la tua
MariusMatutiae
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.