Ubuntu Desktop Editionでログオンする前に有線インターフェースでネットワークを開始する方法


17

問題

Ubuntu 9.10 Desktop Edition(および場合によっては以前のバージョンもテストしていません)は、起動後、少なくとも1人のユーザーがログインするまでネットワーク接続がありません。これは、ネットワークを必要とするサービス(たとえば、openssh-server)誰かがgdm、kdm、またはTTYを介してローカルにログインします。

バックグラウンド

Ubuntu 9.10 Desktop Editionは、NetworkManagerサービスを使用して、Gnomeのnm-applet(またはKDEの同等物)からコマンドを取得します。私が理解しているように、NetworkManagerが起動時に実行されている間、nm-appletはログインしてGnomeセッションが開始されるまで(またはKDEに類似するまで)実行されないため、初めてログインするまで接続するコマンドは発行されません。TTY経由でログインしたときにNetworkManagerがネットワークに接続するように促すプロンプトが何であるかわかりません。

ネットワーク接続の開始には、次のような関連する変数がいくつかあります。

  • 有線vsワイヤレス(および結果のドライバー、SSID、パスワード、優先順位)
  • 静的vs DHCP
  • 複数のインターフェース

制約

  • Ubuntu 9.10 Karmic Koalaをサポート(追加サポートバージョンのボーナスポイント)
  • 有線eth0インターフェイスをサポート
  • DHCP経由でIPアドレスを受け取る
  • DHCP経由でDNS情報を受信します(明らかにDHCPサーバーがこの情報を提供する必要があります)
  • 適切な時間にネットワークを有効にします(たとえば、ファイルシステムがロードされた後、sshのようなネットワークサービスが開始される前)
  • ディストリビューションまたはバージョンの切り替え(例:Server Editionへの切り替え)は受け入れられないソリューションです
  • 静的IP構成への切り替えは受け入れ可能なソリューションではありません

質問

  • Ubuntu Desktop Editionにログオンする前に、有線インターフェイスでネットワークを開始する方法は?

See-Also

参照資料

回答:


9

起動時にDHCPを介してネットワークインターフェイスを自動的に構成するには、次の行を追加します /etc/network/interfaces

auto eth0
iface eth0 inet dhcp

これにより、NetworkManagerが実行されていなくてもインターフェースが起動します。必要に応じて、パッケージnetwork-managerを削除することもできます。


ああ、それは私が質問をしたときの単なるタイプミスでしたが、それは私が試したことです。つまり、/ etc / init.d / networking restartを実行すると、「* Reconfiguring network interfaces ...」と表示されますが、インターフェイスは起動されず、IPを取得することはできません。これらの設定でも、再起動を行ってもインターフェイスは起動しません。
たくましい

auth eth0 代わりに:の代わりに:auto eth0 あなたの投稿では、まだあなたが投稿でのみ行ったタイプミスだと思いませんか?
-goedson

Ubuntu 9.10を新規インストールし、上記のように/ etc / network / interfacesを編集し、発行によりsudo /etc/init.d/networking restarteth0が起動し、DHCPを介して設定されました。
-goedson

ああ、メガフェイル!:facepalm:あなたが言った元のタイプミスはありませんでしたが、最初の行には「auto」ではなく「auth」があります。投票が長すぎたので投票を変更するには、回答を変更する必要があると思います(wth?)。タイプミスをしてから混乱を避けるため、質問から「試してみた」セクションを削除しました。おそらくのようなものが追加:「に次のように追加/etc/network/interfacesのインタフェースを管理し、DHCP経由でそれを持ち出すことを防ぐにNetworkManagerに」私がチェックし、この修正プログラムは、NMがインストールされ、起動時にそれをもたらすかどうかを確認するために持っている...
たくましい

答えを変更したので、解決策が明確になりました。
-goedson

1

Debian / Ubuntuには、起動時にサーバーを管理する独自のプログラムがあります。

試してみる update-rc.d STARTUP-SCRIPT defaults

eth0の特定のスクリプトを検索し、これで有効にします。

常に自分のスクリプトを作成してinit.dに配置し、前のコマンドを実行するとブート時にロードされるようにすることができます。

または、これらのコマンド(ifconfig up、dhcpcd)を/etc/rc.localに置くだけです(このファイルはブート時に毎回読み込まれます)


以前update-rc.dを使用したことがありますが、問題はeth0固有のSTARTUP-SCRIPTを見つけることです。少なくともUbuntu 9.10 DEにはありません。/etc/init.d/networkingスクリプトだけがあり、実際には単にupstartジョブを呼び出しているだけです(/ lib / init / update-job networking startは、具体的に言うものです)。上記のように、/ etc / init.d / networking start、/ lib / init / update-job networking start、および/またはservice networking start / restartを呼び出しても、IPを取得することはほとんどありません。自分でスクリプトを書くこともできましたが、もっとエレガントなソリューションを望んでいました。
-Burly

rc.localにdhclient eth0を置くことが私の唯一のオプションかもしれません。うまくいくかどうか確かめるためにこれを試す必要があります。ここに配置する際の問題は、すべてのシステムサービスが開始されるまでrc.localが実行されないため、他のスタートアップサービスが(sshのように)実際に依存できないことです。
強気

1
回避策:dhclient eth0/etc/rc.localに追加すると、起動時にeth0インターフェイスが適切に起動され、DHCP経由でIPが取得されます。少なくとも私にとっては、openssh-serverがランレベル234で開始するように設定されているため、誰もがローカルでログインする前にSSHも利用できます。すべてのネットワーク対応サービスが、rc.localただし、rc.localはシステムサービスの後に実行されるため、ntpdate)。
暴行
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.