ネットワーク切り替えの問題

ネットワーク切り替えの問題

2つのネットワークカードがインストールされているDebianを実行するデスクトップコンピュータがあります。ネットワークカードは安全な企業ネットワークに接続され、固定IPが必要です。他のネットワークカード(eth1)は、dlinkルーターに接続され、DHCPアドレス付きケーブルモデムに接続されます。

2つのネットワーク間を切り替えるスクリプトを作成したいと思います。両方のネットワークが同時に接続されていないことを確認したいと思います。これで、私のスクリプトは各インターフェイスのup / downステータスを確認し、ifup / ifdownを使用して切り替えます。ただし、ネットワークを切り替えようとすると、さまざまな問題に直面します。これについて概略的に説明します。しかし、間違った方向に行っているようです。

会社のネットワーク接続に必要な固定IP設定とケーブル接続に必要なDHCPを反映するように/etc/network/interfacesを設定すると、複数のゲートウェイファイルが定義されているため、「RTNETLINK応答:ファイルが存在します」というエラーが発生します。

"route add"を介してゲートウェイを定義し、測定を含めると、ifupはeth0を開始しません。インターフェースファイルにeth0とeth1を定義せずにネットワーク管理者を使用してそれらを管理する場合、ifupは両方のインターフェースのいずれかを表示しません。どちらの場合も、ifupを使用しようとすると、詳細な説明なしで「eth#を起動できません」(#を0または1に置き換えます)エラーが発生します。

ifup / ifdownを "ifconfig eth#up / down"に置き換えると、インターフェイスは正常にオンとオフになりますが、resolv.confのDNS設定が更新されないため、何もできません。 "resolvconf -u"を追加しても機能しないようです。

切り替え後に resolv.conf を手動で編集すると、すべてのネットワークですべてが正常に動作するようにできますが、できるだけ自動化され、簡素化されるようにします。あなたが提供できる助けに心から感謝します。

- -更新- -

/etc/ネットワーク/インターフェース

auto lo
  iface lo inet loopback

auto eth0
  iface eth0 inet static
  address 10.0.0.152
  netmask 255.255.255.0
  gateway 10.0.0.1
  network 10.0.0.0
  broadcast 10.0.0.255
  dns-search company.com
  dns-nameservers 10.0.0.2 10.0.0.3 10.0.0.4
  meter 100  #without this line I get RNETLINK answers: file does not exist

auto eth1
  iface eth1 inet dhcp  #assigns an address in the 192.168.0.0/24 space with 192.168.0.1 as DNS
  meter 200  #without this line I get RNETLINK answers: file does not exist

/etc/resolv.conf

nameserver 10.0.0.2
nameserver 10.0.0.3
nameserver 10.0.0.4
search company.com cable.provider.com

ファイルを手動で編集しない限り、私のresolv.confには常にeth0接続用のDNSサーバーがあり、検索パスに両方のドメインがあります。ケーブル接続が機能するには、別のネームサーバーラインを削除し、192.168.0.1を追加する必要があり、企業接続が機能するようにするには、ケーブルプロバイダの検索パスのみを削除します。

ベストアンサー1

DHCP設定にはゲートウェイアドレスを含めないでください/etc/network/interfaces。たとえば、eth0 で DHCP を設定するには、少なくとも次の行だけが必要です。

auto eth0
    iface eth0 inet dhcp

正しく設定ifupしてifdown正常に機能したら、インターフェイスの状態を変更したときに実行したいスクリプトを配置できます/etc/network/if-up.d/etc/network/if-down.dただし、DHCPサーバーが正しく設定されている場合は、クライアントにDNS構成を提供する必要があるため、手動で構成する必要はありません。

編集する

/etc/network/interfacesDNS設定を自動的に変更するには、インターフェイスがDHCPを使用していても、各インターフェイスに必要な設定を追加する必要があります。ディレクトリのフックスクリプトを使用して呼び出すと、
DNS設定/etc/network/interfacesがに渡されます。 resolvconfifupifdown/etc/network/if-(up|down).d

インターフェイスを使用してインターフェイスを開くと、対応するifupDNS設定がインターフェイスに接続されます/etc/resolv.conf。これがまさに皆さんが経験している現象です。逆に、分解インターフェイスを使用すると同じ設定も削除されますifdown。ただし、それを使用してもifdown静的DNS設定がない場合、/etc/network/interfacesそのインターフェイスの設定は削除されません/etc/resolv.conf

したがって、項目はeth1次のようにする必要があります。

auto eth1    
    iface eth1 inet dhcp  #assigns an address in the 192.168.0.0/24 space with 192.168.0.1 as DNS
    metric 200            #without this line I get RNETLINK answers: file does not exist
    dns-search cable.provider.com

また、&-vオプションを使用して詳細な出力を有効にし、正確にどのフックスクリプトが実行されているかを確認することもできます。ifupifdown

源泉: man resolvconf man interfaces

おすすめ記事