Score:1

จะใช้ IP สาธารณะของเซิร์ฟเวอร์โฮสต์หนึ่งเครื่องเพื่อเข้าถึง VM ของแขกหลาย ๆ ได้อย่างไร

ธง in

ฉันมีเซิร์ฟเวอร์โฮสต์แบบ Bare Metal ที่มี VM ของผู้เยี่ยมชมหลายตัวที่สร้างด้วย QEMU/KVM โดยใช้ตัวเลือกเครือข่ายเสมือน "default":NAT มี IP สาธารณะเพียงรายการเดียวเท่านั้น

เพื่อภาพประกอบที่ดีขึ้น:

  • เซิร์ฟเวอร์โฮสต์ BM (Ubuntu), IP 89.185.xx.xx

  • เซิร์ฟเวอร์แขก VM (Ubuntu) หมายเลข 1, IP 192.168.122.101

    VM เกสต์เซิร์ฟเวอร์ (Ubuntu) หมายเลข 2, IP 192.168.122.102

    เซิร์ฟเวอร์แขก VM (Ubuntu) หมายเลข 3, IP 192.168.122.103

    ...

ตอนนี้ฉันต้องการเรียกใช้แอปพลิเคชันเดียวกันโดยใช้พอร์ตที่แตกต่างกันในแต่ละ VM และสามารถเชื่อมต่อกับแต่ละอินสแตนซ์จากภายนอกผ่าน IP สาธารณะเดียวกัน เช่น.:

  • 89.185.xx.xx:30334

  • 89.185.xx.xx:30335

  • 89.185.xx.xx:30336

    ...

การตั้งค่าที่คล้ายกันเช่นการเรียกใช้แอปพลิเคชันในคอนเทนเนอร์นักเทียบท่าหลายตัว ฉันจะตั้งค่านี้ได้อย่างไร

djdomi avatar
za flag
nginx เป็นพร็อกซีย้อนกลับสำหรับทุกประเภท นี่คือวิธีที่ฉันใช้
us flag
ย้อนกลับพร็อกซีสำหรับ HTTP/HTTPS และการส่งต่อพอร์ตเพื่อวัตถุประสงค์อื่น
Score:3
ธง it

เอามาจาก https://www.systutorials.com/port-forwarding-using-iptables/

เพื่อส่งต่อพอร์ตจาก IP สาธารณะไปยังโลคัลสำหรับ VM1:

# iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 30334 -j DNAT --to 192.168.122.101:30334
# iptables -I FORWARD 1 -p tcp -d 192.168.122.101 --dport 30334 -j ยอมรับ 

ตัวอย่างนี้ถือว่าทั้งพอร์ตโลคัลและรีโมตเป็น 30334 และชื่ออินเทอร์เฟซสาธารณะคือ eth0.

Curu avatar
in flag
ขอบคุณสำหรับคำตอบ! แต่ก็ไม่สามารถทำได้ (ต้องขออภัยล่วงหน้า เนื่องจากไม่มีพื้นฐานด้าน IT เลยอาจมองข้ามข้อผิดพลาดง่อยๆ ไปบ้าง) ฉันลองสิ่งนี้ด้วย ssh ก่อน: `$ sudo iptables -A PREROUTING -t nat -i eno2 -p tcp --dport 2222 -j DNAT --to 192.168.122.101:2222` `$ sudo iptables -A FORWARD -p tcp -d 192.168.122.101 --dport 2222 -j ACCEPT` (eno2 - อินเทอร์เฟซเครือข่ายบนเซิร์ฟเวอร์โฮสต์ BM ที่เชื่อมต่อกับ IP สาธารณะ 89.185.xx.xx)
Curu avatar
in flag
ฉันเปลี่ยนพอร์ต ssh บน VM guest 192.168.122.101 เป็น 2222 ตรวจสอบให้แน่ใจว่า ufw ไม่ได้ใช้งานทั้งบนโฮสต์และแขกและทดสอบการเชื่อมต่อ ssh จากเซิร์ฟเวอร์โฮสต์ BM ซึ่งใช้งานได้: `[email protected]:~$ ssh [email protected] -p 2222` ตอนนี้ฉันพยายาม ssh จากพีซีในเครื่องไปยัง VM: `curu@desktop:~$ ssh [email protected] -p 2222` แต่มันบอกว่า: ssh: เชื่อมต่อกับโฮสต์ 89.185.xx.xx พอร์ต 2222: การเชื่อมต่อถูกปฏิเสธ
Curu avatar
in flag
ปัญหาได้รับการแก้ไขด้วยการวางกฎการส่งต่อที่ตำแหน่งแรกใน iptables: `iptables -I FORWARD 1 -p tcp -d 192.168.122.101 --dport 2222 -j ACCEPT` (ฉันแก้ไขคำตอบเดิม)

โพสต์คำตอบ

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