- Nomad Network คือเครื่องมือสื่อสารแบบเมชออฟกริดสำหรับสร้างแพลตฟอร์มการสื่อสารส่วนตัวที่ยืดหยุ่น ซึ่งผู้ใช้เป็นเจ้าของและควบคุมเองโดยตรง โดยไม่ต้องมีการสมัครใช้งาน ข้อกำหนดการใช้บริการ การส่งข้อมูล หรือผู้อนุมัติสิทธิ์
- สร้างบน LXMF และ Reticulum โดยให้ความสามารถของเครือข่ายเมชแบบเข้ารหัสและการกำหนดเส้นทางข้อความแบบ P2P ทำงานได้บนสื่อสื่อสารหลากหลาย ตั้งแต่ packet radio ไปจนถึงใยแก้วนำแสง
- ใช้งานได้แม้ไม่มีอินเทอร์เน็ตสาธารณะ, IP หรือ Ethernet และสามารถทำงานบน packet radio, LoRa, serial line ได้ โดยมีกรณีใช้งานบนลิงก์วิทยุ 300bps ด้วย Reticulum มาแล้ว
- ฟีเจอร์ประกอบด้วยการส่งข้อความแบบเข้ารหัส, การสื่อสารแบบเมชที่ไม่ต้องตั้งค่า, ที่เก็บข้อความแบบกระจายศูนย์และเข้ารหัสสำหรับผู้ใช้ออฟไลน์, โหนดโฮสต์หน้าเว็บและไฟล์, เบราว์เซอร์แบบข้อความ และการแคชหน้าเว็บ
- ปัจจุบันเป็น ซอฟต์แวร์เบต้า แม้พัฒนาขึ้นโดยคำนึงถึงแนวทางปฏิบัติที่ดีด้านการเข้ารหัส แต่ยังไม่ได้รับการตรวจสอบความปลอดภัยจากภายนอก และอาจมีบั๊กที่ทำลายความเป็นส่วนตัวได้
โมเดลการสื่อสารที่ Nomad Network มอบให้
- Nomad Network ช่วยให้ผู้ใช้สร้างแพลตฟอร์มการสื่อสารส่วนตัวที่ยืดหยุ่น ซึ่งผู้ใช้ควบคุมและเป็นเจ้าของได้อย่างสมบูรณ์
- ไม่ต้องสมัครใช้งาน ยอมรับข้อกำหนด ส่งข้อมูล หรือมีผู้อนุมัติสิทธิ์หรือ gatekeeper
- repository นี้เป็น mirror สาธารณะ โดยการพัฒนาจริงกำลังดำเนินอยู่ที่อื่น
- หากต้องการไคลเอนต์ LXMF ที่มีอินเทอร์เฟซผู้ใช้แบบกราฟิก สามารถใช้ Sideband สำหรับ Linux, Android, macOS ได้
เทคโนโลยีพื้นฐานและสื่อเครือข่าย
- Nomad Network สร้างอยู่บน LXMF และ Reticulum
- ทั้งสองโปรเจกต์ให้ ความสามารถของเครือข่ายเมชแบบเข้ารหัส และ การกำหนดเส้นทางข้อความแบบ P2P ที่ Nomad Network พึ่งพา
- ด้วยพื้นฐานนี้ โปรแกรมจึงใช้ได้กับสื่อสื่อสารหลากหลายมาก ตั้งแต่ packet radio ไปจนถึงใยแก้วนำแสง
- ทำงานได้แม้ไม่มีการเชื่อมต่ออินเทอร์เน็ตสาธารณะ และเครือข่าย IP หรือ Ethernet ก็ไม่ใช่ข้อกำหนดจำเป็น
- ใช้งานได้ด้วยเพียง packet radio, LoRa, serial line
- หากต้องการ สามารถ bridge เครือข่ายที่แยกออกมาเข้ากับอินเทอร์เน็ตหรือ Ethernet ส่วนตัวได้
- สามารถสร้างเครือข่ายที่ทำงานอยู่บนอินเทอร์เน็ตทั้งหมดได้เช่นกัน
- เนื่องจากใช้ Reticulum จึงมีประสิทธิภาพแม้บนสื่อที่มีแบนด์วิดท์ต่ำมาก และเคยใช้งานสำเร็จบน ลิงก์วิทยุ 300bps
ฟีเจอร์หลัก
- ให้บริการ การส่งข้อความแบบเข้ารหัส บน packet radio, LoRa, WiFi และอื่น ๆ ที่ Reticulum รองรับ
- รองรับการสื่อสารแบบเมชแบบ ไม่ต้องตั้งค่า และอาศัยโครงสร้างพื้นฐานขั้นต่ำ
- มี ที่เก็บข้อความแบบกระจายศูนย์และเข้ารหัส สำหรับเก็บข้อความให้ผู้ใช้ออฟไลน์
- โหนดที่เชื่อมต่อได้สามารถโฮสต์หน้าเว็บและไฟล์ได้
- สามารถสร้างหน้าเว็บฝั่งโหนดด้วย PHP, Python, bash เป็นต้น
- มี เบราว์เซอร์แบบข้อความ ในตัวสำหรับโต้ตอบกับคอนเทนต์ของโหนด
- มีภาษามาร์กอัปที่ใช้งานง่ายและประหยัดแบนด์วิดท์สำหรับเขียนหน้าเว็บ
- รองรับการแคชหน้าเว็บในเบราว์เซอร์
การติดตั้งและการเรียกใช้งาน
- วิธีติดตั้งที่ง่ายที่สุดคือใช้
pip
pip install nomadnet
nomadnet
nomadnet --daemon
nomadnet --help
- บนระบบปฏิบัติการที่บล็อกการติดตั้งแพ็กเกจของผู้ใช้ทั่วไป สามารถเพิ่มการตั้งค่าต่อไปนี้ในส่วน
[global] ของ ~/.config/pip/pip.conf เพื่อคืนพฤติกรรมของ pip
[global]
break-system-packages = true
- หากต้องการติดตั้งในสภาพแวดล้อมที่แยกออกมา สามารถใช้
pipx ได้
pipx install nomadnet
pipx install rns
pipx install lxmf
nomadnet
nomadnet --daemon
nomadnet --help
- หากเพิ่งติดตั้งโปรแกรมด้วย
pip เป็นครั้งแรกบนระบบ และคำสั่งเรียกใช้งานไม่ถูกรับรู้ อาจต้องรีบูตระบบแล้วลองอีกครั้ง
- เมื่อเรียกใช้โปรแกรมครั้งแรก จะแสดง Guide section ที่มีข้อมูลจำเป็นสำหรับเริ่มใช้งาน
การใช้ packet radio, LoRa และ testnet
- หากต้องการใช้ Nomad Network บน packet radio หรือ LoRa ต้องตั้งค่าการติดตั้ง Reticulum ให้ใช้อุปกรณ์ packet radio TNC หรือ LoRa ที่เกี่ยวข้อง
- หากต้องการทดลองโดยไม่สร้างเครือข่ายกายภาพเอง สามารถเชื่อมต่อกับ Unsigned.io RNS Testnet ผ่านอินเทอร์เน็ตได้
- บน testnet มีการใช้งาน Nomad Network และ LXMF อยู่แล้วบางส่วน
- หลังเชื่อมต่อ ให้รัน
nomadnet สักระยะเพื่อรับ announce จากโหนดอื่นที่โฮสต์หน้าเว็บหรือบริการ
- โหนด testnet ที่สามารถลองเชื่อมต่อโดยตรงได้:
abb3ebcd03cb2388a838e70c001291f9: Dublin Hub Testnet Node
ea6a715f814bdc37e56f80c34da6ad51: Frankfurt Hub Testnet Node
- หากต้องการสำรวจหน้าเว็บของโหนดที่ยังไม่เป็นที่รู้จัก ให้เปิดกล่องโต้ตอบ URL ด้วย
Ctrl+U ในส่วน Network ของโปรแกรม ป้อนที่อยู่ แล้วเลือก Go หรือกด Enter
- NomadNet จะพยายามค้นหาและเชื่อมต่อกับโหนดที่ร้องขอ
Android และ Docker
- บน Android สามารถติดตั้ง Nomad Network โดยใช้ Termux ได้ แต่ต้องใช้คำสั่งมากกว่าการติดตั้งแบบบรรทัดเดียวทั่วไป
- ขั้นตอนมีบันทึกไว้ใน Android Installation ของ Reticulum Manual
- หลังติดตั้ง Reticulum แล้ว สามารถติดตั้ง Nomad Network ด้วย
pip ได้
- หากต้องการแอปกราฟิก Android แบบ native สามารถใช้ Sideband ได้
- Nomad Network ถูกเผยแพร่เป็น Docker image โดยอัตโนมัติบน GitHub Packages
- แท็ก image คือ
master สำหรับคอมมิตล่าสุด หรือเป็นรูปแบบหมายเลขเวอร์ชันของรีลีสเฉพาะ
- ตัวอย่างแท็กเวอร์ชันคือ
0.2.0
docker pull ghcr.io/markqvist/nomadnet:master
docker run -it ghcr.io/markqvist/nomadnet:master --textui
docker run -i ghcr.io/markqvist/nomadnet:master --daemon --console
เครื่องมือ ส่วนขยาย และ roadmap
- Nomad Network เป็นแพลตฟอร์มที่ยืดหยุ่นและขยายได้ โดยมีเครื่องมือจากชุมชนและส่วนขยายฝั่งโหนด
- สามารถขอความช่วยเหลือ อภิปราย และแชร์ไอเดียได้ที่ Nomad Network discussions pages
- ฟีเจอร์หลักใหม่ใน roadmap การพัฒนารวมถึง bulletin และ discussion thread ที่แพร่กระจายไปทั่วทั้งเครือข่าย, แผนที่แบบร่วมมือ และการแชร์ข้อมูลเชิงภูมิสารสนเทศ
- รายการปรับปรุงและแก้ไขประกอบด้วยการแสดงสถานะลิงก์, ปุ่มลัดสำหรับย้ายเมนู, การแชร์โหนด, การแก้ปัญหา editor ภายในบนบาง OS, กลไกลองส่งข้อความที่ล้มเหลวซ้ำ เป็นต้น
สถานะความปลอดภัยและข้อควรระวัง
- ควรมองว่า Nomad Network เป็น ซอฟต์แวร์เบต้า
- แม้สร้างขึ้นโดยให้ความสำคัญอย่างมากกับแนวทางปฏิบัติที่ดีด้านการเข้ารหัส แต่ยังไม่ได้รับการตรวจสอบความปลอดภัยจากภายนอก
- อาจมีบั๊กที่ทำลายความเป็นส่วนตัวได้
- มีคำแนะนำให้ติดต่อหากต้องการช่วยตรวจสอบหรือสนับสนุน
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
อาจไม่เป็นเช่นนั้นถ้า NextNav ได้ครอบครองส่วนใหญ่ของย่านความถี่ ISM 900MHz: https://news.ycombinator.com/item?id=41226802
https://en.wikipedia.org/wiki/ISM_radio_band
สามารถส่งความคิดเห็นได้ที่นี่: https://www.fcc.gov/ecfs/search/docket-detail/24-240
มีเธรดที่กำลังคุยกันอยู่เกี่ยวกับเรื่องนี้:
Private, Secure and Uncensorable Messaging over a LoRa Mesh (2022) - https://news.ycombinator.com/item?id=41256623 - สิงหาคม 2024, 21 ความคิดเห็น
เครือข่าย Reticulum ที่เป็นพื้นฐานซึ่งสิ่งนี้ใช้นั้นค่อนข้างน่าสนใจ เพราะรองรับสื่อส่งข้อมูลได้มากมาย เช่น packet radio
Reticulum สามารถทำงานบนสื่อใดก็ได้ ตราบใดที่มี throughput มากกว่า 5 บิตต่อวินาทีและมี MDU 500 ไบต์ ไม่เพียงทำงานบน carrier ได้เป็นร้อยแบบ เช่น LoRa, BLE, packet radio, overlay network อย่าง Tor หรือ I2P เท่านั้น แต่ carrier เหล่านี้ยังสามารถเป็นส่วนหนึ่งของเครือข่ายเดียวกันได้ด้วย
ผมเคยทำ proof of concept แบบเร็ว ๆ ที่ทำงานบนวิทยุ HF โดยตั้งค่าโหนดสองตัวที่อยู่ห่างกันประมาณ 144 กม. ทั้งสองฝั่งใช้ ICOM-7300 และ Raspberry Pi 5 เพื่อรันซอฟต์แวร์โมเด็มที่รับแพ็กเก็ต Reticulum แล้วส่งผ่านวิทยุ: https://www.youtube.com/watch?v=blwNVumLujc
โหนด 1 อยู่กลางแจ้ง ส่วนโหนด 2 อยู่ที่บ้าน ที่โหนด 2 ผมตั้งค่าอินเทอร์เฟซหนึ่งสำหรับโมเด็ม HF และอีกอินเทอร์เฟซหนึ่งที่เชื่อมต่อกับ TCP testnet ดังนั้นโหนด 1 จึงสามารถเข้าถึงเพียร์ทั้งหมดบน TCP testnet ได้
ยังมีวิดีโอแนะนำสั้น ๆ ที่อธิบายแนวคิดพื้นฐานของ Reticulum ด้วย: https://www.youtube.com/watch?v=q8ltLt5SK6A
แก้ไข: ไม่ใช่ ดูเหมือนจะตั้งค่าในระดับ global ไม่ใช่แยกตามลิงก์
แนวคิดน่าสนใจ แต่ปัญหาคือการสื่อสารกับคนที่ใช้อุปกรณ์ iOS/iPadOS โดยปกติข้อจำกัดของระบบปฏิบัติการทำให้ใช้แอปแบบนี้ไม่ได้[1] และด้วย network effect ก็ยิ่งทำให้คนส่วนใหญ่ใช้งานได้ยากมาก
[1] https://forums.developer.apple.com/forums/thread/685525
แน่นอนว่ายังมีปัญหาเรื่องการรันเบื้องหลัง แต่ก็มีแนวทางแก้ที่เป็นไปได้ เช่น ให้ Reticulum ทำงานทั้งหมดบน RNode และกำลังมีการทำงานในส่วนนี้ค่อนข้างต่อเนื่อง
ไม่เข้าใจว่าคนเราจะรู้สึกว่ามีความเป็นส่วนตัวได้อย่างไร ในเมื่อยังพิมพ์ด้วยคีย์บอร์ดหน้าจอสัมผัสบนอุปกรณ์ Android หรือ iOS
ถ้าต้องการความเป็นส่วนตัวจริง ๆ ควรใช้คีย์บอร์ด/เทอร์มินัลที่ทำงานด้วยโค้ด bare-metal สำหรับจับและแสดงข้อความ เข้ารหัส และส่งแพ็กเก็ตที่เข้ารหัส โดยส่ง blob ที่เข้ารหัสผ่านไคลเอนต์ Reticulum
ตัวอย่างเช่น อาจเป็น serial แบบมีสายหรือ Bluetooth และอาจมี MCU แยกต่างหากจัดการ networking กับโปรโตคอลได้ ประเด็นสำคัญคือการรันโค้ดที่ตรวจสอบแล้วและไม่มี binary blob บน bare-metal แล้วส่งเฉพาะ payload ที่เข้ารหัสไปยังโหนดเครือข่าย ถ้าเป็นไปได้ ลิงก์ serial แบบ TTL ระหว่างคอนโทรลเลอร์เทอร์มินัลกับคอนโทรลเลอร์เครือข่ายจะเหมาะกว่า
สงสัยว่า NomadNet/Reticulum เปรียบเทียบกับ Yggdrasil, IPFS, Nostr, Scuttlebutt อย่างไร
Scuttlebutt: Reticulum เป็น network stack ที่ route ข้อมูลแบบเรียลไทม์ ไม่ใช่โซเชียลเน็ตเวิร์กแบบกระจายศูนย์
Nostr: เหมือนกับ Scuttlebutt
IPFS: Reticulum ไม่ได้จัดเก็บข้อมูล แต่ส่งข้อมูลเท่านั้น อย่างไรก็ตาม บางโปรโตคอลที่ทำงานบน Reticulum เช่น LXMF มีฟังก์ชันจัดเก็บข้อความชั่วคราวให้เลือกใช้ได้
Yggdrasil เป็นกรณีที่ใกล้เคียงกับ Reticulum ที่สุดในบรรดาที่กล่าวมา แต่จากการค้นคร่าว ๆ ไม่พบรายละเอียดเกี่ยวกับวิธีการทำงาน ตอนนี้ดูเหมือนจะทำงานได้เฉพาะบน IPv6 โดยใช้ tunnel ของ IPv4 อยู่บ้าง ซึ่งต่างจาก Reticulum ตรงที่ Reticulum ทำงานบนอะไรก็ได้
ถ้าสนใจ แนะนำให้อ่านอย่างน้อย http://reticulum.network/manual/understanding.html เพื่อดูว่า Reticulum ทำงานอย่างไร
โน้ตเรื่อง usability จากการกวาดตาดูเร็ว ๆ และอาจยังไม่เข้าใจดีนัก
การแสดงตัวเลขที่ใช้เป็นที่อยู่ของ identity ไว้ข้างหน้าในแบบที่ผู้ใช้พอเข้าใจความหมายได้ ดีกว่าส่วนใหญ่ วิธีที่จัดการ identity กับ trust ร่วมกันในกล่องสนทนาก็ดูค่อนข้างเข้าใจได้ การมีหมวดหมู่อื่นนอกจาก trust/untrusted (unknown) เป็นไอเดียที่ดี แต่ไม่ได้เข้าใจได้ทันที ผู้ใช้ต้องได้รับการอธิบายว่า "trust" ในบริบทนี้หมายถึงอะไรกันแน่
ผู้ใช้ไม่จำเป็นต้องรู้ถึงขั้นว่ากำลังใช้ Curve25519 แค่รู้ว่ามีการเข้ารหัสรูปแบบหนึ่งเกิดขึ้นก็พอ
การแสดงหมายเลข identity เป็นเลขฐาน 16 เป็นตัวเลือกที่แย่ที่สุดในบรรดาฐานที่เป็นไปได้ เลขฐาน 10 ที่คุ้นเคยสำหรับการระบุตัวตน หรือ base32 ที่สั้นกว่าน่าจะดีกว่า และควรแสดงหมายเลข identity อย่างสม่ำเสมอด้วยการจัดกลุ่มที่ช่วยให้อ่านง่าย เช่น 4 กลุ่ม กลุ่มละ 5 หลัก
อ่านแล้วตื่นเต้นมาก การสร้าง mesh network แบบ off-grid เป็นสมมติฐานหลักของนิยาย SF ของผมเรื่อง 'Mesh': https://inkican.com/mesh-middle-grade-scifi-thriller/
นึกถึง Meshtastic แต่ Nomad ดูเหมือนเป็นสำหรับ PC ส่วน Meshtastic เป็นสำหรับ ไมโครคอนโทรลเลอร์
https://meshtastic.org/
ลองค้นแล้วแต่หาไม่เจอ อันนี้เคยผ่านการ audit ไหม?