Cara membuka antarmuka jaringan hanya jika ada secara fisik

8

Menjalankan Ubuntu Server 12.04 (tanpa GUI). Apa cara terbaik untuk membuat kernel membawa antarmuka jaringan hanya jika secara fisik terhubung? Jadi, jika tidak ada, lanjutkan dengan menginisialisasi antarmuka lain (jika ada) dan lanjutkan ke layar login, tanpa penundaan "menunggu konfigurasi jaringan".

Misalnya, saya punya kunci USB nirkabel wlan9 (di / etc / network / interfaces):

auto wlan9
iface wlan9 inet dhcp
        wpa-ssid myssd
        wpa-psk mykey
        wpa-proto RSN
        wpa-pairwise CCMP
        wpa-group CCMP

Saya mencoba allow-hotplug daripada auto , dalam hal ini antarmuka tidak dapat diinisialisasi secara otomatis selama boot, dan saya harus melakukannya secara manual dengan ifup wlan9 . Ini bukan yang saya cari.

Terima kasih.

noseratio
sumber

Jawaban:

4

Juga untuk server: gunakan NetworkManager

  1. Pasang itu:

    sudo apt-get install network-manager
    

    Sayangnya, ini akan menarik banyak ketergantungan.

  2. Menurunkan antarmuka yang saat ini dikonfigurasi dengan cara tradisional.

    ifdown wlan9
    
  3. Nonaktifkan semua pengaturan manual /etc/network/interfacesdengan menghapus semua baris mengenai antarmuka itu.

  4. Tambahkan pengaturan koneksi untuk koneksi nirkabel Anda di /etc/NetworkManager/system-connections/(buat nama):

    [connection]
    id=Some name of my connection
    uuid=0d791425-87c5-45e6-948e-01b1863901f7
    type=802-11-wireless
    
    [802-11-wireless]
    ssid=mySSID
    mode=infrastructure
    mac-address=24:77:00:01:02:03
    security=802-11-wireless-security
    
    [802-11-wireless-security]
    key-mgmt=wpa-psk
    psk=mypassword
    
    [ipv4]
    method=auto
    
    [ipv6]
    method=ignore
    
    • Untuk uuidmenggunakan perintah uuidgenuntuk menghasilkan yang acak.
    • Untuk mac-addressmenggunakan alamat MAC adaptor nirkabel Anda (gunakan ifconfig -a wlan9untuk mencari tahu). Ini mengikat file konfigurasi ini hanya dengan adaptor ini - jika tidak ada maka tidak akan menggunakannya untuk adaptor lain, juga tidak akan menunggu adaptor hadir.
    • Saya berharap bidang lain berbicara sendiri. :)
  5. Mulai ulang NetworkManager atau reboot.

    restart network-manager
    
gertvdijk
sumber
Terima kasih, opsi Network Manager terasa agak berat, tetapi saya akan beralih jika tidak menemukan sesuatu yang lebih ringan. ifplugd hampir berfungsi, wlan9 naik tetapi tidak mendapatkan sewa DHCP.
noseratio
@Noseratio Ya, saya setuju ini bukan solusi yang ringan. Jika saya tahu manajer jaringan yang lebih ringan tanpa dependensi GUI saya akan menggunakannya dalam jawaban saya. :)
gertvdijk
@ gertvdijk Bisakah Anda memberi tahu saya apa yang terjadi jika saya menghapus mac-addressbaris? Apakah ini akan bekerja untuk semua adapter atau akan crash?
DangeMask
@DangeMask Seharusnya hanya bekerja untuk semua adapter yang saya kira. Coba dan cari tahu saja?
gertvdijk
@ gertvdijk Saya baru saja mencoba. Jika saya menghapus "alamat MAC perangkat" (dihapus dalam GUI, juga menghilang dalam file), Manajer jaringan tidak akan terhubung secara otomatis bahkan setelah satu manual terhubung dan reboot. Saya mencoba bahkan mengatur ifupdown> berhasil benar dan salah tanpa hasil.
DangeMask
3

dan lanjutkan ke layar login

Menyarankan Anda berada di instalasi yang diaktifkan GUI (non-server) - jadi saya memberikan jawaban ini berdasarkan itu.


Cukup gunakan NetworkManager

  1. Turunkan antarmuka.

    ifdown wlan9
    
  2. Nonaktifkan semua pengaturan manual /etc/network/interfacesdengan menghapus semua baris mengenai antarmuka itu.

  3. Buka pengaturan jaringan, dan tambahkan / edit koneksi jaringan nirkabel.

  4. Konfigurasikan sebagai berikut (lihat tangkapan layar di bawah):

    1. Apakah itu terhubung secara otomatis.

    2. Terapkan ke adaptor nirkabel yang tepat dengan memilih alamat MAC yang tepat. Jika adaptor tidak ada, maka pengaturan koneksi ini dalam dialog ini tidak akan berlaku, jadi ini "mengikat" mereka ke adaptor khusus ini (karena setiap adaptor memiliki alamat MAC lain). Dan tidak, ini bukan alamat MAC WiFi AP - itu BSSID.

    3. Jadikan itu tersedia untuk semua pengguna (ini membuatnya secara otomatis terhubung pada layar login sudah). Perhatikan bahwa pengaturan ini berwarna abu-abu sampai Anda memberikan detail yang diperlukan.

    Dan tentu saja juga memasukkan detail lain tentang keamanan, SSID, dll.

    masukkan deskripsi gambar di sini

gertvdijk
sumber
Maaf, saya lupa menentukan ini adalah Server Ubuntu. Terima kasih, saya menyimpan petunjuk ini untuk kebutuhan desktop saya.
noseratio
1
@Noseratio Ah ... sayang sekali. Sekarang menulis jawaban untuk instalasi server. Harap lebih spesifik dan lengkap di pertanyaan Anda lain kali.
gertvdijk
Aku akan. Maafkan noob :)
noseratio
3

Saya datang dengan solusi berikut yang tidak bergantung pada paket tambahan:

auto wlan9
iface wlan9 inet manual
        wpa-ssid MYSSD
        wpa-psk MYKEY
        wpa-proto RSN
        wpa-pairwise CCMP
        wpa-group CCMP
        wireless-power off
        pre-up if [ -f /sys/class/net/wlan9/operstate ]; then ifconfig wlan9 up; fi
        up if [ -f /sys/class/net/wlan9/operstate ]; then dhclient wlan9; fi

Meskipun mungkin tidak elegan, ia melakukan apa yang saya inginkan: melompati inisialisasi wlan9 tanpa penundaan boot jika dongle nirkabel tidak terhubung, jika tidak dinyalakan.

noseratio
sumber
Bagus. Tetapi bagaimana ini melewati inisialisasi? Anda tidak membatalkan apa pun dalam pre-uparahan.
gertvdijk
1
Menurutnya ini adalah produk dari dua faktor: 1) inet manual - jadi sangat bergantung pada tindakan pra-up untuk melakukan apa pun: jika tidak ada pra-naik atau naik , kernel hanya melompati bait ini
noseratio
Ya, bisa saja, tetapi menurut halaman manual semua pengaturan lain termasuk wpa-*arahan tidak berlaku untuk manualmetode ini. Sepertinya semacam perilaku tidak berdokumen.
gertvdijk
1
Saya mengacau dengan komentar, inilah yang saya maksud untuk mengatakan: Menurut saya ini adalah produk dari dua faktor: 1) inet manual - jadi sangat bergantung pada tindakan pra-up untuk melakukan apa saja: jika tidak ada pra-naik atau naik , kernel hanya akan melewatkan bait ini 2) Jika antarmuka tidak ada, jika [-f / sys / class / net / wlan9 / operstate] akan mengembalikan 1 dan pra-up akan gagal, jadi tidak ada inisialisasi atau penundaan lebih lanjut.
noseratio
The pre-up perilaku sebenarnya didokumentasikan, tetapi mungkin berubah dalam masa depan, manpages.ubuntu.com/manpages/precise/man5/interfaces.5 . pre-up Jalankan perintah sebelum membawa antarmuka. Jika perintah ini gagal maka ifup batal, menahan diri dari menandai antarmuka sebagai dikonfigurasi, mencetak pesan kesalahan, dan keluar dengan status 0. Perilaku ini dapat berubah di masa depan.
noseratio