ที่จริงแล้วคุณไม่ต้องการ 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 เช่นกันเพื่อเพิ่มความปลอดภัย