Cách bắt đầu kết nối mạng trên giao diện có dây trước khi đăng nhập vào Ubuntu Desktop Edition


17

Vấn đề

Ubuntu 9.10 Desktop Edition (cũng có thể là các phiên bản trước đó, tôi chưa kiểm tra chúng) không có kết nối mạng sau khi khởi động cho đến khi ít nhất 1 người dùng đăng nhập. Điều này có nghĩa là bất kỳ dịch vụ nào yêu cầu kết nối mạng (ví dụ: máy chủ openssh) không khả dụng cho đến khi ai đó đăng nhập cục bộ thông qua gdm, kdm hoặc TTY.

Lý lịch

Ubuntu 9.10 Desktop Edition sử dụng dịch vụ NetworkManager để nhận các lệnh từ applet nm trong Gnome (hoặc tương đương với KDE). Theo tôi hiểu, trong khi NetworkManager đang chạy khi khởi động, nó không được đưa ra bất kỳ lệnh nào để kết nối cho đến khi bạn đăng nhập lần đầu tiên vì nm-applet không chạy cho đến khi bạn đăng nhập và phiên Gnome của bạn bắt đầu (hoặc tương tự với KDE). Tôi không chắc chắn điều gì sẽ nhắc NetworkManager kết nối với mạng khi bạn đăng nhập qua TTY.

Có một số biến liên quan liên quan đến việc khởi động các kết nối mạng bao gồm:

  • Wired vs Wireless (và các trình điều khiển kết quả, SSID, mật khẩu và ưu tiên)
  • Tĩnh so với DHCP
  • Nhiều giao diện

Những ràng buộc

  • Hỗ trợ Ubuntu 9.10 Karmic Koala (điểm thưởng cho các phiên bản được hỗ trợ bổ sung)
  • Hỗ trợ giao diện eth0 có dây
  • Nhận địa chỉ IP qua DHCP
  • Nhận thông tin DNS qua DHCP (rõ ràng máy chủ DHCP phải cung cấp thông tin này)
  • Cho phép kết nối mạng vào thời điểm thích hợp (ví dụ: một thời gian sau khi hệ thống tệp được tải nhưng trước khi các dịch vụ mạng như ssh bắt đầu)
  • Chuyển các phiên bản hoặc phiên bản (ví dụ: Phiên bản máy chủ) không phải là một giải pháp chấp nhận được
  • Chuyển sang cấu hình IP tĩnh không phải là giải pháp chấp nhận được

Câu hỏi

  • Làm cách nào để bắt đầu kết nối mạng trên giao diện có dây trước khi đăng nhập vào Ubuntu Desktop Edition?

Xem thêm

Người giới thiệu

Câu trả lời:


9

Để giao diện mạng của bạn tự động được cấu hình qua DHCP khi khởi động, hãy thêm các dòng sau vào /etc/network/interfaces:

auto eth0
iface eth0 inet dhcp

Điều này sẽ đưa giao diện của bạn lên ngay cả khi không chạy NetworkManager. Bạn thậm chí có thể loại bỏ trình quản lý mạng gói, nếu bạn muốn.


Ahh, đó chỉ là một lỗi đánh máy khi tôi đặt câu hỏi, nhưng đó là những gì tôi đã thử. Điều đó nói rằng, thực hiện /etc/init.d/networking restart cho: "* Cấu hình lại các giao diện mạng ..." nhưng giao diện không được đưa lên, ít nhận được IP hơn. Thực hiện khởi động lại không mang lại giao diện với các cài đặt này.
Burly

Tôi cho rằng: auth eth0 thay vì: auto eth0 trong bài viết của bạn vẫn là một lỗi đánh máy bạn chỉ thực hiện trong bài viết, phải không?
goedson

Tôi vừa mới cài đặt Ubuntu 9.10, đã chỉnh sửa / etc / mạng / giao diện như đã lưu ý ở trên và việc phát hành sudo /etc/init.d/networking restartđã nhận được eth0 và được định cấu hình qua DHCP.
goedson

Ôi trời, thất bại! : facepalm: Tôi không có lỗi đánh máy ban đầu mà bạn đã đề cập, nhưng tôi KHÔNG có 'auth' thay vì 'auto' trên dòng đầu tiên. Tôi tin rằng bạn phải sửa đổi câu trả lời của mình để tôi thay đổi phiếu bầu của mình vì quá dài (wth?). Tôi đã xóa phần "Điều tôi đã thử" khỏi câu hỏi để tránh nhầm lẫn vì tôi khó đánh máy. Có lẽ thêm một cái gì đó như: "Thêm phần sau vào /etc/network/interfacesđể ngăn NetworkManager quản lý giao diện và đưa nó lên qua dhcp" Tôi phải kiểm tra xem liệu bản sửa lỗi này có đưa nó lên khi khởi động với NM được cài đặt không ...
Burly

Tôi đã thay đổi câu trả lời để rõ ràng giải pháp là gì.
goedson

1

Debian / Ubuntu có chương trình riêng để quản lý máy chủ tại thời điểm khởi động.

Thử update-rc.d STARTUP-SCRIPT defaults

Tìm kiếm tập lệnh cụ thể cho eth0 và kích hoạt tập lệnh này.

Bạn luôn có thể tạo tập lệnh của riêng bạn, đặt tập lệnh vào init.d và chạy lệnh trước đó sẽ khiến tập lệnh tải vào lúc khởi động.

hoặc chỉ cần đặt các lệnh đó (ifconfig up, dhcpcd) trong /etc/rc.local (tệp này được đọc mọi lúc vào lúc khởi động)


Tôi đã sử dụng update-rc.d trước đây nhưng vấn đề là định vị STARTUP-SCRIPT dành riêng cho eth0. Ít nhất là trong Ubuntu 9.10 DE, không có gì cả. Chỉ có tập lệnh /etc/init.d/networking, mà thực sự chỉ đang gọi một công việc mới bắt đầu (/ lib / init / update-job bắt đầu là cái mà nó gọi cụ thể). Như đã lưu ý ở trên, việc gọi /etc/init.d/networking start, / lib / init / update-job bắt đầu và / hoặc dịch vụ bắt đầu / khởi động lại mạng không mang lại giao diện ít nhận IP hơn. Tôi có thể viết kịch bản của riêng mình, nhưng tôi đã hy vọng cho một giải pháp thanh lịch hơn.
Burly

Đặt ethclient eth0 trong RC.local có thể là lựa chọn duy nhất của tôi. Tôi cần phải thử điều này để xem nó thậm chí hoạt động. Vấn đề với việc đặt nó ở đây là các dịch vụ khởi động khác không thể thực sự phụ thuộc vào nó (như ssh) vì RC.local không được thực thi cho đến khi tất cả các dịch vụ hệ thống đã được khởi động.
Burly

1
CÔNG CỤ: Thêm dhclient eth0vào /etc/rc.local sẽ hiển thị đúng giao diện eth0 khi khởi động và nhận IP qua DHCP. Ít nhất là đối với tôi, SSH cũng có sẵn trước khi bất kỳ ai đăng nhập cục bộ kể từ khi máy chủ openssh được thiết lập để bắt đầu tại runlevels 234. Tôi không biết liệu tất cả các dịch vụ kích hoạt mạng có hoạt động thành công khi giao diện được đưa lên trong RC.local ( ví dụ: ntpdate) tuy nhiên, vì RC.local được chạy sau các dịch vụ hệ thống.
Burly
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.