4

У меня есть ситуация, когда я использую двух интернет-провайдеров, у меня есть программа, которая периодически отправляет эхо-запрос на адрес, и, если он не работает, предполагает, что провайдер имеет проблему, и изменяет маршрут по умолчанию и записи DNS-сервера в /etc /network /interfaces и / Файлы etc / resolvconf / resolv.conf.d / tail соответственно. Он изменяет эти настройки, чтобы они указывали на резервного провайдера. Тогда я бегу

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

Однако это не меняет маршрут по умолчанию (как показано в ip route ls) или DNS-серверы в /etc/resolv.conf. Требуется перезагрузка. Как я могу активировать эти настройки без перезагрузки?

1 ответ1

3

Ничто из того, что я собираюсь вам сказать, не является постоянным при перезагрузках, что, как я полагаю, является вашим желанием, потому что, по-видимому, у вас нестабильная ситуация. Если нет, дайте мне знать.

Я предполагаю, что у вас нет статического IP (опять же, если да, пожалуйста, дайте мне знать). DHCP-сервер провайдера 1 остается включенным, когда линия не работает? Если нет то

 sudo ifdown eth0
 sudo ifup   eth0

даст вам новую конфигурацию. Но если вместо этого DHCP сервер провайдера 1 делает остаться, то вам придется сделать это вручную.

  1. Изменить маршрут:

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

    где я предположил, что вы подключены через Ethernet, и что IP-адрес второго модема 192.168.1.121, если не измениться соответственно.

  2. Изменить DNS, проще всего: отредактируйте (как sudo) /etc/resolv.conf , удалите строки с предыдущими DNS, затем добавьте две следующие строки:

    nameserver 1.2.3.4
    nameserver 9.8.7.6
    

(заменить вашими значениями).

Если это вас раздражает, вы можете автоматизировать его следующим образом: создайте исполняемый файл (!) файл, назовите его line2 , со следующим содержанием:

#!/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

и теперь выполнение line2 даст вам новое соединение.

Существуют и другие, более элегантные способы изменения DNS (использование resolvconf , запись в /etc/resolvconf.d), но, поскольку у вас часто возникают проблемы, ничто не так просто, как это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .