สถานการณ์:
เซิร์ฟเวอร์ VPS หลายแห่งทั่วสหรัฐอเมริกาเชื่อมต่อกับแล็ปท็อปของฉันผ่านเครือข่ายไวร์การ์ดเมช
สำหรับเครือข่าย wireguard mesh ฉันใช้เครื่องมือที่เรียกว่า innernet (https://github.com/tonarino/innernet).
โดยพื้นฐานแล้วมันเหมือนกับแล็ปท็อปและเซิร์ฟเวอร์ vps ของฉันอยู่ในเครือข่ายภายในเดียวกัน
VPS ip = 10.32.89.1
แล็ปท็อป ip = 10.32.90.1
ดูเหมือนว่า VPS และแล็ปท็อปมีอินเทอร์เฟซเสมือนนี้กำหนดไว้ (ไม่แน่ใจว่าสำคัญหรือไม่):
อินเนอร์เน็ต
เซิร์ฟเวอร์ VPS มี mysql container runig (ฉันไม่เปิดเผยพอร์ต 3306 ไปยังโฮสต์)
ฉันจะเชื่อมต่อกับเซิร์ฟเวอร์ mysql dockerized นั้นจากแล็ปท็อปของฉันโดยไม่ต้องต่อเชื่อมพอร์ต mysql กับโฮสต์ได้อย่างไร
การใช้เหตุผล:
ทำไมฉันถึงต้องการวิธีนี้
เนื่องจากฉันไม่ต้องการทำให้มัน (เซิร์ฟเวอร์ mysql) มองเห็นได้ทั่วทั้งอินเทอร์เน็ตและผู้โจมตี แต่ในขณะเดียวกันฉันต้องการเข้าถึงข้อมูล mysql จากแล็ปท็อปของฉันได้อย่างง่ายดาย
ทางออกที่เป็นไปได้:
นั่นคือสิ่งที่นักเทียบท่า macvlan มีไว้เพื่อ? ฉันจำเป็นต้องสร้างเครือข่ายบน VPS ที่มีอินเตอร์เฟสอินเนอร์เน็ตเป็นพาเรนต์หรือไม่? แล้วแนบคอนเทนเนอร์ mysql ของฉันกับเครือข่ายนั้น
ฉันได้ลองสิ่งนี้แล้ว:
สร้างเครือข่ายนักเทียบท่า \
-d macvlan \
--แนบ \
--subnet=172.40.110.0/24 \
--เกตเวย์=172.40.110.1 \
-o ผู้ปกครอง = เครือข่ายภายใน \
อินฟาเน็ต2
จากนั้นฉันได้ลองเข้าร่วมคอนเทนเนอร์ mysql กับมัน:
เครือข่ายนักเทียบท่าเชื่อมต่ออินฟราเน็ต 2 เซิร์ฟเวอร์ mysql
แต่ฉันได้รับข้อผิดพลาดเท่านั้น:
root@vps:~$ เครือข่าย sudo docker เชื่อมต่อเซิร์ฟเวอร์ infranet2mysql
การตอบสนองข้อผิดพลาดจาก daemon: ล้มเหลวในการสร้างพอร์ต macvlan: อาร์กิวเมนต์ไม่ถูกต้อง