生于忧患,咸鱼安乐
Toggle navigation
Home
About Me
Archives
Tags
通过树莓派将WiFi转换为有线网络
树莓派
2020-02-21 02:12:40
1937
0
0
squarefong
树莓派
# 0. 背景 家里有一台07年的老台式机,经简单升级依然可以流畅在线播放视频,浏览网页。但是最近移动位置后网线迁移不方便,刚好,多年吃灰的树莓派就派上了用场 台式机没有无线网络,如果没有网线还要上网就必须将WiFi转换成有线的形式。 手机可以通过USB共享网络,但是每次都会自动新建一个网络,看着实在烦,而且我爸手机不支持将连接USB的默认方式设置为共享网络,用起来麻烦。 各种无线网卡倒是便宜,但是受疫情影响,现在买基本不要指望,所以只能就地取材,树莓派4都出了,3B早就吃灰多年了,不如现在用起来。 # 1. 思路 总体思路非常简单,就是把WiFi变成WAN口,RJ45变成LAN。 再说直白点,就是通过WiFi连接到网络后,开启ip转发,装DHCP服务端 本次操作基本参考[【树莓派】在Raspbian下将wifi中继为有线网络](https://blog.csdn.net/wr132/article/details/78986190) 系统使用当前最新版本的Raspbian Buster ,全程**不需要GUI**,完全可以选择Raspbian Buster Lite # 2. 操作步骤 以下命令无特殊说明均建议以root权限执行 ## (1) 连接WiFi Raspbian自带```raspi-config```工具,直接通过终端操作就行,而且下次开机自动连接,非常省事。如果想后续操作方便一点,可以在操作完成之后```ifconfig```一下,查看当前ip地址,然后通过```raspi-config```把ssh打开。之后通过ssh操作会方便不少,~~复制粘贴命令方便多了~~。 ## (2) 配置网桥 ```bash apt install bridge-utils -y brctl addbr br-lan brctl addif br-lan eth0 ifconfig br-lan 192.168.3.1 up #这里的地址随便,和Wan侧不在一个网段就行 ifconfig eth0 0.0.0.0 up ``` ## (3) 配置IP转发 原文提到三种,这里我选自己最习惯的一种。 ```bash sysctl net.ipv4.ip_forward=1 ``` ## (4) 配置iptables ```bash iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE ``` ## (5) 安装DHCP/DNS服务器 ```bash apt install dnsmasq -y vim /etc/dnsmasq.conf echo 'dhcp-range=192.168.3.50,192.168.3.150,255.255.255.0,12h' >> /etc/dnsmasq.conf #这里IP的网段跟之前配置的需要一致 ``` 到这里就配置完成了,插上网线就能联网了。 # 3. 配置开机自启动 虽然配置好了,但是一旦重启,上面的(2)-(4)步就完全恢复初始状态,又需要重新配置一次。因此,这一部分需要写入脚本,并添加到开机自动启动。 以下操作依然建议以root权限执行。 将以下文本复制到一个新建的文件(其实就是复制粘贴一遍),并赋予可执行权限。为了方便,我以start.sh为例,位置就在/home/pi。 ```bash #!/bin/bash brctl addbr br-lan brctl addif br-lan eth0 ifconfig br-lan 192.168.3.1 up #这里的地址随便,和Wan侧不在一个网段就行 ifconfig eth0 0.0.0.0 up sysctl net.ipv4.ip_forward=1 iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE ``` 然后通过systemd实现开机启动 一般来说新的系统没有那个文件夹,需要手动创建 ```bash mkdir /usr/lib/systemd/system ``` 然后在/usr/lib/systemd/system/下新建一个后缀为.service的文件并将以下内容复制到这个文件中。为了方便,我命名为```autostart.service``` 然后将以下内容复制到```autostart.service```中,记得将ExecStart后面的值改为自己的脚本的绝对地址。 ``` [Unit] Description=autostart [Service] Type=oneshot ExecStart=/home/pi/start.sh [Install] WantedBy=multi-user.target ``` 最后执行```systemctl enable autostart.service``` 现在,可以重启一下看看效果了。
Pre:
NotiSync:通知同步,随心所欲
Next:
用树莓派4B做4K机顶盒
0
likes
1937
Weibo
Wechat
Tencent Weibo
QQ Zone
RenRen
Please enable JavaScript to view the
comments powered by Disqus.
comments powered by
Disqus
Table of content