Raspberry Pi Force Server WAP: 15 ขั้นตอน

Raspberry Pi Force Server WAP: 15 ขั้นตอน

สารบัญ:

Anonim

ในบทช่วยสอนนี้คุณจะก้าวเข้าสู่กระบวนการเปลี่ยน Raspberry Pi ของคุณให้เป็น Wireless Access Point (WAP) และติดตั้ง Force Server ลงไปและปิดการบูตเพื่อให้คุณสามารถขยายโครงการนี้ในอนาคตได้

----- รายละเอียดเกี่ยวกับ Force Server ไปที่นี่ ----- (ตั้งใจออกไป)

ในตอนท้ายของคำแนะนำนี้คุณจะสามารถ:

  1. เปิด Raspberry Pi ของคุณ
  2. เชื่อมต่อกับเครือข่าย
  3. ควบคุมจากโทรศัพท์ของคุณโดยใช้แอปบังคับ

WAP การสร้างบทช่วยสอนต่อไปนี้มาจาก / เขียนซ้ำในบทช่วยสอนออนไลน์ของ Adafruit ที่เชื่อมโยงที่นี่

วัสดุ:

ขั้นตอนที่ 1: อะไหล่

คุณจะต้องต่อไปนี้:

  1. ราสเบอร์รี่ Pi
  2. การเชื่อมต่ออินเทอร์เน็ตผ่านอีเธอร์เน็ตสำหรับ Raspberry Pi ของคุณ
  3. อะแดปเตอร์ Wi-Fi ที่รองรับโหมด AP (Adafruit Wi-Fi อะแดปเตอร์ทำงาน)
  4. (Micro) 4GB SD Card ขั้นต่ำที่มี Raspbian ติดตั้งอยู่ (มีบทเรียนมากมายเกี่ยวกับวิธีการทำเช่นนี้เพียงใช้ Google)
    1. เครื่องอ่านการ์ด SD หากคุณต้องการติดตั้ง Raspbian
  5. แหล่งจ่ายไฟสำหรับ Raspberry Pi ของคุณ (5V 1 ~ 2A)

ขั้นตอนที่ 2: ตรวจสอบ Ethernet และ Wifi

ก่อนดำเนินการต่อตรวจสอบให้แน่ใจว่าสายเคเบิลอีเธอร์เน็ตเชื่อมต่ออยู่และคุณสามารถ ping ออกจาก Pi ได้

คุณจะต้องตั้งค่าดองเกิล WiFi ของคุณด้วย วิ่ง sudo shutdown -h ตอนนี้ จากนั้นเสียบโมดูล WiFi เมื่อปิด Pi ดังนั้นคุณจะไม่ทำให้เกิดไฟกระชาก เมื่อมันกลับมาตรวจสอบด้วย ifconfig -a ที่คุณเห็น wlan0 - โมดูล WiFi

ขั้นตอนที่ 3: ติดตั้งซอฟต์แวร์

พิมพ์สิ่งต่อไปนี้ลงในเครื่อง

sudo apt-get update

sudo apt-get install isc-dhcp-server

sudo apt-get install เป็นเจ้าภาพ

ขั้นตอนที่ 4: ตั้งค่าเซิร์ฟเวอร์ DHCP

ต่อไปเราจะแก้ไข /etc/dhcp/dhcpd.conf ซึ่งเป็นไฟล์ที่ตั้งค่าเซิร์ฟเวอร์ DHCP ของเราซึ่งจะช่วยให้การเชื่อมต่อ wifi ได้รับที่อยู่ IP, DNS และอื่น ๆ โดยอัตโนมัติ

รันคำสั่งนี้เพื่อแก้ไขไฟล์

sudo nano /etc/dhcp/dhcpd.conf

ค้นหาบรรทัดที่พูด

ตัวเลือกชื่อโดเมน "example.org" ตัวเลือกโดเมนเนมเซิร์ฟเวอร์ ns1.example.org, ns2.example.org;

และเปลี่ยนพวกเขาเพื่อเพิ่ม # ในการเริ่มต้นเพื่อให้พวกเขาพูด

#option ชื่อโดเมน "example.org"; # ตัวเลือกโดเมนเนมเซิร์ฟเวอร์ ns1.example.org, ns2.example.org;

ค้นหาบรรทัดที่พูด

# หากเซิร์ฟเวอร์ DHCP นี้เป็นเซิร์ฟเวอร์ DHCP ที่เป็นทางการสำหรับโลคัล

# network คำสั่งที่มีสิทธิ์ควรไม่มีคำพูดออกมา #authoritative;

และลบ # ดังนั้นมันจึงบอกว่า

# หากเซิร์ฟเวอร์ DHCP นี้เป็นเซิร์ฟเวอร์ DHCP อย่างเป็นทางการสำหรับเครือข่ายท้องถิ่น # คำสั่งที่มีสิทธิ์ควรไม่มีการแสดงความคิดเห็น เผด็จการ;

จากนั้นเลื่อนลงไปด้านล่างและเพิ่มบรรทัดต่อไปนี้

ซับเน็ต 192.168.42.0 netmask 255.255.255.0 {ช่วง 192.168.42.10 192.168.42.50; ตัวเลือกการออกอากาศที่อยู่ 192.168.42.255; ตัวเลือกเราเตอร์ 192.168.42.1; ค่าเริ่มต้นเวลาเช่า 600 เวลาเช่าสูงสุด 7200; ตัวเลือกชื่อโดเมน "ท้องถิ่น"; ตัวเลือกโดเมนเนมเซิร์ฟเวอร์ 8.8.8.8, 8.8.4.4; }

บันทึกไฟล์โดยพิมพ์ ควบคุม-X แล้วก็ Y แล้วก็ กลับ

วิ่ง

sudo nano / etc / default / isc-dhcp-server

และเลื่อนลงไปที่ INTERFACES = "" และอัปเดตเพื่อบอก INTERFACES = "wlan0"

ปิดและบันทึกไฟล์

ขั้นตอนที่ 5: ตั้งค่า Wlan0 สำหรับ IP แบบคงที่

ถ้าเกิดว่าคุณมี wlan0 เปิดใช้งานเพราะคุณตั้งค่าให้รัน

sudo ถ้าลง wlan0

ไม่มีอันตรายใด ๆ หากใช้งานไม่แน่ใจ

ต่อไปเราจะตั้งค่าการเชื่อมต่อ wlan0 ให้เป็นแบบสแตติกและขาเข้า เรียกใช้ sudo nano / etc / network / interfaces เพื่อแก้ไขไฟล์

ค้นหาบรรทัดอัตโนมัติ wlan0 และเพิ่ม # ไว้ด้านหน้าของบรรทัดและด้านหน้าของทุกบรรทัดหลังจากนั้น หากคุณไม่มีบรรทัดนั้นให้ตรวจสอบให้แน่ใจว่ามันดูเหมือนภาพหน้าจอด้านล่างในที่สุด! โดยทั่วไปเพียงแค่ลบการตั้งค่าการกำหนดค่า wlan0 เก่าเราจะทำการเปลี่ยนแปลง

ขึ้นอยู่กับการตั้งค่า / การกระจายปัจจุบันของคุณอาจมีข้อความมากหรือน้อยและอาจแตกต่างกันเล็กน้อย

เพิ่มบรรทัด

iface wlan0 inet ที่อยู่แบบคงที่ 192.168.42.1 netmask 255.255.255.0

หลังจาก allow-hotplug wlan0 - ดูตัวอย่างด้านล่างว่าควรมีลักษณะอย่างไร บรรทัดอื่น ๆ หลังจากนั้นควรมี # ข้างหน้าเพื่อปิดการใช้งานพวกเขา

บันทึกไฟล์ (Control-X Y) กำหนดที่อยู่ IP แบบคงที่ให้กับอะแดปเตอร์ไร้สายโดยเรียกใช้:

sudo ifconfig wlan0 192.168.42.1

ขั้นตอนที่ 6: กำหนดค่า Access Point

ตอนนี้เราสามารถกำหนดค่ารายละเอียดจุดเชื่อมต่อ เราจะตั้งค่าเครือข่ายที่มีการป้องกันด้วยรหัสผ่านดังนั้นเฉพาะผู้ที่มีรหัสผ่านเท่านั้นที่สามารถเชื่อมต่อได้ สร้างไฟล์ใหม่ด้วยการรัน

sudo nano /etc/hostapd/hostapd.conf

วางต่อไปนี้ในคุณสามารถเปลี่ยนข้อความหลังจาก ssid = เป็นชื่ออื่นซึ่งจะเป็นชื่อออกอากาศเครือข่าย รหัสผ่านสามารถเปลี่ยนได้ด้วยข้อความหลังจาก wpa_passphrase =

อินเตอร์เฟส = ไดรเวอร์ wlan0 = rtl871xdrv ssid = TheForceServer hw_mode = g channel = 9 macaddr_acp = ipPair = 0phppwise CCPrp = wp_prp_ptp_prs = 1 wpa_passphrase

หากคุณไม่ได้ใช้อะแดปเตอร์ไร้สาย Adafruit คุณอาจต้องเปลี่ยน คนขับ = rtl871xdrv เพื่อพูด คนขับ = nl80211 หรือบางสิ่งบางอย่างเราไม่มีการสนับสนุนการสอนสำหรับสรรพสินค้านั้น YMMV!

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

sudo nano / etc / default / hostapd

ค้นหาบรรทัด # DAEMON_CONF = "" และแก้ไขมันเพื่อบอกว่า DAEMON_CONF = "/ etc / hostapd / hostapd.conf"อย่าลืมลบ # ข้างหน้าเพื่อเปิดใช้งาน! จากนั้นบันทึกไฟล์

ขั้นตอนที่ 7: กำหนดค่าการแปลที่อยู่เครือข่าย

การตั้งค่า NAT จะอนุญาตให้ไคลเอนต์หลายรายเชื่อมต่อกับ WiFi และมีข้อมูล 'tunnelled' ผ่านอีเธอร์เน็ต IP เดียว (แต่คุณควรทำแม้ว่าลูกค้าเพียงรายเดียวเท่านั้นที่จะเชื่อมต่อ)

วิ่ง

sudo nano /etc/sysctl.conf

เลื่อนไปที่ด้านล่างและเพิ่ม net.ipv4.ip_forward = 1 ในบรรทัดใหม่ บันทึกไฟล์ นี่จะเป็นการเริ่มต้นการส่งต่อ IP เมื่อบูตเครื่อง

ยังรัน

sudo sh -c "echo 1> / proc / sys / net / ipv4 / ip_forward"

เพื่อเปิดใช้งานทันที

รันคำสั่งต่อไปนี้เพื่อสร้างการแปลเครือข่ายระหว่างพอร์ตอีเธอร์เน็ต eth0 และพอร์ต wifi wlan0

sudo iptables -t nat-POSTROUTING -o eth0 -j MASQUERADE

sudo iptables -A ไปข้างหน้า -i eth0 -o wlan0 -m state - สถานะที่เกี่ยวข้อง, ESTABLISHED -j ACCEPT

sudo iptables -A ไปข้างหน้า -i wlan0 -o eth0 -j ยอมรับ

คุณสามารถตรวจสอบเพื่อดูว่ามีอะไรในตารางด้วย

sudo iptables -t nat -S

sudo iptables -S

ในการทำให้สิ่งนี้เกิดขึ้นเมื่อรีบูต (ดังนั้นคุณไม่จำเป็นต้องพิมพ์ทุกครั้ง) ให้ทำงาน

sudo sh -c "iptables-save> /etc/iptables.ipv4.nat"

วิ่ง sudo nano / etc / network / interfaces และเพิ่ม

iptables-restore </etc/iptables.ipv4.nat

ไปยังจุดสิ้นสุดมาก

ขั้นตอนที่ 8: อัปเดต Hostapd

ก่อนที่เราจะสามารถเรียกใช้ซอฟต์แวร์จุดเข้าใช้งานได้เราต้องอัปเดตเป็นรุ่นที่รองรับอแด็ปเตอร์ WiFi รับเวอร์ชันใหม่ก่อนโดยพิมพ์

wget

เพื่อดาวน์โหลดเวอร์ชั่นใหม่ (ตรวจสอบหัวข้อถัดไปสำหรับวิธีการรวบรวม hostapd ที่อัปเดตของคุณเอง) จากนั้น

เปิดเครื่องรูด adafruit_hostapd_14128.zip

เพื่อคลายการบีบอัด ย้ายเวอร์ชั่นเก่าออกไปให้พ้น

sudo mv / usr / sbin / hostapd /usr/sbin/hostapd.ORIG

และเลื่อนเวอร์ชั่นใหม่ไปด้วย

sudo mv hostapd / usr / sbin

ตั้งค่าเพื่อให้ทำงานได้

sudo chmod 755 / usr / sbin / hostapd

ขั้นตอนที่ 9: การทดสอบครั้งแรก!

ในที่สุดเราสามารถทดสอบโฮสต์จุดเข้าใช้งาน!

วิ่ง

sudo / usr / sbin / hostapd /etc/hostapd/hostapd.conf

ในการรัน hostapd ด้วยตนเองด้วยไฟล์กำหนดค่าของเรา คุณควรเห็นมันตั้งค่าและใช้งาน wlan0 จากนั้นคุณสามารถตรวจสอบกับคอมพิวเตอร์ wifi อีกเครื่องที่คุณเห็น SSID ของคุณปรากฏขึ้น ถ้าเป็นเช่นนั้นคุณได้ตั้งค่าจุดเชื่อมต่อเรียบร้อยแล้ว

คุณสามารถลองเชื่อมต่อและตัดการเชื่อมต่อจาก TheForceServer ด้วยรหัสผ่านที่คุณตั้งไว้ก่อนหน้า (อาจเป็นไปได้ ราสเบอร์รี่ หากคุณคัดลอกการตั้งค่า hostapd ของเรา) ข้อความดีบั๊กจะแสดงบนคอนโซล Pi แต่คุณจะไม่สามารถเชื่อมต่อผ่านการเชื่อมต่ออีเธอร์เน็ตได้ ยกเลิกการทดสอบโดยพิมพ์ ควบคุม-C ในคอนโซล Pi เพื่อกลับไปที่บรรทัดคำสั่ง Pi

ขั้นตอนที่ 10: เสร็จสิ้น!

ตกลงตอนนี้เรารู้แล้วว่ามันใช้งานได้เวลาตั้งค่าเป็น 'daemon' - โปรแกรมที่จะเริ่มเมื่อ Pi บู๊ทส์รันคำสั่งต่อไปนี้

sudo service hostapd เริ่มทำงาน

บริการ sudo isc-dhcp-server เริ่มทำงาน

คุณสามารถตรวจสอบสถานะของเซิร์ฟเวอร์ AP โฮสต์และเซิร์ฟเวอร์ DHCP ด้วย

สถานะ sudo service hostapd

บริการ sudo สถานะ isc-dhcp-server

เพื่อเริ่มบริการ daemon ตรวจสอบว่าพวกเขาทั้งสองเริ่มต้นได้สำเร็จ (ไม่มี 'ความล้มเหลว' หรือ 'ข้อผิดพลาด') จากนั้นให้มันทำงานทุกครั้งที่บูต

sudo update-rc.d hostapd เปิดใช้งาน

sudo update-rc.d isc-dhcp-server เปิดใช้งาน

พิเศษ: การลบ WPA-Supplicant

ขึ้นอยู่กับ distro ของคุณคุณอาจต้องลบ WPASupplicant ทำได้โดยเรียกใช้คำสั่งนี้:

sudo mv /usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service ~ /

จากนั้นรีบูตเครื่อง

sudo รีบูต

ขั้นตอนที่ 11: เชื่อมต่อและทดสอบ

ตอนนี้เราได้ติดตั้งซอฟต์แวร์บน Pi แล้วก็ถึงเวลาเชื่อมต่อและทดสอบการเชื่อมต่อ ฉันใช้คอมพิวเตอร์ Windows แต่ทุกชนิดก็ใช้ได้ดี บน Pi เรียกใช้คำสั่ง

tail -f / var / log / syslog

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

ป้อนรหัส WPA ที่คุณระบุในขั้นตอนก่อนหน้า

ใน Pi syslog คุณควรเห็นสิ่งนี้! มันบ่งชี้ว่าไคลเอนต์ที่เชื่อมต่อในเวลาและที่อยู่ IP ใดที่พวกเขาได้รับ

หากคุณไม่สามารถเชื่อมต่อได้เลยมีบางอย่างผิดปกติ hostapd

บนคอมพิวเตอร์ของคุณเปิด สถานีปลายทาง (mac / linux) หรือ Start-> Run-> cmd เพื่อเปิดบรรทัดคำสั่ง ตรวจสอบอะไรก่อน ifconfig (mac / linux) หรือ ipconfig (windows) พูดว่า คุณควรมีที่อยู่ IP ในช่วง 192.168.42.10-50

ลอง pinging the Pi ที่อยู่ของมันคือ 192.168.42.1 - บน windows มันจะ ping 3 ครั้งและออก บน mac / linux กด Control-C เพื่อออกหลังจากไม่กี่ปิง คุณควรได้รับ ping ที่ประสบความสำเร็จตามที่เห็นด้านล่าง หากไม่ได้ผลมีบางอย่างผิดปกติ hostapd หรือ DHCPD (มีโอกาสมากขึ้น).

ถัดไปลองส่งคำสั่ง 8.8.8.8 ถ้าสิ่งนี้ไม่ได้ผล DHCPD หรือการกำหนดค่า NAT (มีแนวโน้มมากขึ้น)

สุดท้ายเราจะตรวจสอบว่า DNS ใช้งานได้หรือไม่ลอง ping www.mit.edu หากวิธีนี้ใช้ไม่ได้แสดงว่ามีบางอย่างผิดปกติ DHCPD. หากทุกอย่างเรียบร้อยดีแล้วลองท่องอินเทอร์เน็ตส่งอีเมล ฯลฯ ตอนนี้คุณกำลังใช้ Pi ของคุณเป็นเราเตอร์ไร้สาย!

มากกว่า!

เป็นไปได้ในการตั้งค่าเราเตอร์ของคุณสำหรับการเข้าถึงแบบเปิดหรือ WEP แต่เราไม่ครอบคลุมที่นี่ (และมันไม่ปลอดภัย!) คุณอาจต้องการค้นหาบทช่วยสอนเช่นตัวนี้ที่ครอบคลุมตัวเลือก hostapd

ขั้นตอนที่ 12: รวบรวม Hostapd

คุณอาจสังเกตเห็นว่าขั้นตอนเดียวกำลังดาวน์โหลดสำเนาของ hostapd จาก adafruit.com และแลกเปลี่ยนกับคุณ ในกรณีที่คุณต้องการรวบรวมของคุณเองนี่คือวิธี (มันง่าย แต่ไม่จำเป็นถ้าคุณตกลงกับการใช้ไบนารีของเรา)

ไปที่หน้าดาวน์โหลด Realtek http: //152.104.125.41/downloads/downloadsView.asp …

ดาวน์โหลด linux 3.4.4_4749

คัดลอก zip ไปยังการ์ด SD โดยใช้คอมพิวเตอร์เครื่องใดก็ได้ที่จะวางไว้ในไดเรกทอรีของ Pi / / boot (หรือนำไฟล์นั้นไปไว้ใน Pi ของคุณ)

บู๊ต Pi จากการ์ด SD

sudo mv /boot/RTL8192xC_USB_linux_v3.4.4_4749.20121105.zip

unzip RTL8192xC_USB_linux_v3.4.4_4749.20121105.zip

mv RTL8188C_8192C_USB_linux_v3.4.4_4749.20121105 / rtl

cd rtl

cd wpa_supplicant_hostapd

เปิดเครื่องรูด wpa_supplicant_hostapd-0.8_rtw_20120803.zip

cd wpa_supplicant_hostapd-0.8 /

cd hostapd

ทำ

* มีแซนวิช * เมื่อเสร็จแล้ว hostapd ไบนารีอยู่ในไดเรกทอรี

ขั้นตอนที่ 13: หมายเหตุ: Force Server ยังไม่พร้อมใช้งาน

สคริปต์ Forcer Server และแอปไม่สามารถใช้งานได้ในขณะนี้

มันควรจะเปิดตัวเร็ว ๆ นี้:)

ขั้นตอนที่ 14: ดาวน์โหลดและติดตั้งเซิร์ฟเวอร์บังคับ

ดาวน์โหลด

ในที่สุดก็ถึงขั้นตอนที่คุณสามารถดาวน์โหลด Force Server เพื่อรันบน Raspberry Pi ของคุณ

หากต้องการทำสิ่งนี้ให้เรียกใช้สิ่งต่อไปนี้:

cd ~

git clone

สร้างสำเนาของเทมเพลตเพื่อใช้งาน

เมื่อ git เสร็จสิ้นการโคลนที่เก็บ ForceProject Python แล้วให้รันคำสั่งต่อไปนี้:

cd Python

cp template.py myScript.py

ตอนนี้คุณเพิ่งสร้างไฟล์ใหม่ด้วยชื่อ myScript.py จาก template.py จากที่นี่ไปคุณควรแก้ไข myScript.py เพื่อจุดประสงค์ของคุณเอง ไฟล์ template.py ควรไม่ถูกแตะต้องเพราะมันจะทำหน้าที่เป็นแม่แบบที่มีฟังก์ชั่นผู้ได้รับมอบหมายทั้งหมดและรหัสสำเร็จรูปที่มีอยู่แล้ว

เริ่มสคริปต์ Force Server ของคุณเมื่อบูต

เรียกใช้รหัสต่อไปนี้โดยสมมติว่าชื่อไฟล์ ฯลฯ เหมือนกันกับด้านบน:

sudo crontab -e

ที่ด้านล่างเพิ่มบรรทัดต่อไปนี้:

sudo python /usr/pi/Python/myScript.py &

ตอนนี้กด ควบคุม-O, ควบคุม-Xเพื่อบันทึกและปิดไฟล์ crontab

ขั้นตอนที่ 15: ตั้งค่า Force Remote

หลังจากที่คุณตั้งค่า Force Server แล้วคุณจะต้องการตั้งค่ารีโมต

ดาวน์โหลดแอพ Force จาก AppStore ที่นี่

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

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