Ubuntuの場合:「service networking restart」および「resolvconf restart」は、再起動するまで有効になりません


4

2つのISPを使用している状況があります。定期的にアドレスにpingを実行するプログラムがあり、ダウンしている場合はISPに問題があり、/ etc / network / interfacesおよび/ etc / resolvconf / resolv.conf.d / tailファイル、それぞれ。バックアップISPを指すようにこれらの設定を変更します。それから私は走る

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

ただし、これにより、デフォルトルート(ip route lsで表示される)または/etc/resolv.confのDNSサーバーは変更されません。再起動が必要です。再起動せずにこれらの設定を有効にするにはどうすればよいですか?


表示したコマンドは、デフォルトルートもDNSも変更しません。そのためには、そのようなことを自分で指定する必要があります。まさにあなたがしようとしていることは何ですか?
MariusMatutiae

@MariusMatutiaeありがとう。.2つの異なるISPからの2つのDSLモデムがあり、それぞれがDNSサーバーアドレスのセットを提供します。1つはメインISPで、もう1つは帯域幅の狭いフォールバックISPです。メインISPがダウンしているとき、デフォルトルートをバックアップISPのDSLモデムのIPアドレスと、そのバックアップISPが提供するDNSサーバーに変更しようとしています。2つのファイルの関連エントリの変更は、再起動後に機能します。私はそれを避けたいです。ip routeコマンドを使用して、デフォルトルートを動的に変更することもできます。DNS設定の変更はどうですか?
晴れ

@MariusMatutiae私のアプローチが間違っている場合、そのような状況に対処する正しい方法を教えてください。
晴れ

Plsは私の答えを読みます。それを書くのに少し時間がかかりました。
MariusMatutiae

回答:


4

私があなたに伝えようとしていることは、再起動後も持続するものではありません。明らかにあなたは不安定な状況にあるので、それはあなたが望むものだと思います。そうでない場合は、お知らせください。

私はあなたが静的IPを持っていないことを前提としてます(もしそうなら、私に知らせてください)。回線がダウンしても、プロバイダー1のDHCPサーバーはオンのままですか?そうでない場合

 sudo ifdown eth0
 sudo ifup   eth0

新しい構成が提供されます。プロバイダ1の代わりに、DHCPサーバがあればしかし、ないの滞在は、手動で行う必要があります。

  1. ルートを変更:

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

    ここでは、イーサネット経由で接続されており、2番目のモデムのIPアドレスは192.168.1.121であると想定しています。

  2. DNSの変更、最も簡単な方法:編集(sudoとして)/etc/resolv.conf、以前のDNSの行を削除してから、次の2行を追加します。

    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)がありますが、頻繁に問題があるように見えるため、これほど簡単なものはありません。


ありがとう。賛成。DHCPを使用していません。ip routeコマンドを理解しており、再起動することなくデフォルトルートを変更します。私の問題は、再起動せずにネームサーバーを変更することに絞ることができます。実際、リブート後も変更が保持されなくてもかまいません。DNS構成ファイルのエントリを単に変更しても、DNSサーバーは自動的に変更されません。再起動せずに構成ファイルのDNSエントリを有効にするにはどうすればよいですか?これが私の狭い問題です。Ubuntuでは、/ etc / resolv.confを直接変更することはお勧めしません。
晴れ

2
@Samir上記で説明したようにDNSを変更すると、他に何もせずにすぐに変更が行われます。Linux(Ubuntuだけでなく)がファイル内のDNSを直接変更することを推奨しない理由は、Network ManagerがDNSを上書きするためです。ただし、ここではネットワークマネージャを呼び出していないため、問題は発生しません。
MariusMatutiae

1
@Samirで、使用しているDNSのセットを確認できますnmcli dev list iface eth0
MariusMatutiae

ネットワークマネージャーがなくても、/ etc / resolv.confを直接編集するのは正しいことです。それを試してみました。うまくいく。あなたの答えを受け入れました。私の問題を解決します。ところで、/ etc / init.d / resolvconf restartが何をするのか興味 がありますか?service --status-allでリストされているこのresolvconfサービスは何ですか?
晴れ

1
@Samir resolvconfは、主にネットワークマネージャーからだけでなく、openvpn、pppなどからもDNSサーバーの自動セットアップを処理するパッケージです。私見、それはあなたのような急速に変化する状況で不便である
MariusMatutiae
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.