วันนี้ง่ายที่จะคิดว่าอุปกรณ์ทุกตัวรองรับ Wi-Fi แต่ไม่ใช่ทุกอุปกรณ์ที่สามารถเชื่อมต่ออินเทอร์เน็ตแบบไร้สายได้ นี่คือที่ที่ Raspberry Pi ช่วยได้: โดยการเปลี่ยนมันเป็น Wi-Fi bridge
หากคุณต้องการนำ desktop computer เก่าที่มีแค่ Ethernet มาใช้ใหม่ และต้องการวิธีเร็วและง่ายในการแปลงสัญญาณ Wi-Fi ให้เป็นการเชื่อมต่อ Ethernet คุณสามารถใช้ Raspberry Pi
เปลี่ยน Raspberry Pi ให้เป็น Wi-Fi bridge
ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีเปลี่ยน Raspberry Pi ให้เป็น Wi-Fi bridge ที่เชื่อมต่อกับเครือข่ายแบบไร้สาย และแปลงสัญญาณนี้ให้เป็นการเชื่อมต่อแบบสาย คุณสามารถต่ออุปกรณ์ใดๆ กับ Raspberry Pi ผ่านสาย Ethernet และอุปกรณ์นั้นจะมีการเข้าถึงเครือข่ายทันที
ก่อนไปต่อ ควรทราบว่าอุปกรณ์ที่เชื่อมต่อ Wi-Fi ผ่าน Raspberry Pi ไม่ค่อยจะได้ความเร็วเท่าอุปกรณ์ที่เชื่อมต่อกับเครือข่ายโดยตรง อย่างไรก็ตาม หากไม่สามารถต่ออุปกรณ์ Ethernet-only กับเราเตอร์ได้จริง Raspberry Pi เป็นวิธีที่รวดเร็ว ง่าย และคุ้มค่าเพื่อให้อุปกรณ์นั้นออนไลน์
สิ่งที่คุณต้องการ
เพื่อทำตามบทช่วยสอนนี้ คุณจะต้องมี:
- Raspberry Pi รุ่นที่มี Wi-Fi module (Raspberry Pi zero, 3 และ 4) รัน Raspberry Pi OS
- สายไฟที่เข้ากับ Raspberry Pi
- คีย์บอร์ดภายนอกและวิธีต่อกับ Raspberry Pi
- สาย HDMI หรือ micro HDMI ขึ้นอยู่กับรุ่น Raspberry Pi
- หน้าจอภายนอก
- สาย Ethernet
อัปเดต Pi
หากยังไม่ได้ทำ ให้ต่อคีย์บอร์ดภายนอก หน้าจอ และอุปกรณ์周边อื่นๆ กับ Raspberry Pi แล้วต่อ Pi เข้ากับแหล่งจ่ายไฟ
ก่อนเริ่ม ตรวจสอบว่า Raspberry Pi อัปเดตแล้ว เปิด Terminal ใหม่โดยคลิกไอคอน "Terminal" ใน toolbar ของ Raspbian แล้วรันคำสั่ง:
sudo apt update && sudo apt -y upgrade
ตั้งค่า network services: ติดตั้ง dnsmasq
ต่อไป ติดตั้ง dnsmasq ซึ่งให้ Domain Name System (DNS) caching และ Dynamic Host Configuration Protocol (DHCP) server ใช้แพ็กเกจนี้ประมวลผล DNS requests ซึ่งจะอนุญาตให้ Raspberry Pi ทำหน้าที่เป็น mini-router สำหรับอุปกรณ์ Ethernet-only
เพื่อติดตั้ง dnsmasq ให้รันคำสั่ง:
sudo apt install dnsmasq
กำหนดค่า ethernet connection
ต่อไป ตั้งค่า interface eth0 ให้ใช้ static IP address โดยแก้ไขไฟล์ "dhcpcd.conf" เพื่อเปิดไฟล์การตั้งค่านี้ ให้รันคำสั่ง:
sudo nano /etc/dhcpcd.conf
ไฟล์ "dhcpcd.conf" จะเปิดใน text editor Nano ในไฟล์นี้ ให้เพิ่ม:
interface eth0 static ip_address=192.168.220.1/24 static routers=192.168.220.0
บันทึกการเปลี่ยนแปลงโดยกด Ctrl + O เพื่อปิดไฟล์การตั้งค่า กด Ctrl + X
การเปลี่ยนแปลงเหล่านี้จะมีผลโดยการ restart dhcpcd service:
sudo service dhcpcd restart
แทนที่ไฟล์การตั้งค่า dnsmasq
แพ็กเกจ dnsmasq มาพร้อมไฟล์การตั้งค่าเริ่มต้น แต่คุณต้องแทนที่ด้วยการตั้งค่า custom ของคุณเองที่บอก dnsmasq ว่าจะจัดการ DHCP และ DNS traffic อย่างไร
ก่อนทำการเปลี่ยนแปลง ให้ rename และย้ายไฟล์ dnsmasq.conf ต้นฉบับ:
sudo nano /etc/dnsmasq.conf /etc/dnsmasq.conf.original
เปิดไฟล์การตั้งค่าแทนที่เพื่อแก้ไข:
sudo nano /etc/dnsmasq.conf
ตอนนี้คุณควรดูไฟล์ dnsmasq.conf ใน Nano text editor ใน Nano ให้เพิ่ม:
interface=eth0 listen-address=192.168.220.1 bind-interfaces server=8.8.8.8 domain-needed bogus-priv dhcp-range=192.168.220.50,192.168.220.150,12h
บันทึกการเปลี่ยนแปลง โดยกด Ctrl + O เพื่อปิดไฟล์การตั้งค่า กด Ctrl + X
เปิดใช้งาน IP forwarding
ต่อไป ให้เปิดใช้งาน IP forwarding เพื่อให้ Raspberry Pi ยอมรับ network packets จากการเชื่อมต่อ Ethernet และส่งต่อไปยังเราเตอร์
เพื่อเปิดใช้งาน IPv4 IP forwarding ให้แก้ไขไฟล์การตั้งค่า "sysctl.conf":
sudo nano /etc/sysctl.conf
ไฟล์ "sysctl.conf" จะเปิดใน Nano text editor ในไฟล์นี้ หาบรรทัดต่อไปนี้:
#net.ipv4.ip_forward=1
ลบ # ออก เพื่อให้บรรทัดนี้กลายเป็น:
net.ipv4.ip_forward=1
บันทึกการเปลี่ยนแปลงโดยกด Ctrl + O เพื่อปิดไฟล์การตั้งค่า กด Ctrl + X
ตอนนี้ นำไฟล์การตั้งค่า "sysctl.conf" ใหม่เข้าสู่ผลบังคับใช้:
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
เริ่มส่งต่อ traffic จาก Ethernet ไป Wi-Fi
ตอนนี้คุณเปิดใช้งาน IP forwarding สำเร็จแล้ว คุณสามารถกำหนดค่า firewall ให้ส่งต่อ traffic จาก Ethernet interface (eth0) ไปยัง Wi-Fi connection ด้วยการส่งต่อนี้ อุปกรณ์ใดๆ ที่เชื่อมต่อกับ Raspberry Pi ผ่าน Ethernet จะได้เข้าถึง Wi-Fi (wlan0) ของ Pi
เพิ่มกฎบางอย่างที่บอก Raspberry Pi ว่าจะส่งต่อ data packets ทั้งหมดที่มันได้รับอย่างไร:
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
บันทึกกฎใหม่เหล่านี้:
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
กฎเหล่านี้จะถูกล้างทุกครั้งที่ Raspberry Pi รีบูท จึงต้องแน่ใจว่ามันโหลดใหม่ตอน startup
กำหนดสิ่งที่เกิดขึ้นตอน startup โดยแก้ไขไฟล์ "rc.local":
sudo nano /etc/rc.local
ไฟล์ rc.local จะเปิดใน Nano text editor ใน editor หา:
exit 0
เพิ่มต่อไปนี้โดยตรงเหนือบรรทัด "exit":
iptables-restore < /etc/iptables.ipv4.nat
บันทึกการเปลี่ยนแปลงโดยกด Ctrl + O เพื่อปิดไฟล์การตั้งค่า กด Ctrl + X
ทดสอบ Wi-Fi bridge
ขั้นตอนสุดท้ายคือเริ่ม service dnsmasq:
sudo service dnsmasq start
คุณสามารถทดสอบ Wi-Fi bridge ได้แล้ว! ต่ออุปกรณ์ Ethernet-only ใดๆ กับ Raspberry Pi ผ่านสาย Ethernet Raspberry Pi จะให้การเชื่อมต่ออินเทอร์เน็ตกับอุปกรณ์ Ethernet-only นี้
สรุป
คุณได้เรียนรู้วิธีแชร์ Wi-Fi ของ Raspberry Pi กับอุปกรณ์แบบสายใดๆ โดยการแปลงการเชื่อมต่อ Wi-Fi ให้เป็น Ethernet คุณยังสามารถใช้ Raspberry Pi เป็น Captive Portal Wi-Fi hotspot หรือ personal web server ได้ แจ้งเราถ้ามีประโยชน์
อ่านต่อสำหรับโปรเจกต์ Raspberry Pi อื่นๆ ที่คุณทำเองได้