Linux: การกำหนดเส้นทางทราฟฟิกระหว่างสองเครือข่ายที่มี iptables


4

ตกลงดังนั้นนี่เป็นการตั้งค่าเครือข่ายที่แปลกประหลาด แต่ฉันพยายามรับ internets จากเครือข่ายหนึ่งไปอีกเครือข่ายหนึ่ง

headless server ((((( wireless router (other network)-----internet
       |
       |
router (my network) ))))) wireless computers
   |   |   |
wired computers

ดังนั้นโดยทั่วไปฉันมีกล่อง Linux ที่ไม่มีหัวที่ฉันต้องการตั้งค่าเป็นเราเตอร์ระหว่างเครือข่ายของฉัน (eth0) และเครือข่ายอื่น (wlan0) ฉันควรจะสามารถกำหนดค่าทุกอย่างอื่น แต่ฉันไม่ได้มีประสบการณ์มากกับ iptables

ฉันทำแบบเดียวกันมาก่อนระหว่างเครือข่ายใช้สายสองเครือข่าย แต่ฉันไม่เคยเขียนกฏ

คำตอบ:


8

ที่จริงแล้วคุณไม่ต้องการ iptables สำหรับการกำหนดเส้นทางพื้นฐาน - iptables ช่วยคุณในการกรองและ NAT (และสิ่งอื่น ๆ ด้วย)

คุณสามารถเปิดใช้งานการส่งต่อแพ็คเก็ตด้วย:

sysctl -w net.ipv4.conf.all.forwarding=1

เพิ่มnet.ipv4.conf.all.forwarding=1ใน /etc/sysctl.conf เพื่อทำการตั้งค่า

ในกรณีที่คุณมีการกรองบนเซิร์ฟเวอร์ (คุณสามารถตรวจสอบเรื่องนี้ด้วยiptables -nvL- ถ้าห่วงโซ่ FORWARD มีนโยบายยอมรับคุณไม่ได้กรอง) คุณต้องเพิ่มกฎระเบียบเพื่อช่วยให้แพ็คเก็ตที่จะส่งต่อระหว่างเครือข่าย:

iptables -I FORWARD -i eth0 -o wlan0 -s wi.red.net.work/24 -d wire.less.net.work/24 -j ACCEPT
iptables -I FORWARD -i wlan0 -o eth0 -s wire.less.net.work/24 -d wi.red.net.work/24 -j ACCEPT

หากคุณไม่ได้กรอง แต่ต้องการ (เห็นด้วยเช่นกัน - โปรดดูความคิดเห็นของ @Red Tux เป็นการดีที่จะกรองตามค่าเริ่มต้นและอนุญาตขั้นต่ำเท่านั้น) เพิ่มกฎก่อนหน้านี้บวกกฎนี้:

iptables -P FORWARD DROP

สิ่งนี้จะเปลี่ยนนโยบายเพื่อให้แพ็คเก็ตทั้งหมดที่ไม่ตรงกับกฎใด ๆ จะถูกยกเลิก

นอกจากนี้หากคุณต้องการความปลอดภัยที่แท้จริงคุณควรกรองในเครือข่าย INPUT เช่นกัน เชนนี้ประมวลผลคำขอที่มาถึงเราเตอร์ของคุณด้วย IP ปลายทางที่ตรงกับหนึ่งในนั้นคือการเชื่อมต่อขาเข้า (ตัวอย่างเช่น SSH) ค่าเริ่มต้นที่เหมาะสมจะเป็น:

iptables -I INPUT -i eth0 -s allowed.admin.ip.here -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -i lo -j ACCEPT
iptables -P INPUT DROP # make sure you've put your IP on the first rule before running this 
                       # or you'll lock you out of the server

สิ่งนี้อนุญาตให้ SSH จากโฮสต์ที่ออกแบบในเครือข่ายแบบใช้สายเท่านั้น (รับทราบคำเตือน), อนุญาตการรับส่งข้อมูลทั้งหมดบนอินเทอร์เฟซแบบวนรอบ (ต้องการซอฟต์แวร์บางตัว) และทิ้งส่วนที่เหลือทั้งหมด

อย่างที่คุณเห็นคุณสามารถอนุญาตให้บางพอร์ต-p tcp|udp --dport Nใช้ได้ คุณควรพิจารณาทำสิ่งนี้บนเครือข่าย FORWARD เช่นกันเพื่อเพิ่มความปลอดภัย


1
คุณอาจต้องการบันทึกว่าเป็นวิธีปฏิบัติที่ดีที่สุดที่จะมีกฎการปฏิเสธเริ่มต้นในไฟร์วอลล์ทั้งหมดและคุณต้องอนุญาตอย่างน้อยที่สุดพอร์ตที่เปิดเพื่อความปลอดภัยที่ดี
ทักซิโดแดง

ฉันคิดว่า 'sysctl -w net.ipv4.conf.all.mc_forwarding = 1' อาจจำเป็นสำหรับไคลเอนต์ DHCP เพื่อรับที่อยู่ IP จากเซิร์ฟเวอร์ DHCP
Andrew Smart
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.