Có cách nào để vô hiệu hóa ứng dụng khách DHCP trong Raspbian Linux trên Rasperry Pi không?


15

Tôi có một máy chủ Linux (Rasperry Pi sử dụng Raspbian làm HĐH) chỉ nên sử dụng IP tĩnh.

Tuy nhiên tôi nhận thấy rằng nó cũng đã có IP từ máy chủ DHCP (IP được cung cấp bởi DHCP là 192.168.111.2). Theo cài đặt mạng, máy chủ chỉ nên sử dụng IP tĩnh ( 192.168.111.100).

Nội dung của /etc/network/interfaces:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.111.100
netmask 255.255.255.0
gateway 192.168.111.1
dns-nameservers ip1 ip2

Mặc dù sử dụng cấu hình tĩnh nhưng tôi có thể SSH đến thiết bị bằng cách sử dụng IP do DHCP cung cấp. Ngoài ra, có vẻ như ntpdđang sử dụng sai IP cũng như đúng.

Đầu ra của Netstat:

udp        0      0 192.168.111.2:123       0.0.0.0:*                           2774/ntpd
udp        0      0 192.168.111.100:123     0.0.0.0:*                           2774/ntpd

Theo ifconfigIP 192.168.111.2không được sử dụng:

eth0      Link encap:Ethernet  HWaddr b8:27:eb:be:18:1c
          inet addr:192.168.111.100  Bcast:192.168.111.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:138099 errors:0 dropped:0 overruns:0 frame:0
          TX packets:81146 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:95954711 (91.5 MiB)  TX bytes:27076870 (25.8 MiB)

ps -ef | grep dhcp cho thấy tôi có DHCP daemon đang chạy:

root      2000     1  0 Oct07 ?        00:00:06 /sbin/dhcpcd

Làm cách nào để tôi vô hiệu hóa DHCPtrình nền bắt đầu và đảm bảo rằng máy chủ của tôi chỉ sử dụng tĩnh?


Lệnh bạn đang đề cập đến là gì?
Madoc Comadrin

Tôi đã thử những lệnh đó nhưng không thể tìm thấy bất cứ điều gì để giúp tôi trong việc này.
Madoc Comadrin

@barlop Không có gì sai ifconfigvà nó được sử dụng thường xuyên. Một ngày nào đó nó sẽ được thay thế bằng ipnhưng thành thật mà nói, nó sẽ không gây hậu quả cho ai đó về vấn đề đó là tốt hơn nữa vì đây không phải là một cuộc thi khó chịu. ifconfigcung cấp quá nhiều chi tiết để gỡ lỗi những thứ như thế này.
JakeGould

Câu trả lời:


11

Kịch bản này nghe có vẻ kỳ lạ bởi vì thiết lập của bạn sẽ hoạt động như bạn mô tả về chương trình và hy vọng nó sẽ hoạt động được nếu có một IP tĩnh được đặt /etc/network/interfaces. Điều đó nói rằng, cuộc thảo luận này trên trang web chính thức của Raspberry Pi tập trung vào vấn đề với người dùng này, rpdom, nói rõ về vấn đề này trên bài đăng ngày 28 tháng 5 năm 2015 6:21 sáng

Điều này xảy ra trong các bản cập nhật mới nhất. Nó được gây ra bởi máy khách dhcp mới bỏ qua những gì các tập tin giao diện làm và làm việc riêng của nó ngoài ra ... có vẻ điên rồ với tôi. Tôi sẽ xem xét cách cấu hình lại máy khách dhcp (không thể nhớ nó là gì hoặc làm như thế nào, tôi vẫn sử dụng cái cũ hoạt động cho tôi), vô hiệu hóa hoặc xóa nó (nếu có thể).

Tìm hiểu sâu hơn về chủ đề người dùng, KLL, gợi ý các bài đăng khác sau đây trong phản hồi của họ đề ngày Mon Mon ngày 10 tháng 8 năm 2015 12:59 chiều. Theo Theo knute knute.

Đâu đó, một bản nâng cấp đã sửa đổi /etc/network/interfacestệp của tôi bằng từ 'thủ công' thay vì dhcp hoặc tĩnh và tôi đã kết thúc với hai địa chỉ IP, địa chỉ tĩnh và địa chỉ dhcp. Cuối cùng tôi đã có thời gian để chơi với nó và phát hiện ra rằng nó dhcpcd5hoạt động khác với bất cứ thứ gì có trong đó trước đây. Để chỉ nhận địa chỉ tĩnh của bạn, không sửa đổi /etc/network/interfaces. Đặt lại từ 'thủ công' nếu bạn thay đổi từ đó và thay vào đó sửa đổi /etc/dhcpcd.confnhư trong ví dụ từ các tài liệu.

Vì vậy, ý tưởng là dhcpcd5hành vi của đã thay đổi trong một trong những nâng cấp. Và đề xuất để giải quyết vấn đề là xóa mọi thay đổi khỏi /etc/network/interfacesvà thay vào đó điều chỉnh cài đặt /etc/dhcpcd.confđể lấy địa chỉ IP tĩnh; cấu hình ví dụ dưới đây:

static <value>
             Configures a static <value>.  If you set ip_address then dhcpcd
             will not attempt to obtain a lease and just use the value for the
             address with an infinite lease time.

             Here is an example which configures a static address, routes and
             dns.
                   interface eth0
                   static ip_address=192.168.0.10/24
                   static routers=192.168.0.1
                   static domain_name_servers=192.168.0.1

Thông tin thêm về nội dung dhcpcd.confcó thể được tìm thấy trên trang người đàn ông chính thức cho nó .

Điều đó nói rằng, một ý tưởng khác là giữ lại các cài đặt bạn có /etc/network/interfacesnhưng sau đó chỉnh sửa /etc/dhcpcd.confđể thêm dòng denyinterfaces eth0để báo cho DHCP daemon hoàn toàn bỏ qua eth0. Một trong hai giải pháp nên hoạt động, nhưng một giải pháp có thể là một giải pháp thích hợp hơn tùy thuộc vào nhu cầu / yêu cầu mạng chung của bạn.


2
Trường hợp của tôi gần giống với một mô tả ở đây. Chỉ khác là tôi /etc/network/interfaceschưa bao giờ thay đổi manualgiống như trong trường hợp diễn đàn Raspberry Pi. Đề xuất giải pháp làm việc cho tôi là tốt.
Madoc Comadrin

1
Tương tự, ngay cả với "tĩnh" tôi cũng nhận được dhcp trên eth0 của mình. Đây vẫn là một vấn đề với cài đặt jessie-lite. Cách giải quyết không giúp được gì cho tôi vì tôi gặp phải tình huống tôi cần giao diện wlan0 có số liệu thấp hơn giao diện eth0 và tôi không thể lấy dhcpcd5 để cho phép tôi làm điều đó (cho đến nay).
Peter Hansen

3
Tuy nhiên, một cách giải quyết đã làm việc với tôi là nói với dhcpcd5 đừng nhìn vào eth0. Điều này đã được thực hiện bằng cách thêm "denyinterfaces eth0" vào /etc/dhcpcd.conf.
Peter Hansen

1
@PeterHansen Thật tốt khi biết! Đã thêm thông tin đó vào cuối câu trả lời của tôi.
JakeGould

2
Theo dõi: trong một số trường hợp tôi thấy tôi đã cài đặt cả dhcpcd5 và isc-dhcp-client, cả hai đều gán địa chỉ. Hơn nữa, có một dhcpcd.service được khởi tạo bởi systemd chạy trên tất cả các giao diện (với các tùy chọn -q -b) cũng như quá trình dhcpcd5 được bắt đầu bởi tùy chọn "dhcp" trong mạng / giao diện. Thở dài ... khá dễ để giải quyết một khi bạn biết tất cả điều đó, tôi hy vọng.
Peter Hansen

8

những gì làm việc cho tôi là sử dụng / etc / mạng / giao diện như trong câu hỏi ban đầu và chỉ cần xóa ứng dụng khách dhcp:

apt-get remove dhcpcd5 isc-dhcp-client isc-dhcp-common

Trong trường hợp bạn không quan tâm đến DHCP (hoặc bất cứ điều gì khác dhcpcd có thể làm) đây là giải pháp đơn giản nhất.
AVee

1

Tôi phải nói rằng thật không may, không có giải pháp nào được đề xuất ở đây làm việc cho tôi. Nhưng sau một cuộc chiến dài với DHCP, cuối cùng tôi đã có thể giải quyết vấn đề:

vi /etc/systemd/network/eth0.network

thay đổi:

[Match]
Name=eth0

[Network]
DHCP=yes

đến:

[Network]
DHCP=no

hi vọng điêu nay co ich.


1

Cách tốt nhất để vô hiệu hóa bất kỳ dịch vụ nào như dhcpcd là sử dụng các chức năng quản lý hệ thống. Bạn sẽ cần phải khởi động lại để nó có hiệu lực - trừ khi bạn cũng dừng dịch vụ.

Đối với Jessie (sử dụng systemdquản lý):

sudo systemctl disable dhcpcd.service

Và đối với Wheezy ( System-Vquản lý) cũ hơn :

sudo update-rc.d dhcpcd disable

Nhưng nếu bạn vô hiệu hóa nó thì bạn cần đảm bảo rằng bạn đã có cấu hình ip tĩnh /etc/network/interfacesnếu không các giao diện của bạn sẽ không nhận được địa chỉ IP.


0

Dưới đây là tóm tắt về những gì tôi cần làm cho Raspbian Jessie 2017-01-11:

Chỉnh sửa / etc / mạng / giao diện và thêm khổ địa chỉ tĩnh, xóa các tham chiếu khác đến giao diện tĩnh (eth0 trong trường hợp này). Dòng tự động rất quan trọng nếu không giao diện sẽ không khởi động khi khởi động:

    auto eth0
    iface eth0 inet static
      address 192.168.44.17
      netmask 255.255.255.0
      gateway 192.168.44.27

Tiếp theo vô hiệu hóa dhcpcd và cho phép kết nối mạng tiêu chuẩn:

  • Vô hiệu hóa dhcpcd: systemctl disable dhcpcd.service
  • Cho phép kết nối mạng: systemctl enable networking
  • khởi động lại

Raspbian Jessie kể từ phiên bản 2017-01-11 dường như không sử dụng mạng của systemd


0

Đã thử một vài điều và thấy rằng

 apt list --installed | grep dhcp

tìm:

dhcpcd5 
isc-dhcp-client
isc-dhcp-common

Tôi chỉ vô hiệu hóa dhcpcd5và đã sửa nó bằng cách sử dụng:

 sudo apt-get remove dhcpcd5

đã khởi động lại và tất cả đều bảnh bao

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.