เหตุใด 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.