USB 虚拟以太网接口的 DHCP

USB 虚拟以太网接口的 DHCP

我正在尝试连接我的艾丽埃塔 G25使用 DHCP(如果失败,则使用正确子网中的静态 IP)将 Debian ARM 开发板连接到我的家庭网络。我目前通过 USB 使用开发板,它显示为某种使用静态 IP 配置的虚拟以太网接口192.168.10.0/24。我可以从插入它的机器访问它(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

主板配置(通过 USB 连接 Debian ARM 板)

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

无济于事。

当我通过 USB 插入盒子时,如何才能让我的 USB 连接虚拟以太网接口 ARM 板在192.168.1.0/24其余网络使用的子网上拥有 IP 地址(DHCP 或静态)?我更喜欢使用 DHCP。路由器上有一个 DHCP 服务器正在运行192.168.1.1

答案1

将主板的 IP 设置为192.168.1.90不起作用,因为路由会失败。如果您ip route在主机上运行,​​它将显示192.168.1.0/24通过正常网络连接连接到 LAN 的其余部分。它正在尝试将数据包路由出该接口,但并非usb0按预期进行。

两个选项:

  1. 使用 Linux 主机作为路由器。这需要启用转发并使用 iptables 设置 NAT(伪装)(这实际上非常简单)

  2. 在主机上创建一个桥接接口,并将两个物理接口添加到该桥接器。这基本上就像将它们都连接到同一个交换机,但是通过软件完成。我假设您的网络已连接到主机eth0

    brctl addbr br0
    brctl addif br0 usb0
    brctl addif eth0
    

这应该可以正常工作©。您可能需要安装该bridge-utils软件包。由于您使用的是基于 Debian 的发行版,看这里

答案2

这可以通过使用 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)。如果规则有效,您应该能够从 Arietta ping 外部地址(192.168.1.1或者可能)。google.com

如果上述 iptables 规则有效,你可以让它们永恒的通过添加net.ipv4.ip_forward = 1/etc/sysctl.conf保存 iptables 规则。我通过安装iptables-persistent( apt-get install iptables-persistent) 并在安装过程中保存规则来实现此目的。

相关内容