Score:-1

เหตุใด apache จึงบันทึก IP ภายในเมื่อใช้โดเมนภายนอก

ธง cn

ฉันมี Raspberry Pi ที่ทำงานอยู่ซึ่งเราใช้ในสำนักงานสำหรับโครงการทดสอบขนาดเล็กที่เราไม่ต้องการบนเซิร์ฟเวอร์การพัฒนาหลักของเรา มันกำลังเรียกใช้ apache DNS ได้รับการจัดการผ่าน Cloudflare แต่อยู่ในโหมด DNS เท่านั้น ขณะนี้ ไม่มีการจำกัด IP ในขณะที่ฉันทดสอบ บันทึกสำหรับ mysite.domain.tld กำลังชี้ไปที่ที่อยู่ IP แบบคงที่ของฉัน 123.123.123.123 และมีเพียงเราเตอร์/โมเด็มไฟเบอร์ธุรกิจมาตรฐานเท่านั้นที่อยู่ระหว่างอินเทอร์เน็ตและ Pi

เมื่อฉันไปเยี่ยม mysite.domain.tld เช่น โทรศัพท์ของฉันไม่มี wifi IP ของผู้ให้บริการมือถือก็แสดงขึ้นมาเมื่อฉัน ว้าว จากเซิร์ฟเวอร์ระยะไกล ของมัน' IP ปรากฏในบันทึก ทุกอย่างทำงานได้ตามที่คาดไว้

อย่างไรก็ตามเมื่อฉันไปที่ mysite.domain.tld จากภายในเครือข่ายเดียวกันกับที่ Pi อยู่ apache จะบันทึก IP เกตเวย์ของเราเตอร์ 192.168.1.1. ฉันคาดว่าจะเห็นที่อยู่ IP สาธารณะของฉัน เนื่องจากการเชื่อมต่อของฉันกับชื่อโดเมนแก้ไขผ่าน Cloudflare เป็น IP สาธารณะ แต่ฉันเห็น IP เครือข่ายท้องถิ่นในบันทึกแทน

ไม่มีอะไรที่ตั้งไว้ / etc / โฮสต์ (ฉันใช้ macOS) และบนเราเตอร์ การส่งต่อพอร์ตสำหรับการเชื่อมต่อจากพอร์ต 443 เท่านั้นคือเราเตอร์ไปยัง Pi บนพอร์ตเดียวกัน - ไม่มีการอ้างอิงใด ๆ เกี่ยวกับชื่อโดเมนที่ใดก็ได้ เมื่อฉันปิง mysite.domain.tld มันทำให้ฉัน คลาวด์แฟลร์ ที่อยู่ IP ซึ่งเป็นสิ่งที่ฉันคาดหวัง

ดูเหมือนว่าอยู่ที่ไหนสักแห่งในห่วงโซ่ความจริงที่ว่าที่อยู่ IP ของฉันและที่อยู่ IP สาธารณะของ Pi กำลังจับคู่กันดังนั้นมันจึงแทนที่ IP ด้วย IP เกตเวย์ภายใน เกิดอะไรขึ้นที่นี่? ฉันไม่ จิตใจ ฉันแค่ต้องการให้แน่ใจว่าฉันสามารถพึ่งพาความจริงที่ว่า 192.168.* IP สามารถเชื่อถือได้เมื่อตั้งค่าการจำกัด IP บนไฟร์วอลล์

หมายเหตุ: Cloudflare ไม่ได้ส่ง CF-Connecting-IP และส่วนหัวที่คล้ายกันที่นี่ ฉันคิดว่าจะเกิดขึ้นเฉพาะเมื่อไม่ได้อยู่ในโหมด DNS เท่านั้น และมัน ดูเหมือนว่า เป็นเฉพาะเมื่อฉันใช้การเชื่อมต่อเครือข่ายเดียวกันกับที่ Pi ใช้อยู่

Nikita Kipriyanov avatar
za flag
เราเตอร์ที่คุณกำลังพูดถึงคืออะไรกันแน่ (อันที่มีที่อยู่ 192.168.1.1) เป็นไปได้มากว่าสิ่งนี้เกิดจากพฤติกรรมของมัน นอกจากนี้ คำถามเสริม คุณคาดหวังที่จะได้เห็นอะไรแทนในฟิลด์นั้น และทำไม
cn flag
@NikitaKipriyanov เป็น Technicolor Cobalt - เช่นเราเตอร์ ISP สต็อก สิ่งที่ฉันคาดว่าจะเห็นที่อยู่ IP สาธารณะของการเชื่อมต่อ เนื่องจากฉันไม่ได้เชื่อมต่อกับ 192.168.1.* (หรือมีโดเมนใดๆ ที่แก้ไขเป็น IP ภายใน) แต่ฉันกำลังเชื่อมต่อกับโดเมนสาธารณะผ่าน Cloudflare ดังนั้นฉันคาดว่า IP สาธารณะจะแสดงใน apache
Score:2
ธง za

เราเตอร์ของคุณใช้ Linux และลักษณะการทำงานนี้ง่ายต่อการนำไปใช้กับ Linux distro ที่มีอยู่ ฉันสามารถเดาได้ว่าต้องมีกฎใดในไฟร์วอลล์ของเราเตอร์ของคุณจึงจะทำงานได้เช่นนี้ แต่โปรดทราบว่านี่เป็นเพียงการคาดเดาเท่านั้น เราไม่รู้ว่ากฎที่แท้จริงมีลักษณะอย่างไร

เมื่อคุณส่งต่อพอร์ตไปยังเว็บเซิร์ฟเวอร์ของคุณ พอร์ตนั้นจะเพิ่มกฎ DNAT เฉพาะ ซึ่งน่าจะมีลักษณะดังนี้:

iptables -t nat -A PREROUTING -p tcp -d <ที่อยู่ภายนอกของคุณ> --dport 443 -j DNAT --to-destination <raspberry-pi-address>

หมายความว่า: "ก่อนที่จะตัดสินใจว่าแพ็กเก็ตนี้ถูกส่งไปยังอุปกรณ์หรือต้องส่งต่อหรือไม่ ให้ตรวจสอบว่าที่อยู่ปลายทางของแพ็กเก็ตเป็นที่อยู่ภายนอกของคุณหรือไม่ และพอร์ตปลายทางคือ 443 หากตรงกัน ให้เปลี่ยนที่อยู่ปลายทางเป็น LAN ของ raspberry pi ที่อยู่". โปรดสังเกตว่า กฎนี้ไม่ได้กรองตามอินเทอร์เฟซ

นอกจากนี้ยังมีกฎประเภท SNAT แน่นอน (สำหรับการให้การเข้าถึงอินเทอร์เน็ตสำหรับ LAN) อาจมีลักษณะดังนี้:

iptables -t nat -A โพสต์ -s 192.168.1.0/24 -j MASQUERADE

กล่าวอีกนัยหนึ่ง หลังจากที่เราเตอร์ตัดสินใจว่าแพ็กเก็ตต้องไปที่ใด ก่อนที่จะส่งแพ็กเก็ต เราเตอร์จะเปลี่ยนที่อยู่ต้นทางเป็นที่อยู่ใดก็ตามที่อินเทอร์เฟซขาออกมี (หากแพ็กเก็ตถูกส่งมาจาก LAN) ไม่มีอะไรถูกกรองโดยอินเทอร์เฟซ

พิจารณาการเชื่อมต่อ HTTPS ของคุณ คุณกำลังระบุชื่อโฮสต์ในเบราว์เซอร์ใช่ไหม คุณตั้งค่าเพื่อให้แก้ไขเป็นที่อยู่ภายนอกของเราเตอร์ ซึ่งจะกลายเป็นที่อยู่ปลายทาง ที่อยู่ต้นทางของคุณอยู่ใน LAN ดังนั้น ดูเหมือนว่ากฎทั้งสองนี้จะใช้กับแพ็กเก็ตของการเชื่อมต่อของคุณ

การประมวลผล เราเตอร์จะพบกฎ DNAT ก่อน ตรวจสอบที่อยู่ปลายทางและพอร์ต และตัดสินใจเปลี่ยนที่อยู่ปลายทางเป็นของ raspberry piจากนั้นจะพบอินเทอร์เฟซที่แพ็กเก็ตต้องออกไปคือ LAN หนึ่ง จากนั้นจะตรวจสอบแพ็กเก็ตที่แปลบางส่วนเทียบกับกฎข้อที่สอง และพบว่าที่อยู่ต้นทางนั้นมาจาก LAN ดังนั้นจึงแทนที่ที่อยู่ต้นทางของแพ็คเก็ตด้วยที่อยู่ของอินเทอร์เฟซ LAN, 192.168.1.1 นี่คือสิ่งที่ราสเบอร์รี่ pi ของคุณเห็น

การดำเนินการ NAT นั้นมีสถานะ กล่าวคือ ยังรักษาบันทึกตารางซึ่งระบุว่าสิ่งใดถูกแทนที่ด้วยอะไรและจะตรวจหาแพ็กเก็ตส่งต่อและตอบกลับที่ตามมาได้อย่างไร ดังนั้นมันจึงแปลทั้งหมดได้อย่างถูกต้อง ใช่ ปรากฎว่า Linux สามารถทำ DNAT และ SNAT ได้พร้อมกันภายในสตรีมเดียวกัน

คุณสามารถไว้วางใจพฤติกรรมนี้ได้หรือไม่? ฉันไม่รู้. หากเฟิร์มแวร์ของเราเตอร์เป็นแบบโอเพ่นซอร์ส เรามีโอกาสที่จะตรวจสอบได้ เราไม่สามารถแน่ใจได้หากไม่มีแหล่งที่มา นี่เป็นกรณีเสมอเมื่อแหล่งที่มาถูกปิด นั่นคือเหตุผลที่ต้องหลีกเลี่ยงผลิตภัณฑ์จากแหล่งปิดหากคุณกังวลเกี่ยวกับความปลอดภัย

โพสต์คำตอบ

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