DHCP สำหรับอินเตอร์เฟสอีเธอร์เน็ตเสมือน USB


1

ฉันกำลังพยายามเชื่อมต่อของฉัน Arietta G25 บอร์ด Debian ARM ไปยังเครือข่ายในบ้านของฉันโดยใช้ DHCP (หรือล้มเหลวนั่นคือ IP แบบคงที่ในซับเน็ตที่ถูกต้อง) ขณะนี้ฉันกำลังใช้บอร์ดผ่าน USB ซึ่งแสดงเป็นอินเตอร์เฟสอีเธอร์เน็ตเสมือนบางชนิดที่กำหนดค่าโดยใช้สแตติก 192.168.10.0/24 IP ฉันสามารถเข้าถึงได้ (SSH) จากเครื่องที่เสียบเข้ากับเครื่อง แต่ฉันต้องการเข้าถึงเครือข่ายที่เหลือของฉันบน 192.168.1.0/24 และอินเทอร์เน็ตจากบอร์ดรวมทั้งเข้าถึงบอร์ดจากเครือข่ายในบ้านของฉัน

เครือข่ายในบ้านเปิดอยู่ 192.168.1.0/24 เครือข่ายย่อย

ปัจจุบันฉันมีสอง /etc/network/interfaces ไฟล์:

กำหนดค่าโฮสต์ (กล่องโฮสต์ Linux)

allow-hotplug usb0
iface usb0 inet static
    address 192.168.10.20
    netmask 255.255.255.0

คณะกรรมการกำหนดค่า (บอร์ด Debian ARM ผ่าน USB)

auto usb0
iface usb0 inet static
    address 192.168.10.10
    netmask 255.255.255.0
    gateway 192.168.10.20

ฉันลองตั้งค่า IP ของบอร์ดเป็น 192.168.1.90 แต่นั่นทำให้ไม่สามารถเข้าถึงได้ บางทีสิ่งที่ต้องทำกับเกตเวย์? ฉันยังลอง

iface usb0 inet dhcp

ไม่มีประโยชน์

ฉันจะทำให้บอร์ด ARM ที่เชื่อมต่อ USB กับ virtual-Ethernet-interface ของฉันมีที่อยู่ IP (DHCP หรือสถิต) บน 192.168.1.0/24 เครือข่ายย่อยที่ใช้โดยเครือข่ายที่เหลือของฉันเมื่อเสียบเข้ากับกล่องผ่าน USB ฉันต้องการใช้ DHCP มีเซิร์ฟเวอร์ DHCP ที่ทำงานบนเราเตอร์ 192.168.1.1.

คำตอบ:


1

การตั้งค่า IP ของบอร์ดเป็น 192.168.1.90 จะไม่ทำงานเนื่องจากการกำหนดเส้นทางจะล้มเหลว ถ้าคุณวิ่ง ip route บนกล่องโฮสต์ก็จะแสดงให้เห็นว่า 192.168.1.0/24 เชื่อมต่อผ่านการเชื่อมต่อเครือข่ายปกติของคุณกับ LAN ที่เหลือ กำลังพยายามกำหนดเส้นทางแพ็กเก็ตออกมาจากส่วนต่อประสานนั้นไม่ใช่ usb0 ตามที่ตั้งใจไว้.

สองตัวเลือก:

  1. ใช้โฮสต์ Linux เป็นเราเตอร์ สิ่งนี้ต้องการการเปิดใช้งานการส่งต่อและการตั้งค่า NAT (MASQUERADING) ด้วย iptables (อันที่จริงแล้วค่อนข้างง่าย)

  2. สร้างบริดจ์อินเตอร์เฟสบนกล่องโฮสต์ของคุณและเพิ่มฟิสิคัลอินเตอร์เฟสทั้งสองเข้ากับบริดจ์นั้น นี่คือการเชื่อมต่อทั้งคู่เข้ากับสวิตช์เดียวกัน แต่ทำในซอฟต์แวร์ ฉันจะถือว่าเครือข่ายของคุณเชื่อมต่อกับกล่องโฮสต์บน eth0:

    brctl addbr br0
    brctl addif br0 usb0
    brctl addif eth0
    

นี่ควรทำงาน© คุณอาจต้องติดตั้ง bridge-utils บรรจุภัณฑ์ เนื่องจากคุณกำลังใช้ Distrobased Debian ดูที่นี่ .


ขอบคุณสำหรับคำตอบ. ฉันพยายามสร้างสะพานซึ่งทำให้บอร์ดไม่สามารถเข้าถึงได้อย่างสมบูรณ์ด้วยเหตุผลบางอย่าง แต่ฉันจัดการเพื่อตั้งกฎ NAT บางอย่างในของฉัน iptables config ที่ใช้งานได้
Bojangles

:) นี่อาจไม่ใช่ปัญหาของคุณ แต่ฉันควรเพิ่มไว้ด้วยว่าบริดจ์จะไม่ทำงานผ่านระบบไร้สาย ไม่ว่าในกรณีใดดีใจที่ได้ยินว่าคุณทำงานได้ดี
Greg Bowser

1

สิ่งนี้เป็นไปได้โดยใช้ NAT และ iptables (ขอบคุณคำตอบของ Greg Bowser สำหรับแรงบันดาลใจ) ทะลึ่ง eth0 เป็นอินเตอร์เฟซเครือข่ายและ usb0 เป็นอินเทอร์เฟซเครือข่ายของ Arietta สิ่งนี้จะตั้งค่าการเราต์บนโฮสต์ ชั่วคราว :

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o usb0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT

ให้การทดสอบ (อาจจำเป็นต้อง ifdown usb0 และ ifup usb0 หรือรีบูต Arietta) หากกฎทำงานได้คุณควรจะสามารถ ping ที่อยู่ภายนอก ( 192.168.1.1 หรือ google.com บางที) จาก Arietta

หากกฎ iptables ข้างต้นใช้งานได้คุณสามารถทำได้ ถาวร โดยการเพิ่ม net.ipv4.ip_forward = 1 ไปยัง /etc/sysctl.conf และบันทึกกฎ iptables ฉันทำสิ่งนี้โดยการติดตั้ง iptables-persistent ( apt-get install iptables-persistent ) และบันทึกกฎระหว่างการติดตั้ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.