来自 Archer 的投稿,感谢~
前些日子突发奇想,想用树莓派 Zero W 做成S*P*Y无线网卡来玩,用Openwrt来做,不过怎么做都不成功,于是我就换个思路,做成以太网卡如何?我就用树莓派连通我的SPI网卡,把USB-OTG接口配置成USB/以太网,SPI网卡连接路由器,USB-OTG连接电脑,来实现以太网卡功能,没想到在Raspbian系统之下能顺利这么多,一试一下就行了。
首先是连接SPI网卡,我在前面有教程详细叙述,这里就不多做赘述了。
先修改/boot/config.txt文件,在最末尾添加这两段语句
dtoverlay=dwc2 dtoverlay=enc28j60
保存退出
然后再修改/boot/cmdline.txt文件,找到 rootwait,在后面插入
modules-load=dwc2,g_ether
然后保存退出。
再用sudo raspi-config,在interfaces选项中,打开SPI接口,这样树莓派Zero的两边接口都连通了。
安装一下所需要的dhcp软件
sudo apt-get update sudo apt-get 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
添加一下段落(或者修改到跟以下段落一样)
# 表示使用localhost auto lo iface lo inet loopback # eth0 自动获取IP auto eth0 iface eth0 inet dhcp # usb0 为静态IP 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手机数据线,连接到电脑,SPI网卡连接到路由器,就可以上网了。
这样做是有点大炮打苍蝇的感觉,但是这两个网卡的神奇之处在于,每一次重启,USB-OTG网卡和SPI网卡的MAC地址就会变化,从硬件上就很适合做成匿名设备,假如再往里面加塞点匿名服务和抓包软件,将会是一个完美的匿名硬件设备,凭MAC地址无法被锁定。
速度也测试了一下,迅雷全速下载能到400Kb/s,碍于SPI接口的速度问题,全速时CPU使用率在60%。
这种大炮打苍蝇的网卡,我开着nload和htop,看着网速和CPU使用率,我会有点什么莫名的满足感,针友们(探针爱好者)应该能理解。
教程就到这里,希望各位能够挖掘出更多的玩法。
参考教程:
../../../2017/10/10/raspberry-pi-spi-netword-configuration-tutorial.html
../../../2018/02/20/raspberry-pi-zero-usb-ethernet-gadget-tutorial.html
../../../2018/03/13/raspberry-pi-double-network-cards-for-wireless-hotspot.html
— 更多尝试和思考的分割线 —
树莓派实验室小编按:作者 Archer 希望在 OpenWRT 尝试把USB-OTG接口配置成USB/以太网,因此做了下面的实验。
实验目的是把树莓派Zero W的OTG接口作为网络接入口,给其他计算设备直接分配IP地址,树莓派Zero W自带的无线作为无线接入点,为树莓派Zero W提供网络。
网络数据路线是:
外部无线网络 -> 树莓派Zero W 无线芯片(WLAN接口)-> 树莓派USB-OTG网口(LAN接口)-> 目标电脑的USB接口
这次试验最好有一根可靠的USB-TTL线,不然会痛不欲生:)
系统版本最好使用 OpenWRT 18.06,因为在 OpenWRT 17.04 上,根本不会显示gadget网卡。
OTG 作为USB网口,需要有自带的 USB-gadget-eth 驱动,因此会需要下列软件包:
kmod-usb-core kmod-usb-gadget kmod-usb-gadget-eth kmod-usb-lib-composite kmod-usb-dwc2 kmod-usbip kmod-usbip-client kmod-usbip-server kmod-fs-configfs kmod-nls-base
如果你是编译玩家,在编译系统时,把上述软件包选上,还要注意不要选到任何跟 kmod-usb-net 有关的host模式驱动包。使用官方系统的,可以在烧录完官方镜像后,在其他Linux计算机的辅助下,把所有包放在root文件夹之下,然后opkg逐个安装:
uci set wireless.radio0.disabled=0 uci commit reboot
执行完这三条指令之后,树莓派就会开启无线,你会执行得轻松一点。
修改 /boot/config.txt,往文本末尾加一行:
dtoverlay=dwc2
再修改/etc/rc.local,在exit0前加一行:
modprobe g_ether
下次开机,就会自动加载gadget-eth网卡驱动,然后把ZW的OTG口接上安卓手机数据线连到电脑,你的电脑就能感知到RNDIS设备了。
接下来只要开着网页,把usb0接口添加到lan界面,就可以了。
然后问题来了,usb0接口没有分配到正确的IP地址。可是软件层面的问题,如果你有办法通过配置解决这个问题,欢迎与我联系(QQ 854715850)~
这个玩法还能扩展,第一,装上树莓派仪表盘开着网页,估计是针友们最高兴的玩法了。第二,可以吧eth0换成wlan0来实现无线网卡玩法。至于openwrt我真的搞不定,希望各路高手给我支个招,谢谢。
请问一下我想扩大树莓派自己开上ap局域网,可以用一个从路由器来弄吗