Negro旋 发表于 2019-8-29 15:00:24

开发板模拟 USB 网卡

本帖最后由 Negro旋 于 2019-9-26 09:16 编辑

本文主要讲述的是用开发板模拟成USB网卡,通过流量转发实现PC机上网。

第一步:内核配置

进入内核配置菜单选项中,选择以下选项:

1. Device Drivers -> USB Support -> USB Gadget Support,然后在 USB Gadget Driver 选项中选择到 Ethernet Gadget (with CDC Ethernet support)。
2. 选择到 RNDIS support 选项。

```
            ...
<*>   USB Gadget Drivers (Ethernet Gadget (with CDC Ethernet support))--->
      Ethernet Gadget (with CDC Ethernet support)       RNDIS support (NEW)
            ...
```

然后编译内核,并将内核烧录到开发板中。


第二步:IP 地址设置

在开发板上:
    1. 网线连接开发板,使开发板可以上网。对应的网卡是eth0, IP 地址是 168.168.100.48。
    2. ifconfig -a 可以查看到 usb0 网卡,这个是模拟出来的网卡。设置它的 IP 地址: ifconfig usb0 192.168.1.100。
    (注意 eth0 和 usb0 的网段不可以相同)

在 PC 机上:
    1. 用数据线连接开发板的 OTG 接口和 电脑的 USB 接口,然后执行 lsusb 可以看到 USB 网卡设备:Netchip Technology, Inc. Linux-USB Ethernet/RNDIS Gadget
    2. 设置 USB 网卡 IP 地址,网段和开发板 usb0 的要一致,这里设置为 192.168.1.101。
    3. 设置开发板的 usb0 为默认网关:sudo route add default gw 192.168.1.100。


第三步:开发板设置转发规则

在开发板上:
    1. 允许 IP 转发: echo 1 > /proc/sys/net/ipv4/ip_forward
    2. 添加转发规则: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 168.168.100.48

此时 PC 机就可以通过开发板模拟的 USB 网卡上网了。(如果 PC 机可以 ping 通开发板的 usb0 和 eth0 却无法上网,请将 PC 机上 USB 网卡的 DNS 设置为开发板 eth0 的 DNS 一致或者设置为 8.8.8.8或其他可用的 DNS)

更多的 Ubuntu 应用教程,可以参考 Firefly-RK3399 的 wiki。

http://wiki.t-firefly.com/zh_CN/ ... buntu_support.html#
页: [1]
查看完整版本: 开发板模拟 USB 网卡