Score:0

ปัญหา NAT แปลก ๆ กับ pfSense ทำให้คนจรจัด VM

ธง tr

สิ่งนี้ทำให้ฉันสับสน:

ฉันมีไฟร์วอลล์ pfSense (ขอเรียกว่า pfs) และเบื้องหลังเซิร์ฟเวอร์หลายตัว ฉัน NAT บริการต่างๆ จาก IP สาธารณะของฉันไปยังเซิร์ฟเวอร์ต่างๆ บน LAN โดยไม่มีปัญหาใดๆ

บนเซิร์ฟเวอร์เครื่องใดเครื่องหนึ่ง (ขอเรียกว่า s1) ฉันกำลังเรียกใช้ก พเนจร (กับ libvirt) VM (ขอเรียกว่า v1) กับ สาธารณะ กำหนดค่าเครือข่ายซึ่งได้รับ IP 192.168.1.159 ทาง pfsเซิร์ฟเวอร์ DHCP

ตอนนี้ฉันกำหนดค่า NAT อย่างง่ายบน pfs ในการเข้าถึง s1SSH ของพูด <wan>:6622 -> s1:22 และเข้าถึงได้บน mydomain.com:6622. ไม่มีปัญหา.

เข้าได้ยังครับ v1:22 (หรือเทียบเท่า 192.168.1.159:22) กับผู้ใช้ ssh ที่ถูกต้อง จากในระบบ LAN โดยไม่มีปัญหา

ตอนนี้ฉันเพิ่ม NAT อย่างง่ายบน pfs, พูด <wan>:6722 -> v1:22. ตอนนี้กำลังพยายามเข้า mydomain.com:6722 ไม่ งาน?!

วัตถุประสงค์คือเพื่อเพิ่ม "เลเยอร์อื่น" แม้กระทั่ง: รันคอนเทนเนอร์ด้วยพอร์ตสาธารณะ เช่น --เผยแพร่ 9980:80 บน v1 และเข้าถึงได้เช่น v1:9980 และจาก mydomain.com:9980 โดยเปิด NAT ที่เกี่ยวข้อง pfs ชอบ <วัน>:9980 -> v1:9980. จากระบบแลน สิ่งนี้ยังใช้งานได้ตามที่คาดไว้ (เช่นฉันสามารถเข้าถึงได้ v1:9980 จาก LAN) แต่เป็น NAT ผ่าน pfs ไม่ใช่.

ฉันมีการตั้งค่าที่คล้ายกันซึ่งทำงานภายในเครือข่ายเดียวกันบนเครื่องต่างๆ โดยไม่มีปัญหา ฉันยังมีอีก (ไม่ใช่คนจรจัด แต่ก็เช่นกัน libvirt) เปิด VM s1 ซึ่งฉันสามารถ ssh ผ่าน NAT ผ่าน IP สาธารณะของฉันได้อย่างสมบูรณ์ แต่อย่างใดข้างต้นใช้ไม่ได้กับ พเนจร เครื่องจักร และฉันกำลังสูญเสียสิ่งที่อาจเป็นสาเหตุของปัญหานี้ (FWIW ฉันมี net.ipv4.forward เปิดใช้งานอยู่ v1).

แก้ไข:

ฉันเข้าใกล้ไปอีกขั้น: ถ้าฉันทำลาย NIC ที่มีอยู่ตัวแรกของ พเนจร VM ที่ใช้ ผู้จัดการ virtและตั้งค่า VM ที่สองเป็น rtl8139 แทน อัจฉริยะ (แล้วรีสตาร์ท) ฉันแพ้ ssh คนจรจัด ความสามารถ แต่ NAT ก็ใช้งานได้ ดังนั้นคำถามจึงกลายเป็น: วิธีกำหนดค่าผ่าน พเนจร การจัดเตรียมเพื่อให้เรามีการกำหนดค่าที่คล้ายกัน ฉันคิดว่านั่นหมายความว่าเครือข่ายสาธารณะต้องอยู่ในอินเทอร์เฟซเริ่มต้นใช่หรือไม่

Score:0
ธง tr

สารละลาย:

สาเหตุก็คือว่า พเนจร ต้องการ (และกำหนดค่า) อินเทอร์เฟซภายใน (เครือข่ายส่วนตัว) เป็นหลักโดยไม่มีวิธีการมาตรฐานที่จะแทนที่สิ่งนั้น (ข้อมูลบางส่วนคือ ที่นี่, แต่ พเนจร คนยอมรับว่าตัวเองงงกับหัวข้อ...)

รูปแบบ (ที่แข็งแกร่งกว่า) บนแนวคิดในการปรับแต่งเส้นทางเริ่มต้นนำมาซึ่งการแก้ปัญหา ฉันใช้ เข้าใจได้ ผู้จัดเตรียม ซึ่งฉันดำเนินการต่อไปนี้ (กับแขก ผ่าน playbook การเตรียมการ):

  - ชื่อ: ลบเส้นทางเริ่มต้นที่ไม่ถูกต้องใน eth0 (อีกครั้ง)
    เปลือก: |
      eval $(route -n | awk '$0~/[.0]{4}/ && $3~/[.0]{4}/ && $8~/eth0/ { printf "ip route del เริ่มต้นผ่าน %s dev % s; ",$3,$8 }')

(ที่น่าสนใจคือต้องดำเนินการสองครั้ง (หรือหลังจากนั้นไม่นาน) อาจเป็นเพราะเครือข่ายยังไม่ทำงานเต็มที่เมื่อสคริปต์การจัดเตรียมเริ่มต้นขึ้น)

สิ่งนี้จะลบเส้นทางเริ่มต้นออก eth0 (ที่ สาธารณะ_เครือข่าย จะถูกกำหนดค่าโดยอัตโนมัติเท่านั้น eth1 โดย พเนจร) และทำให้การเชื่อมต่อภายนอกทำงานได้ตามที่คาดไว้ สิ่งนี้น่าจะเป็น (การคาดเดาที่นี่) เนื่องจากการตอบสนองต่อคำขอ NATed ที่เข้ามาจะถูกส่งไปยังไฟร์วอลล์ผ่านเส้นทางเริ่มต้นบน eth0 โดยค่าเริ่มต้น (ซึ่งโดย พเนจร ค่าเริ่มต้นมีลำดับความสำคัญ) ซึ่งทำให้ NAT FW สับสนเพราะมาใน VM eth1. เลยถอด eth0 เป็นค่าเริ่มต้นตอบกลับคำขอภายนอกบนอินเทอร์เฟซเดียวกับที่เข้ามา

โพสต์คำตอบ

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