การตั้งค่า Raspberry Pi เป็นจุดเชื่อมต่อ - วิธีที่ง่าย


16

ฉันรู้วิธีการทำวิธีที่คลาสสิกตามที่อธิบายไว้เช่นโดยเอกสารอย่างเป็นทางการในการตั้งค่า Raspberry Pi เป็นจุดเชื่อมต่อในเครือข่ายแบบสแตนด์อโลน (NAT) แต่นั่นต้องการส่วนประกอบที่แตกต่างกันซึ่งจะต้องเล่นด้วยกันและแต่ละส่วนประกอบจะต้องกำหนดค่าด้วยวิธีของตัวเอง เหล่านี้จะมีเครือข่าย (ifupdown) , dhcpcd , hostapd , dnsmasqและสะพาน utils

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

เป็นไปได้หรือไม่ที่จะกำหนดค่าRaspbianให้ทำงานเป็นจุดเชื่อมต่อ wifi โดยไม่ต้องติดตั้งซอฟต์แวร์เพิ่มเติม?

คำตอบ:


26

━━━การตั้งค่าจุดเชื่อมต่อ━━━

เรามีการพูดคุยเกี่ยวกับจุดเชื่อมต่อร่วมกับพอร์ตอีเธอร์เน็ตeth0

หากคุณต้องการจุดเชื่อมต่อร่วมกับwlan0เชื่อมต่อลูกค้าไปยังเครือข่าย wifi อื่น (repeater WLAN) แล้วมองไปที่จุดเชื่อมต่อเป็นเราเตอร์ WiFi / ทวนจำเป็นกับสะพาน

สามารถกำหนดค่าRaspbian Stretchเป็นจุดเชื่อมต่อ wifi ได้โดยไม่ต้องติดตั้งซอฟต์แวร์เพิ่มเติม ส่วนประกอบที่จำเป็นทั้งหมดที่มีอยู่: เครือข่ายเซิร์ฟเวอร์ DHCP และเชื่อมโยงมาพร้อมกับsystemd-networkdและ WiFi สามารถติดตั้งกับwpa_supplicant การเชื่อมต่อสองอินเตอร์เฟสeth0และwlan0สามารถทำได้โดยการเราต์หรือโดยการเชื่อมต่อ ด้านล่างก่อนการตั้งค่าสำหรับการติดตั้งอย่างรวดเร็วแล้วรายละเอียด ครั้งแรกที่เราจะต้องสลับไปsystemd-networkd

ทดสอบกับ
Raspbian Buster Lite 2019-09-26ใน Raspberry Pi 4B อัพเดทเมื่อวันที่ 2020-01-18 อัพเดททำได้ด้วย
ที่นี่คุณสามารถหาสิ่งที่แก้ไขการทดสอบสุดท้ายสำหรับรุ่น Raspbian ก่อนหน้านี้sudo apt update && sudo apt full-upgrade && sudo reboot



♦การตั้งค่าทั่วไป

สลับไปที่ systemd-networkd

สำหรับดูรายละเอียดข้อมูลที่(1)และวิธีการแก้ปัญหาชื่อกำหนดค่ากับ systemd-networkd ในระยะสั้นเท่านั้น ดำเนินการคำสั่งเหล่านี้:

# deinstall classic networking
rpi ~$ sudo -Es
rpi ~# apt --autoremove purge ifupdown dhcpcd5 isc-dhcp-client isc-dhcp-common
rpi ~# rm -r /etc/network /etc/dhcp

# setup systemd-resolved
rpi ~# apt --autoremove purge avahi-daemon
rpi ~# apt install libnss-resolve
rpi ~# ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
rpi ~# systemctl enable systemd-resolved.service

# enable systemd-networkd
rpi ~# systemctl enable systemd-networkd.service

กำหนดค่า wpa_supplicant เป็นจุดเชื่อมต่อ

ในการกำหนดค่าwpa_supplicantเป็นจุดเชื่อมสร้างแฟ้มนี้ด้วยการตั้งค่าของคุณสำหรับcountry=, ssid=, และอาจจะpsk= frequency=คุณสามารถคัดลอกและวางสิ่งนี้ในหนึ่งบล็อกไปยังบรรทัดคำสั่งของคุณเริ่มต้นด้วยcatและรวมทั้ง EOF (ตัวคั่น EOF จะไม่ได้รับส่วนของไฟล์):

rpi ~# cat > /etc/wpa_supplicant/wpa_supplicant-wlan0.conf <<EOF
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="RPiNet"
    mode=2
    frequency=2437
    #key_mgmt=NONE   # uncomment this for an open hotspot
    # delete next 3 lines if key_mgmt=NONE
    key_mgmt=WPA-PSK
    proto=RSN WPA
    psk="password"
}
EOF
rpi ~# chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
rpi ~# systemctl disable wpa_supplicant.service
rpi ~# systemctl enable wpa_supplicant@wlan0.service

เสร็จสิ้นการตั้งค่าทั่วไป กลับไป.


♦การตั้งค่าจุดเชื่อมต่อแบบสแตนด์อะโลน

ตัวอย่างสำหรับการตั้งค่านี้:

                 wifi
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0)
            \             /
           (dhcp)   192.168.4.1

อย่าติดตั้ง "นายพล"แล้วสร้างไฟล์ต่อไปนี้เพื่อกำหนดค่าwlan0 เรามีจุดเข้าใช้งานเท่านั้น ไม่มีการกำหนดค่าอุปกรณ์อีเธอร์เน็ต

rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
DHCPServer=yes
EOF

หากคุณต้องการสิ่งนี้แล้วรีบูต
แค่นั้นแหละ.
ไม่เช่นนั้นไม่จำเป็นต้องรีบูตในเวลานี้


♦การตั้งค่าจุดเข้าใช้งานและด้วย eth0 โดยไม่มีการกำหนดเส้นทาง

ตัวอย่างสำหรับการตั้งค่านี้:

                                 |
                 wifi            |           wired            wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
            \             /      |     \             /
           (dhcp)   192.168.4.1  |    (dhcp)   192.168.50.1

ติดตั้ง

อย่า"การติดตั้งจุดที่ยืนอยู่คนเดียวเข้าถึง"แล้วสร้างไฟล์ต่อไปนี้เพื่อกำหนดค่าeth0

rpi ~$ sudo -Es   # if not already executed before
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
DHCP=yes
EOF

Reboot
แค่นั้นแหละ.

รายละเอียด

Interface eth0เชื่อมต่อกับสายอีเธอร์เน็ตกับเราเตอร์อินเทอร์เน็ตและรับการกำหนดค่าโดย DHCP จากเราเตอร์อินเทอร์เน็ต มันเป็นปัญหาที่จะให้มันอยู่ IP แบบคงที่ด้วยเช่นไม่มีแทนAddress=192.168.50.2DHCP=yes

หากไม่กำหนดเส้นทางคุณจะไม่สามารถเชื่อมต่ออินเทอร์เน็ตด้วยโทรศัพท์มือถือได้ คุณสามารถเข้าใช้งานได้จาก RPi เท่านั้นเพื่อรับการปรับปรุงหรืออะไรทำนองนั้น


♦การตั้งค่าจุดเชื่อมต่อและด้วย eth0 โดยมี NAT (แนะนำ)

ตัวอย่างสำหรับการตั้งค่านี้:

                 wifi                        wired            wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
            \             /            \
           (dhcp)   192.168.4.1       (dhcp)

ติดตั้ง

อย่าติดตั้ง "นายพล"แล้วสร้างไฟล์ต่อไปนี้เพื่อกำหนดค่าwlan0และeth0 หากคุณลองหนึ่งในการตั้งค่าก่อนหน้านี้คุณสามารถเขียนทับไฟล์ทั้งสองได้ ตรวจสอบให้แน่ใจว่าคุณใช้เครือข่ายย่อยที่แตกต่างกันสำหรับจุดเข้าใช้งานที่ไม่ใช่จุดเชื่อมต่อจากเราเตอร์ เราเตอร์ในตัวอย่างนี้ไม่ได้ใช้เครือข่ายย่อย 192.168.4.0/24 Address=192.168.5.1/24หากคุณต้องการเครือข่ายย่อยอีกแล้วเพียงแค่เปลี่ยนบรรทัดที่อยู่เช่น

rpi ~$ sudo -Es   # if not already executed before
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
# IPMasquerade is doing NAT
IPMasquerade=yes
DHCPServer=yes
[DHCPServer]
DNS=84.200.69.80 1.1.1.1
EOF

rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
DHCP=yes
IPForward=yes
EOF

Reboot
แค่นั้นแหละ.

รายละเอียด

หากคุณไม่สามารถเข้าถึงเราเตอร์อินเทอร์เน็ตคุณสามารถปลอมมันด้วย NAT (การแปลที่อยู่เครือข่าย) เพื่อบอกว่าเป็นการโกหกว่าแพ็คเกจทั้งหมดมาจาก RasPi AP ของคุณ แต่นี่ไม่ใช่เส้นทางที่สะอาดและมีข้อ จำกัด ไคลเอนต์ในซับเน็ตของเราเตอร์ไม่สามารถเชื่อมต่อกับไคลเอนต์ใน wifi ได้ แต่ในกรณีส่วนใหญ่ไม่จำเป็นต้องใช้เพื่อแนะนำการตั้งค่านี้เพราะจะทำให้การตั้งค่าง่ายขึ้น หากคุณต้องการเชื่อมต่อกับไคลเอนต์ wifi จากเครือข่ายเราเตอร์คุณต้องใช้การกำหนดเส้นทางแบบเต็มรูปแบบตามที่อธิบายไว้ในส่วนถัดไป


♦การตั้งค่าจุดเข้าใช้งานและด้วย eth0 พร้อมการกำหนดเส้นทาง

ตัวอย่างสำหรับการตั้งค่านี้:

                 wifi                        wired            wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
            \             /            \              /
           (dhcp)   192.168.4.1   192.168.50.2   192.168.50.1

ติดตั้ง

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

rpi ~$ sudo -Es   # if not already executed before
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
DHCPServer=yes
[DHCPServer]
DNS=84.200.69.80 1.1.1.1
EOF

rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
Address=192.168.50.2/24
Gateway=192.168.50.1
DNS=84.200.69.80 1.1.1.1
IPForward=yes
EOF

Reboot

ในการทำให้การกำหนดเส้นทางทำงานเสร็จสมบูรณ์คุณต้องตั้งค่าเส้นทางคงที่ในเราเตอร์อินเทอร์เน็ตของคุณเพื่อให้สามารถค้นหาเส้นทางสำหรับแพ็คเกจสำรองที่มาเหนือ RasPi ไปยังไคลเอนต์ที่เชื่อมต่อด้วย wifi ไปยังจุดเชื่อมต่อ บนอินเทอร์เน็ตเราเตอร์ส่วนใหญ่คุณสามารถตั้งค่าเส้นทางแบบคงที่ แต่วิธีการทำนั้นแตกต่างกันไปในแต่ละรุ่น มันขึ้นอยู่กับคุณที่จะค้นพบมัน ตัวอย่างเช่นอินเทอร์เฟซRasPi eth0ของคุณมีที่อยู่ ip แบบคงที่ 192.168.50.2 จากนั้นในเราเตอร์ของคุณเกตเวย์ (ฮอปถัดไป) คือ 192.168.50.2 เครือข่ายปลายทางคือ 192.168.4.0/24 (หรือ 192.168.4.0 netmask 255.255.255.0)

นั่นหมายความว่าเราเตอร์อินเทอร์เน็ต: "ส่งแพคเกจทั้งหมดที่เป็นของเครือข่ายย่อย192.168.4.0/24(เครือข่ายปลายทางจาก AP) ไปยังเราเตอร์ถัดไปในเครือข่ายย่อยของฉันนั่นคือ RasPi AP 192.168.50.2(เกตเวย์) มันรู้ว่าจะต้องไปที่ใดต่อไป"

แค่นั้นแหละ.


♦การตั้งค่าจุดเชื่อมต่อด้วยสะพาน

ตัวอย่างสำหรับการตั้งค่านี้:

                               RPi
               wifi   ┌──────bridge──────┐   wired            wan
mobile-phone <.~.~.~> │(wlan0) br0 (eth0)│ <-------> router <-----> INTERNET
            \                   |                   / DHCP-server
           (dhcp              (dhcp           192.168.50.1
        from router)       from router)

หากคุณมีเครือข่ายอีเธอร์เน็ตพร้อมเซิร์ฟเวอร์ DHCP และเราเตอร์อินเทอร์เน็ตและคุณต้องการขยายด้วยจุดเชื่อมต่อ wifi แต่ด้วยที่อยู่ IP เดียวกันคุณต้องใช้บริดจ์ สิ่งนี้มักใช้เป็นอัปลิงค์ไปยังเราเตอร์

ติดตั้ง

ทำ"การตั้งค่าทั่วไป"จากนั้นสร้างสามไฟล์ต่อไปนี้เพื่อกำหนดค่าอินเทอร์เฟซเครือข่าย หากคุณลองหนึ่งในการตั้งค่าก่อนหน้านี้คุณสามารถลบไฟล์ทั้งหมดได้/etc/systemd/network/ยกเว้น99-default.linkว่ามีอยู่ ที่อยู่ IP เป็นตัวอย่าง คุณต้องใช้ของคุณเอง

rpi ~$ sudo -Es   # if not already executed before
rpi ~# cat > /etc/systemd/network/02-br0.netdev <<EOF
[NetDev]
Name=br0
Kind=bridge
EOF

rpi ~# cat > /etc/systemd/network/04-br0_add-eth0.network <<EOF
[Match]
Name=eth0
[Network]
Bridge=br0
EOF

rpi ~# cat > /etc/systemd/network/12-br0_up.network <<EOF
[Match]
Name=br0
[Network]
MulticastDNS=yes
DHCP=yes
# to use static IP uncomment these and comment DHCP=yes
#Address=192.168.50.60/24
#Gateway=192.168.50.1
#DNS=84.200.69.80 1.1.1.1
EOF

ตอนนี้เราต้องบอกwpa_supplicantให้ใช้สะพาน เราดำเนินการโดยแก้ไขบริการด้วย:

rpi ~# systemctl edit wpa_supplicant@wlan0.service

ในตัวแก้ไขที่ว่างเปล่าแทรกคำสั่งเหล่านี้บันทึกและออกจากตัวแก้ไข:

[Service]
ExecStartPre=/sbin/iw dev %i set type __ap
ExecStartPre=/bin/ip link set %i master br0

ExecStart=
ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -Dnl80211,wext -i%I -bbr0

ExecStopPost=-/bin/ip link set %i nomaster
ExecStopPost=-/sbin/iw dev %i set type managed

Reboot
แค่นั้นแหละ.

รายละเอียด

เราต้องบอกwpa_supplicantว่าอินเตอร์เฟสของwlan0นั้นเป็นทาสของบริดจ์ มิฉะนั้นจะปฏิเสธการเชื่อมต่อกับลูกค้าด้วย "รหัสผ่านผิด" หมายถึงการเจรจาที่สำคัญไม่ทำงาน เมื่อเราบอก/ sbin / wpa_supplicantพร้อมตัวเลือก-dbr0ในการใช้บริดจ์สำหรับwlan0ดังนั้นอินเตอร์เฟสจะต้องเป็นสมาชิกของบริดจ์แล้ว นั่นคือสิ่งที่เราทำกับการดรอปไฟล์ (วางซ้อน) สำหรับบริการwpa_supplicant คำสั่งที่ว่างเปล่าExecStart=ลบรายการเก่า มิฉะนั้นคุณมีสองบรรทัดExecStart=และwpa_supplicantจะเริ่มสองครั้ง ต้นฉบับที่ExecStart=คุณสามารถดูsystemctl cat wpa_supplicant@wlan0.serviceได้

โดยทั่วไปเราเตอร์ที่คุณเชื่อมต่อด้วยสายเคเบิลอีเธอร์เน็ตจะเปิดใช้งานเซิร์ฟเวอร์ DHCP บริดจ์ยังโปร่งใสสำหรับการร้องขอ DHCP จากสถานี (อุปกรณ์ที่เชื่อมต่อกับจุดเชื่อมต่อ) ดังนั้นคุณไม่ต้องกังวลเกี่ยวกับการกำหนดค่าอินเทอร์เฟซของมันด้วยที่อยู่ IP และตัวเลือก เราเตอร์จะให้บริการมัน
Excursus:
แต่ถ้าเราเตอร์ไม่มีเซิร์ฟเวอร์ DHCP คุณสามารถตั้งค่าหนึ่งบน RasPi systemd-networkdมีตัวเลือกในการกำหนดค่าเซิร์ฟเวอร์ DHCP ในตัว แต่ปัญหาคือsystemd-networkdถือว่ามันทำงานบนเราเตอร์ของตัวเองและนั่นไม่เป็นความจริงในกรณีนี้ มันจะให้บริการตัวเลือกที่ผิดไปยังสถานีโดยเฉพาะอย่างยิ่งตัวเลือกเราเตอร์ ไม่มีวิธีกำหนดค่า ดังนั้นเราต้องติดตั้งdnsmasqในกรณีนี้สามารถกำหนดค่าได้ตามต้องการ ติดตั้งและกำหนดค่าด้วย (ตัวอย่างใช้ที่อยู่ IP ของคุณเอง):

rpi ~$ sudo -Es
rpi ~# apt install dnsmasq
rpi ~# systemctl stop dnsmasq
rpi ~# mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

rpi ~# cat > /etc/dnsmasq.conf <<EOF
interface=br0
  dhcp-range=192.168.50.128,192.168.50.164,255.255.255.0,24h
  dhcp-option=option:router,192.168.50.1
  dhcp-option=option:dns-server,8.8.8.8,1.1.1.1
EOF

rpi ~# systemctl start dnsmasq
rpi ~# exit
rpi ~$

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


♦การเพิ่มประสิทธิภาพ

เมื่อเริ่มต้นwpa_supplicantคุณส่วนใหญ่ได้รับข้อความนี้ในวารสาร:

wpa_supplicant[427]: random: Cannot read from /dev/random: Resource temporarily unavailable
wpa_supplicant[427]: random: Only 12/20 bytes of strong random data available from /dev/random
wpa_supplicant[427]: random: Not enough entropy pool available for secure operations
wpa_supplicant[427]: WPA: Not enough entropy in random pool for secure operations - update keys later when the first station connects

มันไม่ใช่ปัญหาใหญ่ wpa_supplicantต้องการตัวเลขสุ่มเพื่อสร้างคีย์การเข้ารหัส เสร็จช้านิดหน่อยจึงต้องรอ โชคดีที่ RasPi มีงานสร้างในT rue R andom N umber G enerator (TRNG) เราสามารถใช้มันและเพิ่มความเร็วในการรับหมายเลขสุ่มโดยการติดตั้งซอฟต์แวร์(3)ด้วย:

rpi ~$ sudo apt install rng-tools

UPDATE:
ตั้งแต่Raspbian ยืด 2019/04/08rng-toolsไม่มีความจำเป็นในการติดตั้ง พวกเขาจะติดตั้งโดยค่าเริ่มต้น


♦การแก้ไขปัญหา

systemd-networkd

ดูสถานะของบริการ:

rpi ~$ systemctl status systemd-networkd.service
rpi ~$ systemctl status wpa_supplicant@wlan0.service

หรือมากกว่านั้น:

rpi ~$ journalctl --boot --pager-end

ฉันพบว่ามีประโยชน์ในการติดตามการบันทึกอย่างต่อเนื่อง:

rpi ~$ journalctl --boot --follow

หากคุณทำไฟล์หล่นคุณสามารถดูผลลัพธ์ได้ที่:

rpi ~$ systemctl cat wpa_supplicant@wlan0.service

ในการตรวจสอบสภาพแวดล้อมรันไทม์ของหน่วยคุณสามารถแสดงและดูว่ามีสองExecStart=บรรทัดหรือไม่:

rpi ~$ systemctl show wpa_supplicant@wlan0.service

และหากไม่มีสิ่งใดที่ช่วยให้คุณสามารถเปิดใช้งานตัวเลือกการดีบัก/sbin/wpa_supplicantด้วย-dในไฟล์ดรอปดาวน์:

rpi ~$ sudo systemctl edit wpa_supplicant@wlan0.service
ExecStart=
ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -Dnl80211,wext -i%I -bbr0 -d

เอาต์พุตอยู่ในเจอร์นัล วิธีนี้ฉันได้พบปัญหากับการเจรจาคีย์ผิด

อินเตอร์เน็ตไร้สาย

หากคุณตั้งค่าจุดเข้าใช้งานคุณควรค้นหาด้วยโทรศัพท์มือถือ แสดงเครือข่ายที่ใช้ได้แสดงชื่อRPiNetและคุณสามารถเชื่อมต่อได้ บน RasPi คุณสามารถใช้คำสั่ง:

rpi ~$ sudo iw dev wlan0 info
phy#0
        Interface wlan0
                ifindex 3
                wdev 0x2
                addr b8:27:eb:06:e8:8b
                ssid RPiNet
                type AP
                channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz

ตามที่คุณเห็นว่าเป็นประเภท AP (จุดเข้าใช้งาน) และจะแสดงให้คุณเห็นว่าช่องใดที่ใช้งานอยู่ ปัญหาอาจเกิดจากการแปลช่องเป็นความถี่ ความถี่จะต้องตรงกับช่อง คุณสามารถดู(2)สำหรับรายการช่อง WLAN ยกตัวอย่างเช่นการใช้ช่อง 36 ในวง 5.1 GHz คุณจะต้องตั้งอยู่ในfrequency=5180 /etc/wpa_supplicant\wpa_supplicant.confแต่คุณต้องแน่ใจว่า WiFi ของคุณรองรับย่านความถี่ 5.1 GHz sudo iw phyคุณสามารถตรวจสอบกับ สิ่งนี้จะทำให้คุณได้รับข้อมูลมากมาย มันจะต้องมีความถี่ที่รองรับมากกว่า 5,000 MHz หากคุณเห็นความถี่ 24xx MHz แน่นอนคุณสามารถใช้สิ่งนี้ได้เท่านั้น

จุดอื่นอาจเป็นตัวเลขสุ่ม สำหรับการเข้ารหัสคีย์สำหรับการเชื่อมต่อที่ปลอดภัย wpa_supplicant ต้องการตัวเลขสุ่ม การสร้างสิ่งนี้ช้ามากสำหรับ Raspberry Pi หากมีเอนโทรปีไม่เพียงพอที่จะสร้างคีย์เข้ารหัส wpa_supplicant จะปฏิเสธการตรวจสอบสิทธิ์ คุณสามารถดูได้cat /proc/sys/kernel/random/entropy_availว่ามีกี่เอนโทรปี มันควรจะ> 1,000 ในการทำงานเร็วพอ เพื่อเพิ่มความเร็วในการrng-toolsติดตั้งโดยค่าเริ่มต้น ดูที่ส่วนการปรับให้เหมาะสมสำหรับข้อมูลเพิ่มเติม


การอ้างอิง:
[1] วิธีการโยกย้ายจากระบบเครือข่ายไปยัง systemd-networkd พร้อมด้วย failover แบบไดนามิก
[2] รายการช่อง WLAN
[3] Rng-tools


rpi ~ # systemd-tmpfiles --create --prefix / var / log / journalroot FAILS ด้วยข้อความเอาต์พุต @pi: ~ # systemd-tmpfiles - สร้าง --prefix / var / log / journal ไม่สามารถตั้งค่าแอตทริบิวต์ไฟล์สำหรับ '/ var / log / journal ', value = 0x00800000, mask = 0x00800000: ไม่รองรับการดำเนินการไม่สามารถตั้งค่าแอตทริบิวต์ไฟล์สำหรับ' / var / log / journal / 6d18954849a74479955b761e891619aa ', value = 0x00800000, รูปแบบ = 0x00800000 การดำเนินการ ไม่ใช่จุดเริ่มต้นที่ดีในการใช้โพรซีเดอร์
Jan Hus

1
สวัสดี @JanHus ขอบคุณสำหรับความคิดเห็นของคุณ นี่เป็นเพียงการเตือนไม่ใช่ข้อผิดพลาดและไม่สำคัญ ฉันยังได้รับมันทุกครั้ง สร้างสมุดรายวันถาวร ls /var/log/journal/มองด้วย fa9462093e8d419cb646d0a0c44771c2คุณจะเห็นไดเรกทอรีที่ดูเหมือนว่า journalctlนี่คือการจัดเก็บวารสารที่คุณเข้าถึงด้วย ฉันจะอัปเดตคำตอบของฉัน
Ingo

ใช่ฉันตรวจสอบแล้วหากไฟล์ถูกสร้างขึ้น แต่ฉันถูกกีดขวางและหยุด วันนี้ฉันจะไปต่อ จนถึงตอนนี้เป็นหนึ่งใน "บทเรียน" ที่ดีกว่าในเรื่อง ขอบคุณสำหรับการโพสต์ PS กำลังเรียกมันว่าตกลงอย่างต่อเนื่อง? สับสนเล็กน้อยเมื่อสร้างโดยใช้กระบวนการ temp
Jan Hus

2
@Ingo ฉันคิดว่าขอแนะนำให้ใช้proto=WPA2ในการกำหนดค่า AP อย่างน้อยโทรศัพท์ของฉันก็บ่นเกี่ยวกับ "ความปลอดภัยที่อ่อนแอ" โดยปราศจากมัน
Robin Dinse

2
@ RobinDinse คุณพูดถูก ฉันได้ดูแลมัน ขอบคุณสำหรับคำใบ้ proto=RSNฉันได้เพิ่ม นั่นคือสิ่งที่ docu ชอบ (ตั้งชื่อproto=WPA2นามแฝง)
Ingo

3

วิธีที่ง่ายยิ่งขึ้นในการตั้งค่า Raspberry Pi เป็น AP คือการใช้pi-ap Github repoซึ่งทำการกำหนดค่า Pi 3B + / 4 ให้เป็น AP โดยอัตโนมัติ

เชื่อมต่อ Pi เข้ากับพอร์ตว่างในเราเตอร์ที่เชื่อมต่ออินเทอร์เน็ตซึ่งเปิดใช้งาน DHCP (อาจเป็นกรณีของเราเตอร์ผู้บริโภคส่วนใหญ่)

เมื่อเชื่อมต่อ SSH เข้ากับ Pi บน DHCP ที่กำหนด IP ที่กำหนดeth0โดยเราเตอร์แล้ว:

git clone https://github.com/f1linux/pi-ap

cd pi-ap

nano variables.sh   # Change default values for SSID & password

sudo ./install.sh

ดื่มชาและหลังจากรอประมาณ 2 นาที SSID ที่คุณตั้งไว้variables.shจะปรากฏในรายการเครือข่ายไร้สายของคุณ เชื่อมต่อกับ WLAN ของ Pi ที่กำลังโฆษณาอยู่

หากต้องการ SSH โดยตรงกับ AP บนwlan0อินเตอร์เฟซของ Pi ให้ใช้ IP เริ่มต้นของ192.168.0.1

โปรดทราบ : เครือข่ายย่อย DHCP เริ่มต้นใช้ปี่-AP ที่จะกำหนด IP ที่ลูกค้าอินเตอร์เน็ตไร้สายในมีvariables.sh 192.168.0.0/28หากคุณกำลังใช้เครือข่ายย่อยในเครือข่ายของคุณที่ตั้งเครือข่ายย่อยที่แตกต่างกันในvariables.shสำหรับลูกค้าอินเตอร์เน็ตไร้สายก่อนที่จะinstall.shดำเนินการ

ไม่ต้องใช้เครื่องคิดเลขเครือข่ายย่อยหรือแม้แต่ทักษะเครือข่ายที่จำเป็นเพื่อให้ได้ผลลัพธ์ที่ดี pi-apยังรองรับการ จำกัด การเข้าถึงผ่าน MAC ACL

การเปิดเผยข้อมูล : ฉันพัฒนาของปี่-AP


0

━━━ตรวจสอบการติดตั้งทีละขั้นตอนด้วยจุดตรวจ━━━

คำตอบนี้ไม่คิดว่าจะติดตั้ง เพื่อดูการตั้งค่าคงที่ที่คำตอบอื่น ๆการตั้งค่าจุดเชื่อมต่อ

คำตอบนี้ส่วนใหญ่สำหรับการแก้ไขปัญหาและเพื่อแสดงวิธีการทำงานกับคำสั่งอย่างละเอียดทีละขั้นตอนและจุดตรวจ แต่ไม่มีข้อมูลพื้นหลัง ฉันคิดว่าคุณมีจอภาพแป้นพิมพ์และเมาส์ติดกับ Raspberry Pi ของคุณ ที่อยู่ IP และการตั้งค่าอื่น ๆ ในการตรวจสอบนี้เป็นตัวอย่าง คุณต้องใช้ของคุณ คุณสามารถดูjournalctl -b -eข้อมูลที่บันทึกไว้ได้เสมอ

Download ZIPภาพRaspbian Stretch Lite 2018-11-13ไปยังเครื่อง linux ของคุณ

จุดตรวจสอบที่ 1:เปรียบเทียบการตรวจสอบกับเว็บไซต์ดาวน์โหลด

pc ~$ sha256sum 2018-11-13-raspbian-stretch-lite.zip

47ef1b2501d0e5002675a50b6868074e693f78829822eef64f3878487953234d 2018-11-13-raspbian-stretch-lite.zip

ขั้นตอนถัดไป:เบิร์นภาพไปยังการ์ด SD ที่แนบ:

pc ~$ unzip -p 2018-11-13-raspbian-stretch-lite.zip | sudo dd of=/dev/sdb bs=4M conv=fsync

จุดตรวจที่ 2:ตรวจสอบพาร์ติชันบนการ์ด SD:

pc ~$ sudo parted /dev/sdb print
Model: Mass Storage Device (scsi)
Disk /dev/sdb: 3965MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      4194kB  50,2MB  46,0MB  primary  fat32        lba
 2      50,3MB  1866MB  1816MB  primary  ext4

ขั้นตอนถัดไป:เมาท์พาร์ติชันสำหรับบูตและสร้างwpa_supplicant.confไฟล์:

pc ~$ mkdir boot/
pc ~$ sudo mount /dev/sdb1 boot/
pc ~$ sudo -e boot/wpa_supplicant.conf

# insert this into the empty editor with your settings, save it and quit the editor
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="RPiNet"
    mode=2
    key_mgmt=WPA-PSK
    psk="password"
    frequency=2412
}

pc ~$ sudo umount boot/

ใส่การ์ด SD ลงใน RasPi ของคุณแล้วทำการบูท

จุดตรวจสอบ 3:หลังจากเข้าสู่ระบบให้ตรวจสอบการเชื่อมต่อแบบมีสาย eth0อินเตอร์เฟซที่ต้องมีที่อยู่ IP:

rpi ~$ ip -4 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.50.177/24 brd 192.168.50.255 scope global eth0
       valid_lft forever preferred_lft forever

rpi ~$ ping -I eth0 -c3 google.com
PING google.com (172.217.22.78) from 192.168.50.177 eth0: 56(84) bytes of data.
64 bytes from fra15s17-in-f14.1e100.net (172.217.22.78): icmp_seq=1 ttl=55 time=15.0 ms
64 bytes from fra15s17-in-f14.1e100.net (172.217.22.78): icmp_seq=2 ttl=55 time=14.7 ms
64 bytes from fra15s17-in-f14.1e100.net (172.217.22.78): icmp_seq=3 ttl=55 time=15.1 ms

--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 14.729/14.965/15.125/0.170 ms

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

จุดตรวจที่ 4:ตรวจสอบจุดเชื่อมต่อ:

rpi ~$ sudo iw dev wlan0 info
Interface wlan0
        ifindex 3
        wdev 0x1
        addr b8:27:eb:06:e8:8b
        ssid RPiNet
        type AP
        wiphy 0
        channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
        txpower 31.00 dBm

wlan0อินเตอร์เฟซ shoud มีที่อยู่ IP เนื่องจากเราไม่ได้กำหนดค่าอินเทอร์เฟซจึงจะมีที่อยู่Link-localจาก 169.254.0.0/16

rpi ~$ ip -4 addr show dev wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 169.254.210.182/16 brd 169.254.255.255 scope global wlan0
       valid_lft forever preferred_lft forever

คุณจะเห็นRPiNetในรายการคะแนนสะสมบนโทรศัพท์มือถือของคุณ แต่คุณยังไม่สามารถเชื่อมต่อได้

ขั้นตอนถัดไป:อัปเกรดและรีบูตทั้งหมด:

rpi ~$ sudo apt update
rpi ~$ sudo apt full-upgrade
rpi ~$ sudo systemctl reboot

หลังจากรีบูตและล็อกอินให้สลับไปที่systemd-networkd :

rpi ~$ sudo -Es
rpi ~# mkdir -p /var/log/journal
rpi ~# systemd-tmpfiles --create --prefix /var/log/journal #ignore warnings (*)

rpi ~# apt install rng-tools
rpi ~# systemctl mask networking.service
rpi ~# systemctl mask dhcpcd.service
rpi ~# sudo mv /etc/network/interfaces /etc/network/interfaces~
rpi ~# sed -i '1i resolvconf=NO' /etc/resolvconf.conf

rpi ~# systemctl enable systemd-networkd.service
rpi ~# systemctl enable systemd-resolved.service
rpi ~# ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

(*) คุณจะได้รับหนึ่งหรือสองคำเตือนที่ทำให้สับสน "... ไม่สามารถตั้งค่าแอตทริบิวต์ของไฟล์ ... " นี่ไม่ใช่ข้อผิดพลาดและไม่สำคัญในกรณีนี้

สร้างไฟล์เหล่านี้สำหรับส่วนต่อประสานeth0และwlan0ด้วยการตั้งค่าของคุณ:

rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
Address=192.168.50.60/24
Gateway=192.168.50.1
DNS=84.200.69.80 84.200.70.40
IPForward=yes
EOF

rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
DHCPServer=yes
[DHCPServer]
DNS=84.200.69.80 84.200.70.40
EOF

เปลี่ยนชื่อ/etc/wpa_supplicant/wpa_supplicant.confเพื่อให้ตรงกับการตั้งค่าอินเตอร์เฟสและรีบูต:

rpi ~# mv /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
rpi ~# systemctl disable wpa_supplicant@wlan0.service
rpi ~# systemctl reboot

จุดตรวจที่ 5:หลังจากรีบูตเครื่องและล็อกอินตรวจสอบการเชื่อมต่อแบบมีสายeth0 :

rpi ~$ ip -4 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.50.60/24 brd 192.168.50.255 scope global eth0
       valid_lft forever preferred_lft forever

rpi ~$ ping -I eth0 -c3 google.com
PING google.com (172.217.10.14) from 192.168.50.60 eth0: 56(84) bytes of data.
64 bytes from lga34s12-in-f14.1e100.net (172.217.10.14): icmp_seq=1 ttl=51 time=93.5 ms
64 bytes from lga34s12-in-f14.1e100.net (172.217.10.14): icmp_seq=2 ttl=51 time=93.5 ms
64 bytes from lga34s12-in-f14.1e100.net (172.217.10.14): icmp_seq=3 ttl=51 time=93.5 ms

--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 93.519/93.551/93.592/0.030 ms

ด่าน 6:ตรวจสอบการเชื่อมต่อ wifi wlan0 :

rpi ~$ sudo systemctl start wpa_supplicant@wlan0.service
rpi ~$ sudo iw dev wlan0 info
Interface wlan0
        ifindex 3
        wdev 0x1
        addr b8:27:eb:06:e8:8b
        ssid RPiNet
        type AP
        wiphy 0
        channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
        txpower 31.00 dBm

rpi ~$ ip -4 addr show dev wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.4.1/24 brd 192.168.4.255 scope global wlan0
       valid_lft forever preferred_lft forever

ตรวจสอบ wifi บนโทรศัพท์มือถือของคุณ คุณควรค้นหาRPiNetและคุณสามารถเชื่อมต่อกับมัน โทรศัพท์มือถือของคุณไม่สามารถเชื่อมต่ออินเทอร์เน็ตได้เนื่องจากยังไม่มีการกำหนดเส้นทาง

ขั้นตอนถัดไป:เปิดใช้งาน NAT สำหรับการเชื่อมต่ออินเทอร์เน็ต ในการกำหนดค่า NAT คุณต้องขยายบริการ wpa_supplicant ด้วย:

rpi ~$ sudo systemctl edit wpa_supplicant@wlan0.service

ในตัวแก้ไขที่ว่างเปล่าแทรกคำสั่งเหล่านี้บันทึกและออกจากตัวแก้ไข:

[Service]
ExecStartPre=/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
ExecStopPost=-/sbin/iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

จากนั้นทำ:

rpi ~$ sudo systemctl daemon-reload
rpi ~$ sudo systemctl restart systemd-networkd.service
rpi ~$ sudo systemctl restart wpa_supplicant@wlan0.service

ด่านที่ 7:ตอนนี้คุณน่าจะสามารถเชื่อมต่ออินเทอร์เน็ตด้วยโทรศัพท์มือถือได้แล้ว


@Wim คุณถามด้วยคำตอบที่ถูกลบ: "จะทำอย่างไรกับ Buster รีลีสใหม่ของ Raspbian" คำตอบนี้ "━━━ตรวจสอบการติดตั้งทีละขั้นตอนด้วยจุดตรวจ━━━" ไม่ใช่คำตอบที่ถูกต้องหากคุณต้องการตั้งค่าจุดเชื่อมต่อ สำหรับสิ่งนี้คุณควรใช้คำตอบอื่น ๆ "━━━การตั้งค่าจุดเชื่อมต่อ" ที่นี่ทางด้านนี้ นอกจากนี้ยังทำงานร่วมกับ Raspbian Buster ฉันเพิ่งตรวจสอบแล้ว
Ingo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.