การกำหนดเส้นทางระหว่างหลายซับเน็ต


10

สมมติว่าฉันต้องการสร้างเครือข่ายภายในที่มีเครือข่ายย่อย 4 เครือข่าย ไม่มีเราเตอร์หรือสวิตช์ส่วนกลาง ฉันมี "การจัดการเครือข่ายย่อย" พร้อมที่จะเชื่อมโยงเกตเวย์ในเครือข่ายย่อยทั้งสี่ (192.168.0.0/24) แผนภาพทั่วไปจะมีลักษณะดังนี้:

10.0.1.0/24 <-> 10.0.2.0/24 <-> 10.0.3.0/24 <-> 10.0.4.0/24

ในคำพูดฉันกำหนดค่ากล่องลินุกซ์เดียวในแต่ละเครือข่ายย่อยที่มี 2 อินเตอร์เฟสเป็น 10.0.x.1 และ 192.168.0.x ฟังก์ชั่นเหล่านี้เป็นอุปกรณ์เกตเวย์สำหรับแต่ละเครือข่ายย่อย จะมีหลายโฮสต์สำหรับ 10.x / 24 แต่ละ subnet โฮสต์อื่น ๆ จะมี 1 ส่วนต่อประสานให้ใช้งานเป็น 10.0.xx

ฉันต้องการให้แต่ละโฮสต์สามารถ ping โฮสต์อื่นบน subnet อื่น ๆ คำถามของฉันคือก่อน: เป็นไปได้ และอย่างที่สองถ้าเป็นเช่นนั้นฉันต้องการความช่วยเหลือในการกำหนดค่า iptables และ / หรือเส้นทาง ฉันกำลังทดลองกับสิ่งนี้ แต่สามารถหาวิธีแก้ปัญหาที่อนุญาตให้ส่ง Ping ได้ในทิศทางเดียวเท่านั้น (แพ็คเก็ต icmp เป็นเพียงตัวอย่างเท่านั้นในที่สุดฉันก็ชอบความสามารถของเครือข่ายเต็มรูปแบบระหว่างโฮสต์เช่น ssh, telnet, ftp เป็นต้น) .

คำตอบ:


8

ตกลงดังนั้นคุณมีห้าเครือข่าย10.0.1.0/24, 10.0.2.0/24, 10.0.3.0/24, 10.0.4.0/24และ192.168.0.0/24และสี่กล่องเส้นทางระหว่างพวกเขา สมมติว่ากล่องเส้นทางมีที่อยู่10.0.1.1/192.168.0.1, 10.0.2.1/192.168.0.2, และ10.0.3.1/192.168.0.310.0.4.1/192.168.0.4

คุณจะต้องเพิ่มเส้นทางแบบคงที่ไปยัง10.0.x.0/24เครือข่ายอื่น ๆในแต่ละกล่องเราเตอร์ด้วยคำสั่งเช่นนี้ (แก้ไข!):

# on the 10.0.1.1 box
ip route add 10.0.2.0/24 via 192.168.0.2
ip route add 10.0.3.0/24 via 192.168.0.3
ip route add 10.0.4.0/24 via 192.168.0.4

และเส้นทางที่เกี่ยวข้องในกล่องเราเตอร์อื่น ๆ 10.0.x.1ในกล่องที่ไม่ใช่เส้นทางที่มีเพียงหนึ่งอินเตอร์เฟซกำหนดเส้นทางเริ่มต้นที่จะชี้ไปที่ แน่นอนคุณจะต้องเพิ่มที่อยู่คงที่และ netmasks ในอินเทอร์เฟซทั้งหมด

นอกจากนี้โปรดทราบว่า linux ไม่ได้ทำงานเป็นเราเตอร์ตามค่าเริ่มต้นคุณจะต้องเปิดใช้งานการส่งต่อแพ็กเก็ตด้วย:

echo 1 > /proc/sys/net/ipv4/ip_forward

ipคำสั่งดังกล่าวไม่ได้ทำให้การตั้งค่าถาวรวิธีการทำที่จะขึ้นอยู่กับการจัดจำหน่าย

อย่างที่ฉันพูดฉันยังไม่ได้ทดสอบสิ่งนี้และอาจลืมอะไรบางอย่าง


ขอบคุณสำหรับความช่วยเหลือที่นี่ สิ่งที่คุณแนะนำทำงานเมื่อฉัน ping เราเตอร์กับเราเตอร์ (10.0.1.1 ถึง 10.0.2.1) แต่ไม่ใช่เมื่อฉัน ping โฮสต์อื่น ตัวอย่างเช่นการส่ง Ping จาก 10.0.1.1 ถึง 10.0.2.2 ทำให้ไม่มีการรับส่งข้อมูลที่ถูกกำหนดเส้นทางไปยังโฮสต์ 10.0.2.2 คุณจะแนะนำให้ทำการจัดการ iptables บ้างไหม? ฉันได้ทดลองกับสิ่งนี้มาสองสามวันแล้ว แต่ก็ไม่มีประโยชน์
greyline

เทคนิคการกำหนดเส้นทางมาตรฐานควรจะเพียงพอ นี่คือรายการตรวจสอบ: 1. ที่อยู่ทั้งหมดควรได้รับการติดตั้งบนโฮสต์ (เช่น ip addr เพิ่ม 10.0.2.2/24 dev eth0), 2. เส้นทางควรตั้งค่าในกล่องเราเตอร์สี่ตัวด้านบน, 3. เส้นทางเริ่มต้น บนกล่องที่ไม่ใช่เราเตอร์ควรตั้งค่าให้ชี้ไปที่กล่องเส้นทางบนเครือข่าย (เช่นเส้นทาง IP เพิ่มค่าเริ่มต้นผ่าน 10.0.1.1), 4. cat / proc / sys / net / ipv4 / ip_forward ในสี่เราเตอร์กล่องควร พิมพ์ "1"
Johan Myréen

ฉันแก้ไขข้อผิดพลาดในคำสั่งเส้นทาง IP ด้านบน ฉันยังทดสอบการตั้งค่านี้แม้ว่าจะมีเพียงสี่เครื่องเท่านั้น: สองกล่องการกำหนดเส้นทางและสองโฮสต์ที่ด้าน 10.0.x.0 มันได้ผล!
Johan Myréen

โจฮานขอบคุณสำหรับข้อมูลเพิ่มเติมของคุณ การตั้งค่านี้ใช้งานได้ ปรากฎอิมเมจ Linux ที่ฉันใช้ซึ่งมีกฎ iptables เริ่มต้นที่เป็นปัญหา ขอบคุณที่ช่วยฉันในการเรียนรู้เกี่ยวกับสิ่งนี้
greyline
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.