คู่มือ MAE Routing
ทุกอย่างที่ต้องรู้ในการตั้งเครือข่าย เพิ่มเครื่อง และกำหนดว่าใครเข้าถึงอะไรได้
หลักการทำงาน
แต่ละองค์กรได้เครือข่ายของตัวเอง พร้อมเซิร์ฟเวอร์ประสานงานของตัวเองที่ your-network.routing.maesuaisystem.com
เซิร์ฟเวอร์นี้แจกคีย์ ที่อยู่ และการตั้งค่า แต่ไม่เคยรับส่งข้อมูลของคุณ
เครื่องเชื่อมถึงกันโดยตรงผ่าน WireGuard แม้อยู่หลัง NAT หรือไฟร์วอลล์ ถ้าเชื่อมตรงไม่ได้ ข้อมูลจะผ่านรีเลย์ของเราในกรุงเทพฯ โดยยังเข้ารหัสแบบ end-to-end รีเลย์จึงอ่านข้อมูลไม่ได้
ทุกเครื่องได้ที่อยู่ถาวรในช่วง 10.77.0.0/16 และชื่ออย่าง nas.your-network.mae.internal
สร้างเครือข่าย
- ไปที่หน้าสร้างเครือข่ายฟรี
- กรอกชื่อ อีเมล รหัสผ่าน และชื่อองค์กร
- ตั้งชื่อเครือข่าย (a-z, 0-9 และ -) ชื่อนี้จะกลายเป็น
network-name.routing.maesuaisystem.comและเปลี่ยนภายหลังไม่ได้
คุณจะเป็นเจ้าของ (owner) และเข้าสู่คอนโซลผู้ดูแลทันที บัญชีเดียวอยู่ได้หลายองค์กร สลับองค์กรได้จากเมนูด้านบนของคอนโซล
เพิ่มอุปกรณ์
ติดตั้งแอปบนอุปกรณ์ แล้วลงชื่อเข้าใช้ด้วยชื่อเครือข่ายของคุณ ดูขั้นตอนทั้งหมดของ Windows, Linux และ Docker ได้ใน คู่มือการติดตั้ง ส่วนในคอนโซล เมนู Machines → Add device จะแสดงคำสั่งติดตั้งพร้อมชื่อเครือข่ายจริงของคุณ
เชิญทีมของคุณ
- เปิด Users → Invite user ใส่อีเมลของคนที่จะเชิญ แล้วเลือกบทบาท
- คัดลอกลิงก์เชิญแล้วส่งให้เขา ลิงก์ใช้ได้ครั้งเดียวและหมดอายุใน 7 วัน
- ผู้ได้รับเชิญเปิดลิงก์ ตั้งรหัสผ่าน (หรือใช้บัญชีที่มีอยู่แล้ว) แล้วเพิ่มอุปกรณ์ของตัวเองได้เลย
| บทบาท | ทำอะไรได้ |
|---|---|
| Owner | ทำได้ทุกอย่าง รวมถึงเปลี่ยนบทบาทและลบองค์กร |
| Admin | จัดการเครื่อง ผู้ใช้ กฎการเข้าถึง DNS คีย์ และการตั้งค่า |
| Member | เพิ่มและจัดการเครื่องของตัวเอง |
เมื่อลบผู้ใช้ เครื่องของผู้ใช้นั้นจะถูกลบออกจากเครือข่ายด้วย
Subnet router
Subnet router ช่วยให้ทั้งเครือข่ายเข้าถึงอุปกรณ์ที่ลงแอปไม่ได้ เช่น เครื่องพิมพ์ กล้อง หรือ NAS ผ่านเครื่อง Linux หนึ่งเครื่องที่อยู่ใน LAN เดียวกัน
- บนเครื่อง 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 - ประกาศ LAN:
sudo mae-routing set --advertise-routes=192.168.1.0/24 - ในคอนโซล เปิดเมนู ⋯ → Edit routes… ของเครื่องนั้น ติ๊ก subnet แล้วกดบันทึก
- เครื่อง Windows ใช้ route ที่อนุมัติแล้วโดยอัตโนมัติ (ไอคอนที่ถาด → Settings) ส่วนเครื่อง Linux อื่น ให้รัน
sudo mae-routing set --accept-routes
ถ้าต้องการอนุมัติ route โดยไม่ต้องกดเอง ให้เพิ่มส่วน autoApprovers ในกฎการเข้าถึง
Exit node
Exit node ทำให้ทราฟฟิกอินเทอร์เน็ตทั้งหมดของเครื่องหนึ่งออกไปทางอีกเครื่องในเครือข่าย เช่น ออกทางอินเทอร์เน็ตของออฟฟิศเมื่อคุณใช้ Wi-Fi สาธารณะ
- บนเครื่อง Linux ที่จะเป็น exit node เปิด IP forwarding (ดู subnet router) แล้วรัน
sudo mae-routing set --advertise-exit-node - ในคอนโซล เปิด ⋯ → Edit routes… ของเครื่องนั้น ติ๊ก Use as exit node แล้วบันทึก
- บน 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 ของคอนโซล ยังตั้งค่าได้อีก:
- Nameservers สำหรับทุกเครื่อง และเลือกได้ว่าจะใช้แทน DNS เดิมของเครื่องหรือไม่
- Split DNS: ส่งคำถามของโดเมนภายใน เช่น
corp.localไปยัง DNS server ของคุณเอง - Search domains และ extra records สำหรับตั้งชื่อให้ IP ใดก็ได้ แม้เครื่องนั้นไม่ได้ลงแอป
การเปลี่ยนแปลงไปถึงทุกเครื่องภายในไม่กี่วินาที ถ้าเครื่อง 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
แท็ก
เครื่องที่ติดแท็กจะเป็นของแท็ก แทนที่จะเป็นของคนใดคนหนึ่ง จึงเหมาะกับเซิร์ฟเวอร์ ใช้แท็กในกฎการเข้าถึงได้ และคีย์ของเครื่องที่ติดแท็กไม่มีวันหมดอายุ
- ประกาศแท็กและผู้ที่ใช้แท็กนั้นได้ใน
tagOwners - ติดแท็กให้เครื่องจาก ⋯ → Edit tags… หรือสร้าง auth key ที่มีแท็ก เพื่อให้เครื่องใหม่ได้แท็กทันทีที่เข้าเครือข่าย
Auth key
Auth key ให้เครื่องเข้าเครือข่ายได้โดยไม่ต้องใช้เบราว์เซอร์ เหมาะกับเซิร์ฟเวอร์ คอนเทนเนอร์ และงาน CI สร้างได้ที่ Settings → Auth keys
| ตัวเลือก | ความหมาย |
|---|---|
| Reusable | คีย์เดียวเพิ่มได้หลายเครื่อง ต้องเก็บเป็นความลับ |
| Ephemeral | เครื่องจะถูกลบอัตโนมัติ 30 นาทีหลังออฟไลน์ เหมาะกับคอนเทนเนอร์และ CI |
| Lifetime | 1 ถึง 90 วัน เครื่องที่เพิ่มไปแล้วยังอยู่ต่อแม้คีย์หมดอายุ |
| Tags | เครื่องที่เพิ่มด้วยคีย์นี้จะติดแท็ก แทนที่จะเป็นของคุณ |
sudo mae-routing up --org your-network --auth-key=hskey-auth-…
คีย์จะแสดงเพียงครั้งเดียว และยกเลิกได้ทุกเมื่อ
SSH
MAE Routing ทำหน้าที่เป็น SSH server ให้เครื่อง Linux ได้ โดยใช้ตัวตนในเครือข่ายแทน SSH key
- บนเครื่อง Linux:
sudo mae-routing set --ssh - จากเครื่องอื่นในเครือข่าย:
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 resolver | 10.77.77.77 |
| WireGuard | UDP 41642 (ขาออก ไม่ต้องเปิดพอร์ตใด ๆ) |
| เซิร์ฟเวอร์ประสานงาน | your-network.routing.maesuaisystem.com, TCP 443 |
| รีเลย์และ STUN | derp1.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