rk3588-ubuntu22.04系统网关实现路由器功能:

rk3588-ubuntu22.04系统网关实现路由器功能:

场景需求描述:

在这里插入图片描述

需求背景:

场景一:通过网线eth0/(路由器wlan0)访问外网:

如果网关 和 设备所处的环境可以通过网线联网或者路由器联网,那么不需要将网关配置成路由器的模式,可以直接通过插入网线,实现互联互通。

场景二:通过4G模块wwan0访问外网:

如果网关 和 设备所处的环境,只有网关可以通过4G联网,那么就需要将网关配置成路由器的模式,让设备通过网线接入网关,实现互联互通。

一个路由器最基础得拥有3个功能
NAT转发,dhcp服务,dns服务
在路由器中,NAT转发、DHCP服务和DNS服务是最基础的三个功能,它们各自承担着不同的职责,对于网络的正常运作至关重要。以下是这三个功能的具体作用:

  1. NAT(网络地址转换)

作用:允许内部网络中的多台设备通过一个公共IP地址访问互联网。

  1. DHCP(动态主机配置协议)服务

-作用:自动分配网络配置信息给连接到网络的设备。

  1. DNS(域名系统)服务

作用:将人类可读的域名(如 www.example.com)解析为计算机可以识别的IP地址(如 93.184.216.34)。

这三项功能是大多数路由器的核心特性,确保了内部网络设备能够方便、安全地连接到互联网,并且能够有效地管理这些连接。

硬件基础:

最少拥有2个网口,可插入2根网线。
也就是说至少有一个wan口和一个lan口。
一个千兆网络的交换机。

安装系统:

ubuntu22.04系统

操作步骤:

第一步:开启内核路由转发参数:

临时生效:

echo "1" > /proc/sys/net/ipv4/ip_forward

●永久生效:
修改sysctl.conf: net.ipv4.ip_forward = 1
再执行sysctl -p立即生效

第二步:安装DHCP服务器:

sudo apt update
sudo apt install isc-dhcp-server

第三步:配置DHCP服务器:

sudo nano /etc/dhcp/dhcpd.conf

添加以下内容:

subnet 10.0.1.0 netmask 255.255.255.0 {range 10.0.1.20 10.0.1.150;option routers 10.0.1.1;option subnet-mask 255.255.255.0;option domain-name-servers 8.8.8.8, 8.8.4.4;
}

编辑 /etc/default/isc-dhcp-server 文件,指定 eth1 为 DHCP 服务器的接口:

sudo nano /etc/default/isc-dhcp-server将 `INTERFACESv4` 设置为 `eth1`INTERFACESv4="eth1"

启动 DHCP 服务器:

sudo systemctl start isc-dhcp-server
sudo systemctl enable isc-dhcp-server

第四步:设置NAT(网络地址转发):

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -A FORWARD -i wlan0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o wlan0 -j ACCEPT

其中wlan0可以替换成wwan0,eth0。
实现了网络地址转换(NAT)和包转发功能,确保内部网络的设备可以通过路由器访问互联网,并且允许合法的响应流量返回。

第五步:Netplan 来配置 LAN 接口的静态 IP 地址:

sudo nano /etc/netplan/orangepi-default.yaml

添加如下内容:

network:version: 2ethernets:eth0:dhcp4: trueeth1:addresses:- 10.0.1.1/24dhcp4: no

应用配置:

sudo netplan apply

此外,也可以通过ip 或者ifconfig命令来配置静态ip,不过是临时生效:

sudo ifconfig eth1 10.0.1.1 netmask 255.255.255.0 up
or
ip addr add 192.168.1.1/24 dev eth1

第六步:脚本实现:

通过脚本来简化上面操作:

#!/bin/bash# 定义接口名
INTERNET_INTERFACE="wlan0"  # 连接到互联网的接口
LAN_INTERFACE="eth1"        # 连接到内部网络的接口# 启用路由功能
enable_routing() {echo "Enabling routing..."# 启用 IP 转发echo 1 > /proc/sys/net/ipv4/ip_forward# 设置 NATiptables -t nat -A POSTROUTING -o $INTERNET_INTERFACE -j MASQUERADEiptables -A FORWARD -i $INTERNET_INTERFACE -o $LAN_INTERFACE -m state --state RELATED,ESTABLISHED -j ACCEPTiptables -A FORWARD -i $LAN_INTERFACE -o $INTERNET_INTERFACE -j ACCEPT# 配置 DHCP 服务器echo "subnet 10.0.1.0 netmask 255.255.255.0 {range 10.0.1.20 10.0.1.100;option routers 10.0.1.1;option domain-name-servers 8.8.8.8, 8.8.4.4;}" > /etc/dhcp/dhcpd.conf# 设置 /etc/default/isc-dhcp-server 的 INTERFACESv4echo "INTERFACESv4=\"$LAN_INTERFACE\"" > /etc/default/isc-dhcp-server# 启用 DHCP 服务器systemctl restart isc-dhcp-server# 设置 LAN 接口的静态 IPip addr add 10.0.1.1/24 dev $LAN_INTERFACEip link set $LAN_INTERFACE upecho "Routing enabled. You can now share your internet connection."
}# 取消路由功能
disable_routing() {echo "Disabling routing..."# 禁用 IP 转发echo 0 > /proc/sys/net/ipv4/ip_forward# 清除 NAT 规则iptables -t nat -D POSTROUTING -o $INTERNET_INTERFACE -j MASQUERADEiptables -D FORWARD -i $INTERNET_INTERFACE -o $LAN_INTERFACE -m state --state RELATED,ESTABLISHED -j ACCEPTiptables -D FORWARD -i $LAN_INTERFACE -o $INTERNET_INTERFACE -j ACCEPT# 停止 DHCP 服务器systemctl stop isc-dhcp-server# 清除静态 IPip addr del 10.0.1.1/24 dev $LAN_INTERFACE# 恢复 /etc/default/isc-dhcp-server 文件中的 INTERFACESv4 设置echo "INTERFACESv4=\"\"" > /etc/default/isc-dhcp-serverecho "Routing disabled. The interface is now a regular interface."
}# 检查参数
if [ "$1" == "enable" ]; thenenable_routing
elif [ "$1" == "disable" ]; thendisable_routing
elseecho "Usage: \$0 {enable|disable}"exit 1
fi

执行脚本:

./router_setup.sh enable
./router_setup.sh disable

此时,eth1通过网线连接交换机,设备再连接交换机,即可自动获取到ip,并且可以访问外网。

补充:将wlan0,wwan0,eth0作为参数进行传入:

#!/bin/bash# 检查参数数量
if [ "$#" -ne 2 ]; thenecho "Usage: $0 <internet_interface> {enable|disable}"exit 1
fi# 定义接口名
INTERNET_INTERFACE=$1  # 连接到互联网的接口
LAN_INTERFACE="eth1"   # 连接到内部网络的接口# 启用路由功能
enable_routing() {echo "Enabling routing..."# 启用 IP 转发echo 1 > /proc/sys/net/ipv4/ip_forward# 设置 NATiptables -t nat -A POSTROUTING -o $INTERNET_INTERFACE -j MASQUERADEiptables -A FORWARD -i $INTERNET_INTERFACE -o $LAN_INTERFACE -m state --state RELATED,ESTABLISHED -j ACCEPTiptables -A FORWARD -i $LAN_INTERFACE -o $INTERNET_INTERFACE -j ACCEPT# 配置 DHCP 服务器echo "subnet 10.0.1.0 netmask 255.255.255.0 {range 10.0.1.10 10.0.1.100;option routers 10.0.1.1;option domain-name-servers 8.8.8.8, 8.8.4.4;}" > /etc/dhcp/dhcpd.conf# 设置 /etc/default/isc-dhcp-server 的 INTERFACESv4echo "INTERFACESv4=\"$LAN_INTERFACE\"" > /etc/default/isc-dhcp-server# 启用 DHCP 服务器systemctl restart isc-dhcp-server# 设置 LAN 接口的静态 IPip addr add 10.0.1.1/24 dev $LAN_INTERFACEip link set $LAN_INTERFACE upecho "Routing enabled. You can now share your internet connection."
}# 取消路由功能
disable_routing() {echo "Disabling routing..."# 禁用 IP 转发echo 0 > /proc/sys/net/ipv4/ip_forward# 清除 NAT 规则(先检查规则是否存在)iptables -t nat -C POSTROUTING -o $INTERNET_INTERFACE -j MASQUERADE && \iptables -t nat -D POSTROUTING -o $INTERNET_INTERFACE -j MASQUERADEiptables -C FORWARD -i $INTERNET_INTERFACE -o $LAN_INTERFACE -m state --state RELATED,ESTABLISHED -j ACCEPT && \iptables -D FORWARD -i $INTERNET_INTERFACE -o $LAN_INTERFACE -m state --state RELATED,ESTABLISHED -j ACCEPTiptables -C FORWARD -i $LAN_INTERFACE -o $INTERNET_INTERFACE -j ACCEPT && \iptables -D FORWARD -i $LAN_INTERFACE -o $INTERNET_INTERFACE -j ACCEPT# 停止 DHCP 服务器systemctl stop isc-dhcp-server# 清除静态 IPip addr del 10.0.1.1/24 dev $LAN_INTERFACE 2>/dev/null# 恢复 /etc/default/isc-dhcp-server 文件中的 INTERFACESv4 设置echo "INTERFACESv4=\"\"" > /etc/default/isc-dhcp-serverecho "Routing disabled. The interface is now a regular interface."
}# 检查操作参数
case $2 inenable)enable_routing;;disable)disable_routing;;*)echo "Usage: $0 <internet_interface> {enable|disable}"exit 1;;
esac

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/489327.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GIF制作工具推荐与详细使用教程

引言 GIF&#xff08;Graphics Interchange Format&#xff09;是一种广泛使用的图像格式&#xff0c;常用于创建动画或短视频片段。无论你是想制作表情包、动画教程还是简单的动画效果&#xff0c;选择一个合适的GIF制作工具是关键。下面我们将推荐几款免费且易用的GIF制作工…

打卡第十二天 P1012 [NOIP1998 提高组] 拼数

题目描述 设有 n 个正整数 &#xff0c;将它们联接成一排&#xff0c;相邻数字首尾相接&#xff0c;组成一个最大的整数。 输入格式 第一行有一个整数&#xff0c;表示数字个数 n。 第二行有 n 个整数&#xff0c;表示给出的 n 个整数 。 输出格式 一个正整数&#xff0c…

【每日刷题】Day169

【每日刷题】Day169 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 718. 最长重复子数组 - 力扣&#xff08;LeetCode&#xff09; 2. 2269. 找到一个数字的 K 美丽值…

SeaTunnel Web1.0.0安装

部署seatunnel2.3.8参考:部署seatunnel2.3.8-CSDN博客 SeaTunnel Web1.0.1对应的seatunnel2.3.3版本,所以如果要想在SeaTunnel Web1.0.1上能正常跑seatunnel对应版本包,在seatunnel上传的connector-开头的包,都得跟着SeaTunnel Web依赖的版本走,如安装了seatunnel2.3.7但…

AI大模型学习笔记|多目标算法梳理、举例

多目标算法学习内容推荐&#xff1a; 1.通俗易懂讲算法-多目标优化-NSGA-II(附代码讲解)_哔哩哔哩_bilibili 2.多目标优化 (python pyomo pareto 最优)_哔哩哔哩_bilibili 学习笔记&#xff1a; 通过网盘分享的文件&#xff1a;多目标算法学习笔记 链接: https://pan.baidu.com…

Go 语言与时间拳击理论下的结对编程:开启高效研发编程之旅

一、引言 结对编程作为一种软件开发方法&#xff0c;在提高代码质量、增强团队协作等方面具有显著优势。而时间拳击理论为结对编程带来了新的思考角度。本文将以 Go 语言为中心&#xff0c;深入探讨时间拳击理论下的结对编程。 在当今软件开发领域&#xff0c;高效的开发方法和…

基于Java的世界时区自动计算及时间生成方法

目录 前言 一、zoneinfo简介 1、zoneinfo是什么 2、zoneinfo有什么 二、在Java中进行时区转换 1、Java与zoneInfo 2、Java展示zoneInfo实例 3、Java获取时区ID 三、Java通过经纬度获取时区 1、通过经度求解偏移 2、通过偏移量计算时间 3、统一的处理算法 四、总结 …

PostgreSQL的学习心得和知识总结(一百六十四)|深入理解PostgreSQL数据库之在 libpq 中支持负载平衡

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

BERT:用于语言理解的深度双向 Transformer 的预训练。

文章目录 0. 摘要1. 介绍2. 相关工作2.1 无监督的基于特征的方法2.3 无监督微调方法2.3 从受监督数据中迁移学习 3. BERT3.1 预训练 BERT3.2 微调 BERT 4. 实验4.1 GLUE4.2 SQuAD v1.14.3 SQuAD v2.04.4 SWAG 5. 消融研究5.1 预训练任务的影响5.2 模型大小的影响5.3 使用 BERT …

QT图形/视图架构详解(一)

场景、视图与图形项 图形/视图架构主要由 3 个部分组成&#xff0c;即场景、视图和图形项&#xff0c;三者的关系如图所示&#xff1a; 场景、视图和图形项的关系 场景&#xff08;QGraphicsScene 类&#xff09; 场景不是界面组件&#xff0c;它是不可见的。场景是一个抽象的…

Towards Frame Rate Agnostic Multi-object Tracking—迈向帧率无关的多目标跟踪

Towards Frame Rate Agnostic Multi-object Tracking—迈向帧率无关的多目标跟踪 发表在IJCV 2023年 作者&#xff1a;Weitao Feng, Lei Bai, Yongqiang Yao, Fengwei Yu & Wanli Ouyang 研究目标&#xff1a;多目标跟踪的帧率无关性研究 IJCV 在计算机视觉领域的影响力非常…

最新消息!ChatGPT已集成到苹果操作系统!

12月11日&#xff0c;OpenAI宣布ChatGPT将集成到苹果iOS、iPadOS和macOS操作系统中&#xff0c;用户可以直接在这些设备上访问ChatGPT的功能。 通过此次宣布内容来看&#xff0c;ChatGPT不再局限于单独的应用程序&#xff0c;用户可以在苹果设备上更便捷地使用它。这意味着&…

该用户不拥有该设备20018

调用接口查询或操作托管设备时报错无权限 第一步&#xff1a;确认调用接口需要的权限 这里以关闭设备加密接口为例&#xff1a;/api/lapp/device/encrypt/off&#xff0c;官网接口文档上注明了需要Config权限。注&#xff1a;调用此类接口时需要用使用大账号token&#xff0c;不…

【MySql】数据库索引概念及其作用详细介绍

目录 1. 为什么使用索引 2. 索引及其优缺点 2.1 索引的概述 2.2 优点 2.3 缺点 3. InnoDB中索引的推演 3.1 索引之前的查找 3.2 设计索引 1. 一个简单的索引设计方案 2. InnoDB中的索引方案 3.3 常见索引概念 1.聚簇索引 2.二级索引(辅助索引、非聚簇索引) 3.联合…

ESP32外设学习部分--SPI篇

SPI学习 前言 我个人以为开始学习一个新的单片机最好的方法就是先把他各个外设给跑一遍&#xff0c;整体了解一下他的功能&#xff0c;由此记录一下我学习ESP32外设的过程&#xff0c;防止以后忘记。 SPI 配置步骤 SPI总线初始化 spi_bus_config_t buscfg {.miso_io_num …

vue3+setup使用rtsp视频流实现实时监控,全屏,拍摄,自动拍摄等功能(纯前端)

vue3setup使用rtsp视频流实现实时监控&#xff0c;全屏&#xff0c;拍摄&#xff0c;自动拍摄等功能(纯前端) 概要 本文介绍了如何在Vue应用中通过WebRTC技术获取摄像头的rtsp视频流&#xff0c;同时展示了实时监控&#xff0c;全屏&#xff0c;拍摄&#xff0c;自动拍摄等功…

【源码阅读系列】(五)进程间通信(二)

进程间通信(二) 这一部分主要会介绍Android中特有的几个IPC机制。分别是: Intent、Binder、AIDL、ContentProvider https://juejin.cn/post/7244018340880007226 https://juejin.cn/post/6844903764986462221 Binder https://juejin.cn/post/7244018340880007226 https://j…

机器学习(ML)在发射机识别与资源管理的应用

电子战&#xff08;EW&#xff09;涉及在受干扰的频谱环境中&#xff0c;通过多个无线电频率传感和发射平台进行非合作交互。操作人员需要管理频谱资源、共享关键情报&#xff0c;并有效干扰威胁发射器。现代RF系统的复杂性和威胁发射器的敏捷性&#xff0c;要求系统能够以机器…

高项 - 信息化发展

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 博文更新参考时间点&#xff1a;2024-11-09 高项 - 章节与知识点汇总&#xff1a;点击跳转 文章目录 高项 - 信息化发展信息与信息化信息信息系统信息化 现代化基础设施新型基础设施建设工业互联网车联网 现代化创…