Steins;Lab

某团的自留研究所

[趴会儿project]No.005 用一种“新思路”打造树莓派软无线路由器

由于某些原因,用了一种新思路打造 Raspberry Pi 无线路由器。先将树莓派和一个usb有线网卡配置成有线路由器,再使用现成的无线路由(Router)提供无线信号。如果你的Raspberry Pi自带的无线网卡经常无法工作,可以试试这个思路。

关键词: Raspberry Pi , 无线路由

本项目隶属于趴会儿Project项目组,详见[企划]趴会儿Project–宿舍床上趴到底&解放双腿计划

项目编号005,分类为信息。

thumb

 

 

0.引言

之前做了这个:

基于树莓派的ipv6+OpenVPN校园网免流量无线热点/路由器 — https://steinslab.io/archives/1103

[趴会儿project]No.003 基于树莓派的ipv6+OpenVPN校园网免流量无线热点/路由器

 

结合一直以来应用出现的一些问题说一说我为什么要这么做。

0.1我为什么不用树莓派3自带的板载wifi?

因为某些未知的原因,我的树莓派(Raspberry Pi3 B)wifi经常断掉,切无法重启,必须切断电源才行。

结合系统的log,我尝试搜索了解决方案。在中文社区中没有发现报告wifi突然无效的帖子。不过在GitHub上发现了一个issue。

 

issue

wlan freezes in raspberry pi 3

https://github.com/raspberrypi/linux/issues/1342

issue中,有大量的人报告存在wifi模块突然失灵,无法重启服务,只能使用切断电源重启。大家的方法我都试了,发现并没有用。

原wifi AP大概5个小时就会中断死掉。这给我带来了极大问题。这样的话我的设备并不能持续稳定的工作,文件分享、openvpn相关等都突然无法使用。

所以,我选择使用另一个小路由器作为wifi源。

 

 

 

0.2 为什么要用另一个无线路由器作为wifiAP?不是多此一举吗?

是的,很有可能,在你的所在环境或者需求中,用另外一个无线路由器(Router)既增加成本又麻烦。

但是对于下列情况,使用一个额外的路由器可能是很好的选择。

 

  1. 树莓派3b(Raspberry Pi 3B)自带的wifi模块工作不稳定时。
  2. 树莓派1,2等不自带wifi模块,但是由讨厌配置usb无线网卡驱动相关。
  3. 板载网卡和usb网卡信号过弱。
  4. 需要在树莓派上爬梯子、ipv6免流等等,单纯地分享网络(理解成360wifi模式),不想买openwrt等智能路由器的

等等。使用的无线路由器不必太过昂贵。比如我就是在tb弄到的20块钱的洋垃圾。这可能都要比tb买一块兼容的usb无线网卡都要便宜,而且不用考虑驱动和供电问题。

 

 

 

 


1 清单与连接

需要这些东西:

1.树莓派 * 1  

约 ¥200。

2.usb有线网卡 * 1

约 ¥25。

建议:usb2.0即可,usb3.0对于树莓派意义不大。我之前有这个,试了试能直接兼容。

3.网线若干

约 ¥20。

CAT6意义不大,买速度稍微合适的就行。

4.无线路由器 * 1

约 ¥20。

买洋垃圾,二手即可。

 

附:我的路由器是在tb上找的一个洋垃圾,应该是日本AU电信过来的家庭送的路由。自带ipv6穿透。挺好用,有机会说说搞得这个玩意。

另外对速度显示感兴趣的可以看下这个

[趴会儿Project]No.004 洞察秋毫的观测者 – 服务器监控助手(基于PHP探针和Raspberry Pi)

 

连接大概是这个拓扑图:

 

 

Internet——(自带网卡,eth0)Raspberry Pi ——–(usb网卡,eth1)Wireless Router

 

我是在上一篇文章直接改造的。因此我还有一个wlan0,不提了。可以按照本文直接添加eth1,不冲突。

 


 

2 配置

我是在上一篇文章,有无线AP情况下追加配置的。直接按照本章全新配置也可以。

基于树莓派的ipv6+OpenVPN校园网免流量无线热点/路由器 — https://steinslab.io/archives/1103

 

2.1 编辑网络配置

插入的usb有限网卡是eth1,进行静态地址配置。

保存重启,或使用

使eth1的静态地址立即生效。

这步请一定要做,重启或者使其立即生效,否则配置dhcp时将报错。

 

2.2 安装isc-dhcp-server

需要安装dhcp服务以分配地址

安装isc-dhcp-server

配置文件

注释掉所有所有文字,输入(或者追加)

注意,网段如 192.168.9.X,应和上端配置的eth1静态地址一致。

以上内容建议手打并检查拼写和格式

开启服务

 

一般情况下,之前的安装的服务,不需要在配置,已经可以开机自启动了。

2.3 开启转发、配置路由表

目的是让路由器以nat形式接入树莓派网络。

开启内核转发

修改

保存,用下列命令使命令生效

返回 net.ipv4.ip_forward=1

配置路由表

此路由表的配置参考了

树莓派笔记(1) —— 无线路由器 – http://brieflyx.me/2015/raspberrypi/rpinote1-wifi/

以上规则配置openvpn后仍然有效。

可以加在/etc/rc.local 中,开机自动添加路由规则

!注意!:请一定在exit 0之前添加

现在,用网线连接usb网卡和无线路由器的wan口,设置路由器为动态ip。

 

至此,无线路由器作为一个子设备连接到树莓派上。无线设备作为子设备连接在无线路由器上。

 

2.4 排查问题

遇到任何问题,包括之前的服务配置,都可以使用

调到最后一行查看,分析原因

 

 

 

 


3.完成

总结一下,思路就是先将树莓派配置成有线路由器,然后再将无线路由器接入。避免使用不稳定的无线网络。

此时,树莓派上的smb服务等,在路由器的子网络中仍然可以直接使用。

我在ovpn绕了地球一圈之后,无线网络大概还有20Mbps的速度,要是本地会更快了。就树莓派这个吞吐能力,我觉得这个速度可以接受。

 

 

 

  1. nl说道:
    Google Chrome 58 Google Chrome 58 Mac OS X 10.12 Mac OS X 10.12

    想问下,你树莓pi是拨号就有ipv6是么,需要特别的配置么。
    我openwrt从16年就连不上ipv6了

    1. SPtuan说道:
      Unknown Unknown Unknown Unknown

      我插上就有ipv6,什么都没动

  2. LiarOnce说道:
    Google Chrome 58 Google Chrome 58 Windows 10 Windows 10

    我有个树莓派2,现在都吃灰了,都不知道拿来干嘛 :lol:

    1. SPtuan说道:
      Unknown Unknown Unknown Unknown

      不开发的话,当梯子路由器,离线下载玩具NAS都挺好,低功耗嘛。我前一段时间还拿它开原版minecraft服来着,虽然单核性能吃瘪

      1. LiarOnce说道:
        Google Chrome 58 Google Chrome 58 Windows 10 Windows 10

        我试过拿它当VPS开博客,后来才发现家里的宽带不可能每天24小时开着,于是弃坑。 :lol:

  3. printempw说道:
    Google Chrome 58 Google Chrome 58 Windows 10 Windows 10

    不错诶,正好毕业了,我也想买个 Raspberry Pi 和 Arduino 回来玩 XD

    看到你也在用粗粮家的台灯,我打算弄点有趣的东西来操控它(不想远程关个灯还要用那个米家 APP,也没有 HomeKit,很吃瘪):idea:

    1. SPtuan说道:
      Unknown Unknown Unknown Unknown

      这两个东西就是代码和现实世界入门级的纽带。其他行业用它们接触代码实现功能,写代码的用它们联系现实世界,很伟大的项目。
      小米这个台灯,是我看够了美帝良心想的垃圾TN屏,眼睛快瞎时候,冲动消费的。觉得自己应该买个好台灯好好对待自己的眼睛,然而远控一次都没用过,他那个APP我也没动过。

    2. SPtuan说道:
      Google Chrome 61 Google Chrome 61 Windows 10 Windows 10

      :evil: 对啦,我最近调查了一下这个米家台灯,发现是由yeelink提供的。yeelink还提供了一份详尽的控制使用文档,可以在各个平台上用。在这个node.js都能用来硬件编程的时代,相信你一定能很快掌握啦 :redface:

      1. printempw说道:
        Google Chrome 60 Google Chrome 60 Android 7.1.2 Android 7.1.2

        我后来也发现啦 :razz: 那个 Yeelight 有个「极客模式」,开启后就可以通过命令操控了

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.