ความแตกต่างระหว่าง /etc/dhcpcd.conf และ / etc / network / interfaces?


63

ฉันมีการกำหนดค่านี้ใน/ etc / network / interfaces :

auto lo
iface lo inet loopback

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan0
#iface wlan0 inet dhcp
        iface wlan0 inet static
        address 192.168.0.110
        netmask 255.255.255.0
        network 192.168.0.1
        gateway 192.168.0.1
        wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp


iface eth0 inet static
    address 192.168.0.115
    netmask 255.255.255.0
    network 192.168.0.1
    gateway 192.168.0.1

IP แบบสแตติกไร้สายทำงานได้ แต่ eth0 ไม่ทำงาน

ดังนั้นฉันจึงพยายามกำหนดค่าใน/etc/dhcpcd.conf :

interface eth0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

และมันก็ใช้งานได้ ฉันสับสนและนี่คือคำถามหลายข้อ:

  1. ควรใช้ไฟล์ชนิดใด

  2. ทำไม wifi ทำงานกับ/ etc / network / interfacesแต่ eth0 ไม่ได้?

  3. ไม่dhcpcdมีความสำคัญมากกว่าอย่างใด / etc / เครือข่าย / อินเตอร์เฟซ ?

  4. วิธีการตรวจสอบบริการที่มีความสำคัญหรือ Someting? และบริการที่ใช้/ etc / เครือข่าย / อินเตอร์เฟซ ?


4
#raspbianคำถามที่ดีและสิ่งที่ผมกำลังจะถามเกี่ยวกับ ในฐานะที่เป็นผู้ดูแลระบบ Un * x เป็นเวลาหลายปีฉันพบว่าการเปลี่ยนแปลงพื้นฐานนี้ทำให้ยุ่งเหยิงโดยประกอบกับความขาดแคลนของเอกสาร ฉันพบคำถามนี้หลังจากใช้เวลาหนึ่งชั่วโมงในการลองผิดลองถูก ฉันหวังว่าฉันจะพบraspberrypi.stackexchange.com/questions/37920/…ก่อนหน้านี้
Alastair McCormack

ฉันคิดว่าคำถามควรถูกถามในความคิดเห็นว่า eth0 นั้นล้มเหลวได้อย่างไร อะไรคือสิ่งที่ip addrเอาท์พุทและsystemctl status networkingเอาท์พุท? เพราะถ้า OP พยายามทำเช่นนั้นเหนือ ssh และใช้ eth0 ip เพื่อ ssh เข้าดังนั้น eth0 ip ที่ได้รับการแก้ไขจะถูกกำหนดให้เป็น ip รองกับ eth0 เพื่อให้เซสชัน ssh ทำงานอย่างต่อเนื่องฉันพยายามเปลี่ยน eth0 ip เป็น OP กล่าวถึง แต่ sshing ผ่าน wlan0 และใช้งานได้และชอบมากกว่า dhcp ในกรณีของฉันมันเป็น dhclient บน Stretch แต่ sshing ผ่าน eth0 กรณีที่กล่าวถึงก่อนหน้านี้เกิดขึ้น
Pavel Sayekat

และใช่ dhcpcd ยังได้รับการทดสอบไม่มีการ/etc/network/interfacesตั้งค่าใด ๆ
Pavel Sayekat

คำตอบ:


65

มีจุดดีในทุกคำตอบสำหรับคำถามนี้ แต่ฉันคิดว่ามีขอบเขตสำหรับการตอบคำถามเฉพาะของคุณโดยตรง

  1. ควรใช้ไฟล์ชนิดใด

ฉันจะทำให้สมมติฐานที่ว่าคุณกำลังทุกข์ทรมานจากความสับสนในระดับทั่วไปที่เกิดขึ้นในขณะนี้ (ในชุมชนราสเบอร์รี่ Pi ที่กว้างขึ้น) ด้วยการแนะนำ Debian ' Jessie ' แทน Debian 'Wheezy' การเปลี่ยนแปลงนี้ทำให้บทเรียนจำนวนมากล้าสมัยที่สุดและสับสนมากที่สุด

คำตอบสำหรับคำถามคือเมื่อใช้ Wheezy เป็นเรื่องปกติที่จะทำการเปลี่ยนแปลง/etc/network/interfacesไฟล์เพื่อวัตถุประสงค์ในการตั้งค่าอินเทอร์เฟซเครือข่าย (ไปที่รูป) เมื่อใช้ Jessie จำเป็นต้องทำการเปลี่ยนแปลง '/etc/dhcpcd.conf' อย่างไรก็ตามหากทำการเปลี่ยนแปลงการเชื่อมต่อไร้สาย ( wlan0) คุณจะต้องทำการเปลี่ยนแปลง/etc/wpa_supplicant/wpa_supplicant.confที่เป็นที่ที่คุณเพิ่ม ssid เครือข่ายและรหัสผ่าน

  1. ทำไม wifi ทำงานกับ / etc / network / interfaces แต่ eth0 ไม่ได้?

ฉันไม่แน่ใจว่าการเชื่อมต่อ wifi สามารถทำงานได้อย่างไรเนื่องจากมีข้อมูลบางอย่างหายไปจากไฟล์ของคุณ (อย่างน้อยที่สุดก็ ssid) ดังที่ janos ชี้ให้เห็นลำดับความสำคัญของรายละเอียดการเชื่อมต่อ etho ที่เกิดขึ้นหลังจากรายละเอียด wlan0 อาจทำให้พวกเขาทำงานได้

  1. dhcpcd มีความสำคัญมากกว่า / etc / network / interface หรือไม่?

ไม่พวกมันต่างกันและออกแบบมาให้เหมาะกับวัตถุประสงค์ที่แตกต่างกันของเจสซี สำหรับวัตถุประสงค์ของการใช้เจสซีในทางที่ค่อนข้างง่ายที่คุณสวยมากสามารถละเว้นinterfacesไฟล์และทำงานกับและdhcpcd.confwpa_supplicant.conf

  1. วิธีการตรวจสอบบริการที่มีความสำคัญหรือ Someting? และบริการใดใช้ / etc / network / interface

อีกครั้งฉันจะทำให้สมมติฐานที่ว่าคำถามนั้นมีมากกว่า ' ฉันจะใช้ไฟล์ไหนและถ้าฉันต้องใช้ไฟล์ที่มีลำดับความสำคัญสูงกว่า? 'คำถาม คำตอบคือด้วยการเปลี่ยนจาก Wheezy เป็น Jessie (และในแง่ที่กว้างขึ้นกับการยอมรับของsystemd ) การกำหนดค่าของ 'dhcpcd.conf' และ 'wpa_supplicant.conf' จะเป็นบรรทัดฐานและไฟล์ 'ส่วนต่อประสาน' จะถูกทิ้งไว้ อุปกรณ์ของตัวเอง

สิ่งนี้มีความหมายต่อคุณอย่างไร?

(สมมติว่าคุณกำลังพยายามตั้งค่าการเชื่อมต่อแบบมีสายฮาร์ด (eth0) และไร้สาย (wlan0) ด้วยที่อยู่ IP แบบคงที่คุณจะต้องการให้interfacesไฟล์ของคุณเป็นค่าเริ่มต้นเมื่อติดตั้งครั้งแรก

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

คุณต้องการให้dhcpcd.confไฟล์ของคุณรวมรายละเอียดการเชื่อมต่อที่ท้ายไฟล์สำหรับอินเทอร์เฟซและรายการเพิ่มเติมอาจมีลักษณะเช่นนี้

# Custom static IP address for eth0.
interface eth0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

# Custom static IP address for wlan0.
interface wlan0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

สุดท้ายคุณต้องการแก้ไขwpa_supplicant.confไฟล์ของคุณเพื่อให้มันรวม ssid สำหรับเครือข่าย wifi และรหัสผ่าน มันน่าจะเป็นแบบนี้

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="homenetwork"
    psk="h0mepassw0rd"
}

ฉันหวังว่าจะปิดมัน มีความเป็นไปได้จริงอย่างมากที่สมมติฐานของฉันไม่ถูกต้อง แต่เนื่องจากฉันเพิ่งผ่านช่วงการเรียนรู้ที่คล้ายกันฉันหวังว่าข้อมูลจะมีประโยชน์

ฉันเขียนถึงสิ่งนี้จริง ๆ แล้วคุณจะได้รับข้อมูลใน ebook ฟรีแค่พอ Raspberry Piจาก Leanpub


1
ไม่ทำงาน ถ้าเรานำทั้งสองอินเตอร์เฟสขึ้นมาด้วย. if, ifconfig eth0 ขึ้น ping ไปข้างนอกและ ssh จากข้างนอกไม่ทำงาน หากเราใส่หนึ่งในอินเตอร์เฟสลงใน dhcp ทำงานทั้งหมด
giuseppe

หวังว่าคนจะสามารถให้ความช่วยเหลือกับคำถาม
d3noob

ไม่ได้ผลสำหรับฉันด้วยเหตุผลหลายประการ อย่างแรกคือคำถามนี้เป็นคำถามทั่วไปและถ้าคำตอบสำหรับเจสซี่นั่นเป็นเวลานานแล้วและเราก็ย้ายไปยืดเยื้อเป็นส่วนใหญ่และเพียงแค่ในสัปดาห์นี้คือบัสเตอร์ ไฟล์ส่วนต่อประสานของฉันไม่มีสิ่งที่คุณพูดถึง
Brian Bulkowski

6

ลำดับความสำคัญเกี่ยวข้องกับการกำหนดค่า init หรือ systemd ของคุณ ในส่วนที่เกี่ยวกับ dhcp: หากคุณมีอินเตอร์เฟสแบบคงที่หรือแบบกำหนดเองด้วยตนเองและ dhcp เริ่มร้องขอที่อยู่ในภายหลังมันจะแทนที่สิ่งที่คุณมีอยู่แล้ว บน Debian, dhcp เริ่มต้นขึ้นสำหรับอินเตอร์เฟสที่คุณระบุ dhcp, และไม่ใช่เพียงแค่ตัวเองเท่านั้นเอง หากคุณมีพฤติกรรมที่ไม่คาดคิดคุณอาจมีระบบที่แตกต่างกันทำงานในพื้นหลังเช่น NetworkManager

ต่อจุด:

  1. อย่าใช้ dhcpcd.conf เลยปล่อยให้มันเป็น
  2. คุณไม่มี eth0 ที่อนุญาตให้ใช้สาย hotplug
  3. หาก dhcpcd เริ่มต้นหลังจากการเชื่อมต่อเครือข่ายและคุณตั้งค่าให้ใช้งานอินเทอร์เฟซก็จะ
  4. ตรวจสอบลำดับที่คุณเริ่มบริการเหล่านั้น

4

IP แบบสแตติกไร้สายทำงานได้ แต่ eth0 ไม่ทำงาน

eth0อินเตอร์เฟซที่อาจจะไม่ได้นำมาขึ้นที่การบูตระบบเพราะไม่ได้ระบุไว้ในautoบรรทัด จากman interfaces:

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

เปลี่ยนบรรทัดนี้:

auto lo

สำหรับสิ่งนี้:

auto lo eth0

แล้วมันควรจะทำงาน

คำตอบอื่น ๆ ได้ตอบคำถามอื่น ๆ ของคุณ ฉันหวังว่านี่จะช่วยได้.


2
นี่คือคำตอบ OP มีปัญหาอื่นเช่นกัน แต่สำหรับคนอย่างฉันที่ทำตามคำแนะนำอื่น ๆ ซึ่งเพิ่งเพิ่มข้อมูลสแตติก/etc/network/interfacesไปชิ้นส่วนที่ขาดหายไปนั้นเป็นเพียงแค่auto eth0รีสตาร์ทเครือข่ายหรือรีบูต!
Adam Kaplan

2

ดูฉันจะตั้งค่าเครือข่าย / WiFi / Static IP ได้อย่างไรสำหรับรายละเอียดวิธีตั้งค่าเครือข่าย

คุณสามารถใช้/etc/network/interfacesวิธีเก่ากว่านี้ได้ถ้าต้องการ น่าเสียดายที่ไฟล์ที่คุณอยู่ในรายการมีข้อผิดพลาดมากมาย คุณควรติดตั้งหนึ่งในการกำหนดค่ามาตรฐาน

ถ้าคุณอยากจะใช้/etc/network/interfaces (นอกเหนือจากค่าเริ่มต้นของมัน) dhcpcdคุณจะต้องปิดการใช้งาน

คำอธิบายdhcpcdมีความซับซ้อนเกินไปสำหรับฟอรัมนี้ แต่ลิงก์ https://wiki.archlinux.org/index.php/dhcpcdให้ข้อมูลสรุปที่ดี


2

ก่อนอื่นรับ/etc/network/interfacesไฟล์กลับไปเป็นเวอร์ชั่นดั้งเดิม ...

# interfaces(5) file used by ifup(8) and ifdown(8)
# Please note that this file is written to be used with dhcpcd
# For static IP, consult `/etc/dhcpcd.conf` and `man dhcpcd.conf`

# Include files from `/etc/network/interfaces.d`:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

จากนั้นทำการเปลี่ยนแปลง/etc/dhcpcd.confไฟล์ของคุณอย่างง่ายดายและไร้สาย ...

(ที่ด้านล่างของไฟล์ ... )

nohook lookup-hostname

interface wlan0
    static ip_address=192.168.0.53/24
    static routers=192.168.0.1
    static domain_name_servers=8.8.8.8

/etc/wpa_supplicant/wpa_supplicant.conf:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US

network={
    ssid="The SSID of your Router"
    psk="daPassword"
    scan_ssid=1
    key_mgmt=WPA-PSK
}

0

โปรดทราบว่า Raspbian Jessie รุ่นล่าสุด (12/30/2559) มีข้อบกพร่องในบรรทัดที่สองของไฟล์อินเตอร์เฟส บรรทัดที่สองไม่มีเครื่องหมาย # นำหน้าเพื่อกำหนดบรรทัดเป็นความคิดเห็น ปัญหานี้ทำให้ไฟล์อินเตอร์เฟสไม่สามารถอ่านได้โดยระบบ ฉันใช้เวลาหลายชั่วโมงในการพยายามให้ WiFi ทำงานก่อนที่ฉันจะพบข้อผิดพลาดนี้

หากต้องการแก้ไขเพียงเพิ่มสัญลักษณ์ # ไปที่จุดเริ่มต้นของบรรทัด

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