หากคุณพร้อมที่จะทำการเขียนโค้ดคุณสามารถลอง:
- สร้างเนมสเปซเครือข่ายใหม่โดยใช้
CLONE_NEWNET
แฟล็กสำหรับการclone
โทรของระบบหรือโดยการใช้ip netns add
และip netns exec
คำสั่ง
- ในลัง namespace นี้เป็นชุดของการเชื่อมต่อเครือข่ายเสมือนใช้โปรแกรมควบคุมหรือ
tun
ip link add
- โหลดการกำหนดค่าโดยใช้
iptables-restore
- ป้อนจำนวนของแพ็กเก็ตตามกฎผ่านอุปกรณ์
tun
หรือveth
- สังเกตว่าคุณได้รับแพ็กเก็ตที่ถูกต้องจาก
tun
หรือveth
อุปกรณ์
วิธีนี้มีแนวโน้มว่าจะทำงานได้ดีที่สุดสำหรับการทดสอบกฎสำหรับแพ็คเก็ตที่ส่งต่อ การเชื่อมต่อไปยัง / จากเครื่องที่ใช้ iptables นั้นต้องใช้ความพยายามอีกเล็กน้อย แต่ควรจะทดสอบวิธีนี้ได้เช่นกัน
นี่คือตัวอย่างของลำดับของคำสั่งที่สามารถใช้ได้:
ip netns add test-iptables
ip netns add test-iptables-some-guy-on-the-internet
ip netns add test-iptables-lan-host
ip netns exec test-iptables ip link add eth0 type veth peer name eth0-peer
ip netns exec test-iptables ip link set eth0-peer netns test-iptables-some-guy-on-the-internet
ip netns exec test-iptables ip link add eth1 type veth peer name eth1-peer
ip netns exec test-iptables ip link set eth1-peer netns test-iptables-lan-host
ip netns exec test-iptables ifconfig eth0 192.0.2.2 netmask 255.255.255.0
ip netns exec test-iptables ifconfig eth1 203.0.113.1 netmask 255.255.255.0
ip netns exec test-iptables-some-guy-on-the-internet ifconfig eth0-peer 192.0.2.1 netmask 255.255.255.0
ip netns exec test-iptables-some-guy-on-the-internet route add default gateway 192.0.2.2
ip netns exec test-iptables-lan-host ifconfig eth1-peer 203.0.113.2 netmask 255.255.255.0
ip netns exec test-iptables-lan-host route add default gateway 203.0.113.1
ip netns exec test-iptables-some-guy-on-the-internet telnet 203.0.113.2
ip netns exec test-iptables iptables-restore < /tmp/iptables-test
ip netns exec test-iptables-some-guy-on-the-internet telnet 203.0.113.2
ip netns del test-iptables
ip netns del test-iptables-some-guy-on-the-internet
ip netns del test-iptables-lan-host
สิ่งนี้จะสร้างเนมสเปซเครือข่ายสามรายการสำหรับการทดสอบและโหลดชุดของกฎ iptables ในหนึ่งในนั้น อีกสองคนทำหน้าที่เป็นบทบาทของผู้ชายบางคนบนอินเทอร์เน็ตและโฮสต์บน LAN
ในตัวอย่างข้างต้นtelnet
คำสั่งแรกรับการเชื่อมต่อถูกปฏิเสธจากtest-iptables-lan-host
เนมสเปซtelnet
คำสั่งที่สองรับการหมดเวลาหากชุดกฎลดลงแพ็คเก็ต
สิ่งนี้ไม่ได้แตะเนมสเปซเครือข่ายเริ่มต้นซึ่งเป็นค่าเริ่มต้นที่การผลิตของคุณจะเกิดขึ้น วิธีเดียวที่จะได้รับการแยกออกจากการผลิตของคุณมากขึ้นคือการทำงานบนโฮสต์ที่แยกต่างหาก (แบบฟิสิคัลหรือเสมือน)