วิธีการบังคับ Linux Bridge ให้ส่งออกเฟรมในหลาย ๆ อินเตอร์เฟส?


0

ฉันมีเราเตอร์ Linksys E2500 ที่ใช้ Tomato v1.28 (เคอร์เนล Linux 2.6.22.19, ไม่มีความสามารถของไดรฟ์ USB) ที่ทำงานในโหมดบริดจ์เพื่อเชื่อมต่อสามอินเตอร์เฟส:

root@TomatoE2500Host:/# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.586d8fb74454       no              eth1
                                                        eth2
                                                        vlan1
  • eth1 เป็น 2.4 GHz Wireless (โหมดจุดเข้าใช้งาน - Xbox เป็นโฮสต์ไร้สายเท่านั้น)
  • eth2 เป็นแบบไร้สาย 5.0 Ghz (โหมดไคลเอนต์ไปยังเราเตอร์เกตเวย์หลัก / อุปกรณ์อื่น ๆ )
  • vlan1 เป็นพอร์ตอีเธอร์เน็ต 4x LAN (เดสก์ท็อป Windows 10 เป็นแบบมีสายโฮสต์เท่านั้น)

บริดจ์ทำงานได้ดีสำหรับจุดประสงค์ 'ปกติ' แต่ฉันพยายามใช้เดสก์ท็อป Windows ที่ใช้ Wireshark เพื่อส่งข้อมูลแพ็คเก็ตระหว่าง Xbox และเกตเวย์หลัก

root@TomatoE2500Host:/# brctl showmacs br0
port no mac addr                is local?       ageing timer
  3     00:01:36:1f:e4:5c       yes                0.00
  2     4c:0b:be:3e:5b:2d       no                36.09
  1     58:6d:8f:b7:44:54       yes                0.00
  2     58:6d:8f:b7:44:56       yes                0.00
  3     68:37:e9:50:ce:f7       no               100.34
  3     6c:56:97:04:1e:3f       no               100.63
  3     a0:cc:2b:ad:46:d1       no               224.45
  3     b0:39:56:69:aa:eb       no                 1.02
  1     f4:6d:04:4f:9f:6a       no                 0.01

เฟรม / แพ็คเก็ตจาก Xbox (4c: 0b: เป็น: 3e: 5b: 2d) บนeth1 (พอร์ต 2) นั้นจะถูกผลักไปที่เกตเวย์เท่านั้น (b0: 39: 56: 69: aa: eb) บนeth2 ( พอร์ต 3) ในขณะที่เดสก์ทอปแบบใช้สาย (f4: 6d: 04: 4f: 9f: 6a) บนvlan1 (พอร์ต 1) กำลังจะถูกทิ้งไว้ในที่มืด

ฉันจะบังคับเฟรมจากอินเตอร์เฟสeth1ให้ออกอากาศบนอินเตอร์เฟสvlan1นอกเหนือจากค่าเริ่มต้น / จำเป็นต้องใช้eth2 ได้อย่างไร

ราวกับว่าฉันต้องการการโจมตีMAC Floodingกับตัวเองเพื่อบังคับบริดจ์เป็นแพ็กเก็ตการกระจายสัญญาณบนหลายอินเตอร์เฟสแทนการพึ่งพาฐานข้อมูลการส่งต่อ (FDB) ที่แสดงด้านบน แต่จะต้องมีวิธีที่ดีกว่าในการเปิดใช้งานสิ่งนี้ใช่ไหม


วิธีที่ง่ายที่สุดคือไม่พยายามทำให้บริดจ์ทำเช่นนั้น แต่ให้แทนที่บางสิ่งระหว่าง xbox กับบริดจ์ (แล็ปท็อปหรือเนมสเปซเครือข่ายบนเราเตอร์) กำหนดค่าการส่งต่อและ / หรือ NAT และ wireshark / tcpdump
dirkt

หากคุณมีtcpdumpประโยชน์ในกล่อง Linksys ของคุณคุณสามารถจับภาพบนอุปกรณ์โดยตรง
Daniel B

คำตอบ:


1

ฐานข้อมูลการส่งต่อสนับสนุนการแมปที่อยู่ unicast กับหนึ่งพอร์ต (ซึ่งเป็น apropriate สำหรับ 'unicast' ที่มีหนึ่งปลายทาง) มีวิธีอื่น ๆ :

  • คุณสามารถใช้TEEเป้าหมายของ iptables ได้เช่นเดียวกับในหัวข้อนี้ เพื่อให้ใช้งานได้คุณจะต้องเปิดใช้งานการกรองสะพาน iptables ก่อน:

    ip link set dev br0 type bridge nf_call_iptables 1
    
  • ในทำนองเดียวกันคุณอาจใช้dupแอ็คชันในตารางบริดจ์ nftables :

    iifname "br0" dup to "eth0"
    
  • เช่นเดียวกับในบทความนี้คุณสามารถใช้tcกับ "action mirred" และพารามิเตอร์อื่น ๆ ที่ไม่สามารถเข้าใจได้

  • คุณสามารถใช้โปรแกรม userspace เพื่อจับแพ็กเก็ตบนบริดจ์และส่งต่อพวกเขาผ่านอินเตอร์เฟสอื่นไม่ว่าจะดิบหรือห่อหุ้ม (เช่นภายในอุโมงค์ TZSP หรือ ERSPAN) ตัวอย่างหนึ่งคือRSniffer ในด้านการรับ Wireshark จะจดจำแพ็คเก็ตที่ห่อหุ้มโดยอัตโนมัติ

  • คุณสามารถรันtcpdumpผ่าน SSH และป้อนข้อมูลผลลัพธ์ไปยัง UI Wireshark ท้องถิ่น:

    ssh router tcpdump -n -i eth2 -s 65535 -w - -U | wireshark -k -i -
    

    (ใช่เว็บบอกว่าคุณต้องการไดรฟ์ USB สำหรับ "เต็ม" 2 MB tcpdump แต่แน่นอนว่ามีรุ่น Lite อยู่ที่ไหนสักแห่ง (บางอย่างdumpcap) คุณไม่จำเป็นต้องใช้รหัสการวิเคราะห์แพ็คเก็ตใด ๆ ดูเหมือนว่าประเภทนี้ สิ่งที่ไม่ควรต้องการไบนารีที่มีขนาดใหญ่กว่า 10 kB ... )

  • เป็นทางเลือกสุดท้ายคุณสามารถซื้อสวิตช์หรือเราเตอร์ตัวอื่นซึ่งรองรับการทำมิเรอร์พอร์ตแบบเนทีฟ (ตัวอย่างเช่นสวิตช์ที่มีการจัดการมักจะมี "พอร์ตมิเรอร์" หรือ "พอร์ต SPAN" และอุปกรณ์ที่ใช้ RouterOS มีการสนับสนุนแบบเนทีฟสำหรับการดักจับแบบ tcpdump ผ่านอุโมงค์ TZSP)

โปรดทราบว่า Linksys ของคุณมีสองบริดจ์ซ้อนกัน - อุปกรณ์ "vlan1" (พอร์ต 4x LAN ของคุณ) มักแสดงถึงฮาร์ดแวร์สวิตช์ซึ่งมี FDB อิสระของตัวเองดังนั้นทราฟฟิกระหว่างพอร์ตเหล่านี้ไม่ถึงซอฟต์แวร์บริดจ์ Linux เลย


ฉันคิดว่ารุ่นเคอร์เนล Linux (2.6.22.19, เพิ่มใน OP) และโมดูล sparse เป็นปัจจัย จำกัด สำหรับโซลูชันเหล่านี้บางตัว สำหรับกระสุนลูกที่สองของคุณnftablesสามารถใช้ได้เฉพาะกับ Linux kernels> = 3.13 เท่านั้น แต่สิ่งที่คล้ายกับกระสุนแรกควรจะเป็นไปได้สำหรับฉันโดยใช้คำสั่งผู้เบิกทางnftables ebtables / iptablesถ้าเพียง แต่ฉันสามารถเอาตะขอ iptables เพื่อยิงในโหมดบริดจ์ . ... (ต่อ)
Beerman58

(ต่อ) ... ด้วยเหตุนี้การip link set dev br0 type bridge nf_call_iptables 1ขว้างError: either "dev" is duplicate, or "type" is a garbage.และยิ่งip link set helpเปิดเผยทั่วไปมากขึ้นก็ไม่มีtypeทางเลือก ทั้งหมดนี้มาจากการip -V ip utility, iproute2-ss070710ฉันดูเหมือนจะไม่มีโมดูลBridge-nfให้ใช้งานด้วย (นอกจากนี้ด้วย iptables v1.3.8 ฉันจะต้องติดกับเป้าหมาย ROUTE แทน TEE ที่มาในv1.4.8 ) จะคอยขุด
Beerman58

การตั้งค่าเดียวกันควรพร้อมใช้งานผ่าน sysctl แม้ว่าพารามิเตอร์ที่แน่นอนดูเหมือนว่าจะมีการเปลี่ยนแปลง ( serverfault.com/questions/162366/… )
grawity

การค้นหารายการ sysctl แบบละเอียด (ซึ่งฉันต้องเข้าถึงผ่านระบบไฟล์/ proc / sys ) ไม่ส่งคืนพารามิเตอร์ที่เกี่ยวข้องกับ 'nf_call_iptables' จากระยะไกล … (ต่อ)
Beerman58

(ต่อ) ... ในราชประสงค์พยายามย้าย Xbox ไปยังจุดเชื่อม 5Ghz ประตูของ (ข้างมะเขือเทศ E2500 เราเตอร์eth2 ) แล้วพยายามที่จะ promiscuously สะพานจากeth2เพื่อvlan1ใช้ip link set eth2 promisc onแล้วebtables -t nat -A PREROUTING -s 4C:0B:BE:3E:5B:2D -j dnat --to-destination F4:6D:04:4F:9F:6Aและebtables -t nat -A PREROUTING -d 4C:0B:BE:3E:5B:2D -j dnat --to-destination F4:6D:04:4F:9F:6Aแต่นับแพ็คเก็ตแสดงกฎเหล่านี้จะไม่ได้รับ ทริกเกอร์อย่างใดอย่างหนึ่ง จะลองtcหรือควบคุมจากระยะไกลtcpdumpต่อไป
Beerman58
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.