เปลี่ยน dhclient เพื่อลองดึงที่อยู่ IP อีกครั้ง


10

ปรากฎว่าราสเบอร์รี่ pi ไม่พยายามอย่างหนักที่จะได้รับที่อยู่ IP ด้วย dhcp ในระหว่างที่ไฟฟ้าขัดข้อง rpi ของฉันก็บูตได้เร็วกว่าเซิร์ฟเวอร์ dhcp และไม่ได้รับที่อยู่ IP เลย ในสถานการณ์เช่นนี้ rpi ดูเหมือนว่าจะถูกบูท แต่มันไม่ได้รับที่อยู่ IP และฉันไม่เคยเห็นคำขอ dhcp จากมันจนกว่าฉันจะรีบูตอีกครั้ง

dhclient ทำงานดังนี้:

dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0

ฉันไม่สามารถหาวิธีแก้ไขอาร์กิวเมนต์เป็น dhclient ได้อาร์กิวเมนต์ -1 อาจเป็นตัวการ ฉันจะทำให้ raspberrypi ของฉันลองส่งคำขอ dhcp อีกครั้งจนกว่าจะได้รับคำตอบ?

แก้ไข: สิ่งนี้เกี่ยวข้องกับการกลั่นแบบ "wheezy" distro


1
ปัญหาเดียวกันกับ wifi หาก Wifi Router เปิดใช้งานทุกอย่างก็โอเคแม้เมื่อเราเตอร์เริ่มต้นใหม่ แต่ถ้าเราเตอร์ปิดเมื่อราสเบอร์รี่เริ่มทำงานมันจะไม่ได้รับ IP ขอแสดงความนับถือ

ฉันก็มีปัญหาเดียวกัน อย่างไรก็ตามฉันไม่ทราบว่า dhclient ทำงานอย่างไร มีการกำหนดค่าบางอย่างหรือฉันต้องทำอะไรเพื่อสิ่งนั้น
Kangkan

คำตอบ:


7

ลบ-1ข้อโต้แย้งออกจากบรรทัดคำสั่งของคุณจากนั้นแก้ไขtimeoutและretryค่าตาม/etc/dhclient.confที่คุณต้องการ คุณสามารถดูman dhclient.confรายละเอียดเพิ่มเติมได้ที่ man page ( )


ปัญหาก็คืออย่างที่บอกไปฉันไม่สามารถหาทางแก้ไขบรรทัดคำสั่งของ dhclient ได้ดูเหมือนว่าจะเริ่มการบู๊ตอย่างน่าอัศจรรย์ด้วยบางสิ่งบางอย่างในแพ็คเกจ ifupdown .deb เป็นสิ่งที่แยกวิเคราะห์ / etc / network / interfaces
nos

@nos คุณต้องค้นหาสคริปต์เริ่มต้นเครือข่าย ฉันจำไม่ได้ว่าอยู่ที่ไหน
Alex Chamberlain

@Alex Chamberlain เปลี่ยนบรรทัดคำสั่งสำหรับการเริ่ม dhclient เป็นรหัสฮาร์ดในไบนารี / sbin / ifup ดังนั้นฉันกำลังมองหาวิธีแก้ปัญหาทางเลือก ณ จุดนี้
nos

ขอโทษด้วยกับเรื่องนั้น. อย่างไรก็ตาม distro คืออะไร แปลก ๆ ที่พวกเขาต้องการสิ่งที่รหัสยากเป็นไบนารี วิธีการแก้ปัญหาที่ชาญฉลาดคุณสามารถเพียงแค่เพิ่มไม่กี่บรรทัดเพื่อ rc.local จะฆ่ากระบวนการ dhclient ที่มีอยู่แล้วเริ่มต้นของคุณเองด้วยที่กำหนดเอง args ฯลฯ
Munkeh

แก้ไขการโพสต์ - ฉันใช้ rasbpian
nos

1

เนื้อหาของ / etc / network / interfaces ของคุณคืออะไร?

ฉันสมมติว่ามี auto eth0 เพราะมันทำแบบสอบถาม DHCP ในการบูต

ถ้าคุณเปลี่ยนมันเป็น allow_hotplug eth0 ที่ควรตอบสนองต่อการเปลี่ยนแปลงอินเทอร์เฟซ (สายเคเบิลเสียบ / เอาออก), ถ้าฉันเข้าใจอย่างถูกต้อง

(ทั้งหมดนี้เป็นเพียงการคาดเดาการศึกษาของฉัน)


เคล็ดลับนี้ใช้งานได้ดีมากสำหรับฉัน: มันช่วยให้สามารถเสียบได้อย่างรวดเร็วและเพิ่มความเร็วในการบูต แต่จะต้องเขียนเป็น "allow-hotplug eth0"
user27164

0

Jeroen มีวิธีแก้ปัญหาที่นี่: https://bugs.launchpad.net/raspbian/+bug/1125066

ฉันได้ติดตั้งวิธีแก้ปัญหาและรีบูตเครื่อง - ดูเหมือนว่าใช้ได้ในขณะนี้ จะยืนยันว่าปัญหาได้รับการแก้ไขในการอัปเดตหรือไม่หลังจากการทดสอบชั่วขณะหนึ่ง

นี่คือวิธีแก้ปัญหา:

วิธีแก้ปัญหาคือสร้างสคริปต์ตัวตัดคำโดยเปลี่ยนชื่อ / sbin / dhclient เป็น / sbin / dhclient-bin และข้อความด้านล่างใน / sbin / dhclient แล้วเปลี่ยนเป็น 777:

#!/bin/sh
/sbin/dhclient-bin -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.