当前位置: 首页 > news >正文

把树莓派改造成无线网卡(3)-----共享无线网络,无线网络转换成有线网络,让有线网络设备连上无线网络

本文目录

  • 1、准备工作
  • 2、安装DNS和配置管理软件
  • 3、设置网络路由功能
    • 3.1、树莓派的有线网络接口IP配置
    • 3.2、启用路由和IP伪装
    • 3.3、为有线网络配置DHCP和DNS服务
  • 4、运行
  • 5、进阶--将二个以太网口加入到同一个网桥

现在的无线路由器非常便宜,所以实际上除了有特殊的要求比如搭建VPN之类的需求处,没有人会使用树莓派或者其它安装了Linux系统的主机去配置成无线路由器。有一些老式设备,没有无线网卡也没有USB接口,所以不能简单的通过USB接口扩展一个无线网卡,只能通过有线网卡上网。但无线路由器通常被我们安装在不方便连接网线的地方,所以我们有时候会需要共享无线网络或者说是将无线网络转换成有线的以太网络。如下图:

                                                     +- RPi -------+          +- old pc1----+|         Eth0+----------+ Eth0        |    +- Router ----+                     |  DHCP server|          | 10.0.0.10   || Firewall    |                     |   10.0.0.1  |          |             |
(Internet)---WAN-+ DHCP server +-WLAN AP-+-)))   (((-+ WLAN        |          +-------------+| 192.168.3.1 |                     |             |          +-------------+                     |             |   |             ||             |                                                     +-------------+  

相当于给老式设备添加了一块无线网卡。
归结起来需要以下4步:

  1. 开启IP转发功能
  2. 开启SNAT/IP伪装
  3. 为网卡配置静态IP
  4. 启动DHCP和DNS

本文档描述的方法在:最新树莓派OS bullseys + 树莓派 zero W上测试通过过。

1、准备工作

  1. 树莓派的管理员权限
  2. 最好是,通过直接将屏幕和键盘连接到树莓派的本地访问模式(免得设置过程中因为ip的变化导致ssh连接中断)
  3. 树莓派已经连接到以太网并正常启动
  4. 升级到最新的树莓派操作系统,如果在此配置过程中安装了软件包,则记得重启树莓派,确保安装正确完成。
  5. 当前的网络配置为:
  6. 树莓派连接的以太网网络的 IP 配置:
    在以太网 LAN 上配置了 IP 网络10.10.0.1/24,树莓派将接入192.168.3.1/24的无线网络。
  7. 准备好一台有线以太网客户端设备,比如笔记本电脑、智能手机等,用于测试。

2、安装DNS和配置管理软件

  1. 为了给老旧的有线以太网络客户端提供网络管理服务(DNS、DHCP),树莓派需要安装软件包dnsmasq:
sudo apt install dnsmasq
  1. 安装netfilter-persistent及其插件iptables-persistent。这二个程序用于保存防火墙规则并在 Raspberry Pi 启动时恢复它们:
sudo apt install -y netfilter-persistent iptables-persistent

3、设置网络路由功能

在这个配置里树莓派将无线网络和以太网网络之间提供路由功能,接入无线网络,并将无线网络转换成有线网络,或者说将无线网络分享给有线客户端,为有限客户端提供互联网访问。

3.1、树莓派的有线网络接口IP配置

树莓派为有线网络运行一个DHCP服务器;树莓派的有线网卡eth0需要配置成静态IP 。树莓派这时是做为这个新的网络上的路由器,一般都会配置成这个IP子网里的第一个IP地址:10.0.0.1。

我们需要修改配置文件dhcpcd:

sudo vi /etc/dhcpcd.conf

在文件末尾添加以下内容:

interface eth0static ip_address=10.0.0.1/24

3.2、启用路由和IP伪装

配置树莓派让有线客户端可以通过无线网络访问主网络上的计算机或者访问互联网。我们需要启用IP转发功能(允许流量在树莓派中从一个网络流向另一个网络),用以下命令创建一个文件:

sudo vi /etc/sysctl.d/routed-ap.conf

文件内容如下(开启IPv4的转发功能)):

# Enable IPv4 routing
net.ipv4.ip_forward=1

开启IP转发功能后,因为我们不能修改主路由器配置,所以为了让10网段的有线终端可以访问外网,树莓派需要开启IP“伪装”功能,把有线终端的IP地址替换为自己在无线网络上的IP地址192.168.3.xx。

  • 从上行方向,树莓派会把有线终端来的数据都替换成自己的WLAN的IP地址,所以对主路由器来说,看到的只有树莓派的IP地址的数据。
  • 从下行方向角度,树莓派会把外部来的数据都替换回各个有线终端的IP地址,并把数据发送给有线终端

我们需要在树莓派上开启IP伪装,既NAT功能:

sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

保存并通过netfilter-persistent服务在系统启动时自动启用这个IP伪装功能

sudo netfilter-persistent save

注意,这个NAT规则,是保存到目录/etc/iptables/ 中的。

3.3、为有线网络配置DHCP和DNS服务

前面安装的dnsmasq提供了DHCP和DNS服务, 默认的配置文件模板很大,但我们其实只需要其中很小的功能,所以这里我们选择从空文件开始添加配置,这样还更容易一些。

备份原始的配置模板文件,并新建一个空的配置文件:

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo vi /etc/dnsmasq.conf

把以下内容添加到文件中并保存:

interface=eth0 # Listening interface
dhcp-range=10.0.0.2,10.0.0.20,255.255.255.0,24h# Pool of IP addresses served via DHCP
domain=eth0     # Local wireless DNS domain
address=/gw.eth0/10.0.0.1# Alias for this router

树莓派会在10.0.0.2和之间10.0.0.20选择一个IP为有线终端端提供IP地址,租用时间为 24 小时。

4、运行

重启树莓派,并测试有线接入点是否已经可用。

sudo systemctl reboot

树莓派重新启动后,使用有线客户端就会自动分配到一个10网段的IP地址。也可以正常的访问外网了。

5、进阶–将二个以太网口加入到同一个网桥

我们的树莓派有二个以太网口,如下图所示,所以更好的和家用路由器更一至的方案是:

  • 把二个网卡都利用起来,为了让二个以太网卡可以盲插,随便连接哪个网口都可以分配到10.0.0.0/24网段的IP地址。
  • 让二个网卡加入网桥,相互之间的数据可以在二层直接转发,相当于形成了二个LAN口的,让二个LAN口之间有二层交换功能。

在这里插入图片描述

拓扑图如下:
在这里插入图片描述

                                                     +- RPi -------+          +- old pc1----+|         Eth0+----------+ Eth0        |    +- Router ----+                     |  DHCP server|          | 10.0.0.10   || Firewall    |                     |   10.0.0.1  |          |             |
(Internet)---WAN-+ DHCP server +-WLAN AP-+-)))   (((-+ WLAN        |          +-------------+| 192.168.3.1 |                     |             |          +-------------+                     |             |          +- old pc2----+|         Eth1+----------+ Eth0        |   |             |          | 10.0.0.4    |                                                       +-------------+          |             |+-------------+
  1. 将二个网卡eth0, eth1都加入网桥br0
    将以下三个文件放到/etc/systemd/network目录下
ls -l /etc/systemd/network/br*
-rw-r--r-- 1 root root 40 May 22 21:19 /etc/systemd/network/br0-menber-eth0.network
-rw-r--r-- 1 root root 40 May 22 21:19 /etc/systemd/network/br0-menber-eth1.network
-rw-r--r-- 1 root root 30 May 22 21:19 /etc/systemd/network/bridge-br0.netdev

文件内容分别为:


cat /etc/systemd/network/br0-menber-eth0.network
[Match]
Name=eth0[Network]
Bridge=br0
cat /etc/systemd/network/br0-menber-eth1.network
[Match]
Name=eth1[Network]
Bridge=br0
cat /etc/systemd/network/bridge-br0.netdev
[NetDev]
Name=br0
Kind=bridge
  1. 开启systemd/networkd服务
sudo systemctl enable systemd-networkd
  1. 让dhcp server工作在虚拟的br0接口上

把以下内容加入/etc/dhcpcd.conf文件中

denyinterface eth0
denyinterface eth1interface br0
static ip_address=10.0.0.1/24

把以下内容加入到/etc/dnsmasq.conf文件中

cat /etc/dnsmasq.conf
interface=br0 # Listening interface
dhcp-range=10.0.0.2,10.0.0.10,255.255.255.0,24h# Pool of IP addresses served via DHCP
domain=br0    # Local wireless DNS domain
address=/gw.br0/10.0.0.1# Alias for this router

重启后就可以升级到高阶网桥方案。

相关文章:

把树莓派改造成无线网卡(3)-----共享无线网络,无线网络转换成有线网络,让有线网络设备连上无线网络

本文目录 1、准备工作2、安装DNS和配置管理软件3、设置网络路由功能3.1、树莓派的有线网络接口IP配置3.2、启用路由和IP伪装3.3、为有线网络配置DHCP和DNS服务 4、运行5、进阶--将二个以太网口加入到同一个网桥 现在的无线路由器非常便宜,所以实际上除了有特殊的要求…...

NumPy

目录 1、NumPy简介 2、利用元组、列表创建多维数组 3、数组索引 4、数组裁切 4.1、一维数组操作 4.2、二维数组操作 5、数据类型 6、副本/视图 7、数组形状 8、数组重塑 9、多维数组的迭代 10、数组连接 10.1、使用concatenate() 函数进行数组连接 10.2、使用堆栈…...

C++17完整导引-模板特性之类模板参数推导

模板特性之类模板参数推导 使用类模板参数推导默认以拷贝方式推导推导lambda的类型没有类模板部分参数推导使用类模板参数推导代替快捷函数 推导指引使用推导指引强制类型退化非模板推导指引推导指引VS构造函数显式推导指引聚合体的推导指引标准推导指引pair和tuple的推导指引从…...

CSS3小可爱亲吻表白特效,给你的五一假期增添点小乐趣

马上五一假期了,小伙伴们是不是都准备出去旅游呢,或者回老家陪陪父母。今天我用CSS3制作一个小可爱亲吻表白的特效,来给你即将到来的五一假期增添点小小的乐趣。 目录 实现思路 左边小可爱的实现 右边小可爱的实现 左右摇摆动效的实现 右…...

Samba CentOS 7 安装

安装步骤 Samba是在Linux与Windows系统间共享文件和打印机的标准协议。要在CentOS上安装Samba,可以按以下步骤操作: 安装Samba相关包: yum install samba samba-client samba-common创建Samba配置文件/etc/samba/smb.conf: vim /etc/samba/smb.conf添加如下配置: [global]…...

Mac电脑 Vscode : Flutter 开发环境搭建(最细节教程)

参考链接: MacVSCode安装flutter环境_mac vscode配置flutter_GalenWu的博客-CSDN博客 mac搭建Flutter环境以及初始化项目 - 简书 注意: *下载xcode 就包含git了, *苹果芯片和intel 芯片需要的环境不同,苹果芯片需要安装: Im…...

BEVFormer 论文学习

1. 解决了什么问题? 3D 视觉感知任务,包括基于多相机图像的 3D 目标检测和分割,对于自动驾驶系统非常重要。与基于 LiDAR 的方法相比,基于相机图像的方法能够检测到更远距离的目标,识别交通信号灯、交通标识等信息。有…...

现在的00后,实在是太卷了,我们这些老油条都想辞职了......

现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的,工作没两年,跳槽到我们公司起薪20K,都快要超过我了。 后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天,原来这位小老弟家…...

shell 数组定义与使用

一维数组 数组定义 array_name(value1 value2 ... value)也可以使用数字下表来定义数组 array_name[0]value0 array_name[1]value1 array_name[2]value2读取数组 ${array_name[index]}实例1 [rootiZj6c3slqbp8xuu2w3i4roZ devops]# cat array_name.sh #!/usr/bin/bashmy_…...

24 KVM管理虚拟机-配置VNC-TLS登录

文章目录 24 KVM管理虚拟机-配置VNC-TLS登录24.1 概述24.2 操作步骤 24 KVM管理虚拟机-配置VNC-TLS登录 24.1 概述 VNC服务端和客户端默认采用明文方式进行数据传输,因此通信内容可能被第三方截获。为了提升安全性,openEuler支持VNC服务端配置TLS模式进…...

C++基础讲解第六期(多态、虚函数、虚析构函数、dynamic_cast、typeid纯虚函数)

C基础讲解第六期 代码中也有对应知识注释,别忘看,一起学习! 一、多态1. 问题引出2. 多态的概念和使用3. 多态的原理4. 虚析构函数5. 动态类型识别(dynamic_cast)(1) 自定义类型(2). dynamic_cast(3). typeid 6. 纯虚函数 纯虚函数需要补充 一…...

防火墙之iptables(二)

防火墙之iptables(二) 一.SNAT原理与应用 1.应用环境 局域网主机共享单个公网IP地址接入Internet(私网不能被Internet中正常路由)2.SNAT原理 修改数据包的源地址内网访问外网 将从内网发送到外网的数据包的源IP由私网IP转换成…...

亚马逊销量暴跌该如何查找原因?

很多卖家经常遇到一个棘手的问题,就是突然会遇到链接销量暴跌的问题。 比如之前链接可以稳定出单10多单的,突然连续几天只有两三单,这到底是什么原因呢? 1.查看链接的类目是否被修改 这个类目修改不一定是卖家自己修改,更多的时…...

Vue中的脚手架和路由

私人博客 许小墨のBlog —— 菜鸡博客直通车 系列文章完整版,配图更多,CSDN博文图片需要手动上传,因此文章配图较少,看不懂的可以去菜鸡博客参考一下配图! 系列文章目录 前端系列文章——传送门 后端系列文章——传送…...

Convolutional Neural network(卷积神经网络)

目录 Why CNN for Image? The whole CNN structure Convolution(卷积) Max Pooling Flatten CNN in Keras What does CNN learn? what does filter do what does neuron do what about output Deep Dream Application Pla…...

【资料分享】高边、低边晶体管开关及电路解析

高边和低边晶体管开关 电路中,晶体管常常被用来当做开关使用。晶体管用作开关时有两种不同的接线方式:高边(high side)和低边(low side)。 高边和低边是由晶体管在电路中的位置决定的。晶体管可以是双极性晶体管(BJT…...

六级备考28天|CET-6|听力第二讲|长对话满分技巧|听写技巧|2022年6月考题|14:30~16:00

目录 1. 听力策略 2. 第一二讲笔记 3. 听力原文复现 (5)第五小题 (6)第六小题 (7)第七小题 (8)第八小题 扩展业务 expand business 4. 重点词汇 1. 听力策略 2. 第一二讲笔记 3. 听力原文复现 (5)第五小题 our guest is Molly Sundas, a university stud…...

计算机图形学 | 实验九:纹理贴图和天空盒

计算机图形学 | 实验九:纹理贴图和天空盒 计算机图形学 | 实验九:纹理贴图和天空盒实验概述顶点数据立方体顶点数据天空盒顶点数组 纹理载入创建纹理纹理读取纹理绑定 使用纹理立方体着色器顶点着色器片元着色器 天空盒着色器顶点着色器片元着色器 立方体…...

Unity A* Pathfinding Project

先下载免费版 https://arongranberg.com/astar/download# 教程首页 https://arongranberg.com/astar/docs/getstarted.html 创建一个plane 当地面 创建一个gameobject 添加组件 PathFinder 长这样 调整每个格子大小的 创建两个layer 一个是阻挡物的 一个是地面的 这里填入阻…...

SpringBoot ( 一 ) 搭建项目环境

1.搭建环境 1.1.创建项目向导 使用idea中的向导创建SpringBoot项目 1.1.1.建立新的项目 位置 : 菜单 > File > New > Project… 1.1.2.选择向导 默认的向导URL 是 https://start.spring.io 建议使用 https://start.aliyun.com 1.1.3.配置项目信息 Group : 组织…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

数据库分批入库

今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...

LLMs 系列实操科普(1)

写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...

c# 局部函数 定义、功能与示例

C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...