
เคยไหมครับ ทำเว็บอยู่บนคอมที่บ้าน แล้วอยากเปิดดูจากมือถือตอนอยู่ข้างนอก ปกติทำไม่ได้ง่ายๆ เพราะคอมที่บ้านซ่อนอยู่หลังเราเตอร์ คนข้างนอกมองไม่เห็น วิธีแบบเดิมคือเข้าไปตั้งเราเตอร์ให้ "เปิดพอร์ต" ซึ่งยุ่งยาก และเท่ากับเปิดประตูบ้านให้ทั้งอินเทอร์เน็ต
Tailscale แก้ปัญหานี้อีกแบบ มันจับทุกเครื่องของเราให้อยู่ในเครือข่ายส่วนตัวเดียวกัน ไม่ว่าแต่ละเครื่องจะต่อเน็ตจากที่ไหน บทความนี้จะพาติดตั้งบนคอมและมือถือ แล้วเปิดเว็บที่รันอยู่บนคอมจากมือถือผ่านเน็ตมือถือ โดยไม่แตะการตั้งค่าเราเตอร์เลยครับ
จบบทความนี้คุณจะ:
- เข้าใจว่า Tailnet, Tailscale IP, MagicDNS และ WireGuard คืออะไร
- ติดตั้ง Tailscale บนคอมและมือถือ แล้วให้สองเครื่องเห็นกัน
- อ่านผลของ
tailscale statusและtailscale ipออก - รู้ว่า localhost ต่างจาก 0.0.0.0 ยังไง และรัน dev server ให้มือถือเปิดได้
- ไล่แก้ปัญหาที่เจอบ่อยได้เอง
ดูคลิปสั้นนี้ก่อน จะเห็นภาพเร็วขึ้นครับ
Tailnet คือบ้านหลังเดียวของทุกเครื่อง
ลองนึกว่าทุกเครื่องของเราย้ายมาอยู่ในบ้านหลังเดียวกัน ถึงตัวมือถือจะอยู่ที่ร้านกาแฟ และคอมอยู่ที่บ้าน แต่ในสายตาของ Tailscale ทั้งคู่อยู่ใต้หลังคาเดียวกัน แต่ละเครื่องมี เลขห้อง ของตัวเอง (เลขแบบ 100.x.y.z) และมี ป้ายชื่อหน้าห้อง ให้เรียกด้วยชื่อแทนเลข เช่น home-pc ส่วนคนนอกบ้านเคาะประตูเข้ามาไม่ได้

เบื้องหลังคือ เมื่อเปิด Tailscale แต่ละเครื่องจะติดต่อออกไปหาระบบกลางของ Tailscale เพื่อแลกกุญแจและบอกว่าตัวเองอยู่ตรงไหน จากนั้นสองเครื่องจะพยายามต่อหากันตรงๆ ข้อมูลทุกชิ้นถูกเข้ารหัสตั้งแต่ต้นทางถึงปลายทาง ถ้าต่อตรงไม่ได้ (เช่นเน็ตบางที่กันไว้) ก็จะส่งผ่านเครื่องกลางของ Tailscale แทน ซึ่งเครื่องกลางก็อ่านข้อมูลไม่ออก เพราะยังถูกเข้ารหัสอยู่
ทำไมไม่ต้องเปิดพอร์ต เราเตอร์บ้านปกติยอมให้ข้อมูลที่ "เราเป็นฝ่ายเริ่มคุย" วิ่งกลับเข้ามาได้ แต่ไม่ยอมให้คนแปลกหน้าเคาะเข้ามาเอง Tailscale ใช้หลักนี้ ทั้งสองเครื่องเป็นฝ่ายติดต่อออกไปก่อน จึงไม่ต้องมีประตูไหนเปิดรอไว้
ศัพท์ที่ต้องรู้
| คำ | เทียบกับ | หน้าที่ |
|---|---|---|
| Tailnet | บ้านหลังหนึ่ง | เครือข่ายส่วนตัวของบัญชีเรา คนนอกเข้าไม่ได้ |
| Tailscale IP | เลขห้อง | เลขขึ้นต้นด้วย 100. ใช้ได้เฉพาะในบ้าน |
| MagicDNS | ป้ายชื่อหน้าห้อง | เรียกเครื่องด้วยชื่อแทนเลข |
| WireGuard | ซองจดหมายปิดผนึก | วิธีเข้ารหัสที่ Tailscale ใช้ส่งข้อมูล |
| Admin console | สมุดทะเบียนบ้าน | หน้าเว็บดูและจัดการทุกเครื่อง |
เลข 100.x.y.z มาจากช่วงที่ไม่ได้ใช้บนอินเทอร์เน็ตทั่วไป จึงไม่ชนกับเลขของเว็บจริง และแต่ละเครื่องจะได้เลขเดิมตลอด ถึงจะย้ายไปต่อ Wi-Fi ที่อื่นก็ตาม ส่วน MagicDNS เปิดให้เองตั้งแต่แรกสำหรับบัญชีที่สมัครใหม่ ไม่ต้องตั้งค่าเพิ่ม
ต่างจากการเปิดพอร์ตยังไง
การเอาเว็บในเครื่องออกไปให้เปิดจากข้างนอกมีหลายวิธี ข้อต่างสำคัญคือ ใครเปิดลิงก์ได้บ้าง
| วิธี | ใครเปิดได้ | เหมาะกับ |
|---|---|---|
| เปิดพอร์ตเราเตอร์ | ทุกคนบนเน็ตที่รู้ IP บ้าน | ไม่แนะนำสำหรับมือใหม่ |
| Cloudflare Tunnel | ทุกคนที่มีลิงก์ | ส่งให้เพื่อนหรือลูกค้าดู |
| Tailscale | เฉพาะเครื่องใน tailnet ของเรา | เปิดดูเอง หรือทีมเล็กๆ |
การเปิดพอร์ตเสี่ยงเพราะมีโปรแกรมสุ่มสแกนหาพอร์ตที่เปิดอยู่ตลอดเวลา และ dev server ก็ไม่ได้ถูกสร้างมาให้เผชิญหน้ากับคนทั้งโลก ส่วน Cloudflare Tunnel ให้ลิงก์สาธารณะที่ใครได้ลิงก์ไปก็เปิดได้ (ถ้าไม่ได้ตั้งระบบล็อกอินเพิ่ม) เหมาะกับการโชว์งาน สองวิธีหลังไม่ได้แข่งกัน เลือกตามว่าอยากให้ใครเห็น ถ้าอยากรู้จัก Cloudflare Tunnel ดูคลิปนี้ได้
เตรียมตัว
- บัญชีสำหรับล็อกอิน Google, Microsoft, GitHub หรือ Apple ก็ได้ ต้องใช้บัญชีเดียวกันทุกเครื่อง เพราะบัญชีคือสิ่งที่บอกว่าเครื่องไหนอยู่บ้านเดียวกัน
- คอมพิวเตอร์ (Windows, Mac หรือ Linux) และ มือถือ (iPhone หรือ Android)
- โปรเจกต์เว็บ ที่รันด้วย
npm run devได้ บทความนี้ยกตัวอย่างด้วยโปรเจกต์ Vite ถ้ายังไม่มี สร้างใหม่ได้ด้วยnpm create vite@latestแล้วตอบคำถามบนจอ
แพ็กเกจ Personal ใช้ฟรี ได้ 6 ผู้ใช้ และต่อเครื่องได้ไม่จำกัด (ณ ตอนเขียน ต.ค. 2026 ดูล่าสุดที่ tailscale.com/pricing) เช็กว่าเครื่องมี Node.js สำหรับรันเว็บแล้ว
node --versionv22.x.xเช็กว่าได้แล้ว: ขึ้นเลขเวอร์ชันที่ขึ้นต้นด้วย v ถ้าขึ้นว่าไม่รู้จักคำสั่ง ให้ติดตั้ง Node.js จาก nodejs.org ก่อน
ติดตั้งบนคอมพิวเตอร์
Windows และ Mac
- เข้า tailscale.com/download เลือกระบบที่ใช้ แล้วติดตั้งตามปกติ
- เปิดโปรแกรม กด Log in เบราว์เซอร์จะเปิดหน้าให้เลือกบัญชี
- ล็อกอินเสร็จ ไอคอน Tailscale (Windows อยู่มุมขวาล่างข้างนาฬิกา Mac อยู่แถบเมนูด้านบน) จะบอกสถานะ Connected
บน Mac ระบบจะถามว่าอนุญาตให้เพิ่มการตั้งค่า VPN ไหม ให้กดอนุญาต เพราะ Tailscale ใช้ช่อง VPN ของระบบสร้างเครือข่ายส่วนตัว
Linux
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale upTo authenticate, visit:
https://login.tailscale.com/a/1a2b3c4d5e6fบรรทัดแรกโหลดสคริปต์ติดตั้งทางการของ Tailscale มารัน ส่วน sudo tailscale up คือสั่งให้เชื่อมต่อ มันจะให้ลิงก์มา เปิดลิงก์นั้นบนเครื่องไหนก็ได้แล้วล็อกอิน พอเสร็จ Terminal จะขึ้น Success.
ระวังเรื่องรันสคริปต์จากเน็ต คำสั่งแบบ
curl ... | shคือโหลดแล้วรันทันที ให้ทำเฉพาะกับลิงก์ของผู้ผลิตตัวจริงที่เราเช็กแล้ว อย่าก๊อปคำสั่งหน้าตาคล้ายๆ กันจากเว็บที่ไม่รู้จัก
ตั้งชื่อเครื่องให้จำง่าย
Tailscale ตั้งชื่อเครื่องตามชื่อคอมให้เอง ซึ่งบางทีเป็นอะไรยาวๆ อย่าง desktop-8f3k2lq เปลี่ยนเป็นชื่อที่จำง่ายได้ เพราะชื่อนี้คือป้ายหน้าห้องที่ MagicDNS ใช้
- เข้า admin console หน้า Machines
- กดเมนูทางขวาของเครื่องนั้น เลือก Edit machine name
- เอาเครื่องหมายถูกที่ Auto-generate from OS hostname ออก แล้วพิมพ์
home-pc(ใช้ตัวพิมพ์เล็กกับขีดกลาง ไม่เว้นวรรค)
เช็กว่าได้แล้ว: หน้า Machines มีเครื่องชื่อ home-pc พร้อมเลขที่ขึ้นต้นด้วย 100.
ติดตั้งบนมือถือ
- เปิด App Store (iPhone) หรือ Google Play (Android) ค้นคำว่า Tailscale แล้วติดตั้ง
- ล็อกอินด้วย บัญชีเดียวกับบนคอม
- แอปจะขออนุญาตเพิ่มการตั้งค่า VPN ให้กดอนุญาต
- เปิดสวิตช์ให้เป็น Connected จะเห็นรายชื่อเครื่องในบ้าน มีทั้งมือถือเองและ
home-pcพร้อมเลข100.ของแต่ละเครื่อง
มือถือยอมให้แอปสร้างเครือข่ายส่วนตัวได้ผ่านระบบ VPN เท่านั้น Tailscale จึงต้องขอสิทธิ์นี้ แต่โดยปกติมันส่งเฉพาะข้อมูลที่จะไปหาเครื่องในบ้านผ่านอุโมงค์ การเล่นเน็ตอื่นๆ ยังวิ่งตามปกติ
ใช้แอป VPN ตัวอื่นอยู่? มือถือเปิด VPN ได้ทีละตัว ถ้าเปิดแอป VPN อื่นอยู่ ตัวหนึ่งจะหลุดเมื่ออีกตัวเชื่อมต่อ ระหว่างลองบทความนี้ให้ปิดตัวอื่นไว้ก่อน
เช็กว่าได้แล้ว: ในแอปบนมือถือเห็นเครื่อง home-pc อยู่ในรายชื่อ
เช็กสถานะด้วยคำสั่ง
กลับมาที่คอม เปิด Terminal (บน Windows ใช้ PowerShell หรือ Command Prompt ได้เลย บน Linux ใช้ได้ทันที) แล้วถามว่าในบ้านมีใครบ้าง
tailscale status100.101.102.103 home-pc you@ windows -
100.88.12.34 my-phone you@ iOS -แต่ละบรรทัดคือหนึ่งเครื่อง บรรทัดแรกคือเครื่องที่เราพิมพ์คำสั่งอยู่ (เลขในบทความเป็นตัวอย่าง ของคุณจะต่างไป) อ่านจากซ้ายไปขวาได้ว่า
- เลข
100.คือเลขห้อง ใช้ต่อหาเครื่องนั้น - ชื่อเครื่อง คือป้ายหน้าห้องที่ใช้กับ MagicDNS
- เจ้าของ คือบัญชีที่ล็อกอิน (ย่อเหลือส่วนหน้า
@) - ระบบปฏิบัติการ ของเครื่องนั้น
- สถานะ
-คือยังไม่เคยคุยกันidleคือเงียบอยู่activeคือกำลังคุยกัน และถ้าเครื่องปิดอยู่จะขึ้นoffline
ถ้าอยากรู้แค่เลขห้องของเครื่องตัวเอง
tailscale ip -4100.101.102.103ถ้าพิมพ์ tailscale ip เฉยๆ จะได้สองบรรทัด บรรทัดที่สองเป็นเลข IPv6 ตัวยาวที่ขึ้นต้นด้วย fd7a: ใช้ได้เหมือนกัน แต่ตัว 100. จำง่ายกว่า -4 จึงขอแค่ตัวสั้น
ใช้ Mac แล้วพิมพ์ tailscale ไม่ได้? แอปบน Mac ไม่ได้ติดตั้งคำสั่งให้ Terminal เอง ถ้าลงจากเว็บ ให้เข้า Settings ของแอป หาหัวข้อ CLI integration แล้วกดติดตั้ง ถ้าลงจาก App Store ให้เรียกผ่าน
/Applications/Tailscale.app/Contents/MacOS/Tailscale statusแทน
เช็กว่าได้แล้ว: tailscale status มีทั้ง home-pc และมือถือ
เปิดเว็บบนคอมจากมือถือ
ทำไม npm run dev เฉยๆ ถึงเปิดจากมือถือไม่ได้
คอมหนึ่งเครื่องมีหลาย "ประตู" แต่ละประตูมีเลขของตัวเอง ประตูในเครื่อง (localhost), ประตู Wi-Fi บ้าน (เช่น 192.168.1.20) และพอติด Tailscale ก็มีประตูใหม่อีกบาน (100.101.102.103)

dev server อย่าง Vite ตั้งค่าเริ่มต้นให้ฟังแค่ localhost คือรับเฉพาะโปรแกรมในเครื่องเดียวกัน เหมือนคุยกันเองในห้อง คนเคาะจากประตูอื่นจะไม่มีใครตอบ ซึ่งปลอดภัยดี แต่มือถือเข้าไม่ได้ ถ้าเปลี่ยนเป็น 0.0.0.0 แปลว่า "รับทุกประตูที่เครื่องมี" รวมประตู Tailscale ด้วย
รันด้วย --host
ในโฟลเดอร์โปรเจกต์ สั่ง
npm run dev -- --host-- ตัวแรกบอก npm ว่าสิ่งที่ตามมาไม่ใช่ของ npm ให้ส่งต่อไปที่ Vite ส่วน --host คือบอก Vite ให้ฟังที่ 0.0.0.0
➜ Local: http://localhost:5173/
➜ Network: http://192.168.1.20:5173/
➜ Network: http://100.101.102.103:5173/Local คือประตูในเครื่อง ส่วน Network คือประตูอื่นๆ บรรทัดที่เป็น 100. คือประตู Tailscale ที่เราจะใช้ และ 5173 คือหมายเลขช่องที่ Vite รอรับอยู่ ถ้าใช้เครื่องมืออื่นที่ไม่ใช่ Vite ให้หาตัวเลือกชื่อคล้ายๆ host ในเอกสารของเครื่องมือนั้น
เปิดจากมือถือ
- ปิด Wi-Fi บนมือถือ ใช้เน็ตมือถืออย่างเดียว จะได้มั่นใจว่าเข้าผ่าน Tailscale จริง ไม่ใช่ผ่าน Wi-Fi บ้าน
- เช็กว่าแอป Tailscale บนมือถือเป็น Connected
- เปิดเบราว์เซอร์ พิมพ์
http://100.101.102.103:5173(ใช้เลขของเครื่องคุณ) - ลองแบบใช้ชื่อ
http://home-pc:5173
ที่อยู่นี้มี 3 ท่อน คือ http:// + เลขห้องหรือชื่อเครื่อง + :5173 หมายเลขช่องของโปรแกรม ลองแก้โค้ดบนคอมแล้วเซฟ หน้าบนมือถือก็จะอัปเดตตาม
เช็กว่าได้แล้ว: มือถือที่ปิด Wi-Fi อยู่ เปิดหน้าเว็บจากคอมที่บ้านได้
ใช้ชื่อแล้วขึ้น Blocked request
Vite รุ่นใหม่ยอมตอบแค่ localhost กับที่อยู่ที่เป็นตัวเลข ถ้าเข้าด้วยชื่ออื่นจะขึ้นข้อความ Blocked request. This host ("home-pc") is not allowed. เพื่อกันการโจมตีบางแบบ แก้ได้ด้วยการบอก Vite ว่าชื่อไหนเป็นของเรา
import { defineConfig } from "vite";
export default defineConfig({
server: {
allowedHosts: ["home-pc", ".ts.net"],
},
});.ts.net ที่มีจุดนำหน้าคือยอมรับชื่อเต็มของ MagicDNS ด้วย (หน้าตาแบบ home-pc.ชื่อบ้าน.ts.net) ถ้าโปรเจกต์มีไฟล์นี้อยู่แล้ว ให้เพิ่มแค่ส่วน server เข้าไปใน defineConfig เดิม เซฟแล้ว Vite จะรีสตาร์ตเอง หรือจะใช้เลข 100. ไปก่อนก็ได้ ไม่ต้องแก้อะไร
ระวัง --host เปิดให้ Wi-Fi เดียวกันด้วย บรรทัด Network ที่เป็น
192.168.แปลว่าคนที่ต่อ Wi-Fi เดียวกับคอมก็เปิดเว็บนี้ได้ อยู่บ้านไม่เป็นไร แต่ถ้ารันบนโน้ตบุ๊กที่ร้านกาแฟ คนในร้านก็เข้าได้ เลิกใช้แล้วกด Ctrl+C ปิดทุกครั้ง หรือให้ฟังแค่ประตู Tailscale ด้วยnpm run dev -- --host 100.101.102.103
เจอปัญหา ลองเช็กตามนี้
| อาการ | สาเหตุ | วิธีแก้ |
|---|---|---|
| มือถือไม่เห็นคอมในรายชื่อ | ล็อกอินคนละบัญชี หรือยังไม่ Connected | ใช้บัญชีเดียวกัน และเปิดสวิตช์ทั้งสองเครื่อง |
| เห็นเครื่อง แต่เว็บหมุนค้าง | dev server ฟังแค่ localhost หรือพอร์ตผิด | รันด้วย --host และดูพอร์ตจากบรรทัด Network |
| Windows ถามเรื่อง Firewall | Windows กันโปรแกรมที่รับการเชื่อมต่อ | กด Allow ให้ Node.js |
| ใช้ชื่อแล้วหาเครื่องไม่เจอ | ชื่อไม่ตรง หรือ MagicDNS ไม่ทำงาน | ใช้เลข 100. แทน และเช็กชื่อใน tailscale status |
ขึ้น Blocked request | Vite ไม่รู้จักชื่อนี้ | เพิ่ม allowedHosts หรือใช้เลข 100. |
เรื่อง Firewall บน Windows ครั้งแรกที่รัน --host จะมีหน้าต่างถามว่าให้ Node.js รับการเชื่อมต่อจากเครือข่ายไหม ให้กด Allow access ถ้าเผลอกดปฏิเสธไป เข้าไปแก้ได้ที่ Windows Security > Firewall & network protection > Allow an app through firewall แล้วติ๊กให้ Node.js
ส่วนถ้าใช้ชื่อไม่ได้ ให้ดูชื่อจริงใน tailscale status ก่อน (อาจสะกดต่างจากที่คิด) แล้วเช็กว่าหน้า DNS ใน admin console เปิด MagicDNS อยู่
ปิดและเปิด Tailscale
ไม่ได้ใช้ก็ปิดได้ เครื่องจะออกจากบ้านชั่วคราว เน็ตปกติยังใช้ได้เหมือนเดิม แค่เข้าหาเครื่องอื่นในบ้านไม่ได้
tailscale down
tailscale uptailscale down คือตัดการเชื่อมต่อ ส่วน tailscale up คือกลับเข้าบ้าน (บน Linux เติม sudo นำหน้า) บนมือถือแค่กดสวิตช์ในแอป และบนคอมจะมีเมนู Disconnect กับ Connect ที่ไอคอน Tailscale
ไปต่อ
ถามว่าอีกเครื่องได้ยินไหมด้วย tailscale ping
tailscale ping my-phonepong from my-phone (100.88.12.34) via DERP(sin) in 48ms
pong from my-phone (100.88.12.34) via 203.0.113.25:41641 in 21mspong แปลว่าอีกเครื่องตอบกลับมา via DERP(...) คือยังส่งผ่านเครื่องกลางอยู่ ส่วน via ตามด้วยเลข IP และพอร์ต คือต่อตรงได้แล้ว คำสั่งจะหยุดเองเมื่อต่อตรงได้ หรือเมื่อครบ 10 ครั้ง ถ้าไม่มี pong เลย แปลว่าอีกเครื่องปิดอยู่หรือหลุดจากบ้าน
หน้า Machines ใน admin console
หน้า Machines คือสมุดทะเบียนบ้าน เห็นทุกเครื่องพร้อมเลข 100. และเวลาที่ออนไลน์ล่าสุด ใช้เปลี่ยนชื่อเครื่อง หรือเอาเครื่องเก่าที่ไม่ใช้แล้วออกจากบ้านได้
ชวนคนอื่นเข้าบ้าน
แพ็กเกจฟรีมีได้ 6 ผู้ใช้ ชวนเพื่อนหรือทีมเข้ามาได้จาก admin console อ่านเรื่องอื่นๆ ต่อได้ที่ tailscale.com/kb และถ้าอยากรู้ว่าการเรียกเครื่องด้วยชื่อแทนเลขทำงานยังไง อ่านต่อที่ DNS คืออะไร? ดูชื่อเว็บกลายเป็น IP ด้วย nslookup
สรุป
- Tailnet คือบ้านหลังเดียวของทุกเครื่อง แต่ละเครื่องมีเลขห้อง
100.x.y.zและป้ายชื่อจาก MagicDNS - ข้อมูลวิ่งในอุโมงค์ที่เข้ารหัสด้วย WireGuard และไม่ต้องเปิดพอร์ตเราเตอร์
- ติดตั้งทุกเครื่องด้วยบัญชีเดียวกัน แล้วเช็กด้วย
tailscale statusและtailscale ip - dev server ต้องฟังเกิน localhost ด้วย
npm run dev -- --hostมือถือถึงเปิดเว็บด้วยเลข100.ได้ ส่วนการเรียกด้วยชื่ออย่างhome-pcใน Vite ต้องเพิ่มallowedHostsก่อน - ไม่ได้ใช้ก็
tailscale downอยากกลับเข้าบ้านก็tailscale up
พร้อมแล้วก็ไปทำ Quiz ท้ายบทด้านล่างเพื่อรับ XP ได้เลยครับ