1 คะแนน โดย GN⁺ 4 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เพื่อดูทราฟฟิกขณะว่างของสมาร์ตทีวีด้วยตัวเอง ผู้เขียนจึงทำ Ethernet tap แบบพาสซีฟ ขึ้นมาเลียนแบบด้วยบอร์ด breakout RJ45 และมินิเบรดบอร์ด แทนการซื้อ Throwing Star LAN Tap ราคา €39
  • tap นี้ถูกต่อแบบอินไลน์ระหว่างเราเตอร์กับอุปกรณ์เป้าหมาย แล้วคัดลอกสัญญาณไปยัง พอร์ตมอนิเตอร์ สองพอร์ต โดยทำงานได้โดยไม่ต้องใช้ไฟเลี้ยง ซอฟต์แวร์ หรือการตั้งค่าใดๆ
  • J1-J2 ถูกต่อแบบตรงทั้ง 8 พินเหมือนสายแพตช์เคเบิล ส่วน J3·J4 จะส่งคู่สาย TX แบบสองทิศทางไปยังคู่สาย RX ของอุปกรณ์มอนิเตอร์แต่ละตัว เพื่อแยกดูทราฟฟิกตามทิศทาง
  • ใส่คาปาซิเตอร์ 220 pF 2 ตัวไว้ที่คู่สายที่ไม่ได้ใช้งานของพอร์ตมอนิเตอร์เพื่อรบกวน Gigabit autonegotiation และลดลิงก์ลงมาเหลือ 100 Mbps เพื่อดักเฉพาะ 2 คู่สายของ 100BASE-TX
  • ในการทดสอบกับสมาร์ตทีวี จับได้ 2,769 แพ็กเก็ตในเวลา 7.5 นาที ที่ค่าเฉลี่ย 14 kbps และยังคงรักษาลิงก์ 100 Mbps ได้โดยไม่มี CRC error จึงใช้งานเป็น tap แบบพาสซีฟสำหรับการทดลองได้ดี

Ethernet tap แบบพาสซีฟที่ทำจากเบรดบอร์ด

  • หลังจากเห็น Throwing Star LAN Tap แล้ว ผู้เขียนอยากตรวจดูว่าสมาร์ตทีวีสื่อสารมากแค่ไหน แต่แทนที่จะจ่าย €39 ก็สร้าง เวอร์ชันจำลองบนมินิเบรดบอร์ด ขึ้นมา
  • Ethernet tap แบบพาสซีฟเป็นอุปกรณ์อินไลน์อย่างง่ายที่วางคั่นระหว่างอุปกรณ์เป้าหมายกับเราเตอร์
    • คัดลอกสัญญาณไปยังพอร์ตมอนิเตอร์เพิ่มอีกสองพอร์ต
    • ไม่สามารถฉีดทราฟฟิกกลับเข้าไปได้ทางกายภาพ
    • ไม่ต้องใช้ไฟเลี้ยง ซอฟต์แวร์ หรือการตั้งค่า
    • พอร์ตมอนิเตอร์เป็นแบบ รับอย่างเดียว จึงมีโอกาสต่ำที่จะเผลอทำให้เครือข่ายเกิด DoS
  • การเดินสายและการบังคับให้เป็น 100 Mbps

    • tap มีแจ็ก RJ45 4 ตัว
    • J1 ต่อกับคอมพิวเตอร์, J2 ต่อกับเราเตอร์
    • J1 และ J2 ต่อถึงกันตรงตามพิน ทำงานทางไฟฟ้าเหมือนสายแพตช์เคเบิล
    • J3 ใช้มอนิเตอร์ทราฟฟิกจากคอมพิวเตอร์ไปยังเราเตอร์
    • ส่งคู่สาย TX ของ J1 ที่พิน 1·2 ไปยังคู่สาย RX ของ J3 ที่พิน 3·6
    • J4 รับผิดชอบทราฟฟิกในทิศทางตรงข้าม
    • ส่งคู่สาย TX ของ J2 ไปยังคู่สาย RX ของ J4
    • พิน 1·2 ของ J3 และ J4 ถูกปล่อยลอยไว้ เพื่อไม่ให้คอมพิวเตอร์ที่ใช้มอนิเตอร์ส่งข้อมูลออกไปได้
    • ใช้คาปาซิเตอร์เซรามิก 220 pF 2 ตัวเชื่อมคู่สายที่ไม่ได้ใช้งานของแจ็กมอนิเตอร์
    • C1 ต่อระหว่าง J3 พิน 4-5, C2 ต่อระหว่าง J4 พิน 7-8
    • คาปาซิเตอร์เหล่านี้ทำให้ Gigabit autonegotiation บนคู่สีน้ำเงินและสีน้ำตาลทำงานผิดปกติ จึงทำให้ลิงก์ลดลงมาเป็น 100 Mbps
    • Ethernet 100 Mbps ใช้เพียง 2 คู่สายจากทั้งหมด 4 คู่ และการจัดวางนี้ก็ดักเฉพาะ 2 คู่สายนั้นพอดี
    • หากเจรจาเป็น Gigabit ข้อมูลจะกระจายไปครบทั้ง 4 คู่สาย ทำให้สังเกตด้วย tap แบบนี้ได้ยาก

การประกอบและผลการจับแพ็กเก็ต

  • เดิมที Throwing Star LAN Tap ใช้ PCB แบบคัสตอม แต่ชุดนี้ประกอบจากบอร์ด breakout RJ45 4 ตัว, คาปาซิเตอร์ 2 ตัว และมินิเบรดบอร์ด
  • เส้นทางอินไลน์ต่อสายตรง 8 เส้นระหว่าง J1-J2 ไว้ที่ด้านหนึ่งของเบรดบอร์ด
  • จุดแยกสำหรับมอนิเตอร์แตกออกมาจากเส้นทางอินไลน์
    • J3 ใช้จัมเปอร์ต่อจาก J1 พิน 1·2 ไปยัง J3 พิน 3·6
    • J4 ต่อจาก J2 พิน 3·6 ไปยัง J4 พิน 3·6
    • คาปาซิเตอร์เชื่อมคู่สายที่ไม่ได้ใช้งานของแจ็กมอนิเตอร์โดยตรง
  • มีความกังวลว่าส่วนประกอบแฝงของเบรดบอร์ดอาจทำให้สัญญาณเสียหาย
    • 100BASE-TX ทำงานที่ 125 MHz
    • ค่าความจุแฝงระหว่างแถวที่อยู่ติดกันของเบรดบอร์ดโดยทั่วไปอยู่ที่ 2-5 pF และอิมพีแดนซ์ก็ไม่แมตช์
    • เนื่องจากสายอินไลน์สั้น สัญญาณจึงยังคงอยู่ได้โดยไม่มีปัญหา
    • แม้จะยากที่จะใช้เบรดบอร์ดในเครือข่ายโปรดักชัน แต่สำหรับการทดลองทำ tap แบบพาสซีฟก็ใช้งานได้ดีพอ
  • นำ tap ไปคั่นระหว่างสมาร์ตทีวีกับเราเตอร์ แล้วต่อเดสก์ท็อปเข้ากับพอร์ตมอนิเตอร์เพื่อจับแพ็กเก็ต
    • ในช่วง 7.5 นาทีแรก พบ 2,769 แพ็กเก็ต ที่ค่าเฉลี่ย 14 kbps
    • สมาร์ตทีวีในสถานะว่างส่วนใหญ่ส่งเพียงทราฟฟิกควบคุมและทราฟฟิกค้นหาอุปกรณ์
    • ทีวีส่งแพ็กเก็ต SSDP NOTIFY ไปยัง 239.255.255.250 จำนวน 877 ครั้งภายในเวลาไม่ถึง 5 นาที
    • มีการบรอดแคสต์บริการเดียวกันและประกาศชุดเดียวกันผ่าน mDNS ทั้งบน IPv4 และ IPv6
    • อุปกรณ์สมาร์ต 192.168.3.7 ที่อยู่อีกซับเน็ตหนึ่งส่งบรอดแคสต์เฟรมมาเป็นชุดจำนวน 34 เฟรม
    • เราเตอร์ 192.168.2.254 ตอบทุกอย่างด้วย IGMP query
  • จากทั้งหมด 2,769 เฟรม มี CRC error 0 ครั้ง และไฟลิงก์คงที่ที่ 100 Mbps อย่างเสถียร
  • เมื่ออะแดปเตอร์ USB Ethernet มาถึง ก็จะสามารถดักทราฟฟิกจากโน้ตบุ๊กจริงได้เช่นกัน

1 ความคิดเห็น

 
GN⁺ 4 시간 전
ความคิดเห็นบน Lobste.rs
  • ถ้ามีสวิตช์ที่ตั้งค่าได้ ก็มีโอกาสค่อนข้างสูงที่จะรองรับ port mirroring สำหรับงานแบบนี้
    ถ้าไม่อยากทำเอง วิธีนั้นน่าจะง่ายกว่า

    • เราเตอร์ที่ ISP ให้เช่าไม่มีฟีเจอร์แบบนั้น แต่ถ้าภายหลังจะซื้อสวิตช์ภายนอก ก็คงจะนึกถึง port mirroring ไว้
    • แต่สมมติฐานนั้นค่อนข้างใหญ่
      อย่างน้อยผมก็ไม่เคยเห็น managed switch สำหรับผู้บริโภคทั่วไป
  • แก่นของโปรเจกต์แบบนี้ดูเหมือนจะเป็นการแคปเจอร์ เลยอยากให้เน้นส่วน packet capture มากกว่านี้
    สมาร์ตทีวีของผมเองก็สร้างทราฟฟิกที่ไม่พึงประสงค์จำนวนมากตอนสแตนด์บาย นอกเหนือจาก mDNS และ SSDP

    • แคปเจอร์แค่พอให้ยืนยันว่าอุปกรณ์ทำงานได้เท่านั้น
      ตอนนี้ยังไม่มีอะแดปเตอร์ USB Ethernet สำหรับใช้กับโน้ตบุ๊ก เลยค่อนข้างไม่สะดวกกับการเอาไปวางคั่นระหว่างเดสก์ท็อปกับทีวี
      ถ้าอะแดปเตอร์มาถึงแล้ว คงจะเขียนบทความที่น่าสนใจกว่านี้โดยโฟกัสส่วนนั้น
  • วิธีที่ถูกกว่าและหยาบกว่านี้คือ ใช้ keystone jack แบบ punch-down สองตัวก็ทำงานเดียวกันได้
    https://janitha.com/articles/passive-splice-network-tap/

  • ตอนเรียนเน็ตเวิร์กกิง ผมจำได้ว่าเคยเรียนว่ามี hub Ethernet ที่ถูกออกแบบให้บรอดแคสต์ฝั่งส่งของพอร์ต Ethernet แต่ละพอร์ตไปยังฝั่งรับของพอร์ตอื่นทั้งหมด
    ผมว่านี่ก็น่าจะอยู่กึ่งกลางประมาณนั้น
    แน่นอนว่าผมไม่เคยเห็นฮับดั้งเดิมแบบนั้นของจริงเลย บางทีผมอาจจะเด็กเกินไปก็ได้…

    • ออนไลน์ยังมีสินค้า Ethernet splitter ราคาถูกที่ทำงานแบบนั้นขายอยู่
      แน่นอนว่ามันเสี่ยงต่อ collision จึงไม่น่าเชื่อถือเท่าไร
      ผมไม่เคยซื้อ แต่เคยเห็นข้างในจากวิดีโอนี้: https://youtu.be/QgrVVyIzecM?t=266
    • ผมมีฮับดั้งเดิมแบบนั้นอยู่
      ทำให้รู้สึกว่าตัวเองแก่เลย ;-)
    • ใช่ ของแบบนั้นโดยมากน่าจะเป็นของยุค 10BASE-T
      หลังจากนั้นผมคิดว่าความเสี่ยงเรื่อง collision น่าจะกลายเป็นปัญหาใหญ่เกินไป