เครือข่าย Yggdrasil เป็นเครือข่ายโอเวอร์เลย์ IPv6 ที่มีจุดมุ่งหมายเพื่อสร้างเครือข่ายเมชที่มีการกระจายอำนาจและเข้ารหัส ทำได้โดยถือว่าเครือข่ายเหมือนใบไม้ในไบนารีทรี เนื่องจากเป็นเครือข่ายโอเวอร์เลย์ Yggdrasil ยังทำหน้าที่เป็นเครือข่ายส่วนตัวเสมือน (VPN) ที่ช่วยให้ผู้ใช้สามารถโต้ตอบซึ่งกันและกันได้อย่างปลอดภัย
นอกจากนี้ Yggdrasil นั้นฟรี ตั้งค่าได้ง่าย และยังมีให้ใช้งานในหลากหลายแพลตฟอร์ม สิ่งนี้ทำให้ Yggdrasil เป็นทางเลือกที่ดีสำหรับผู้ที่สนใจที่จะมีการเชื่อมต่อที่ปลอดภัยและเป็นส่วนตัวกับผู้อื่น
Mesh Networking และ Yggdrasil คืออะไร
Yggdrasil บรรลุการสร้างเครือข่ายแบบเมชโดยแสดงเครือข่ายเป็นแผนผังของโหนดที่เชื่อมต่อถึงกัน โดยโหนดเหล่านี้สามารถทำหน้าที่เป็นรีเลย์ไปยังโหนดอื่นได้ สิ่งนี้ทำให้ Yggdrasil เป็นเครือข่ายตาข่ายที่แท้จริง
นอกจากนี้ โครงสร้างของเครือข่ายยังช่วยให้ Yggdrasil ค้นหาเครื่องหรือเว็บไซต์ที่คุณต้องการเยี่ยมชมได้อย่างง่ายดาย ในทางกลับกัน การทำเช่นนี้จะทำให้คุณสามารถโต้ตอบกับผู้ใช้รายอื่นโดยไม่จำเป็นต้องใช้เซิร์ฟเวอร์กลางเพื่อกำหนดเส้นทางการรับส่งข้อมูลให้กับคุณ
เหตุใดจึงควรใช้ Yggdrasil
จุดขายหลักของ Yggdrasil คือการเปลี่ยนแปลงวิธีการส่งข้อมูลผ่านอินเทอร์เน็ต ทำได้โดยสมมติว่าบางสิ่งเกี่ยวกับสถานะเริ่มต้นของเครือข่ายดังกล่าว:
- โหนดทั้งหมดเชื่อมต่อกับโหนดอื่นอย่างน้อยหนึ่งโหนด
- แต่ละโหนดสามารถถ่ายทอดข้อมูลไปยังโหนดอื่นได้อย่างโปร่งใส
- แต่ละโหนดสามารถเผยแพร่โหนดที่เชื่อมต่อได้
สมมติฐานเหล่านี้สร้างโครงสร้างที่ทั้งเข้มงวดและคาดเดาได้ แต่ยังมีความยืดหยุ่นสูงอีกด้วย ตัวอย่างเช่น คุณสามารถทำให้เครื่องของคุณเข้าถึงได้แบบสาธารณะโดยเชื่อมต่อกับโหนดสาธารณะเพียงโหนดเดียว โหนดสาธารณะนี้เชื่อมต่อกับโหนดอื่นแล้ว จากที่นั่น ผู้ใช้รายอื่นสามารถเพียร์กับโหนดนั้นเพื่อเชื่อมต่อกับคุณได้
ไม่เพียงเท่านั้น Yggdrasil ยังช่วยให้คุณสร้างเครือข่ายย่อยของเครื่องในเครื่องได้ ด้วยเหตุนี้ จึงมีประโยชน์อย่างมากหากคุณต้องการสร้าง VPN
วิธีการติดตั้ง Yggdrasil
ตามที่กล่าวไว้ข้างต้น Yggdrasil มีให้บริการในหลายแพลตฟอร์มและระบบปฏิบัติการ ซึ่งรวมถึงลีนุกซ์ส่วนใหญ่ด้วย
อย่างไรก็ตาม Yggdrasil ไม่ได้อยู่ในที่เก็บเริ่มต้นเสมอไป ดังนั้น การแจกแจงบางรายการต้องการให้คุณรวมแหล่งที่มาก่อนที่จะติดตั้ง
การติดตั้ง Yggdrasil ใน Debian และ Ubuntu
ตัวอย่างเช่น หากคุณต้องการติดตั้ง Yggdrasil ใน Debian และ Ubuntu คุณต้องเพิ่มคีย์ GPG ที่เป็นทางการลงใน apt ก่อน โดยเรียกใช้คำสั่งต่อไปนี้:
gpg --fetch-keys https://neilalexander.s3.dualstack.eu-west-2.amazonaws.com/deb/key.txt gpg --export 569130E8CA20FBC4CB3FDE555898470A764B32C9 | sudo apt-key add -
จากที่นั่น คุณต้องเพิ่มที่เก็บลงในรายการแหล่งที่มาที่ apt ค้นหาในแพ็คเกจ:
echo 'deb https://neilalexander.s3.dualstack.eu-west-2.amazonaws.com/deb/ debian yggdrasil' | sudo tee /etc/apt/sources.list.d/yggdrasil.list
เมื่อเสร็จแล้วให้อัพเดต apt และติดตั้งโปรแกรม ทำได้โดยเรียกใช้โค้ดบรรทัดเดียวนี้:
sudo apt update && sudo apt install yggdrasil
การติดตั้ง Yggdrasil ใน Fedora
ตรงกันข้ามกับ Debian และ Ubuntu กระบวนการติดตั้ง Yggdrasil ใน Fedora นั้นเรียบง่าย เนื่องจากเป็นส่วนหนึ่งของ “แพ็คเกจชุมชน” ของ Fedora แล้ว
ดังนั้น การติดตั้งโปรแกรมจึงง่ายพอๆ กับการรันคำสั่ง:
sudo dnf copr enable rany/yggdrasil sudo dnf install yggdrasil
การติดตั้ง Yggdrasil ใน Arch Linux
สุดท้ายนี้ การติดตั้ง Yggdrasil ใน Arch Linux ก็ทำได้ง่ายมากเช่นกัน เช่นเดียวกับ Fedora มันถูกรวมอยู่ในแหล่งเก็บข้อมูลชุมชนของ Arch แล้ว
ดังนั้น คุณสามารถติดตั้งโปรแกรมผ่าน pacman:
sudo pacman -Syu yggdrasil
การกำหนดค่าการติดตั้งของคุณ
เมื่อเสร็จแล้ว การตั้งค่า Yggdrasil เพื่อเชื่อมต่อกับโหนดนั้นง่ายมาก โดยคุณจะต้องแก้ไข “/etc/yggdrasil.conf” เพื่อกำหนดค่าการทำงานของโปรแกรมเท่านั้น หากต้องการเข้าถึง ให้ใช้ nano:
sudo nano -w /etc/yggdrasil.conf
Yggdrasil จะสร้างไฟล์นี้หลังการติดตั้ง อย่างไรก็ตาม หากไม่เป็นเช่นนั้น คุณสามารถเรียกใช้คำสั่งนี้เพื่อสร้างไฟล์การกำหนดค่าใหม่:
su --command="yggdrasil -genconf > /etc/yggdrasil.conf"
เชื่อมต่อกับโหนดสาธารณะ
ดังที่เราได้กล่าวไว้ข้างต้น มีสองวิธีในการใช้โปรแกรม:
- เชื่อมต่อกับโหนดสาธารณะเพื่อให้ค้นพบเครื่องของคุณได้
- เชื่อมต่อเครื่องจักรจำนวนมากเข้าด้วยกันในเครือข่ายส่วนตัวเสมือน
สำหรับอันแรก ให้เพิ่มที่อยู่ของโหนดสาธารณะในไฟล์ “/etc/yggdrasil.conf” ของคุณโดยแก้ไข Peers:
บล็อกในไฟล์กำหนดค่านั้น
นี่คือส่วนในการกำหนดค่าที่กำหนดโหนดที่คุณต้องการเชื่อมต่อ ด้วยเหตุนี้ เครื่องที่ระบุในที่นี้จึงควรเปิดเผยต่อสาธารณะและเชื่อมต่อได้จากอินเทอร์เน็ต
ให้พิจารณาตัวอย่างต่อไปนี้:
{ # List of connection strings for outbound peer connections in URI format, # e.g. tls://a.b.c.d:e or socks://a.b.c.d:e/f.g.h.i:j. These connections # will obey the operating system routing table, therefore you should # use this section when you may connect via different interfaces. Peers: [ tls://address.domain:port tcp://1.2.3.4:port socks://[aaaa:...:ffff]/[1111:...:9999] ] [...]
บล็อกเพียร์เป็นรายการพื้นฐานของโหนดทั้งหมดที่คุณต้องการเชื่อมต่อ
สามารถสร้างการเชื่อมต่อที่เข้ารหัสโดยใช้ TLS และ SOCKS หรือการเชื่อมต่อที่ไม่ได้เข้ารหัสโดยใช้ TCP ส่วนหลังนี้มีประโยชน์สำหรับการเชื่อมต่ออุปกรณ์ฝังตัวขนาดเล็กที่ไม่รองรับ TLS แต่มีการเชื่อมต่อเครือข่ายพื้นฐาน
ด้วยวิธีนี้ คุณจะเชื่อมต่อกับเครือข่าย Yggdrasil สาธารณะได้โดยคัดลอกลิงก์โหนดบางส่วนที่ชุมชนมอบให้
เมื่อเสร็จแล้ว คุณสามารถเปิดใช้งานโปรแกรมได้โดยใช้คำสั่งต่อไปนี้:
sudo systemctl enable yggdrasil sudo systemctl start yggdrasil
คุณสามารถทดสอบว่าคุณได้เชื่อมต่อกับเครือข่ายอย่างถูกต้องหรือไม่โดยไปที่หน้าเว็บนี้
การสร้างเครือข่ายส่วนตัวของคุณเอง
ในทางกลับกัน การสร้างเครือข่ายส่วนตัวอาจเกี่ยวข้องเล็กน้อย แต่ก็ยังค่อนข้างง่าย ในการสร้างเครือข่าย Yggdrasil ส่วนตัว คุณจะต้องมีสิ่งต่อไปนี้:
- เครื่องที่เปิดเผยต่อสาธารณะ นี่อาจเป็นเครื่องในเครื่องที่ไม่ถูกบล็อกโดย CG-NAT หรือเซิร์ฟเวอร์ส่วนตัวเสมือนราคาถูก
- จำนวนเครื่องที่อยู่ในเครือข่ายต่างๆ ที่ไม่สามารถพูดคุยกันโดยตรงได้
การกำหนดค่าโหนดสาธารณะส่วนบุคคลของคุณ
ในการสร้างเครือข่าย Yggdrasil ส่วนตัว คุณต้องอนุญาตให้เครื่องสาธารณะของคุณเชื่อมต่อกับโหนดอื่นก่อน ให้แก้ไข Listen:
บล็อกของ “/etc/yggdrasil.conf” ของเครื่องสาธารณะ
ตัวอย่างเช่น โหนดที่กำหนดค่าให้ใช้การเชื่อมต่อสาธารณะอาจมีลักษณะดังนี้:
[...] # Listen addresses for incoming connections. You will need to add # listeners in order to accept incoming peerings from non-local nodes. # Multicast peer discovery will work regardless of any listeners set # here. Each listener should be specified in URI format as above, e.g. # tls://0.0.0.0:0 or tls://[::]:0 to listen on all interfaces. Listen: [ tls://your.ipv4.address.here:12345 tcp://[your:ipv6:address:here]:12345 ] [...]
เราได้ตั้งค่าให้โหนดรับการเชื่อมต่อขาเข้าในพอร์ต 12345 จากทั้ง IPv4 และ IPv6 นอกจากนี้ การเชื่อมต่อ IPv4 จะถูกห่อด้วย TLS ในขณะที่ IPv6 อยู่ใน TCP ที่ไม่มีการเข้ารหัส
จากที่นี่ เปิดใช้งานและเริ่มบริการ Yggdrasil เพื่อใช้การตั้งค่าของคุณ หลังจากนั้น การเชื่อมต่อกับโหนดนี้จะเหมือนกับการเชื่อมต่อกับโหนดสาธารณะ
การค้นหาที่อยู่และการจำกัดการเข้าถึง
โดยค่าเริ่มต้น โหนด Yggdrasil ที่สร้างขึ้นใหม่จะยอมรับการเชื่อมต่อที่เข้ามา หากใช้พอร์ตที่ถูกต้อง ในการสร้าง VPN ส่วนตัวอย่างแท้จริงสำหรับเครื่องของคุณ คุณต้องเพิ่มไปยังรายการที่อนุญาตพิเศษของคีย์สาธารณะ
โหนด Yggdrasil ทำงานโดยเผยแพร่คีย์สาธารณะที่ไม่ซ้ำกันซึ่ง Yggdrasil สร้างขึ้นเมื่อคุณติดตั้งครั้งแรก คีย์นี้ใช้เพื่อรักษาความปลอดภัยภายในเครือข่ายและสร้างที่อยู่ของคุณ
คุณสามารถตรวจสอบที่อยู่ Yggdrasil ได้โดยเรียกใช้คำสั่งนี้:
sudo yggdrasilctl getself
ซึ่งจะแสดงที่อยู่ IPv6 ที่ขึ้นต้นด้วย “20x:… ” สามารถใช้เชื่อมต่อโดยตรงกับเครื่องนั้นผ่าน Yggdrasil
นอกจากนี้ getself
คำสั่งจะแสดงคีย์สาธารณะของเครื่องด้วย นี่คือสิ่งที่คุณต้องสร้างรายการเครื่องที่อนุญาตในโหนดสาธารณะของคุณ
การกำหนดค่าโหนดส่วนบุคคลของคุณเพื่อจำกัดการเข้าถึง
ในการจำกัดการเข้าถึงโหนด Yggdrasil คุณต้องแก้ไข AllowedPublicKeys:
บล็อกในโหนดสาธารณะของคุณ “/etc/yggdrasil.conf” เพียงเพิ่มพับลิกคีย์ทั้งหมดที่คุณต้องการให้โหนดนี้ยอมรับ
ตัวอย่างเช่น นี่คือการกำหนดค่าสำหรับโหนดที่ยอมรับคีย์สาธารณะเพียงสามคีย์เท่านั้น:
# List of peer public keys to allow incoming peering connections # from. If left empty/undefined then all connections will be allowed # by default. This does not affect outgoing peerings, nor does it # affect link-local peers discovered via multicast. AllowedPublicKeys: [ "publickey1" "publickey2" "publickey3" ]
เมื่อเสร็จแล้ว คุณสามารถใช้การตั้งค่าของคุณโดยเริ่มบริการ Yggdrasil ใหม่:
sudo systemctl restart yggdrasil
ยินดีด้วย! ตอนนี้คุณมีความเข้าใจพื้นฐานเกี่ยวกับวิธีการทำงานของเครือข่าย Yggdrasil รวมถึงแนวคิดพื้นฐานในการเชื่อมต่อและกำหนดค่าเครือข่ายส่วนตัวแล้ว
หากการพูดคุยทั้งหมดนี้ทำให้คุณสงสัยว่าอินเทอร์เน็ตทำงานอย่างไร คุณสามารถอ่านบทความนี้เกี่ยวกับการดักจับแพ็กเก็ต TCP ด้วย tcpdump
คำถามที่พบบ่อย
1. ฉันได้เพิ่มที่อยู่ Yggdrasil ของเพื่อนลงในไฟล์การกำหนดค่าแล้ว แต่ไม่สามารถเชื่อมต่อกับเขาได้ ฉันทำอะไรผิด
อาจเกิดจากหลายสาเหตุ อย่างไรก็ตาม สาเหตุที่พบบ่อยที่สุดของปัญหานี้คือ:
- เครื่องทั้งสองเครื่องอยู่เบื้องหลัง NAT ดังนั้นจึงไม่สามารถสร้างการเชื่อมต่อโดยตรงระหว่างกัน
- The
Peers:
บล็อกและListen:
บล็อกใน “/etc/yggdrasil.conf” มีการกำหนดค่าไม่ถูกต้อง
สำหรับสาเหตุแรก คุณต้องตรวจสอบให้แน่ใจว่ามีเครื่องอย่างน้อยหนึ่งเครื่องที่สามารถเข้าถึงได้แบบสาธารณะ นอกจากนี้ คุณต้องตรวจสอบให้แน่ใจว่าพอร์ตที่คุณใช้มีการส่งต่อพอร์ตอย่างเหมาะสม และสามารถมองเห็นได้จากภายนอกเครือข่ายท้องถิ่นของคุณ
สำหรับสาเหตุที่สอง ตรวจสอบให้แน่ใจว่า Peers:
และ Listen:
บล็อกมี ที่อยู่ IPv4 หรือ IPv6 จริง ของเครื่องเพียร์และไม่ใช่ที่อยู่ Yggdrasil
2. ฉันจะรู้ได้อย่างไรว่าเครื่องของฉันมีการเพียร์ซึ่งกันและกันหรือไม่
คุณสามารถตรวจสอบได้อย่างง่ายดายว่าเครื่องของคุณมีการเพียร์ระหว่างกันหรือไม่โดยเรียกใช้คำสั่งนี้:
sudo yggdrasilctl getpeers
ซึ่งจะแสดงเพื่อนที่เชื่อมต่อกับคุณในปัจจุบันทั้งหมด รวมถึงตำแหน่งที่สัมพันธ์กันในแผนผังเครือข่าย Yggdrasil
3. เป็นไปได้ไหมที่จะสร้างคีย์และที่อยู่ Yggdrasil ที่รัดกุม
ใช่! คุณสามารถทำได้โดยใช้เครื่องมือขุดที่อยู่ นี่เป็นโปรแกรมง่ายๆ ที่จะคำนวณคู่คีย์สาธารณะที่มีเลขศูนย์จำนวนหนึ่งอยู่ข้างหน้าอย่างดุเดือด
โปรแกรมที่ใช้กันทั่วไปในการทำเช่นนี้คือ Simple Yggdrasil Generator (SYG) โดยมีเวอร์ชันล่าสุดเขียนด้วยภาษา C++