ฉันทำงานนี้มาระยะหนึ่งแล้ว โชคไม่ดีนัก
ฉันใช้การส่งต่อพอร์ตเพื่อแสดงพอร์ต ssh บนเครื่องเสมือนภายในสู่โลกภายนอก (พอร์ต 8000 บนโฮสต์) เครื่องโฮสต์คือ Ubuntu 18.04LTS, 132 GB ram, AMD Epic 16/4 cores VM คือ Debian 11
ฉันใช้ ufw สำหรับการป้องกันทั่วไปของโฮสต์การเชื่อมต่อสามารถทำได้จากเครือข่ายของมหาวิทยาลัยเท่านั้น และผู้ใช้ภายนอกจะต้องใช้ VPN ไปยังเครือข่ายของมหาวิทยาลัยก่อนทำการเชื่อมต่อ มีเครือข่ายย่อยสองเครือข่าย เครือข่ายย่อยคลาส B ที่ครอบคลุมทั่วทั้งวิทยาเขต อีกเครือข่ายหนึ่งคือ 10.0.0.0/8 ซึ่งใช้โดย VPN และ WiFi ของมหาวิทยาลัยและกำหนดเส้นทางภายในมหาวิทยาลัย การใช้สภาพแวดล้อมตามแผนมีไว้สำหรับการสอนหลักสูตร OS ปีที่ 3
ฉันใช้ https://www.cyberciti.biz/faq/how-to-configure-ufw-to-forward-port-80443-to-internal-server-hosted-on-lan/ เป็นพื้นฐานเช่นเดียวกับหน้าอื่น ๆ อีกมากมายที่ฉันจำ URL ไม่ได้ทั้งหมด
เครือข่ายส่วนตัวภายในคือ 192.168.101.x /etc/ufw/before.rules ที่ฉันใช้คือ:
*แนท
: ยอมรับ [0:0]
# ส่งต่อ hostIP จากพอร์ต campusBSubnet 8000 ไปยัง 192.168.1.101:22
# ส่งต่อ hostIP จากพอร์ต campusVPNSubnet 8000 ถึง 192.168.1.101:22
-A PREROUTING -i br0 -d HostIP -s campusBSubnet -p tcp --dport 8000 -j DNAT --to-destination 192.168.101.2:22
-A PREROUTING -i br0 -d HostIP -s campusVPNSubnet -p tcp --dport 8000 -j DNAT --to-destination 192.168.101.2:22
#กำหนดเส้นทาง
-A โพสต์ -s 192.168.101.0/24 ! -d 192.168.101.0/24 -j สวมหน้ากาก
ให้สัญญา
...พักก่อน.กฎ
การแก้ไขอย่างหนึ่งจากหน้าเว็บที่อ้างอิงคือการเพิ่มข้อจำกัดที่อยู่ต้นทางเนื่องจากกฎ *nat ดูเหมือนจะข้ามการปฏิเสธเริ่มต้น ufw และอนุญาตให้ที่อยู่ภายนอกเข้าถึงพอร์ตที่ส่งต่อ
ใช้งานได้และอนุญาตให้ฉัน ssh เข้าสู่ VM จากภายนอกด้วย ssh -p 8000 HostName ดูเหมือนว่าทุกอย่างจะทำงานได้ดี ยกเว้นว่า x2go ใช้งานไม่ได้จริงๆ จอแสดงผลเริ่มต้นปรากฏขึ้น (และกล่องโต้ตอบที่ขอรหัสผ่านรูทเพื่อสร้างอุปกรณ์แสดงผลสี) และหลังจากนั้น ก็ไม่มีการตอบกลับ ไคลเอนต์ x2go บ่นว่าไม่มีการตอบสนองหลังจาก x วินาที โดยที่ x คือ ~30 วินาที
ฉันย้าย vm ไปที่อินเทอร์เฟซบริดจ์และให้ที่อยู่ IP ภายนอกและเชื่อมต่อโดยตรงกับ vm บนบริดจ์ ทุกอย่างทำงานได้ดีมีความล่าช้าเล็กน้อยบนอินเทอร์เฟซ x2go แต่ไม่สังเกตเห็นได้ชัด แต่บนเครือข่ายส่วนตัว nada ฉันทำการเปรียบเทียบความเร็วโดยใช้ scp เพื่อคัดลอกไฟล์ขนาดใหญ่ไปยังและจาก VM ทั้งบนบริดจ์และผ่านการส่งต่อพอร์ต และแม้ว่าการส่งต่อพอร์ตจะช้ากว่าเล็กน้อย แต่ก็มีความแตกต่างน้อยกว่า 10% ในความเร็วสำหรับกลุ่ม โอนย้าย.
ฉันรู้สึกสูญเสียเล็กน้อยว่าทำไมควรมีความแตกต่างในด้านประสิทธิภาพระหว่างตัวเลือกการส่งต่อพอร์ตและเวอร์ชันบริดจ์ นี่คือการทดสอบก่อนตั้งค่าบนเซิร์ฟเวอร์ที่มี 192 GB ram และ 180 คอร์สำหรับคอร์ เราจะเรียกใช้ครั้งละประมาณ 90 vms จาก 180 (สองเซสชันแล็บ) และเราไม่สามารถให้ที่อยู่ ipv4 180 รายการสำหรับหลักสูตรเดียวได้ ดังนั้นการกำหนดค่าบริดจ์จึงไม่ใช่ตัวเลือก
ดูเหมือนจะมีตัวเลือกมากมายสำหรับ x2go และฉันไม่ได้ดูตัวเลือกเหล่านั้นเลย ดังนั้นหากเป็นวิธีแก้ปัญหาที่เป็นไปได้ ฉันจะไม่ชี้ไปที่ตัวเลือกใดที่มีอยู่มากมาย
จากหนึ่งในหน้าก่อนหน้านี้ (ซึ่งเป็นข้อผิดพลาดของเซิร์ฟเวอร์หรือสแต็กโอเวอร์โฟลว์) ระบุว่า libvirt NAT ในตัวทำให้เกิดปัญหากับการส่งต่อพอร์ต ดังนั้นฉันจึงใช้เครือข่ายส่วนตัวที่กำหนดเส้นทางและกฎการกำหนดเส้นทางหลังที่สามในรูปด้านบน ปัญหาประสิทธิภาพเดียวกัน
ตอนนี้กลยุทธ์การสำรองข้อมูลของฉันคือรหัส Visual Studio โดยใช้ตัวเลือก ssh เพื่อแก้ไขบนเครื่องภายนอกและคอมไพล์และรันบน vm ดูเหมือนว่าจะทำงานได้ดีกับการส่งต่อพอร์ต ssh
ขอบคุณ.