Quantcast
Channel: Raspberry Pi Thailand » Wireless
Viewing all articles
Browse latest Browse all 10

ใช้ Raspberry Pi ทำ Wi-Fi Access Point ด้วย Pi-Point

$
0
0

เคยได้พูดเกี่ยวกับ Wi-Fi access point (AP) ที่หน้า page โดยการใช้ Pi-Point เลยขอทดลองให้ดูกัน ผมมี D-Link DWA-140 RangeBooster N ซึ่งใช้เป็น AP ได้ มันใช้ชิป Ralink RT3072 ถ้าเป็นเครื่องที่ลง Windows ก็สามารถแจกเน็ตด้วยโปรแกรม Connectify ก็ได้ แต่งานนี้ทดลองกับ Raspbian ครับซึ่งเคย sudo apt-get install firmware-ralink มาก่อนใช้แล้วได้ผลครับ

Raspberry Pi Model B rev2 ใช้งาน D-Link DWA-140 RangeBooster

D-Link DWA-140 RangeBooster ใช้ได้ใน Raspbian

 

แต่คราวนี้เพื่อที่จะทำ AP โดยใช้ image ของ Pi-Point ซึ่งในเอกสารตัวอย่างของงานนี้ใช้ zd1211-firmware แต่เราใช้ตัวอื่นแล้วจะได้ผลไหมก็ต้องทดลองกัน ทำการ download SD card image ซึ่ง บีบอัดแบบ bzip2 สามารถใช้ bunzip2 ขยายไฟล์ข้างในออกมาแล้วจะได้ไฟล์เกือบ 4GB งานคงต้องใช้ SD card ขนาด 4GiB เพื่อทดลองด้วยนะครับ

แก้ไฟล์ใน SD card ซึ่งคงต้องใช้ Linux เป็นตัวแก้ และต้องได้สิทธิ์ root จึงจะแก้ไขได้ (sudo ก็ได้) และตำแหน่ง path ในการ mount ก็แล้วแต่จะกำหนดด้วยครับคงไม่ได้เริ่มที่ / อีกวิธีแก้ไฟล์ก็คือใช้จาก Raspberry Pi ตัวเองมันเลย มันมี SSH มาให้แล้ว (login:pi password:raspberry เหมือนเดิมครับ) หรือจะต่อกับจอและ keyboard ก็ได้ครับ สำหรับ /etc/network/interfaces ในต้นฉบับใน image ที่ให้มาจะเป็น

auto lo

iface lo inet loopback
iface eth0 inet dhcp

iface wlan0 inet static
address 192.168.1.1
netmask 255.255.255.0

ตรง iface eth0 ก็คือ Ethernet บน Raspberry Pi ตั้งให้รับ DHCP จากแหล่งอื่นเหมือนกันครับ ส่วน iface wlan0 ก็คือ Wi-Fi ซึ่งไม่ควรจะตรงกับ network ของ eth0 ที่ให้มาเป็นวง 1 มันซ้ำกับที่ผมใช้งานอยู่ เลยแก้เป็น address 192.168.2.1 จะได้อยู่วง 2 จะได้ไม่ซ้ำครับ ซึ่ง wlan0 จะใช้เป็น pccess point ให้เรา เลยต้องเป็น IP address คงที่ครับ และต้องทำหน้าที่ DHCP server ด้วย

 

ชื่อ SSID แก้ได้ที่ไฟล์ /etc/hostapd/hostapd.conf

interface=wlan0
driver=nl80211
ssid=test
channel=1

โดยที่ให้มาในตอนแรกจะชื่อ test ครับ และ channel ว่าจะใช้ช่องไหนก็แก้ที่ตรงนี้ได้ด้วยเหมือนกัน

 

ที่ไฟล์ /etc/dnsmasq.conf

# Never forward plain names (without a dot or domain part)
domain-needed

# Only listen for DHCP on wlan0
interface=wlan0

# create a domain if you want, comment it out otherwise
#domain=Pi-Point.co.uk

# Create a dhcp range on your /24 wlan0 network with 12 hour lease time
dhcp-range=192.168.1.5,192.168.1.254,255.255.255.0,12h

# Send an empty WPAD option. This may be REQUIRED to get windows 7 to behave.
#dhcp-option=252,"\n"

เนื่องจากเราเปลี่ยนไปใช้วง 2 ต้องแก้ dhcp-range จาก 192.168.1 เป็น 192.168.2 ด้วยนะครับ

 

และที่ไฟล์ /etc/init.d/pipoint

#!/bin/sh
# Configure Wifi Access Point.
#
### BEGIN INIT INFO
# Provides:          WifiAP
# Required-Start:    $remote_fs $syslog $time
# Required-Stop:     $remote_fs $syslog $time
# Should-Start:      $network $named slapd autofs ypbind nscd nslcd
# Should-Stop:       $network $named slapd autofs ypbind nscd nslcd
# Default-Start:     2
# Default-Stop:
# Short-Description: Wifi Access Point configuration
# Description:       Sets forwarding, starts hostap, enables NAT in iptables
### END INIT INFO

# turn on forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

# enable NAT
iptables -F
iptables -t nat -A POSTROUTING -j MASQUERADE

# start the access point
hostapd -B /etc/hostapd/hostapd.conf

# restart dhcp
#service dnsmasq restart

จะเห็นว่ามีบรรทัด echo 1 > /proc/sys/net/ipv4/ip_forward และ iptables -t nat -A POSTROUTING -j MASQUERADE มาให้เพื่อให้ค้นหาเส้นทางจาก AP ไปยัง Ethernet ได้ และให้เริ่มทำงานเมื่อตอนบูตขึ้นได้

เมื่อบูตขึ้นมาสักพัก ก็มีชื่อ access point test มาให้เห็นแล้วครับ

พบ access point ที่มาจาก Pi-Point แล้วครับ

เมื่อทดลองเข้าใช้งานก็เข้าไปได้ครับ จากนั้นก็ SSH เข้าไปใช้ Raspberry Pi แล้ว ifconfig ดู จะเห็นว่า eth0 อยู่วง 1 และ wlan0 อยู่วง 2

Pi-Point ได้ผล

 

ทำการ traceroute เพื่อดูว่ามันส่งต่อจาก Wi-Fi ไปดึงข้อมูลจาก Ethernet ซึ่งต่อ Internet ได้ไหม ก็ใช้ได้ครับ อาจมีบางจุดสะดุดเล็กน้อย

traceroute

อันที่จริง อาจต้องหาทางใช้งานแบบ WPA ด้วยละครับเพื่อความปลอดภัย

updated: ถ้าจะใช้แบบเข้ารหัส WPA ก็แก้ไม่ยากครับ ที่ /etc/hostapd/hostapd.conf

interface=wlan0
driver=nl80211
ssid=test
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=mypassword
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

โดยเปลี่ยนที่อยู่ข้างหลัง ssid= เป็นชื่อ SSID อื่น channel= เป็นช่องอื่นๆ และ wpa_passphrase= เป็นรหัสอื่นๆ ตามต้องการ ทดลองแล้วได้ผลใช้งานได้ครับ

Raspberry Pi AP WPA ทดลอง trace route

route

ถ้าเป็น Wi-Fi dongle ทั่วๆ ไป คงทำเป็น AP ไม่ได้ แต่อาจทำเป็น Ad-hoc ได้ โดยแก้ที่ /etc/network/interfacesเหมือนกันครับ เพิ่มอีก 4 บรรทัดล่าง

iface wlan0 inet static
address 192.168.2.1
netmask 255.255.255.0

wireless-mode ad-hoc
wireless-channel 1
wireless-essid test
auto wlan0

Viewing all articles
Browse latest Browse all 10

Trending Articles


คลิปซูฉีอาบน้ำ เห็นหมด รีบดูก่อนโดนลบ


ยุงบินเหมือนกอดกัน 2 ตัว มันทำอะไรอยู่ครับ


ใครเคยสั่งครีมของ Ningchin shop บ้างคะ รีวิวครีมหน่อยคะ


แจกภาพพื้นหลัง iPhone สวยๆ (อัปเดต) หลายภาพหลายรูปแบบ


รหัสโอนเงิน tr to NATID คือ อะไรครับ


ใครรู้จักบริษัท the singular group บ้างครับ...


“โรคตุ่มน้ำพอง หรือ โรคเพมฟิกอยด์” อาการเป็นอย่างไร พร้อมวิธีป้องกันและดูแลรักษา


Notability อัปเดตใหม่เพิ่มฟีเจอร์เปลี่ยนลายมือให้เป็นตัวพิมพ์ภาษาไทยได้แล้ว


วิธีนับข้อมูลใน Pivot แบบไม่นับตัวที่ซ้ำกัน (Distinct Count)


เล่นแร่แปรสูตร : การแปลงวันที่ Text ให้เป็นวันที่ Date