Yggdrasil Network เป็น IPv6 Overlay Network มุ่งสร้าง Decentralized Encrypted Mesh Network โดยจัดการ Network เป็น Leaves ใน Binary Tree เป็น Overlay Network ทำหน้าที่ VPN ให้ User ติดต่อกันปลอดภัย
ฟรี ติดตั้งง่าย รองรับ Platform 多样 → ทางเลือกแรงสำหรับคนอยาก Private Secure Connection
Mesh Networking และ Yggdrasil
Yggdrasil ทำ Mesh Networking โดยแทน Network ด้วย Tree ของ Nodes ที่เชื่อมต่อกัน Nodes เป็น Relay ให้กัน → True Mesh Network
โครงสร้างนี้ช่วยหา Machine/Website ได้ง่าย ติดต่อ User อื่นโดยไม่ต้อง Central Server Route Traffic
ทำไมต้องใช้ Yggdrasil
จุดขาย: เปลี่ยนวิธี Route Data บน Internet โดย Assume สิ่งเหล่านี้:
- ทุก Node เชื่อมต่อ Node อื่นอย่างน้อย 1 ตัว
- ทุก Node Relay Data ให้อีก Node ได้โปร่งใส
- ทุก Node Broadcast Nodes ที่เชื่อมต่อตัวเอง
Assumptions สร้างโครงสร้าง Rigid/Predictable แต่ Flexible เช่น ทำ Machine Publicly Accessible ได้โดย Connect แค่ 1 Public Node → Public Node นั้นเชื่อม Node อื่น → User อื่น Peer เข้ามาเจอคุณ
ยังสร้าง Subnetwork ของ Local Machines ได้ → ใช้เป็น VPN ได้ดี
วิธีติดตั้ง Yggdrasil
รองรับหลาย Platform/OS รวม Linux Distro ส่วนใหญ่ แต่ไม่อยู่ใน Default Repo ทุกตัว บางตัวต้อง Add Source ก่อน
Debian/Ubuntu
- Add GPG Key:
gpg --fetch-keys https://neilalexander.s3.dualstack.eu-west-2.amazonaws.com/deb/key.txt→gpg --export 569130E8CA20FBC4CB3FDE555898470A764B32C9 | sudo apt-key add - - Add Repo:
echo 'deb https://neilalexander.s3.dualstack.eu-west-2.amazonaws.com/deb/ debian yggdrasil' | sudo tee /etc/apt/sources.list.d/yggdrasil.list - Update & Install:
sudo apt update && sudo apt install yggdrasil
Fedora
อยู่ใน Community Packages แล้ว: sudo dnf copr enable rany/yggdrasil && sudo dnf install yggdrasil
Arch Linux
อยู่ใน Community Repo: sudo pacman -Syu yggdrasil
การตั้งค่า (Configuration)
แก้ไข /etc/yggdrasil.conf ด้วย nano: sudo nano -w /etc/yggdrasil.conf
หากไม่มีไฟล์ สร้างใหม่: su --command="yggdrasil -genconf > /etc/yggdrasil.conf"
เชื่อมต่อ Public Node
2 โหมด:
- Connect Public Node → Machine Discoverable
- Connect หลาย Machines → Private VPN
โหมดแรก: เพิ่ม Public Node Address ใน Block Peers: ของ Config
Peers: [ tls://address.domain:port tcp://1.2.3.4:port socks://[aaaa:...:ffff]/[1111:...:9999] ]
Peers Block = List ของ Nodes ที่จะ Connect ใช้ TLS/SOCKS (Encrypted) หรือ TCP (Unencrypted สำหรับ Embedded Devices)
Copy Node Links จาก Community Yggdrasil ใส่ใน Peers → Enable/Start Service:
sudo systemctl enable yggdrasil sudo systemctl start yggdrasil
Test การเชื่อมต่อที่ Webpage นี้
สร้าง Private Network ของตัวเอง
ต้องมี:
- Publicly Discoverable Machine (Local ไม่มี CG-NAT หรือ Cheap VPS)
- Machines หลายเครื่อง Network ต่างกัน ที่ติดต่อโดยตรงไม่ได้
ตั้งค่า Public Node (Personal)
แก้ Block Listen: ใน Config ของ Public Machine
Listen: [ tls://your.ipv4.address.here:12345 tcp://[your:ipv6:address:here]:12345 ]
รับ Connection Port 12345 IPv4 (TLS) และ IPv6 (TCP Unencrypted) → Enable/Start Service
Address Discovery และ Restrict Access
Default: ยอมรับ Connection ทุกตัวที่ Port ถูกต้อง → ต้อง Whitelist Public Key
Yggdrasil Node Broadcast Public Key Unique (Gen ตอน Install) ใช้ Secure และสร้าง Address
ดู Address/Key: sudo yggdrasilctl getself → IPv6 เริ่ม 20x:... + Public Key
ตั้งค่า Public Node ให้ Restrict Access
แก้ Block AllowedPublicKeys: ใส่ Public Keys ที่อนุญาต
AllowedPublicKeys: [ "publickey1" "publickey2" "publickey3" ]
Restart Service: sudo systemctl restart yggdrasil
ตอนนี้มี Private VPN ของตัวเองแล้ว!
คำถามที่พบบ่อย (FAQ)
1. ใส่ Yggdrasil Address เพื่อนใน Config แต่ Connect ไม่ได้?
สาเหตุหลัก:
- ทั้งคู่อยู่หลัง NAT → ไม่ Connect ตรงได้
- Peers/Listen Blocks Config ผิด
แก้: ต้องมีอย่างน้อย 1 Machine Publicly Accessible Port Forward ถูกต้อง และ Peers/Listen ใส่ Real IPv4/IPv6 Address ของ Peer ไม่ใช่ Yggdrasil Address
2. เช็คว่า Machines Peering กันได้จริงไหม?
รัน: sudo yggdrasilctl getpeers → แสดง Peers ที่เชื่อมต่ออยู่ และตำแหน่งใน Tree
3. สร้าง Yggdrasil Key/Address แบบ Strong ได้ไหม?
ได้! ใช้ Address Miner (Brute-force Public Key Pair ที่มี Leading Zeros) โปรแกรมยอดนิยม: Simple Yggdrasil Generator (SYG) Version ล่าสุดเขียน C++