ฉันมีรูปที่ดีพร้อมตัวกรองที่ถูกแฮชสร้างขึ้นที่สะพานลินุกซ์ ในระยะสั้นbr0
เชื่อมต่อexternal
และinternal
อินเตอร์เฟซทางกายภาพแพ็คเก็ตที่ติดแท็ก VLAN จะเชื่อมโยง "โปร่งใส" (ฉันหมายถึงไม่มีการเชื่อมต่อ VLAN อยู่ที่นั่น)
ตอนนี้เมล็ดที่แตกต่างกันทำแตกต่างกัน ฉันอาจผิดกับช่วง verions เคอร์เนลที่แน่นอนโปรดยกโทษให้ฉัน ขอบคุณ
2.6.26
ดังนั้นในเดเบียน 2.6.26 และสูงกว่า (มากถึง 2.6.32 ฉันเชื่อ) --- งานนี้:
tc filter add dev internal protocol 802.1q parent 1:0 prio 100 \
u32 ht 1:64 match ip dst 192.168.1.100 flowid 1:200
ที่นี่ "เคอร์เนล" ตรงกับสองไบต์ในฟิลด์ "โพรโทคอล" กับ 0x8100 แต่นับจุดเริ่มต้นของแพ็กเก็ต ip เป็น "ตำแหน่งศูนย์" (ขออภัยสำหรับภาษาอังกฤษของฉันถ้าฉันยังไม่ชัดเจน)
2.6.32
อีกครั้งในเดเบียน (ฉันไม่ได้สร้างเคอร์เนลวานิลลา), 2.6.32-5 --- งานนี้:
tc filter add dev internal protocol 802.1q parent 1:0 prio 100 \
u32 ht 1:64 match ip dst 192.168.1.100 at 20 flowid 1:200
ที่นี่ "เคอร์เนล" ตรงกับที่เหมือนกันสำหรับโปรโตคอล แต่นับ offset จากจุดเริ่มต้นของส่วนหัวของโปรโตคอลนี้ฉันต้องเพิ่ม 4 ไบต์เพื่อชดเชย (20 ไม่ใช่ 16 สำหรับที่อยู่ dst) มันโอเคดูเหมือนว่าจะมีเหตุผลมากกว่าสำหรับฉัน
3.2.11 ล่าสุดที่มีเสถียรภาพในขณะนี้
ใช้งานได้ --- ราวกับว่าไม่มีแท็ก 802.1q เลย:
tc filter add dev internal protocol ip parent 1:0 prio 100 \
u32 ht 1:64 match ip dst 192.168.1.100 flowid 1:200
ปัญหาคือฉันไม่สามารถหาวิธีจับคู่แท็ก 802.1q ได้
การจับคู่แท็ก 802.1q ที่ผ่านมา
ฉันสามารถทำสิ่งนี้มาก่อนดังนี้
tc filter add dev internal protocol 802.1q parent 1:0 prio 100 \
u32 match u16 0x0ed8 0x0fff at -4 flowid 1:300
ตอนนี้ฉันไม่สามารถจับคู่ 802.1q แท็กat 0
, at -2
, at -4
, at -6
หรือชอบว่า ปัญหาหลักที่ฉันมีนับเป็นศูนย์ฮิต --- ตัวกรองนี้ไม่ได้ถูกตรวจสอบเลย "โปรโตคอลผิด" ในคำอื่น ๆ
ได้โปรดใครก็ได้ช่วยฉันด้วย :-)
ขอบคุณ!
protocol all
ให้ฉันRTNETLINK answers: Invalid argument
(เคอร์เนล 3.3.4 ที่นี่) ฉันจะทดสอบสิ่งนี้ด้วยเมล็ดใหม่ ขอบคุณ.