เหตุใด eth0 จึงตอบสนองต่อที่อยู่ ip ที่กำหนดให้กับ ethernet gadget usb0


1

เรากำหนดค่าการเชื่อมต่อเครือข่ายบนระบบ Linux ที่ฝังอยู่โดยการตั้งค่าหนึ่งคงที่อยู่ IP (169.254.0.1/16=LLA) บน Ethernet-Gadget / usb0 ขณะใช้ DHCP บน Ethernet / eth0 (192.168./16)

เราประหลาดใจที่ระบบฝังตัวตอบสนองต่อ eth0 ไปยังที่อยู่ IP ifconfig บนอุปกรณ์ linux ในตัวจะแสดง:

eth0      Link encap:Ethernet  HWaddr <snip>
          inet addr:192.168.51.156 Bcast:192.168.55.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          <snip>
usb0      Link encap:Ethernet  HWaddr <snip>
          inet addr:169.254.0.1  Bcast:169.254.255.255  Mask:255.255.0.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          <snip>

ตารางเส้นทางในอุปกรณ์ลินุกซ์ฝังตัว:

root@my_embedded_system01:~# ip route
default via 192.168.50.30 dev eth0  proto dhcp  src 192.168.51.156  metric 1024
169.254.0.0/16 dev usb0  proto kernel  scope link  src 169.254.0.1 linkdown
192.168.48.0/21 dev eth0  proto kernel  scope link  src 192.168.51.156
192.168.50.30 dev eth0  proto dhcp  scope link  src 192.168.51.156  metric 1024

มีการตั้งค่าบนอุปกรณ์ฝังตัวซึ่งสามารถเปลี่ยนได้


มันตอบสนองต่อที่อยู่คงที่? คุณตรวจสอบวิธีการตอบสนองที่ได้รับอย่างไร
— Seth

ระบบฝังตัวหลายตัวเชื่อมต่อผ่าน eth0 ในเครือข่ายท้องถิ่นของเรา ฉันเชื่อมต่อกับ ssh 169.254.0.1 กับหนึ่งในระบบเหล่านี้ ไม่มีการเชื่อมต่อผ่าน USB
— ARi

ดังนั้นจึงไม่มีอันใดอันหนึ่งเชื่อมต่อด้วย USB? อุปกรณ์ฝังตัวของคุณอาจเปิดใช้งานการกำหนดเส้นทางและด้วยเหตุผลบางประการที่เวิร์กสเตชันท้องถิ่นของคุณมีเส้นทางสำหรับพวกเขา
— Seth

ใช่ฉันไม่รู้ว่าตารางเส้นทางดังกล่าวจะอนุญาตอย่างไร ที่อยู่ ip ที่กำหนดให้กับ Gadget ของอีเธอร์เน็ตเป็นที่อยู่ของลิงก์ในตัว เพื่อความเข้าใจของฉันที่ไม่ควรกำหนดเส้นทางเลย
— ARi

และปัญหาเกิดขึ้นเมื่อเราเชื่อมต่อระบบฝังตัวเดียวกับ USB แล้วลองเชื่อมต่อกับ ssh บนคอมพิวเตอร์ที่เชื่อมต่อกับระบบของเรามากขึ้นผ่านทางอีเธอร์เน็ต ssh 169.254.0.1 จะได้รับการตอบสนองโดยพลการของระบบเชื่อมต่อใด ๆ
— ARi

คำตอบ:


0

ใช้ไฟร์วอลล์ กฎ iptables ง่าย ๆ จะบล็อกทุก ๆ แพ็คเก็ตเป็นที่อยู่ usb0 เว้นแต่ว่าพวกเขาป้อนผ่าน usb0

-d 169.254.0.0/16 ! -i usb0 -j REJECT

โดยทั่วไปมีสองประเด็นแยกกันที่นี่:

  1. ตอบสนองต่อการสอบถาม ARP สำหรับที่อยู่ IP ที่เป็นของอินเทอร์เฟซอื่น
  2. การยอมรับแพ็กเก็ต IP หมายถึงที่อยู่ IP ที่เป็นของอินเทอร์เฟซอื่น

ส่วนแรกสามารถหลีกเลี่ยงได้อย่างง่ายดายโดยการเปลี่ยน net.ipv4.conf.all.arp_ignore sysctl ถึง 1 ตอนนี้มันเริ่มต้นที่ 0 เพราะในบางระบบปฏิบัติการใน IPv4 ที่อยู่จะถือว่าเป็นของโฮสต์ทั้งหมดแทนที่จะเป็นอินเตอร์เฟซที่เฉพาะเจาะจง (รุ่นโฮสต์ที่อ่อนแอ) แม้ว่ามันจะค่อนข้างแปลก

ส่วนที่สอง (ยอมรับแพ็กเก็ต IP ผ่านอินเตอร์เฟสใด ๆ ) เป็นเรื่องปกติสำหรับโฮสต์หลายเครือข่าย หากต้องการป้องกันให้ใช้กฎไฟร์วอลล์ รองรับทั้ง iptables และ nft ตรวจสอบอินเตอร์เฟสขาเข้า


1. ไม่มีปัญหา สำหรับ 2: ระบบฝังตัวยังไม่ได้ติดตั้ง iptables2 มีวิธีในการตั้งค่าตารางด้วย "เส้นทาง IP" หรือ "เส้นทาง" หรือไม่?
— ARi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.