ข้ามไปที่เนื้อหาหลัก

ทำ TP-Link TL-WA850RE v1.2 ลง OpenWrt ทำเป็น Range Extender และ auto login Hotspot (WISP Mode)

(ลอกคำพูด บทความเก่า)
สืบเนื่องจากได้รับการแจก Wifi Range Extender TP-Link TL-WA850RE มาเพื่อใช้กระจายสัญญาณ Wifi ของบ้านพัก ที่เป็น GPON

ปัญหาคือ TP-Link มันกากกกกกกกกกก..............มากกกกกกกกกกกกกก กล่าวคือ
1. ปัญหา ping กากกกกก.......... เริ่มใช้งานก็ดีอยู่ ping ไป Gateway ได้ ราว 5-10ms แต่พอใช้ไปสัก 3-4 ชม. มันจะ ping ขึ้นเป็น  400-500ms รู้สึกได้เพราะใช้ Remote Desktop ตลอด เม้าส์มันจะกระตุก ๆ ๆ ๆ จนน่ารำคาญ วิธีแก้แสนง่าย (แต่ไม่ยั่งยืน) คือ สั่ง reboot หรือ ชักปลั๊กเสียบใหม่
2. ปัญหาเนตตัด แน่นอน ระบบ authen พรบ.กำหนดว่า "ของมันต้องมี" ถึงแม้จะตั้งเวลา TimeOut ให้ถึง 24 ชม. แต่มันก็ไม่คล่องตัว เพราะติดกล้องวงจรปิดไว้ดูผ่านเนตตอนไม่อยู่บ้าน แต่พอจะดูกลับ "ดูไม่ได้" เพราะ "เน็ตตัด" ช่างเจ็บกระดองใจจริง ๆ

เรื่องเนตตัดที่บ้านก็มี Router LinkSys WRT-350N อยู่ซื้อตอนทำวิจัยปี 51 รูดปรื๊ดมาตั้ง 6500 (ตอนนี้เสียดายตังค์มาก) ซึ่งลง DD-WRT v24sp2 เรียบร้อย ตั้งใจจะทำ auto login แต่ดันมาตายจากไปเสียก่อน

ระหว่างพยายามหา Router Linksys WRT54GL ในตำนานมาทำ autologin ก็พยายามหา firmware เพื่อแก้ปัญหา ping กากของ TP-Link ด้วย ก็ไปเจอในเว็บ TP-Link Official ว่า WA-850E ตัวนี้ "สามารถลง OpenSource firmware ได้" สนานกันสิคราวนี้
TP-Link Official Site บอกว่าลง Third-party firmware ก็ได้นะ แต่ไม่รับประกันความปลอดภัย
ลองไปหาข้อมูลพบว่า OpenWRT มี firmware รับรอง แต่ DD-WRT ยังไม่มีอย่างเป็นทางการ ส่วนตัวคุ้นชินกับ DD-WRT มากกว่า แต่ก็เพิ่งจะรู้ว่า เดี๋ยวนี้ OpenWRT มี "Luci WEB GUI" ให้การตั้งค่าง่ายสะดวกมากขึ้น ไม่ต้องออกแรงอัด command line ล้วน ๆ อย่างแต่ก่อน

วิธีการลง firmware OpenWRT ให้ TP-Link ตาม คลิป เลย
วิธีการทำ Wireless Client (Range Extender) ตาม คลิป นี้

ปัญหาที่เกิดคือ ถ้าจะใช้เป็น Range Extender เราจะต้องใช้ DHCP server ของเดิมที่แจกในวง แต่ OpenWRT ดันมี dnsmasq ที่ทำหน้าที่เป็นทั้ง DHCP Server และ DNS Server ให้อยู่แล้ว แต่มันดันแจก IP ที่ให้ DNS เป็นของตัว TP-Link เอง ซึ่งทำให้มัน resolv name server ไม่ได้ (จะไม่มีปัญหาถ้าทำเป็น Router mode แต่ขี้เกียจมานั่ง NAT) และอีกปัญหาคือตัว DNSmasq มันจะไปแจก IP ชนกับ DHCP Server ของ GPON ตัวหลัก อาจทำให้เน็ตเวิร์ครวนได้

พยายามทำ DNS Forwarder กับ DNS Relay แล้ว ไม่รอด 😭

แนวทางแก้ปัญหาคือ ก็ใช้ DNSmasq เป็น DHCP Server นั่นแหละ แต่เลี่ยงไปแจก IP ช่วง 150-200 ที่หวังว่าจะไม่ชนแทน ตั้งค่าดังนี้

1. ไปที่เมนู Network -> Interface เลือก LAN แล้วกด Edit จะเข้าหน้า Interface LAN
ที่ ส่วนบน Common Configuration -> Tab General Setup -> Use custom DNS servers ให้ใส่ DNS ที่ถูกต้องเข้าไป มันจะไปบันทึกในไฟล์ /tmp/resolv.conf.auto
ตั้งค่า Use custom DNS servers
2. ที่ส่วนล่าง DHCP Server -> Tab General Setup -> Start ใส่ช่วง IP เริ่มต้นจ่าย DHCP โดยให้เริ่มที่หมายเลข 150 , Limit ใส่จำนวน IP ที่จะจ่าย ตั้งไว้สัก 50 น่าจะเหลือเฟือแล้ว , Leasetime ใส่เวลาที่จะขอคืน IP ก็ตามเดิม 12h = 12 ชั่วโมง
ตั้งช่วงจ่าย IP ของ DHCP
3. ที่ส่วนล่าง DHCP Server -> Tab Advance Settings -> DHCP-Option ให้ใส่ DNS Server ที่ถูกต้อง แต่ต้องใส่ตาม Pattern มัน ตามตัวอย่างใส่ 6, นำหน้า แล้วค่อยใส่ DNS Server <---- สำคัญมาก !!!
ตั้ง DHCP-Options เพื่อจ่าย DNS Server ที่ถูกต้องให้ DHCP client


4. อีกปัญหาคือตัว OpenWRT ถึงแม้จะยอมให้ตั้ง use Custom DNS แล้ว แต่ดันไม่ใช้ กลับไปใช้ DNS ที่ /etc/resolv.conf อย่างเคย วิธีแก้ง่าย ๆ คือไปเปลี่ยนค่าใน /etc/resolv.conf ซะให้ถูก แต่พอ reboot เครื่อง ค่าก็จะกลับมาเหมือนเดิม ทางแก้ง่าย ๆ ก็ตั้งให้มัน copy ไฟล์ /tmp/resolv.conf.auto ไปที่ /etc/resolv.conf ทุกครั้งที่มัน Startup ซะเลย ทำได้โดยไปที่เมนู System -> Startup ส่วน Local Startup ใส่คำสั่ง cp /tmp/resolv.conf.auto /etc/resolv.conf
ใส่ Startup Script เพื่อให้ router ใช้ Custom DNS ทุกครั้งที่ reboot
เบ็ดเสร็จเรียบร้อย DNS ทำงานถูกต้องทั้งตัว Repeater และ DHCP Client ที่นี้ก็ยัด Script Auto Login ได้แล้ว แนวทางก็ลอก "บทความเก่า" ได้เลย แต่เปลี่ยน URL ที่คำสั่ง wget นิดหน่อย ใส่ Script เพื่อสร้าง AutoLogin Script ที่ Local Startup เช่นกัน
ใส่ Startup Script เพื่อให้สร้าง Script Auto Login
ได้ Script Auto Login ทุกครั้งที่ Startup แล้ว ก็สั่งให้มันทำงานทุก ๆ 3 นาที โดยไปที่เมนู System -> Schedule Task แล้วใส่ Script Crontab ตามภาพ
ใส่ script แบบ DD-WRT ใช้ไม่ได้กับ OpenWRT

[แก้ไข 15/4/61 0935]
ไปเจอว่า Script Auto Login ไม่ทำงานเช็คดู Crontab ก็ทำงานให้ตามปกติ ลองรัน script autologin ที่ shell เองก็ทำงานได้ปกติ หาข้อมูลไปเจอ ลิงก์นี้ เป็นอาการเดียวกัน สรุปว่า ใช้ Script Cron แบบ DD-WRT ไม่ได้ ต้องเขียนใหม่แบบของ OpenWRT ถึงจะทำงานได้ แก้ไขโดยการเอาคำว่า "root" ออก ก็ใช้ได้แล้ว
ใส่ Script Cron แบบ "OpenWRT เท่านั้น!!!" เพื่อให้ autologin ทำงานทุก 2 นาที



[จบ แก้ไข]
ตอนนี้ลองมา 3 วันก็ถือว่านิ่งมีช่วงแรก ๆ ที่ ping ไป gateway มา ๆ หาย ๆ

[เพิ่มเติม 17/4/61 2324]
และแล้ว อาการ ping กากกกก..... Ping Time AVG > 400ms ก็กลับมา คงไม่เกี่ยวกับ firmware แล้วล่ะ เลยต้องหาวิธีแก้ ก็ใส่ script ไปง่าย ๆ เลยว่า ถ้า AVG ping time เกิน 350 ก็ให้ reboot เครื่องไปเลยแล้วกัน
เพิ่ม script เช็ค AVG ping time ถ้าเกิน 350 เมื่อไร ให้ reboot router โลด

[จบ เพิ่มเติม]

ป.ล. ตามคุณลักษณะโปรแกรมเมอร์ที่ดี จะต้องพัฒนาตัวเองอย่างสม่ำเสมอ ถ้าไม่เปลี่ยนภาษาก็เปลี่ยนเทคนิคการเขียนใช้ท่าใหม่ ๆ เห็นมี Script Auto Login ที่ใช้ curl ก็อยากลองใช้บ้าง แต่ใน busybox ไม่มี curl ให้ใช้ เลยถอยเพราะกระทบเวลางานหลักอื่นๆ มามากเกินไปแล้ว

กว่าจะเขียนจบได้ปาไป 3 วัน เริ่มเขียนทีไร ลูกกวนทุกที ไม่เหมือนเมื่อก่อนสมัยยังโสดทำรวดเดียวเสร็จ

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

เทคนิคการสอบใบขับขี่รถยนต์ ท่าจอดรถเทียบฟุตบาทห่างไม่เกิน 25cm ด้วย "Sticker"

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

ทำ Linksys WRT54GL v1.1 ลง DD-WRT ให้เป็น auto login Hotspot (WISP Mode)

สืบเนื่องจากได้ Router Linksys WRT54GL มา เลยอยากเอามาทำ auto login ให้เหมือน NanoStation M5  ก็เลยต้องพึ่งพา Firmware DD-WRT v24 SP2 mini build 12548M NEWD Eko แต่ทว่า มันไม่มี Station Mode ให้เลือก จากการหาข้อมูลถึงให้รู้ว่าต้องเลือกเป็น Client Mode จากนั้นก็ตั้งค่าปกติ แต่ทำแล้วติด dns cannot resolve ต้องตั้งค่าปลด  UseDNSMasq on DHCP ออก ก็สามารถใช้งาน DNS ได้ เริ่มใส่ script auto login แต่ติดที่ว่า DD-WRT ไม่มี persistence storage พอสร้างไฟล์ script เสร็จ มันก็หายตอนเครื่อง restart ค้นหาข้อมูลก็เจอแนวทางให้ใช้ Startup Script สร้าง script file ตอนเริ่มบูตเครื่องเลย ดังภาพ - script มีการเปลี่ยนนิดหน่อย เพราะ wget ใช้เหมือนเดิมไม่ได้ Startup Script มีดังนี้ echo '#!/bin/sh' > /tmp/autologin.sh echo 'count=$(ping -c5 -w5 8.8.8.8 | grep "100% packet loss" | wc -l)' >>/tmp/autologin.sh echo 'if [ "$count" -gt 0 ]; then' >> /tmp/autologin.sh echo ' wget -O /dev/null "http://172.168.1.1/CheckVali