มีวิธีการปิดการใช้งานไคลเอนต์ DHCP ใน Raspbian Linux บน Rasperry Pi หรือไม่?


15

ฉันมีเซิร์ฟเวอร์ Linux (Rasperry Pi ใช้ Raspbian เป็น OS) ซึ่งควรใช้ IP แบบคงที่เท่านั้น

อย่างไรก็ตามฉันสังเกตเห็นว่ามันยังได้รับ IP จากเซิร์ฟเวอร์ DHCP (IP ที่กำหนดโดย DHCP คือ192.168.111.2) ตามการตั้งค่าเครือข่ายเซิร์ฟเวอร์ควรใช้ IP แบบคงที่เท่านั้น ( 192.168.111.100)

เนื้อหาของ/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

แม้จะใช้การกำหนดค่าสแตติกฉันสามารถ SSH ไปยังอุปกรณ์โดยใช้ IP ที่กำหนดโดย DHCP นอกจากนี้ยังปรากฏว่าntpdมีการใช้ IP ที่ไม่ถูกต้องเช่นเดียวกับที่ถูกต้อง

ผลผลิตของ 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

ตามifconfigที่ IP 192.168.111.2ไม่ได้ใช้:

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 แสดงให้เห็นว่าฉันมีภูต DHCP ทำงานอยู่:

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

ฉันจะปิดการใช้งานDHCPภูตจากการเริ่มต้นและตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ของฉันใช้คงที่เท่านั้น?


คำสั่งที่คุณอ้างถึงคืออะไร?
Madoc Comadrin

ฉันลองใช้คำสั่งเหล่านั้น แต่ไม่สามารถหาอะไรมาช่วยฉันได้
Madoc Comadrin

@barlop ไม่มีอะไรผิดปกติifconfigและมีการใช้เป็นประจำ วันหนึ่งมันจะถูกแทนที่ด้วยipแต่โดยสุจริตมันไม่มีผลอะไรกับคนที่พูดว่า“ ดีกว่า” เพราะนี่ไม่ใช่การประกวดที่น่ารำคาญ ifconfigให้รายละเอียดมากกว่าเพียงพอสำหรับการดีบักสิ่งต่าง ๆ เช่นนี้
JakeGould

คำตอบ:


11

สถานการณ์นี้เสียงแปลกจริงๆเพราะตั้งค่าของคุณควรจะทำงานในขณะที่คุณอธิบายและความหวังให้มันทำงานถ้ามีชุด IP /etc/network/interfacesแบบคงที่ใน ที่กล่าวว่าการสนทนาในเว็บไซต์ Raspberry Pi อย่างเป็นทางการมุ่งเน้นไปที่ปัญหากับผู้ใช้“ rpdom” ซึ่งระบุไว้ในโพสต์ลงวันที่“ Thu 28 พฤษภาคม 2015 6:21 am”:

สิ่งนี้เกิดขึ้นในการอัพเดทล่าสุด มันเกิดจากลูกค้า dhcp ใหม่โดยไม่สนใจว่าไฟล์อินเตอร์เฟสทำอะไรและทำสิ่งของตัวเองนอกจากนี้ ... ดูเหมือนว่าจะบ้าสำหรับฉัน ฉันจะดูวิธีการกำหนดค่าไคลเอ็นต์ dhcp ใหม่ (ไม่สามารถลบสิ่งที่มันเป็นหรือวิธีการทำฉันยังคงอยู่ในสภาพเดิมที่ใช้งานได้สำหรับฉัน) ปิดใช้งานหรือลบออก (ถ้าเป็นไปได้)

ผู้ใช้เธรด“ KLL” ที่ลึกกว่าแนะนำโพสต์ต่อไปนี้ในการตอบกลับของพวกเขาลงวันที่“ จันทร์ 10 ส.ค. 2015 12:59 น.” ตามที่ "knute":

บางครั้งการอัปเกรดแก้ไข/etc/network/interfacesไฟล์ของฉัน ด้วยคำว่า 'ด้วยตนเอง' แทนที่จะเป็น dhcp หรือ static และฉันก็ลงเอยด้วยที่อยู่ IP สองอันอันหนึ่งของฉันแบบคงที่และที่อยู่ dhcp ในที่สุดฉันก็มีเวลาเล่นกับมันและพบว่ามัน dhcpcd5ทำงานต่างไปจากที่เคยมีมา /etc/network/interfacesที่จะได้รับเพียงแค่ที่อยู่ของคุณคงไม่ปรับเปลี่ยน ใส่คำว่า 'แมนนวล' กลับคืนหากคุณเปลี่ยนและแก้ไขแทน /etc/dhcpcd.confดังที่แสดงในตัวอย่างจากเอกสาร

ดังนั้นแนวคิดก็คือdhcpcd5พฤติกรรมของมันเปลี่ยนไปในการอัปเกรดอย่างใดอย่างหนึ่ง และข้อเสนอแนะในการแก้ไขปัญหาคือการลบการเปลี่ยนแปลงใด ๆ จาก/etc/network/interfacesและปรับการตั้งค่า/etc/dhcpcd.confเพื่อรับที่อยู่ IP แบบคงที่แทน ตัวอย่างการกำหนดค่าด้านล่าง:

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

ข้อมูลเพิ่มเติมเกี่ยวกับเนื้อหาของdhcpcd.confสามารถพบได้บนหน้าคนอย่างเป็นทางการสำหรับมัน

ที่กล่าวว่าความคิดหนึ่งคือการเก็บการตั้งค่าที่คุณมีใน/etc/network/interfacesแต่แล้วแก้ไข/etc/dhcpcd.confเพื่อเพิ่มบรรทัดdenyinterfaces eth0ที่จะบอกภูต DHCP eth0ที่จะสมบูรณ์ไม่สนใจ โซลูชันทั้งสองควรทำงานได้ แต่โซลูชันหนึ่งอาจเป็นโซลูชันที่เป็นที่นิยมมากกว่าทั้งนี้ขึ้นอยู่กับความต้องการ / ข้อกำหนดระบบเครือข่ายโดยรวมของคุณ


2
คดีของฉันเกือบจะเหมือนกับที่อธิบายไว้ที่นี่ ความแตกต่างเพียงอย่างเดียวคือฉัน/etc/network/interfacesไม่เคยเปลี่ยนไปmanualเหมือนในกรณีของฟอรัม Raspberry Pi โซลูชันที่แนะนำก็ใช้ได้สำหรับฉันเช่นกัน
Madoc Comadrin

1
เหมือนกันแม้กับ "คงที่" ฉันได้รับ DHCP ใน eth0 ของฉัน ปัญหานี้ยังคงมีปัญหากับการติดตั้ง jessie-lite วิธีแก้ปัญหายังไม่ได้ช่วยฉันเนื่องจากฉันมีสถานการณ์ที่ฉันต้องการอินเทอร์เฟซ wlan0 เพื่อให้ตัวชี้วัดที่ต่ำกว่าอินเทอร์เฟซ eth0 และฉันไม่สามารถรับ dhcpcd5 เพื่อให้ฉันทำ (จนถึงตอนนี้)
Peter Hansen

3
การแก้ปัญหาที่ไม่ทำงานสำหรับฉันอย่างไรจะบอก dhcpcd5 ไม่ให้ดูที่ eth0 สิ่งนี้ทำโดยการเพิ่ม "denyinterfaces eth0" ใน /etc/dhcpcd.conf
Peter Hansen

1
@PeterHansen รู้ดี! เพิ่มข้อมูลนั้นไว้ท้ายคำตอบของฉัน
JakeGould

2
การติดตามผล: ในบางกรณีฉันพบว่าฉันติดตั้งทั้ง dhcpcd5 และ isc-dhcp-client ทั้งที่อยู่ที่ได้รับมอบหมาย นอกจากนี้ยังมี dhcpcd.service ที่เริ่มต้นด้วยระบบซึ่งทำงานบนอินเทอร์เฟซทั้งหมด (พร้อมตัวเลือก -q -b) เช่นเดียวกับกระบวนการ dhcpcd5 ที่เริ่มต้นด้วยตัวเลือก "dhcp" ในเครือข่าย / อินเตอร์เฟส เฮ้อ ... แก้ค่อนข้างง่ายเมื่อคุณรู้ทั้งหมดนั้นฉันหวังว่า
Peter Hansen

8

สิ่งที่ใช้ได้ผลสำหรับฉันคือการใช้ / etc / network / interfaces เหมือนในคำถามเดิมและเพียงแค่ลบไคลเอ็นต์ dhcp:

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

ในสถานการณ์ที่คุณไม่สนใจ DHCP (หรือสิ่งอื่นใดที่ dhcpcd สามารถทำได้) นี่เป็นทางออกที่ง่ายที่สุด
AVEE

1

ฉันต้องบอกว่าน่าเสียดายที่ไม่มีวิธีการแก้ปัญหาที่เสนอที่นี่ทำงานให้ฉัน แต่หลังจากการต่อสู้ที่ยาวนานกับ DHCP ในที่สุดฉันก็สามารถแก้ปัญหาได้:

vi /etc/systemd/network/eth0.network

เปลี่ยน:

[Match]
Name=eth0

[Network]
DHCP=yes

ถึง:

[Network]
DHCP=no

หวังว่านี่จะช่วยได้


1

วิธีที่ดีกว่าในการปิดใช้งานบริการใด ๆ เช่น dhcpcd คือการใช้ฟังก์ชั่นการจัดการระบบ คุณจะต้องรีบูตเพื่อให้มีผลบังคับใช้เว้นแต่คุณจะหยุดให้บริการเช่นกัน

สำหรับ Jessie (ซึ่งใช้systemdการจัดการ):

sudo systemctl disable dhcpcd.service

และสำหรับ Wheezy รุ่นเก่า ( System-Vการจัดการ):

sudo update-rc.d dhcpcd disable

แต่ถ้าคุณปิดการใช้งานคุณต้องแน่ใจว่าคุณมีการกำหนดค่าสแตติก/etc/network/interfacesไอพีไม่เช่นนั้นอินเทอร์เฟซของคุณจะไม่ได้รับที่อยู่ IP


0

นี่คือบทสรุปของสิ่งที่ฉันต้องทำเพื่อ Raspbian Jessie 2017-01-11:

แก้ไข / etc / network / interfaces และเพิ่ม stanza address แบบคงที่ลบการอ้างอิงอื่น ๆ ไปยังส่วนต่อประสานแบบคงที่ (eth0 ในกรณีนี้) บรรทัดอัตโนมัติมีความสำคัญไม่เช่นนั้นอินเทอร์เฟซจะไม่เริ่มทำงานเมื่อบู๊ต:

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

ถัดไปปิดการใช้งาน dhcpcd และเปิดใช้งานเครือข่ายมาตรฐาน:

  • ปิดการใช้งาน dhcpcd: systemctl disable dhcpcd.service
  • เปิดใช้งานเครือข่าย: systemctl enable networking
  • รีบูต

Raspbian Jessie ณ วันที่ 2017-01-11 ดูเหมือนว่าจะไม่ใช้เครือข่ายของ systemd


0

พยายามบางสิ่งและพบว่า

 apt list --installed | grep dhcp

ที่พบ:

dhcpcd5 
isc-dhcp-client
isc-dhcp-common

ฉันเพิ่งปิดการใช้งานdhcpcd5และแก้ไขโดยใช้:

 sudo apt-get remove dhcpcd5

รีบูตได้และทุกอย่างก็ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.