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/interfaces
DNS設定を自動的に変更するには、インターフェイスがDHCPを使用していても、各インターフェイスに必要な設定を追加する必要があります。ディレクトリのフックスクリプトを使用して呼び出すと、
DNS設定/etc/network/interfaces
がに渡されます。 resolvconf
ifup
ifdown
/etc/network/if-(up|down).d
インターフェイスを使用してインターフェイスを開くと、対応するifup
DNS設定がインターフェイスに接続されます/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
オプションを使用して詳細な出力を有効にし、正確にどのフックスクリプトが実行されているかを確認することもできます。ifup
ifdown
源泉:
man resolvconf
man interfaces