国产ARM开发板的USB/以太网应用 的教程


之前看到USB-gadget网卡的用法,发现国产的开发板配置相对树莓派Zero高得多,拿来做成网络转发的应该很有前途,于是乎就买了最便宜的香橙派(orange pi one)来试试,结果很是顺利,结合以前的研究资料,没多大代价就做了出来,这里跟大家分享一下。

    首先去一趟www.armbian.com ,去看看哪些板子支持ARMBIAN系统,再看看板子的图片上有没有usb-otg接口,理论上支持ARMBIAN和有OTG口和网口的板子,都能做成ARM网卡来玩。国产就香橙派和NANO Pi做得高性价比。
    刷入系统跟普通的一样用Win32diskimager或者Etcher都可以,把对应的ARMBIAN系统刷进去TF卡里,然后就插入开机就可以。默认账户密码是root 、1234,进去之后,需要自己修改和设置非root账号密码,这些最好是有HDMI显示器和键盘本机设置。ssh默认开启。
    只要往/etc/rc.local文件里面加入这三句启动语句 :
    modprobe g_ether 
    ifconfig usb0 up 
    ifup usb0 
    重启后,USB-OTG口就是网络模式了,用手机数据线连接到电脑的USB口,就能识别出USB-RNDIS网络设备了。
    安装一下所需要的dhcp软件
    sudo apt update
    sudo apt install dnsmasq isc-dhcp-common
    然后修改 /etc/dhcpcd.conf文件,
    sudo nano /etc/dhcpcd.conf
    在文件末尾添加这两句
    interface usb0
    static ip_address=192.168.253.1/24
    然后再修改 /etc/network/interfaces文件
    sudo nano /etc/network/interfaces
    添加一下段落(或者修改到跟以下段落一样)
     
    auto lo 
    iface lo inet loopback

    auto eth0
    iface eth0 inet dhcp

    auto usb0
    iface usb0 inet static
    address 192.168.253.1
    netmask 255.255.255.0
    修改完毕之后,重启dhcp服务
    sudo service dhcpcd restart
    重启dhcp失败了也不要紧,可以直接重启树莓派。
    sudo reboot
    重启过后,修改网段配置文件
    sudo nano /etc/udhcpd.conf
    
    start 192.168.253.100 #配置网段
   end 192.168.253.150
    interface usb0 # The device uDHCP listens on.
    remaining yes
    opt dns 192.168.1.1 223.5.5.5
    opt subnet 255.255.255.0
   opt router 192.168.253.1 # 无线lan网段
   opt lease 3600 # 租期一小时
   之后备份一下文件/etc/dnsmasq.conf
   sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
  然后编辑
  sudo nano /etc/dnsmasq.conf
  添加一下段落的文件(或者修改到跟以下段落一样)
  interface=usb0
  bind-interfaces
  server=180.76.76.76
  server=114.114.114.114
  server=223.5.5.5
  domain-needed
  bogus-priv
  dhcp-range=192.168.253.2,192.168.253.254,1h
  然后再修改文件dhcp规则文件之一的/etc/sysctl.conf
  sudo nano /etc/sysctl.conf
  再末尾添加以下内容
  # Uncomment the next line toenable packet forwarding for IPv4
  net.ipv4.ip_forward=1
  添加完毕之后,设置转发规则
  sudo iptables -F
  sudo iptables -X
  sudo iptables -t nat -APOSTROUTING -o eth0 -j MASQUERADE
  sudo iptables -A FORWARD -i eth0 -o usb0 -m state --state RELATED,ESTABLISHED -j ACCEPT
  sudo iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT

  sudo sh -c "iptables-save> /etc/iptables.ipv4.nat"
  
  再往/etc/network/interfaces末尾添加一下内容。
  sudo nano /etc/network/interfaces
  添加以下语句
  up iptables-restore < /etc/iptables.ipv4.nat
  然后保存退出
 再编辑一下文件
 sudo nano /etc/network/if-pre-up.d/iptables
 往里面添加以下段落
 #!/bin/bash
 /sbin/iptables-restore < /etc/iptables.ipv4.nat
  保存退出之后,设置一下权限
  sudo chmod 755 /etc/network/if-pre-up.d/iptables
  我们需要新建空文件/lib/dhcpcd/dhcpcd-hooks/70-ipv4-nat,
  sudo vi /lib/dhcpcd/dhcpcd-hooks/70-ipv4-nat
  然后输入 :wq 回车退出
  再设置一下转发
  sudo iptables-restore < /etc/iptables.ipv4.nat
  重启一下dnsmasq服务
  sudo service dnsmasq start
  然后重启树莓派。
  到此,香橙派以太网卡就成功了。把USB-OTG接口用一根USB手机数据线,连接到电脑,网口连接到路由器,就可以上网了。速度也测试了一下,迅雷全速下载能到百兆全速,CPU使用率在12%左右,比树莓派+SPI网卡的400Kb/s就占用60%提高极为明显。这东西要是好好设置,应该能做一个不错的防火墙,防止被黑客直接攻击电脑,或者加一点其他东西,例如USB转SATA口、纯SATA口阵列卡、电脑电源、一大堆旧硬盘等,可以做成NAS或者DAS,用捡回来旧硬盘玩这个再爽不过,总之这个玩法,我觉得比较有前途,不知道各位怎么看呢?

> 国产ARM开发板的USB/以太网应用