คู่มือ MAE Routing

ทุกอย่างที่ต้องรู้ในการตั้งเครือข่าย เพิ่มเครื่อง และกำหนดว่าใครเข้าถึงอะไรได้

ตัวโปรแกรมและคอนโซลเป็นภาษาอังกฤษ ชื่อเมนูและปุ่มในคู่มือนี้จึงเขียนเป็นภาษาอังกฤษตามที่เห็นบนจอ

หลักการทำงาน

แต่ละองค์กรได้เครือข่ายของตัวเอง พร้อมเซิร์ฟเวอร์ประสานงานของตัวเองที่ your-network.routing.maesuaisystem.com เซิร์ฟเวอร์นี้แจกคีย์ ที่อยู่ และการตั้งค่า แต่ไม่เคยรับส่งข้อมูลของคุณ

เครื่องเชื่อมถึงกันโดยตรงผ่าน WireGuard แม้อยู่หลัง NAT หรือไฟร์วอลล์ ถ้าเชื่อมตรงไม่ได้ ข้อมูลจะผ่านรีเลย์ของเราในกรุงเทพฯ โดยยังเข้ารหัสแบบ end-to-end รีเลย์จึงอ่านข้อมูลไม่ได้

ทุกเครื่องได้ที่อยู่ถาวรในช่วง 10.77.0.0/16 และชื่ออย่าง nas.your-network.mae.internal

สร้างเครือข่าย

  1. ไปที่หน้าสร้างเครือข่ายฟรี
  2. กรอกชื่อ อีเมล รหัสผ่าน และชื่อองค์กร
  3. ตั้งชื่อเครือข่าย (a-z, 0-9 และ -) ชื่อนี้จะกลายเป็น network-name.routing.maesuaisystem.com และเปลี่ยนภายหลังไม่ได้

คุณจะเป็นเจ้าของ (owner) และเข้าสู่คอนโซลผู้ดูแลทันที บัญชีเดียวอยู่ได้หลายองค์กร สลับองค์กรได้จากเมนูด้านบนของคอนโซล

เพิ่มอุปกรณ์

ติดตั้งแอปบนอุปกรณ์ แล้วลงชื่อเข้าใช้ด้วยชื่อเครือข่ายของคุณ ดูขั้นตอนทั้งหมดของ Windows, Linux และ Docker ได้ใน คู่มือการติดตั้ง ส่วนในคอนโซล เมนู Machines → Add device จะแสดงคำสั่งติดตั้งพร้อมชื่อเครือข่ายจริงของคุณ

เชิญทีมของคุณ

  1. เปิด Users → Invite user ใส่อีเมลของคนที่จะเชิญ แล้วเลือกบทบาท
  2. คัดลอกลิงก์เชิญแล้วส่งให้เขา ลิงก์ใช้ได้ครั้งเดียวและหมดอายุใน 7 วัน
  3. ผู้ได้รับเชิญเปิดลิงก์ ตั้งรหัสผ่าน (หรือใช้บัญชีที่มีอยู่แล้ว) แล้วเพิ่มอุปกรณ์ของตัวเองได้เลย
บทบาททำอะไรได้
Ownerทำได้ทุกอย่าง รวมถึงเปลี่ยนบทบาทและลบองค์กร
Adminจัดการเครื่อง ผู้ใช้ กฎการเข้าถึง DNS คีย์ และการตั้งค่า
Memberเพิ่มและจัดการเครื่องของตัวเอง

เมื่อลบผู้ใช้ เครื่องของผู้ใช้นั้นจะถูกลบออกจากเครือข่ายด้วย

Subnet router

Subnet router ช่วยให้ทั้งเครือข่ายเข้าถึงอุปกรณ์ที่ลงแอปไม่ได้ เช่น เครื่องพิมพ์ กล้อง หรือ NAS ผ่านเครื่อง Linux หนึ่งเครื่องที่อยู่ใน LAN เดียวกัน

  1. บนเครื่อง Linux เปิด IP forwarding:
    echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-mae-routing.conf
    echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-mae-routing.conf
    sudo sysctl -p /etc/sysctl.d/99-mae-routing.conf
  2. ประกาศ LAN:
    sudo mae-routing set --advertise-routes=192.168.1.0/24
  3. ในคอนโซล เปิดเมนู ⋯ → Edit routes… ของเครื่องนั้น ติ๊ก subnet แล้วกดบันทึก
  4. เครื่อง Windows ใช้ route ที่อนุมัติแล้วโดยอัตโนมัติ (ไอคอนที่ถาด → Settings) ส่วนเครื่อง Linux อื่น ให้รัน sudo mae-routing set --accept-routes

ถ้าต้องการอนุมัติ route โดยไม่ต้องกดเอง ให้เพิ่มส่วน autoApprovers ในกฎการเข้าถึง

Exit node

Exit node ทำให้ทราฟฟิกอินเทอร์เน็ตทั้งหมดของเครื่องหนึ่งออกไปทางอีกเครื่องในเครือข่าย เช่น ออกทางอินเทอร์เน็ตของออฟฟิศเมื่อคุณใช้ Wi-Fi สาธารณะ

  1. บนเครื่อง Linux ที่จะเป็น exit node เปิด IP forwarding (ดู subnet router) แล้วรัน
    sudo mae-routing set --advertise-exit-node
  2. ในคอนโซล เปิด ⋯ → Edit routes… ของเครื่องนั้น ติ๊ก Use as exit node แล้วบันทึก
  3. บน Windows คลิกขวาที่ไอคอนในถาด → Exit node แล้วเลือกเครื่อง บน Linux:
    sudo mae-routing set --exit-node=office-gw --exit-node-allow-lan-access
    ใช้ --exit-node= โดยไม่ใส่ค่าเมื่อต้องการเลิกใช้

DNS และ MagicDNS

เมื่อเปิด MagicDNS (ค่าเริ่มต้น) ทุกเครื่องเรียกหากันด้วยชื่อได้: machine-name หรือ machine-name.your-network.mae.internal ตัว resolver ทำงานบนทุกเครื่องที่ 10.77.77.77

ในหน้า DNS ของคอนโซล ยังตั้งค่าได้อีก:

การเปลี่ยนแปลงไปถึงทุกเครื่องภายในไม่กี่วินาที ถ้าเครื่อง Linux มี VPN ตัวอื่นที่จัดการ DNS อยู่ด้วย ให้รัน sudo mae-routing set --accept-dns=false บนตัวใดตัวหนึ่ง

ควบคุมการเข้าถึง

เครือข่ายใหม่ให้ทุกเครื่องเข้าถึงกันได้หมด ถ้าต้องการจำกัด ให้แก้นโยบายในหน้า Access controls นโยบายเขียนเป็น HuJSON (JSON ที่ใส่คอมเมนต์และ comma ท้ายรายการได้) เมื่อมีกฎแล้ว อะไรที่กฎไม่อนุญาตจะถูกบล็อกทั้งหมด

{
  // ใครอยู่กลุ่มไหน
  "groups": { "group:dev": ["alice@example.com", "bob@example.com"] },
  // ใครติดแท็กไหนให้เครื่องได้
  "tagOwners": { "tag:server": ["group:dev"] },
  "acls": [
    // นักพัฒนาเข้าเซิร์ฟเวอร์ได้เฉพาะ SSH และ HTTPS
    { "action": "accept", "src": ["group:dev"], "dst": ["tag:server:22,443"] },
    // ทุกคนเข้าเครื่องของตัวเองได้
    { "action": "accept", "src": ["autogroup:member"], "dst": ["autogroup:self:*"] }
  ]
}

กด Check เพื่อตรวจสอบ แล้วกด Save ในหน้านั้นมีตัวอย่างเพิ่มเติม รวมถึงการอนุมัติ route อัตโนมัติและกฎ SSH

แท็ก

เครื่องที่ติดแท็กจะเป็นของแท็ก แทนที่จะเป็นของคนใดคนหนึ่ง จึงเหมาะกับเซิร์ฟเวอร์ ใช้แท็กในกฎการเข้าถึงได้ และคีย์ของเครื่องที่ติดแท็กไม่มีวันหมดอายุ

  1. ประกาศแท็กและผู้ที่ใช้แท็กนั้นได้ใน tagOwners
  2. ติดแท็กให้เครื่องจาก ⋯ → Edit tags… หรือสร้าง auth key ที่มีแท็ก เพื่อให้เครื่องใหม่ได้แท็กทันทีที่เข้าเครือข่าย

Auth key

Auth key ให้เครื่องเข้าเครือข่ายได้โดยไม่ต้องใช้เบราว์เซอร์ เหมาะกับเซิร์ฟเวอร์ คอนเทนเนอร์ และงาน CI สร้างได้ที่ Settings → Auth keys

ตัวเลือกความหมาย
Reusableคีย์เดียวเพิ่มได้หลายเครื่อง ต้องเก็บเป็นความลับ
Ephemeralเครื่องจะถูกลบอัตโนมัติ 30 นาทีหลังออฟไลน์ เหมาะกับคอนเทนเนอร์และ CI
Lifetime1 ถึง 90 วัน เครื่องที่เพิ่มไปแล้วยังอยู่ต่อแม้คีย์หมดอายุ
Tagsเครื่องที่เพิ่มด้วยคีย์นี้จะติดแท็ก แทนที่จะเป็นของคุณ
sudo mae-routing up --org your-network --auth-key=hskey-auth-…

คีย์จะแสดงเพียงครั้งเดียว และยกเลิกได้ทุกเมื่อ

SSH

MAE Routing ทำหน้าที่เป็น SSH server ให้เครื่อง Linux ได้ โดยใช้ตัวตนในเครือข่ายแทน SSH key

  1. บนเครื่อง Linux: sudo mae-routing set --ssh
  2. จากเครื่องอื่นในเครือข่าย: ssh user@machine-name

โดยค่าเริ่มต้น สมาชิก SSH เข้าเครื่องของตัวเองได้หลังยืนยันในเบราว์เซอร์: session จะแสดงลิงก์ ให้ลงชื่อเข้าใช้แล้วกดอนุมัติ กำหนดว่าใคร SSH เข้าเครื่องไหนได้ในส่วน ssh ของกฎการเข้าถึง

การหมดอายุของคีย์

คีย์ของเครื่องหมดอายุใน 180 วันโดยค่าเริ่มต้น หลังจากนั้นเครื่องต้องลงชื่อเข้าใช้ใหม่ เปลี่ยนระยะเวลา (1 ถึง 365 วัน) ได้ใน Settings ซึ่งจะมีผลกับเครื่องที่ลงชื่อเข้าใช้หลังจากนั้น

สำหรับเซิร์ฟเวอร์ ปิดการหมดอายุได้ด้วย ⋯ → Disable key expiry ที่เครื่องนั้น ถ้าต้องการให้เครื่องออกจากระบบทันที ใช้ ⋯ → Expire key now

คำสั่ง

คำสั่งทำอะไร
mae-routing up --org NAMEลงชื่อเข้าใช้และเชื่อมต่อกับเครือข่าย NAME
mae-routing downตัดการเชื่อมต่อ แต่ยังลงชื่อเข้าใช้อยู่
mae-routing statusแสดงรายการเครื่องและวิธีที่เชื่อมต่อกัน
mae-routing ipแสดงที่อยู่ของเครื่องนี้
mae-routing ping NAMEทดสอบเส้นทางไปยังเครื่อง (ตรงหรือผ่านรีเลย์)
mae-routing netcheckรายงานสภาพเครือข่ายและรีเลย์ที่ใกล้ที่สุด
mae-routing set --FLAGเปลี่ยนการตั้งค่าทีละอย่าง เช่น --ssh, --accept-routes, --exit-node=NAME
mae-routing logoutออกจากระบบบนเครื่องนี้
mae-routing versionแสดงเวอร์ชันของแอป

บน Windows ให้รันใน Command Prompt แบบ Run as Administrator บน Linux ใช้ sudo กับคำสั่งที่เปลี่ยนการตั้งค่า

ที่อยู่และพอร์ต

รายการค่า
ที่อยู่ของเครื่อง10.77.0.0/16 และ fd4d:4145:5254::/48
MagicDNS resolver10.77.77.77
WireGuardUDP 41642 (ขาออก ไม่ต้องเปิดพอร์ตใด ๆ)
เซิร์ฟเวอร์ประสานงานyour-network.routing.maesuaisystem.com, TCP 443
รีเลย์และ STUNderp1.routing.maesuaisystem.com, TCP 443 และ UDP 3478

MAE Routing ใช้ช่วงที่อยู่ พอร์ต routing table (77) และ firewall chain (mr-*) ของตัวเอง จึงรันบนเครื่องเดียวกับ mesh VPN ตัวอื่นที่ใช้ 100.64.0.0/10 ได้

แพ็กเกจและข้อจำกัด

เครือข่ายที่ใช้แพ็กเกจ Free ใส่ได้ 3 เครื่อง ผู้ใช้ไม่จำกัด และได้ทุกฟีเจอร์ เมื่อเต็มแล้ว เครื่องใหม่จะถูกปฏิเสธพร้อมข้อความ “this network has reached its limit of 3 machines” ส่วนเครื่องที่อยู่ในเครือข่ายแล้วไม่ได้รับผลกระทบ แพ็กเกจแบบชำระเงินไม่จำกัดจำนวนเครื่อง ดูรายละเอียดได้ที่หน้าราคา เจ้าขององค์กรอัปเกรดได้ที่ Settings → Plan