ตัวเลือกไดรเวอร์ (-D) ภายใต้ wpa_supplicant


11

ก่อนที่จะwpa_supplicantสามารถทำงานได้ต้องมีส่วนต่อประสานเครือข่ายและต้องโหลดไดรเวอร์สำหรับอุปกรณ์ wpa_supplicantอนุญาตให้หนึ่งระบุไดรเวอร์ด้วยแฟล็ก "-D" ฉันได้ลองทำสิ่งนี้ในบางระบบ แต่wpa_supplicantดูเหมือนจะไม่ยอมรับไดรเวอร์ที่ฉันระบุ ตัวอย่างเช่น:

T42 ~ # lspci -v -s 02:02.0
02:02.0 Network controller: Intel Corporation PRO/Wireless 2915ABG [Calexico2] Network Connection (rev 05)
    Subsystem: Intel Corporation Device 1011
    Flags: bus master, medium devsel, latency 64, IRQ 11
    Memory at c0214000 (32-bit, non-prefetchable) [size=4K]
    Capabilities: [dc] Power Management version 2
    Kernel driver in use: ipw2200
    Kernel modules: ipw2200
T42 ~ # wpa_supplicant -D ipw2200 -i eth1 -c /root/wpafile 
Unsupported driver 'ipw2200'.
T42 ~ # 

อย่างไรก็ตามถ้าฉันเริ่มwpa_supplicantโดยไม่ระบุไดรเวอร์เช่นwpa_supplicant -i eth1 -c /root/wpafileนั้นมันทำงานได้อย่างไม่มีที่ติ ทำไมเป็นเช่นนี้ นอกจากนี้ในกรณีที่มันจำเป็นต้องระบุคนขับรถwpa_supplicant?


1
รายการไดรเวอร์ที่มีอยู่รวมถึง (ดูคู่มือ): HostAP, Prism54, Madwifi, NDISWrapper, AMTEL, IPW (ไดรเวอร์ทั้ง 2100 และ 2200), WEXT (นามสกุลเสริมไร้สายทั่วไป Linux), อีเธอร์เน็ตแบบใช้สาย ของคนเหล่านั้นที่น่าสนใจมากที่สุดคือ WEXT (ซึ่งมีการใช้งาน 70% อุปกรณ์ Wifi) NDISWrapper ถ้าคุณกำลังใช้ไดรเวอร์ของ Windows ห่อโดยชั้นความเข้ากันได้ Linux และ Madwifi aircrackถ้าคุณกำลังใช้ แม้ว่าฉันจะไม่เข้าใจในมุมมองทางสถาปัตยกรรม แต่ไดรเวอร์เหล่านั้นเป็นตัวแทนของระดับใด
Boris Burkov

คำตอบ:


13

คุณกำลังสับสนเคอร์เนลไดรเวอร์และไดรเวอร์พื้นที่ผู้ใช้ ในกรณีของคุณคุณอาจใช้ WEXT แต่ยัง nl80211 (ฉันคิดว่า)

WEXT (หรือ WE = ส่วนขยายไร้สาย) เป็นการดัดแปลงที่ใช้กับเคอร์เนล Linux ในปี 1997 โดย Jean Tourrhiles ตามเว็บเพจนี้ที่เขียนโดย Tourrhiles เอง

Wireless Extension (WE) เป็น API ทั่วไปที่อนุญาตให้ไดรเวอร์เปิดเผยพื้นที่ผู้ใช้การกำหนดค่าและสถิติเฉพาะสำหรับ LAN ไร้สายทั่วไป ความสวยงามของมันคือชุดเครื่องมือหนึ่งชุดสามารถรองรับ LAN LAN ไร้สายทุกรุ่นไม่ว่าจะเป็นรุ่นใด (ตราบเท่าที่ไดรเวอร์สนับสนุนการขยายไร้สาย) ข้อดีอีกประการคือพารามิเตอร์เหล่านี้อาจมีการเปลี่ยนแปลงได้ทันทีโดยไม่ต้องรีสตาร์ทไดรเวอร์ (หรือ Linux)

กล่าวอีกนัยหนึ่ง WEXT ตั้งอยู่บนไดรเวอร์ของคุณและอนุญาตให้ wpa_supplicant โต้ตอบกับมัน โปรดสังเกตว่า wpa_supplicant และไดรเวอร์อยู่ในขอบเขตของเคอร์เนลที่แตกต่างกัน (เป็นพื้นที่แรกของผู้ใช้, พื้นที่ที่สองจากพื้นที่เคอร์เนล) ดังนั้นจึงจำเป็นต้องใช้ API ที่สามารถทำหน้าที่เป็น go-between นี่คือบทบาทที่เล่นโดยไดรเวอร์ที่กล่าวถึงโดย Bob

อย่างไรก็ตามหน้าเว็บ Linux-Wirelessระบุอย่างชัดเจนว่า

เรากำลังพัฒนาต่อไปหรือไม่?

ไม่มันไม่ใช่. เรายอมรับเฉพาะการแก้ไขข้อบกพร่องเท่านั้น

และ

การแทนที่ส่วนขยายไร้สายคืออะไร

การพัฒนาใหม่ควรเน้นที่ cfg80211 และ nl80211

ในความเป็นจริงถ้าแบบสอบถามของฉัน wpa_supplicant อย่างไม่ถูกต้อง (เช่นไม่ใช่หน้าคน แต่คำสั่ง

 wpa_supplicant -h

ฉันได้รับ (บางส่วน) คำตอบนี้:

drivers:
  wext = Linux wireless extensions (generic)
  nl80211 = Linux nl80211/cfg80211
  wired = Wired Ethernet driver
  none = no driver (RADIUS server/WPS ER)
options:....

กล่าวอีกอย่างหนึ่งคำพูดของ Linux Wireless สนับสนุนไดรเวอร์อื่น ๆ ทั้งหมดยกเว้น Wext และ nl80211 ลดลงและการสนับสนุน Wext ได้รับการดูแลรักษาเนื่องจาก ...

เรายังใช้เราหรือไม่

ใช่ cfg80211 และ nl80211 ยังคงทำงานอยู่ดังนั้นเราจึงยังคงใช้งานอยู่ ไดรเวอร์ mac80211 ทั้งหมดสนับสนุน WEs เนื่องจาก mac80211 ใช้งาน แนวคิดคือการเริ่มเคลื่อนย้ายสิ่งต่างๆไปยัง cfg80211 และ nl80211 อย่างช้าๆซึ่งยังไม่ได้มีและเพิ่มคุณสมบัติใหม่ใด ๆ ให้กับพวกเขาเช่นกัน

สิ่งนี้ใช้กับ Linux Kernel 3.11.1-031101-generic

พวกคุณที่เคยใช้ hostapd นั้นได้รับแจ้งเรื่องนี้แล้วเพราะไดรเวอร์มาตรฐานสำหรับ hostapd นั้น nl80211

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