cocoakang +

树莓派共享wifi

最近新买了一块树莓派(4B),想做点有趣的东西,平时用作路由器。 使用时树莓派通过以太网连接外网,同时分享出热点,手机连接热点,访问外网。

下面是设置过程:

1.配置无线热点

这一部分官方网站的文档有详析教程,在这里。 按照教程执行完

sudo systemctl status hostapd
sudo systemctl status dnsmasq

这一段命令应该就可以获得一个可接入的热点。

2.配置树莓派的有线接入

博主所在的寝室是固定ip,因此要手动设置ip地址。(树莓派右上角Ui里的设置不太好用) 首先打开/etc/dhcpcd.conf 在之前配置的interface wlan0下面加入新的interface

interface eth0
static ip_address=your_ip_address/net_mask
static routers=the_gate_way_ip_address
static domain_name_servers=your_dns_server_address

其中net_mask要使用数字形式,如255.255.255.0就是24。 配置好后reboot,此时树莓派应该可以访问内网资源。

3.配置树莓派的外网访问

学校使用的是l2tp访问,求是潮已经有一个很方便的配置包,在这里。 因为此时树莓派还不能连接到外网,所以需要本地PC下载好后上传至树莓派,可以使用scp工具。 上传后,进入文件夹,运行安装脚本

sudo bash ./install.sh

此时会发现,系统报告错误:permission denined 这个我就直接暴力解决(并不提倡这种做法):

sudo chmod 777 /usr/local/lib/zjunet/*.sh

之后配置用户

zjunet user add
zjunet vpn -c

连接时可能会出现反复连接不上的问题,此时ctrl+c,再运行一次zjunet vpn -c就好了

4.建立通道

经过1、2、3三步,手机连接热点已经可以访问内网,树莓派也能访问外网,所以最后要做的就是将从热点来的访问转发到以太网上。

首先到/etc/sysctl.conf中找到net.ipv4.ip_forward=1这一行,将其取消注释,从而打开ipv4转发。

终端使用ifconfig命令能看到,此时多了一个ppp0的结点,这个节点就是wlan0要转发的目标

sudo iptables -A POSTROUTING -t nat -s 192.168.4.0/24 -o ppp0 -j MASQUERADE

因为在设置热点时,我们已经指定热点所用的局域网为192.168.4.*,上面这条命令实现了将192.168.4.0/24的包转发到ppp0。

此时连接到树莓派分享的热点的设备,应该已经能顺利访问到外网。

///////////////////////////////////////////////////////////////

折腾两天的碎碎念:

  1. 本科时最讨厌的两门课之一就是计网,这两天的折腾更加加深了我对计网的讨厌(不是
  2. 在成功前的一个小时,还在到处找资料,在CC98上看到了和我想做一样事的胖友发帖询问。那个帖子有个回复是: 不要用树莓派做长期的路由器,他不是为路由器设计的,你这个需求还不如淘宝买个40块不到的二手路由器叫卖家刷好发过来就好了 感觉内心受到了一万点暴击

//////////////////////////////////////////////////////////////

一些补充

  1. 这个方法目前还有点问题,表现为:访问网页时,TCP连接会断掉,不知道问题来源于L2TP连接还是这个方法本身的问题
  2. 之后有时间了还可以试试把ipv6转发出来

Blog

Photo

Project