พื้นหลัง
ฉันได้กำหนดค่า OpenWRT ในโหมดบริดจ์แล้ว
ฉันพุชแพ็กเก็ตจาก L2 ถึง L3 โดยใช้ net.bridge.bridge-nf-call-iptables=1
สถานการณ์แพ็คเก็ตที่ไม่ได้ติดแท็ก
ในกรณีของแพ็กเก็ตที่ไม่ติดแท็ก การตั้งค่านี้ทำงานได้ดีและฉันสามารถสกัดกั้นแพ็กเก็ตทั้งหมดและเปลี่ยนเส้นทางไปยังพอร์ทัลแคปทีฟโดยใช้กฎ iptable เช่น:
iptables -A PREROUTING -m physdev --physdev-in ath242113 -j prt_captive_2113
iptables -A PREROUTING -m physdev --physdev-in ath512113 -j prt_captive_2113
iptables -A prt_captive_2113 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -A prt_captive_2113 -p tcp -m tcp --dport 443 -j REDIRECT --to-พอร์ต 8443
โดยที่ ath242113 และ ath512113 เป็นอินเทอร์เฟซ wifi ของฉัน
แท็กแพ็คเก็ต / สถานการณ์ VLAN
ในกรณีของการตั้งค่า Bridged VLAN การเปลี่ยนเส้นทางจะไม่ทำงานกับการกำหนดค่าปกติและกฎ iptables เช่นข้างต้น
นี่คือการตั้งค่าสะพานของฉัน:
br-vlan80 7fff.587be915a963 ไม่มี ath242113
ฐ512113
eth0.80
โดยที่ ath242113 และ ath512113 เป็นอินเตอร์เฟสไร้สาย และ eth0.80 เป็นอินเตอร์เฟสอีเทอร์เน็ตที่ถูกแท็ก
ดังนั้นฉันจึงลองเปิดใช้งาน net.bridge.bridge-nf-filter-vlan-tagged=1 และ bridge-nf-pass-vlan-input-device=1 ตามแพทช์นี้ :
https://patchwork.ozlabs.org/project/netfilter-devel/patch/[email protected]/
ฉันยังเปลี่ยนกฎ iptables เป็น:
iptables -A PREROUTING -i br-vlan80 -j prt_captive_2113
iptables -A prt_captive_2113 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -A prt_captive_2113 -p tcp -m tcp --dport 443 -j REDIRECT --to-พอร์ต 8443
แต่ดูเหมือนจะไม่ทำงานเช่นกัน