Score:0

เซิร์ฟเวอร์ mysql ระยะไกลในคอนเทนเนอร์นักเทียบท่า - เข้าถึงโดยใช้ macvlan และ wireguard หรือไม่

ธง co

สถานการณ์: เซิร์ฟเวอร์ 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: อาร์กิวเมนต์ไม่ถูกต้อง

Score:2
ธง sb

สิ่งที่คุณทำได้คือคุณสามารถเปิดเผยพอร์ตของคุณ (3306) บน ip ภายในเท่านั้น ซึ่งเข้าถึงได้ผ่าน wireguard เช่น tunnel ip (ตรงข้ามกับการเปิดเผยบน ips ทั้งหมด (0.0.0.0/0) ซึ่งเกิดขึ้นตามค่าเริ่มต้น ). เนื่องจาก ip ของช่องสัญญาณของคุณคือ 192.168.0.1 นี่คือวิธีที่คุณจะทำ:

นักเทียบท่าเรียกใช้ --name mysql-server \
-p 192.168.0.1:3306:3306 \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-d mysql

จากนั้นคุณสามารถเข้าถึงเซิร์ฟเวอร์ mysql ระยะไกลได้ แต่การเข้าถึงจากอินเทอร์เน็ตจะไม่สามารถทำได้

Dannyboy avatar
co flag
ขอบคุณ ฉันคิดถึงเรื่องนั้น - แต่ไม่แน่ใจว่านักเทียบท่าจะทำงานอย่างไรหากเครือข่าย wireguard หยุดทำงานกะทันหัน นั่นจะทำให้คอนเทนเนอร์ mysql ลดลงด้วยหรือไม่ หวังว่าจะพบวิธีแก้ปัญหาซึ่งหากไม่มีเครือข่าย innernet/wireguard สิ่งนี้จะไม่ทำให้คอนเทนเนอร์หยุดทำงาน ^ และฉันสงสัยว่าด้านบนจะล็อกไว้
jabbson avatar
sb flag
ไม่ คอนเทนเนอร์จะไม่ลงไปพร้อมกับอินเทอร์เฟซ คอนเทนเนอร์ยังคงทำงานอยู่ แต่จะไม่สามารถเข้าถึงได้
Dannyboy avatar
co flag
ขอบใจ. คุณพูดถูก เพิ่งทดสอบและใช้งานได้ - mysql สามารถเข้าถึงได้บนเครือข่าย innernet mesh ไม่ใช่บน ip สาธารณะ ไม่จำเป็นต้องมีประเภทเครือข่ายลึกลับ ตะแกรงตะแกรงนั้นยอดเยี่ยมมาก
Dannyboy avatar
co flag
อา น่าสนใจ - จริง ๆ แล้ว - หากเครือข่าย wireguard หยุดทำงาน คอนเทนเนอร์ mysql จะไม่สามารถเริ่มต้นได้ ฉันทดสอบโดยใช้ที่อยู่ IP แบบสุ่มและฉันได้รับข้อผิดพลาดนี้ขณะพยายามบู๊ตสแต็กอัพ: "ข้อผิดพลาดในการเริ่มต้น userland proxy: ฟัง tcp 10.32.89.22:3306: ผูก: ไม่สามารถกำหนดที่อยู่ที่ร้องขอ" หมายความว่าฉันคิดว่าหากเครือข่าย wireguard ล่ม - สแต็คจะไม่สามารถบู๊ต / รีบูตได้อย่างถูกต้องซึ่งส่งผลต่อความน่าเชื่อถือ....

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา