SSD Nodes Learn 🎉 VPS เริ่ม $5.50/เดือน
คู่มือ Matt Connorโดย Matt Connor · อัปเดตเมื่อ 2026-08-13

วิธีแก้ไขปัญหาติดตั้ง Tailscale บน Ubuntu ไม่สำเร็จ

พบปัญหาติดตั้ง Tailscale บน Ubuntu ใช่หรือไม่ ส่วนใหญ่เกิดจากข้อผิดพลาดของ apt ตรวจสอบสถานะการติดตั้งและแก้ไขปัญหาไฟล์ codename หรือ signing keyring ให้ถูกต้องตามขั้นตอน

เหตุใดข้อผิดพลาดในการติดตั้ง Tailscale บน Ubuntu จึงเป็นข้อผิดพลาดของ apt

ข้อผิดพลาดในการติดตั้ง Tailscale บน Ubuntu มักเกิดขึ้นก่อนที่โค้ดของ Tailscale จะเริ่มทำงาน ซึ่งถือเป็นข้อผิดพลาดของ apt โดย Ubuntu ไม่ได้จัดส่งแพ็กเกจ tailscale ของตนเอง จากการตรวจสอบกับคลังแพ็กเกจของ Ubuntu ในเดือนสิงหาคม 2026 พบเพียงไลบรารีเสริมของ Go และ python3-tailscale เท่านั้น ดังนั้น daemon จึงต้องมาจากคลัง apt ของ Tailscale เองที่ pkgs.tailscale.com

การเพิ่มคลังดังกล่าวจะสร้างไฟล์ขึ้นมา 2 ไฟล์ ไฟล์หนึ่งจะระบุตำแหน่งของแพ็กเกจให้ apt ทราบ ส่วนอีกไฟล์จะเก็บ public key ที่ apt ใช้ตรวจสอบลายเซ็นบนดัชนีของคลัง ข้อผิดพลาดเกือบทั้งหมดที่ระบุด้านล่างเกิดจากไฟล์ทั้งสองนี้ไม่ถูกต้อง หรือเกิดจากอุปกรณ์ระหว่าง apt กับคลังปฏิเสธคำขอ

นี่คือคำสั่งที่ Tailscale เผยแพร่สำหรับ Ubuntu 24.04:

sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
sudo apt-get update && sudo apt-get install tailscale

noble คือ codename ของ Ubuntu 24.04 ซึ่งปรากฏอยู่ใน URL ทั้งสองแห่ง คำสั่งที่สองจะเขียนบรรทัดหมายเหตุและบรรทัด deb หนึ่งบรรทัดลงใน /etc/apt/sources.list.d/tailscale.list และ cat จะแสดงให้คุณเห็นสิ่งที่ถูกบันทึกไว้ในนั้นอย่างชัดเจน

cat /etc/apt/sources.list.d/tailscale.list

ให้อ่านบรรทัด deb นั้นเป็นที่อยู่ซึ่งประกอบด้วย 4 ส่วน ได้แก่ ตัวเลือกในวงเล็บ [signed-by=/usr/share/keyrings/tailscale-archive-keyring.gpg], ตามด้วยฐานของคลังซึ่งคือ pkgs.tailscale.com/stable/ubuntu ที่เข้าถึงผ่าน https, ตามด้วย suite noble และ component main โดย apt จะเชื่อมฐานและ suite เข้าด้วยกันเป็น URL เดียวเพื่อดึงข้อมูล: https://pkgs.tailscale.com/stable/ubuntu/dists/noble/InRelease หากคุณสามารถดึง URL นั้นด้วยตนเองได้ apt ก็สามารถดึงได้เช่นกัน นี่คือวิธีการวินิจฉัยทั้งหมดที่มี

อ่านข้อผิดพลาดของ apt ก่อนดำเนินการใดๆ

ให้รันคำสั่งอัปเดตแยกต่างหาก เพื่อไม่ให้ข้อความแสดงข้อผิดพลาดเลื่อนหายไป

sudo apt update

ที่เก็บซอฟต์แวร์ (repository) ของบุคคลที่สามที่ล้มเหลวจะมีลักษณะดังนี้ โดย codename และที่อยู่ IP บนเครื่องของคุณจะแตกต่างออกไป

E: Failed to fetch https://pkgs.tailscale.com/stable/ubuntu/dists/wilma/InRelease  404  Not Found [IP: 203.0.113.9 443]
E: Some index files failed to download. They have been ignored, or old ones used instead.

ข้อมูลสองส่วนในผลลัพธ์ดังกล่าวจะเป็นตัวกำหนดขั้นตอนถัดไปของคุณ ได้แก่ รหัสสถานะ (status code) และ URL เต็มที่ปรากฏในบรรทัด E: Failed to fetch อย่าคาดเดาจากบรรทัดสรุปที่ด้านล่าง ให้คัดลอก URL ดังกล่าวแล้วส่งคำขอไปยังเซิร์ฟเวอร์ด้วยตนเอง

curl -sS -o /dev/null -w '%{http_code}\n' https://pkgs.tailscale.com/stable/ubuntu/dists/noble/InRelease

คำสั่งดังกล่าวจะแสดงผล 200 สำหรับ codename ที่ Tailscale เผยแพร่ จากการตรวจสอบในเดือนสิงหาคม 2026 พบว่า noble ส่งคืนดัชนีที่มีลายเซ็นกำกับซึ่งประกอบด้วย Origin: Tailscale และ Codename: noble ให้แทนที่ noble ด้วย codename จากข้อผิดพลาดบนเครื่องของคุณแล้วรันคำสั่งอีกครั้ง หาก curl ได้รับผลลัพธ์เป็น 200 ในขณะที่ apt ได้รับข้อผิดพลาด แสดงว่าที่เก็บซอฟต์แวร์นั้นปกติ และปัญหาอยู่ที่การตั้งค่าของ apt เอง

สิ่งที่รหัสสถานะบอกคุณ

  • 404 Not Found หมายความว่า repository ไม่มีไฟล์ที่ path นั้น บน pkgs.tailscale.com รหัสดังกล่าวมักหมายถึง codename ใน URL
  • 403 Forbidden หมายความว่ามีบางอย่างตอบกลับมาแต่ปฏิเสธการเข้าถึง ณ เดือนสิงหาคม 2026 repository นี้จะส่งค่า 404 สำหรับ path ที่ไม่มีอยู่ ดังนั้นรหัส 403 จึงชี้ไปที่ proxy, อุปกรณ์กรองข้อมูล หรือ firewall ที่อยู่ระหว่างเซิร์ฟเวอร์ของคุณกับ Tailscale
  • 401 Unauthorized หรือ 407 Proxy Authentication Required หมายความว่า proxy ต้องการข้อมูลยืนยันตัวตนซึ่ง apt ไม่ได้ส่งไปให้
  • ข้อผิดพลาดในการเชื่อมต่อ (connect error) หรือข้อผิดพลาดในการแปลชื่อ (name resolution error) หมายความว่าไม่มีการสื่อสารผ่าน HTTP เกิดขึ้นเลย ให้ข้ามไปดูส่วน IPv6

ชื่อรหัสใน URL เป็นสิ่งที่ Tailscale ไม่ได้เผยแพร่

Tailscale สร้างไดเรกทอรีแยกตามชื่อรหัสของ Ubuntu หากคุณระบุชื่อรหัสที่ไม่มีอยู่จริง คุณจะได้รับข้อผิดพลาด 404 เนื่องจากไม่มี dists/<codename> บนเซิร์ฟเวอร์สำหรับให้บริการ รายการของทางผู้ผลิตที่ pkgs.tailscale.com/stable จะแสดงชื่อรหัสที่มีอยู่ทั้งหมด ในเดือนสิงหาคม 2026 รายการดังกล่าวจะเริ่มตั้งแต่ 16.04 ไปจนถึง resolute ซึ่งก็คือ Ubuntu 26.04

สาเหตุทั่วไปที่ทำให้ได้ชื่อรหัสที่ไม่ถูกต้องคือการใช้ lsb_release -cs บนดิสทริบิวชันที่ใช้พื้นฐานจาก Ubuntu แต่ไม่ใช่ Ubuntu โดยตรง บน Linux Mint 22 คำสั่งดังกล่าวจะแสดงผลเป็น wilma ซึ่งเป็นชื่อรหัสของ Mint เอง และ Tailscale ไม่ได้เผยแพร่แพ็กเกจสำหรับชื่อรหัสนี้ ให้ใช้ชื่อรหัสของ Ubuntu ที่เป็นฐานแทน

. /etc/os-release
echo "$VERSION_CODENAME $UBUNTU_CODENAME"

บน Ubuntu ค่าทั้งสองจะเหมือนกัน แต่บนดิสทริบิวชันที่แตกแขนงออกมา VERSION_CODENAME จะเป็นชื่อของดิสทริบิวชันนั้น และ UBUNTU_CODENAME จะเป็นรุ่นของ Ubuntu ที่ใช้เป็นฐาน ให้ใช้ UBUNTU_CODENAME ใน URL ทั้งสองแห่ง

สาเหตุที่สองคือการอัปเกรดรุ่นของระบบ เครื่องมืออัปเกรดของ Ubuntu จะปิดการใช้งานแหล่งซอฟต์แวร์ภายนอกในระหว่างการทำงาน ดังนั้นหลังจาก การอัปเกรด Ubuntu 24.04 เป็น 26.04 คุณจะพบว่า /etc/apt/sources.list.d/tailscale.list ถูกใส่เครื่องหมายคอมเมนต์ไว้ หรือยังคงระบุชื่อ noble บนเครื่องที่ปัจจุบันเป็น resolute แล้ว ให้แก้ไขโดยการรันคำสั่ง curl ทั้งสองคำสั่งใหม่อีกครั้งด้วยชื่อรหัสใหม่ ซึ่งจะเป็นการเขียนทับไฟล์ทั้งสองไฟล์

สาเหตุที่สามคือเรื่องของช่วงเวลา ในช่วงสัปดาห์หลังจากที่ Ubuntu รุ่นใหม่ออกมา ชื่อรหัสจะปรากฏที่ Canonical ก่อนที่จะมีใน Tailscale การชี้ไฟล์ไปยังชื่อรหัส LTS รุ่นก่อนหน้ามักจะติดตั้งได้สำเร็จ เนื่องจากแพ็กเกจเหล่านี้มี dependency น้อย แต่คุณกำลังรันบิลด์ที่สร้างมาสำหรับรุ่นที่เก่ากว่า ให้ตรวจสอบสิ่งที่ติดตั้งจริงด้วย apt policy tailscale และย้ายไฟล์กลับเมื่อชื่อรหัสที่ถูกต้องปรากฏขึ้นแล้ว

Keyring ว่างเปล่าและคำสั่งที่เขียนไฟล์ไม่ได้แจ้งเตือนใดๆ

ปัญหานี้เงียบเชียบและเป็นจุดที่หลายคนมักจะจบลงที่ตรงนี้ ให้ตรวจสอบคำสั่ง keyring อีกครั้ง:

curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null

Shell จะสร้าง pipeline ทั้งหมดก่อนที่โปรแกรมใดๆ จะเริ่มทำงาน ดังนั้น sudo tee จะเปิด path ของ keyring และตัดขนาดไฟล์ให้เหลือศูนย์ไบต์ทันที หาก curl ล้มเหลวและ -f ทำให้มันหยุดทำงานเมื่อพบ HTTP error ใดๆ curl จะไม่เขียนข้อมูลใดๆ ลงไปและจบการทำงานด้วยสถานะที่ไม่ใช่ศูนย์ ไฟล์จึงยังคงมีขนาดเป็นศูนย์ สถานะการจบการทำงานของ pipeline คือสถานะของคำสั่งสุดท้าย ซึ่งก็คือ tee ที่ทำงานสำเร็จ ไม่มีข้อความใดๆ แสดงออกมา ทำให้คุณข้ามไปยังคำสั่งถัดไปโดยเชื่อว่าติดตั้ง key เรียบร้อยแล้ว

ให้ตรวจสอบที่ตัวไฟล์ ไม่ใช่ตรวจสอบที่คำสั่งที่สร้างไฟล์นั้น

ls -l /usr/share/keyrings/tailscale-archive-keyring.gpg
gpg --show-keys /usr/share/keyrings/tailscale-archive-keyring.gpg

Keyring ที่สมบูรณ์จะแสดงบรรทัด pub และบรรทัด uid ที่ระบุชื่อ Tailscale ไฟล์ที่มีขนาดศูนย์ไบต์จะแสดง gpg: no valid OpenPGP data found. และไม่มีอะไรอื่นอีก ไฟล์ที่ได้รับหน้า HTML error มาแทนจะแสดงผลแบบเดียวกัน และเมื่อใช้ head -c 80 ตรวจสอบ จะพบจุดเริ่มต้นของหน้าเว็บแทนที่จะเป็นข้อมูล key แบบไบนารี

เมื่อ keyring ไม่มี key ที่ใช้งานได้ sudo apt update จะดาวน์โหลด index มาแล้วปฏิเสธมัน คุณจะได้รับบรรทัด W: GPG error ที่ระบุชื่อ repository ของ Tailscale และ suite ของมัน ตามด้วยข้อความ The following signatures couldn't be verified because the public key is not available: NO_PUBKEY และรหัส key ความยาว 16 ตัวอักษร และด้านล่างจะมีข้อความแจ้งเตือนว่า repository ไม่ได้ถูกลงนาม (not signed) ให้สังเกตสิ่งที่ apt กำลังบอกคุณ: มันดาวน์โหลด index ได้ปกติ แต่ไม่สามารถตรวจสอบลายเซ็นได้ นี่คือปัญหาเรื่อง key ไม่ใช่ปัญหาเรื่องเครือข่าย หากไฟล์ keyring หายไปเลย ข้อความจะเปลี่ยนไปและระบุ path โดยตรงด้วย Could not open file /usr/share/keyrings/tailscale-archive-keyring.gpg

ให้เขียน key โดยแบ่งเป็นสองขั้นตอน เพื่อไม่ให้การดาวน์โหลดที่ล้มเหลวทำลาย keyring ที่ใช้งานได้อยู่เดิม

curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg -o /tmp/tailscale.gpg
gpg --show-keys /tmp/tailscale.gpg
sudo install -m 0644 -o root -g root /tmp/tailscale.gpg /usr/share/keyrings/tailscale-archive-keyring.gpg

บรรทัดกลางคือตัวคัดกรอง: หากไม่แสดง uid ของ Tailscale ให้หยุดและอย่าคัดลอกไฟล์นั้น โหมด 0644 มีความสำคัญเพราะ apt จะลดสิทธิ์ลงไปเป็นผู้ใช้ _apt ที่ไม่มีสิทธิ์พิเศษเพื่อทำการดึงและตรวจสอบข้อมูล ดังนั้น keyring ที่มีเพียง root เท่านั้นที่อ่านได้ จึงเป็น keyring ที่ apt ไม่สามารถใช้งานได้

ไฟล์ .list และ .sources อธิบาย repository เดียวกัน

Ubuntu เปลี่ยนรูปแบบ sources ของตนเองเป็นรูปแบบ deb822 ใน Ubuntu 24.10 โดยที่ /etc/apt/sources.list ได้กลายเป็น /etc/apt/sources.list.d/ubuntu.sources ทั้งนี้ Tailscale ยังคงเผยแพร่ในรูปแบบบรรทัดเดียว จากการตรวจสอบในเดือนสิงหาคม 2026 ไม่พบไฟล์ .sources ให้ดาวน์โหลดจาก pkgs.tailscale.com เนื่องจาก URL ดังกล่าวส่งค่าสถานะ 404 ดังนั้นหากเครื่องของคุณมีไฟล์ tailscale.sources แสดงว่าคุณหรือคู่มือการติดตั้งได้สร้างไฟล์นั้นขึ้นมาเอง และหากยังมีไฟล์ tailscale.list อยู่ด้วย apt จะมองว่ามี repository เดียวกันถูกระบุไว้ซ้ำสองครั้ง

กรณีที่ไม่รุนแรงจะแสดงคำเตือนทุกครั้งที่มีการอัปเดต:

W: Target Packages (main/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list.d/tailscale.list:1 and /etc/apt/sources.list.d/tailscale.sources:1

กรณีที่รุนแรงจะเกิดขึ้นเมื่อไฟล์ทั้งสองระบุเส้นทางของ keyring ต่างกัน เนื่องจาก apt ไม่สามารถตัดสินได้ว่าคีย์ใดเป็นผู้ควบคุม repository นั้น ระบบจะแสดงข้อความ E: Conflicting values set for option Signed-By regarding source ตามด้วยชื่อ repository และ suite จากนั้นจะแสดงเส้นทางของ keyring ทั้งสองไฟล์โดยมี != คั่นกลาง แล้วจึงปฏิเสธที่จะดำเนินการต่อ:

E: The list of sources could not be read.

ข้อผิดพลาดนี้จะขัดขวางการทำงานของคำสั่ง apt ทุกคำสั่ง ไม่ใช่แค่การอัปเดต จนกว่าไฟล์ใดไฟล์หนึ่งจะถูกลบออก ความล้มเหลวในลักษณะเดียวกันนี้สามารถเกิดขึ้นได้กับ repository ของ Ubuntu เอง และ ข้อผิดพลาด apt source ซ้ำหลังการย้ายไป deb822 ได้อธิบายถึงกรณีทั่วไปไว้

ให้ค้นหาทุกไฟล์ที่มีการกล่าวถึง Tailscale ก่อนที่คุณจะลบสิ่งใดออกไป

grep -RIn tailscale /etc/apt/sources.list /etc/apt/sources.list.d/

ให้เก็บไว้เพียงไฟล์เดียว หากต้องการปิดการใช้งานอีกไฟล์โดยไม่ลบข้อมูลทิ้ง ให้เปลี่ยนชื่อไฟล์นั้น เนื่องจาก apt จะอ่านเฉพาะไฟล์ที่ลงท้ายด้วย .list หรือ .sources เท่านั้น ดังนั้นไฟล์ที่เปลี่ยนชื่อเป็น tailscale.list.bak จะถูกข้ามไปและยังคงอยู่ในดิสก์เพื่อใช้สำหรับการอ้างอิง

การเขียนไฟล์ source รูปแบบ deb822 ให้ถูกต้อง

หากคุณต้องการใช้รูปแบบใหม่ ให้ใช้วิธีแปลงไฟล์เดิมที่มีอยู่แทนการพิมพ์ที่อยู่ repository ใหม่ทั้งหมด เพราะการพิมพ์ผิดเพียงเล็กน้อยคือสาเหตุของข้อผิดพลาดที่กล่าวไปข้างต้น apt รุ่นใหม่มีเครื่องมือแปลงไฟล์ที่ช่วยเขียนไฟล์ .list ใหม่ให้อยู่ในรูปแบบ deb822 และย้ายตัวเลือก signed-by ไปเป็น Signed-By โดยอัตโนมัติ

apt modernize-sources --help
sudo apt modernize-sources

Ubuntu 24.04 มาพร้อมกับ apt รุ่นที่ยังไม่มีคำสั่งย่อยดังกล่าว ดังนั้นบรรทัดช่วยเหลือจะบอกคุณทันทีว่าระบบของคุณรองรับหรือไม่ หากไม่รองรับ ให้สร้าง stanza จากบรรทัดเดิมที่มีอยู่ในดิสก์ เพื่อให้ค่าพื้นฐานมาจากไฟล์ของผู้ให้บริการแทนการพิมพ์ด้วยตนเอง

. /etc/os-release
{
  echo 'Types: deb'
  echo "URIs: $(awk '/^deb /{print $3}' /etc/apt/sources.list.d/tailscale.list)"
  echo "Suites: $UBUNTU_CODENAME"
  echo 'Components: main'
  echo 'Signed-By: /usr/share/keyrings/tailscale-archive-keyring.gpg'
} | sudo tee /etc/apt/sources.list.d/tailscale.sources
sudo rm /etc/apt/sources.list.d/tailscale.list

คำสั่งดังกล่าวจะแสดง stanza ที่เขียนขึ้นมา เพื่อให้คุณตรวจสอบฟิลด์ต่างๆ ก่อนที่จะรันคำสั่ง apt update ครั้งถัดไป มี 4 ฟิลด์ที่ควรทราบรายละเอียด เพราะแต่ละฟิลด์อาจทำให้เกิดข้อผิดพลาดในรูปแบบที่ต่างกัน:

  • URIs จะหยุดอยู่ที่ตำแหน่งฐานของ repository การนำส่วนที่เป็น dists/noble มาวางต่อจะทำให้เกิดข้อผิดพลาด 404 เนื่องจาก apt จะเติม dists/<suite> ต่อท้ายเองและร้องขอ dists/noble/dists/noble
  • Suites คือ codename ซึ่งเป็นค่าเดียวกับที่เคยอยู่ตรงกลางของรูปแบบบรรทัดเดียว
  • Signed-By รับค่าเป็นพาธแบบสัมบูรณ์ (absolute path) ไปยังไฟล์ keyring นอกจากนี้ยังรองรับการวาง key แบบ armored ลงไปโดยตรง โดยทุกบรรทัดของ key ต้องย่อหน้าด้วยช่องว่างหนึ่งช่อง และบรรทัดว่างภายใน key ต้องเขียนแทนด้วยจุดหนึ่งจุด
  • Enabled: no ใช้สำหรับปิดการใช้งาน source โดยไม่ต้องลบไฟล์ทิ้ง ซึ่งทำย้อนกลับได้ง่ายกว่าการเปลี่ยนชื่อไฟล์และอธิบายให้ผู้อื่นเข้าใจได้ง่ายกว่า

ควรเก็บ stanza ไว้ไฟล์ละหนึ่งรายการสำหรับ repository ของบุคคลที่สาม และเว้นบรรทัดว่างระหว่าง stanza หากคุณเก็บหลายรายการไว้ด้วยกัน ดัชนีของ repository จะแสดง amd64 และ arm64 ไว้ในรายการสถาปัตยกรรมอยู่แล้ว ดังนั้น VPS ที่ใช้สถาปัตยกรรม ARM จึงไม่จำเป็นต้องระบุฟิลด์ Architectures เพิ่มเติม

พร็อกซีที่อยู่ตรงกลางส่งค่า 403 กลับมา

เนื่องจาก path ที่ไม่มีอยู่ใน repository นี้จะตอบกลับด้วย 404 ดังนั้นค่า 403 จึงหมายความว่ามีบางอย่างตอบกลับมาแทน ให้เริ่มตรวจสอบจากค่าคอนฟิกของ apt เอง เนื่องจากพร็อกซีที่ตั้งค่าไว้ที่นั่นจะมีผลกับ apt แต่ไม่มีผลกับคำสั่ง curl แบบโต้ตอบของคุณ

grep -RIn -i proxy /etc/apt/apt.conf.d/ /etc/apt/apt.conf
sudo apt-config dump | grep -i 'acquire::http'

จากนั้นให้ตรวจสอบสิ่งที่ apt ส่งออกไปจริง

sudo apt -o Debug::Acquire::http=1 update

คำสั่งนี้จะแสดงบรรทัดคำขอ, header ที่ apt ส่งไป และพร็อกซีที่เชื่อมต่อผ่าน (ถ้ามี) ให้เปรียบเทียบกับคำสั่ง curl ปกติที่เรียกไปยัง URL เดียวกัน หาก curl ส่งค่า 200 กลับมา แต่ apt ส่งค่า 403 กลับมา แสดงว่าคำขอทั้งสองมีความแตกต่างกันในจุดที่อุปกรณ์ตัวกลางให้ความสำคัญ ซึ่งสาเหตุที่พบบ่อยที่สุดคือ user agent:

curl -sS -o /dev/null -w '%{http_code}\n' -A 'Debian APT-HTTP/1.3' https://pkgs.tailscale.com/stable/ubuntu/dists/noble/InRelease

หากคำสั่งดังกล่าวส่งค่า 403 กลับมาในขณะที่ curl ปกติส่งค่า 200 แสดงว่าอุปกรณ์กรองข้อมูลกำลังปฏิเสธ apt โดยระบุชื่อ วิธีแก้ไขต้องทำที่อุปกรณ์นั้น ไม่ใช่ที่เซิร์ฟเวอร์ของคุณ ส่วนพร็อกซีขององค์กรที่ตรวจสอบ TLS จะมีพฤติกรรมต่างออกไป โดย apt จะรายงานความล้มเหลวในการตรวจสอบใบรับรองแทนที่จะเป็นรหัสสถานะ เนื่องจากใบรับรองที่ได้รับถูกออกโดยพร็อกซี ไม่ใช่โดยหน่วยงานออกใบรับรองของ Tailscale อีกสาเหตุที่พบบ่อยคือ cloud egress firewall ที่อนุญาตเฉพาะ Ubuntu mirrors เท่านั้น ซึ่งวิธีแก้ไขคือการอนุญาต pkgs.tailscale.com บนไฟร์วอลล์นั้น

การส่งข้อมูลออกผ่าน IPv6 เท่านั้น และข้อผิดพลาดที่ไม่ได้อยู่ในรูปแบบรหัสสถานะ

หาก apt ไม่ได้รับการตอบกลับผ่าน HTTP ให้ทดสอบแต่ละโปรโตคอลแยกกัน

curl -4 -sS -o /dev/null -w 'v4 %{http_code}\n' https://pkgs.tailscale.com/stable/ubuntu/dists/noble/InRelease
curl -6 -sS -o /dev/null -w 'v6 %{http_code}\n' https://pkgs.tailscale.com/stable/ubuntu/dists/noble/InRelease

เมื่อ IPv4 ตอบกลับได้แต่ IPv6 ค้างหรือรายงาน Network is unreachable แสดงว่า apt ล้มเหลวเนื่องจาก resolver library ให้ความสำคัญกับ IPv6 ก่อน ในขณะที่เซิร์ฟเวอร์ไม่มีเส้นทาง IPv6 ที่ใช้งานได้จริง ให้บังคับการทำงานผ่าน IPv4 หนึ่งครั้งเพื่อยืนยันสมมติฐานนี้:

sudo apt -o Acquire::ForceIPv4=true update

หากการอัปเดตนั้นสำเร็จ ให้ตั้งค่าให้เป็นถาวร:

echo 'Acquire::ForceIPv4 "true";' | sudo tee /etc/apt/apt.conf.d/99force-ipv4

ในกรณีตรงกันข้าม ให้พิจารณาตามความเป็นจริง บน VPS ที่ไม่มีที่อยู่ IPv4 เลย การบังคับใช้ IPv4 จะไม่ช่วยแก้ไขปัญหาใดๆ เนื่องจากไม่มีเส้นทาง IPv4 ให้ส่งข้อมูลออกไป ในกรณีนี้คุณจำเป็นต้องใช้ NAT64 ร่วมกับ DNS64 จากผู้ให้บริการของคุณ หรือใช้พร็อกซีที่มีที่อยู่ IPv4 อาการที่พบคือข้อผิดพลาดในการเชื่อมต่อที่ระบุถึงที่อยู่ IPv6 ดังนั้นบรรทัด curl -6 คือส่วนที่จะบอกความจริงแก่คุณ

ทางเลือกสำรองและต้นทุนที่ต้องแลก

สคริปต์ติดตั้งของผู้ให้บริการ curl -fsSL https://tailscale.com/install.sh | sh คือคำสั่งที่ Tailscale แนะนำให้ใช้ เมื่ออ่านสคริปต์จะพบว่ามันจะตรวจหา distribution ของคุณจาก /etc/os-release แล้วเขียนไฟล์ลงในสอง path เดียวกันกับที่คู่มือนี้ได้แก้ไขไปก่อนหน้า คือ /usr/share/keyrings/tailscale-archive-keyring.gpg และ /etc/apt/sources.list.d/tailscale.list โดยดึงข้อมูลจาก URL เดียวกัน สิ่งนี้สำคัญต่อความคาดหวังของคุณ เพราะมันไม่สามารถเลี่ยง repository ที่ถูก proxy บล็อกได้ และจะล้มเหลวในลักษณะเดียวกันโดยให้ข้อมูลการทำงานน้อยกว่า การนำสคริปต์ที่ดาวน์โหลดมาส่งเข้า shell ในฐานะ root เป็นการแลกเปลี่ยน ไม่ใช่การแก้ปัญหา เพราะคุณต้องเชื่อใจสิ่งที่เซิร์ฟเวอร์ส่งกลับมาในขณะนั้นและไม่มีสำเนาของสิ่งที่รันไป หากคุณยอมรับการแลกเปลี่ยนนี้ จงทำด้วยความเข้าใจ:

curl -fsSL https://tailscale.com/install.sh -o install.sh
less install.sh
sh install.sh

ไฟล์ binary แบบ static เซิร์ฟเวอร์เดียวกันมีการเผยแพร่ไฟล์ tarball ปกติไว้ในส่วน static binaries ของ pkgs.tailscale.com/stable ณ เดือนสิงหาคม 2026 รุ่น stable คือ 1.102.2 และไฟล์สำหรับ x86 แบบ 64 บิต คือ tailscale_1.102.2_amd64.tgz คุณต้องนำไคลเอนต์ tailscale และ daemon tailscaled ไปวางด้วยตนเอง รวมถึงดูแลการทำงานของ daemon เอง ดังนั้นจึงไม่มี path apt upgrade และการอัปเดตในอนาคตทุกครั้งจะเป็นการดาวน์โหลดที่คุณต้องจำทำด้วยตนเอง วิธีนี้เหมาะสำหรับโฮสต์ที่ไม่มีการเชื่อมต่อเครือข่ายภายนอก (air gapped) หรือเมื่อคุณจำเป็นต้องล็อกเวอร์ชันให้คงที่

แพ็กเกจของ Ubuntu เอง ไม่มีแพ็กเกจดังกล่าว การรัน sudo apt install tailscale โดยไม่ได้ตั้งค่า repository ของผู้ให้บริการจะจบลงที่ E: Unable to locate package tailscale และการรัน apt update ก็ไม่ช่วยให้ผลลัพธ์เปลี่ยนไป หากสิ่งที่คุณต้องการจริงๆ คือ coordination server ที่คุณควบคุมเองแทนที่จะใช้บริการของ Tailscale นั่นเป็นการตัดสินใจแยกต่างหาก: การรัน Headscale เป็น control server ของคุณเอง ครอบคลุมเรื่องนี้ และ การเปรียบเทียบระหว่าง Tailscale กับ WireGuard ปกติ จะช่วยให้คุณตัดสินใจได้ว่าจำเป็นต้องใช้กลไกเหล่านี้หรือไม่

ติดตั้งแพ็กเกจแล้ว แต่ tailscaled ไม่ยอมเริ่มทำงาน

เมื่อ apt ทำงานเสร็จสิ้น ปัญหาจะย้ายไปอยู่ที่ตัว daemon แทน

systemctl status tailscaled
sudo journalctl -u tailscaled -n 50

บน VPS ที่ใช้ container virtualization ซึ่งใช้ kernel ร่วมกับ host เช่น LXC หรือ OpenVZ ใน log จะมีบรรทัดที่ระบุว่า /dev/net/tun ไม่มีอยู่จริง daemon จำเป็นต้องใช้ TUN device เพื่อสร้าง interface tailscale0 แต่ container ไม่ได้รับอนุญาตให้เข้าถึงส่วนนี้ ให้ติดต่อผู้ให้บริการเพื่อเปิดใช้งาน TUN บน container หรือย้ายไปใช้แผน KVM ซึ่งคุณจะได้รับ kernel ของตนเอง บน KVM ระบบนี้จะทำงานได้ทันทีโดยไม่ต้องตั้งค่าเพิ่มเติม

หลังจากนั้น sudo tailscale up จะแสดง URL สำหรับเข้าสู่ระบบ และ tailscale status ควรจะแสดงรายการเครื่องของคุณพร้อมที่อยู่ในช่วง 100.64.0.0/10 เครื่องที่ปรากฏในรายการคือเครื่องที่คุณสามารถนำไปใช้งานต่อได้ ไม่ว่าจะเป็นการ ประกาศ private subnet จาก VPS ของคุณ หรือ ใช้ VPS เป็น exit node

FAQ

เหตุใด apt จึงแจ้งว่า repository ของ Tailscale ไม่ได้ลงลายเซ็น?

เนื่องจาก apt ดาวน์โหลดดัชนีของ repository มาแล้วแต่ไม่สามารถตรวจสอบลายเซ็นเทียบกับ /usr/share/keyrings/tailscale-archive-keyring.gpg ได้ สาเหตุที่พบบ่อยคือ keyring มีขนาด 0 ไบต์: sudo tee ตัดไฟล์ทิ้งก่อนที่ curl จะดาวน์โหลดอะไรได้สำเร็จ และ pipeline รายงานว่าสำเร็จเพราะ tee ทำงานผ่าน ให้รัน gpg --show-keys /usr/share/keyrings/tailscale-archive-keyring.gpg หาก keyring ทำงานปกติจะแสดงบรรทัด pub และบรรทัด uid ที่ระบุชื่อ Tailscale ในขณะที่ไฟล์ที่ว่างเปล่าหรือเสียหายจะแสดง gpg: no valid OpenPGP data found. ให้ดาวน์โหลดกุญแจลงไฟล์ชั่วคราว ตรวจสอบไฟล์นั้น แล้วคัดลอกไปยังตำแหน่งที่ถูกต้องด้วยโหมด 0644 เพื่อให้ผู้ใช้ _apt สามารถอ่านได้

ฉันควรใส่ codename ของ Ubuntu ตัวใดใน URL ของ Tailscale?

ให้ใช้ค่าของ UBUNTU_CODENAME จาก /etc/os-release ซึ่งจะเป็น noble บน Ubuntu 24.04 และ resolute บน Ubuntu 26.04 ห้ามใช้ lsb_release -cs บน distribution ที่พัฒนาต่อจาก Ubuntu: บน Linux Mint 22 ค่านี้จะแสดงเป็น wilma ซึ่ง Tailscale ไม่ได้เผยแพร่ไฟล์ภายใต้ชื่อนั้น และ apt จะรายงานข้อผิดพลาด 404 บน dists/wilma/InRelease ให้ยืนยันตัวเลือกของคุณก่อนแก้ไขไฟล์ใดๆ โดยการดึงดัชนีด้วยตนเองผ่าน curl -sS -o /dev/null -w '%{http_code}\n' เทียบกับ https://pkgs.tailscale.com/stable/ubuntu/dists/<codename>/InRelease

การรันสคริปต์ติดตั้ง Tailscale โดยส่งผ่าน pipe ไปยัง shell ปลอดภัยหรือไม่?

นี่คือการแลกเปลี่ยนที่คุณควรตัดสินใจอย่างรอบคอบ สคริปต์นี้มาจาก Tailscale และทำงานตามขั้นตอนเดียวกับที่ระบุในคู่มือ: อ่าน /etc/os-release, เขียน keyring และ /etc/apt/sources.list.d/tailscale.list ชุดเดียวกัน จากนั้นจึงติดตั้งแพ็กเกจ สิ่งที่ต้องแลกคือคุณกำลังรันสิ่งที่เซิร์ฟเวอร์ส่งกลับมาในขณะนั้นด้วยสิทธิ์ root และไม่มีการบันทึกประวัติการทำงานไว้ ให้ดาวน์โหลดด้วย -o install.sh, อ่านเนื้อหา แล้วค่อยรันหากต้องการความสะดวกโดยไม่ปิดตาทำ นอกจากนี้วิธีนี้ยังไม่สามารถช่วยแก้ปัญหา repository ที่ถูกบล็อกได้ เนื่องจากใช้ URL เดียวกับที่ล้มเหลวไปก่อนหน้า

ฉันจะติดตั้ง Tailscale บน Ubuntu โดยไม่ใช้ apt repository ได้อย่างไร?

ให้ใช้ static tarball ที่เผยแพร่บน pkgs.tailscale.com ซึ่ง ณ เดือนสิงหาคม 2026 คือเวอร์ชัน 1.102.2 โดยไฟล์สำหรับ amd64 มีชื่อว่า tailscale_1.102.2_amd64.tgz คุณต้องติดตั้งโปรแกรม tailscale และ tailscaled ด้วยตนเอง และรัน daemon ภายใต้ systemd ด้วยตนเอง สิ่งที่ต้องแลกคือการอัปเกรด: จะไม่มีแพ็กเกจ apt คอยดึงเวอร์ชันใหม่ให้ ดังนั้นการอัปเดตแต่ละครั้งต้องทำด้วยตนเอง คลังซอฟต์แวร์ของ Ubuntu ไม่มีแพ็กเกจ tailscale ของตนเอง ดังนั้น sudo apt install tailscale บนเครื่องที่ไม่มี repository ของผู้ผลิตจะหยุดทำงานที่ E: Unable to locate package tailscale