Score:0

การส่งต่อพอร์ต Firewalld Proxmox ทำให้พอร์ตใช้งานไม่ได้สำหรับการเชื่อมต่ออื่นๆ

ธง in

ฉันมีเซิร์ฟเวอร์ที่โฮสต์โดย hetzner โดยมีที่อยู่ IP สาธารณะเดียวซึ่งเรียกใช้ proxmox และ VM บางตัว ที่อยู่ IP นี้ได้รับการกำหนดค่าภายใน /etc/interfaces ดังนี้:

อัตโนมัติ enp35s0
iface enp35s0 inet แบบคงที่
    ที่อยู่ {{my-public-ip}}/{{subnet}}
    เกตเวย์ {{hetzner-gateway}}
    เพิ่มเส้นทาง -net {{hetzner-ip}} netmask 255.255.255.192 gw {{hetzner-gateway}} dev enp35s0

การกำหนดค่านี้ทำโดย hetzner

เนื่องจากฉันไม่ต้องการรับที่อยู่ IP เพิ่มเติมจาก hetzner ฉันปลอมแปลง IP นั้นสำหรับ VM-Network ภายใน:

vmbr0 อัตโนมัติ
iface vmbr0 inet แบบคงที่
    ที่อยู่ 172.16.0.1/24
    บริดจ์พอร์ตไม่มี
    ปิดสะพาน
    บริดจ์-fd 0

    โพสต์อัพ echo 1 > /proc/sys/net/ipv4/ip_forward
    โพสต์อัพ iptables -t nat -A POSTROUTING -s '172.16.0.0/24' -o enp35s0 -j ​​MASQUERADE
    โพสต์ลง iptables -t nat -D POSTROUTING -s '172.16.0.0/24' -o enp35s0 -j ​​MASQUERADE

ด้วยวิธีนี้ VMs ของฉันจึงมีการเข้าถึงอินเทอร์เน็ตและสามารถติดต่อกันได้

เนื่องจากการส่งต่อพอร์ต iptables ค่อนข้างซับซ้อนเกินไปสำหรับฉัน ฉันจึงเริ่มใช้ firewalld ในนั้นฉันมีอินเทอร์เฟซ enp35s0 ที่กำหนดให้กับโซนภายนอกและ vmbr0 ให้เชื่อถือได้ ฉันรู้ว่าบางทีฉันควรกำหนดให้เป็นการภายในแทน แต่ปัจจุบันมันไม่ได้สร้างความแตกต่างจริงๆ (หรือฉันคิดอย่างนั้นในกรณีปัญหาของฉัน)

ตอนนี้ฉันมีบริการที่ทำงานภายใน VM ด้วย ip 172.16.0.3 บนพอร์ต 38080 ในการเข้าถึงบริการนี้ ฉันเพิ่มกฎการส่งต่อพอร์ตในไฟร์วอลล์: พอร์ต=38080:proto=tcp:toport=38080:toaddr=172.16.0.3. ด้วยวิธีนี้ฉันสามารถเข้าถึงบริการนั้นได้จากภายนอกเครื่องเซิร์ฟเวอร์นี้ ปัญหาตอนนี้คือ ถ้าฉันใช้ซอฟต์แวร์อย่าง uptime-kuma และเรียกใช้ภายใน VM บนเครื่องเดียวกันด้วย ฉันไม่สามารถเข้าถึงบริการนั้นบนพอร์ต 38080 ได้เนื่องจากการส่งต่อพอร์ตจะทำเฉพาะคำขอภายนอกเท่านั้น สิ่งสำคัญที่นี่คือชื่อโฮสต์ที่ uptime-kuma ใช้คือ FQDN ที่ได้รับการแก้ไขเป็นที่อยู่ IP สาธารณะของเครื่องโฮสต์ของฉัน ดังนั้นเพื่อให้เป็นไปได้ ฉันจึงเพิ่มกฎการส่งต่อพอร์ตเดียวกันไปยังโซนที่น่าเชื่อถือของไฟร์วอลล์ เนื่องจากอินเทอร์เฟซ vmbr0 ของฉันอยู่ในนั้น และจากอินเทอร์เฟซนั้นมีคำขอ ตอนนี้การเชื่อมต่อนี้ใช้งานได้และซอฟต์แวร์ของฉัน (uptime-kuma) สามารถเข้าถึงบริการของฉันได้

ปัญหาใหญ่ในตอนนี้คือทุกคำขอจากภายในเครือข่ายเสมือนที่ต้องการใช้พอร์ต 38080 จะถูกเปลี่ยนเส้นทางไปยัง VM นั้น (172.16.0.3) แม้แต่คำขอที่ไปยังเซิร์ฟเวอร์อื่นโดยสิ้นเชิง

ฉันจะบอก firewalld ให้เปลี่ยนเส้นทางทราฟฟิกนั้นได้อย่างไร หากคำขอนั้นมีเป้าหมายที่เครื่องโฮสต์จริง ๆ

TheAnachronism avatar
in flag
วิธีแก้ปัญหาปัจจุบันของฉันคือใช้พอร์ตที่ไม่จำเป็นสำหรับบริการภายนอก แต่นั่นไม่ใช่วิธีแก้ปัญหานี้
Score:0
ธง in

ดังนั้นฉันจึงไม่สามารถหาวิธีแก้ไขพฤติกรรมของไฟร์วอลล์ได้ แต่ฉันพบสิ่งอื่นที่ทำให้กฎการส่งต่อพอร์ตในโซนที่เชื่อถือได้ไม่จำเป็น ด้วยการเพิ่ม FQDN ซึ่งจะแก้ไข IP สาธารณะของโฮสต์ไปยังไฟล์ /etc/hosts ภายใน VM ฉันไม่ต้องการการส่งต่อพอร์ตอีกต่อไป เพราะมันเชื่อมต่อกับตัวเองทันทีอีกครั้ง (ซึ่งเป็นสิ่งที่ฉันต้องการในตอนแรก) การใช้กฎการส่งต่อพอร์ตภายในโซนที่เชื่อถือนั้นไม่จำเป็นอีกต่อไป และฉันสามารถใช้พอร์ตเหล่านั้นสำหรับคำขอภายนอกได้อีกครั้ง

โพสต์คำตอบ

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