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

news2025/4/8 11:38:25

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: 2
     ethernets:
       eth0:
         dhcp4: true
       eth1:
         addresses:
           - 10.0.1.1/24
         dhcp4: 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

    # 设置 NAT
    iptables -t nat -A POSTROUTING -o $INTERNET_INTERFACE -j MASQUERADE
    iptables -A FORWARD -i $INTERNET_INTERFACE -o $LAN_INTERFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -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 的 INTERFACESv4
    echo "INTERFACESv4=\"$LAN_INTERFACE\"" > /etc/default/isc-dhcp-server

    # 启用 DHCP 服务器
    systemctl restart isc-dhcp-server

    # 设置 LAN 接口的静态 IP
    ip addr add 10.0.1.1/24 dev $LAN_INTERFACE
    ip link set $LAN_INTERFACE up

    echo "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 MASQUERADE
    iptables -D FORWARD -i $INTERNET_INTERFACE -o $LAN_INTERFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -D FORWARD -i $LAN_INTERFACE -o $INTERNET_INTERFACE -j ACCEPT

    # 停止 DHCP 服务器
    systemctl stop isc-dhcp-server

    # 清除静态 IP
    ip addr del 10.0.1.1/24 dev $LAN_INTERFACE

    # 恢复 /etc/default/isc-dhcp-server 文件中的 INTERFACESv4 设置
    echo "INTERFACESv4=\"\"" > /etc/default/isc-dhcp-server

    echo "Routing disabled. The interface is now a regular interface."
}

# 检查参数
if [ "$1" == "enable" ]; then
    enable_routing
elif [ "$1" == "disable" ]; then
    disable_routing
else
    echo "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 ]; then
    echo "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

    # 设置 NAT
    iptables -t nat -A POSTROUTING -o $INTERNET_INTERFACE -j MASQUERADE
    iptables -A FORWARD -i $INTERNET_INTERFACE -o $LAN_INTERFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -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 的 INTERFACESv4
    echo "INTERFACESv4=\"$LAN_INTERFACE\"" > /etc/default/isc-dhcp-server

    # 启用 DHCP 服务器
    systemctl restart isc-dhcp-server

    # 设置 LAN 接口的静态 IP
    ip addr add 10.0.1.1/24 dev $LAN_INTERFACE
    ip link set $LAN_INTERFACE up

    echo "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 MASQUERADE

    iptables -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 ACCEPT

    iptables -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

    # 清除静态 IP
    ip 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-server

    echo "Routing disabled. The interface is now a regular interface."
}

# 检查操作参数
case $2 in
    enable)
        enable_routing
        ;;
    disable)
        disable_routing
        ;;
    *)
        echo "Usage: $0 <internet_interface> {enable|disable}"
        exit 1
        ;;
esac

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Tomcat的下载和使用,配置控制台输出中文日志

目录 1. 简介2. 下载3. 使用3.1 文件夹展示3.1.1 控制台输出乱码 3.2 访问localhost:80803.3 访问静态资源 4. 总结 1. 简介 Tomcat&#xff0c;全称为Apache Tomcat&#xff0c;是一个开源的Web应用服务器和Servlet容器&#xff0c;由Apache软件基金会的Jakarta项目开发。它实…

【银河麒麟高级服务器操作系统】有关dd及cp测试差异的现象分析详解

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://documentkylinos.cn dd现象 使用银河麒麟高级服务器操作系统执行两次…

【在Linux世界中追寻伟大的One Piece】自旋锁

目录 1 -> 概述 2 -> 原理 3 -> 优缺点及使用场景 3.1 -> 优点 3.2 -> 缺点 3.3 -> 使用场景 4 -> 纯软件自旋锁类似的原理实现 4.1 -> 结论 5 -> 样例代码 1 -> 概述 自旋锁是一种多线程同步机制&#xff0c;用于保护共享资源避免受并…

顺序表的使用,对数据的增删改查

主函数&#xff1a; 3.c #include "3.h"//头文件调用 SqlListptr sql_cerate()//创建顺序表函数 {SqlListptr ptr(SqlListptr)malloc(sizeof(SqlList));//在堆区申请连续的空间if(NULLptr){printf("创建失败\n");return NULL;//如果没有申请成功&#xff…

利用卷积神经网络进行手写数字的识别

数据集介绍 MNIST&#xff08;Modified National Institute of Standards and Technology&#xff09;数据集是一个广泛使用的手写数字识别数据集&#xff0c;常用于机器学习和计算机视觉领域中的分类任务。它包含了从0到9的手写数字样本&#xff0c;常用于训练和测试各种图像…

题解 - 取数排列

题目描述 取1到N共N个连续的数字&#xff08;1≤N≤9&#xff09;&#xff0c;组成每位数不重复的所有可能的N位数&#xff0c;按从小到大的顺序进行编号。当输入一个编号M时&#xff0c;就能打印出与该编号对应的那个N位数。例如&#xff0c;当N&#xff1d;3时&#xff0c;可…

如何在 ASP.NET Core 3.1 应用程序中使用 Log4Net

介绍 日志记录是应用程序的核心。它对于调试和故障排除以及应用程序的流畅性非常重要。 借助日志记录&#xff0c;我们可以对本地系统进行端到端的可视性&#xff0c;而对于基于云的系统&#xff0c;我们只能提供一小部分可视性。您可以将日志写入磁盘或数据库中的文件&#xf…

监控易监测对象及指标之:宝兰德中间件JMX监控指标解读

监控易作为一款全面的IT监控软件&#xff0c;能够为企业提供深入、细致的监控服务&#xff0c;确保企业IT系统的稳定运行。在本文中&#xff0c;我们将详细解读监控易针对宝兰德中间件JMX的监控指标&#xff0c;以帮助用户更好地理解和应用这些监控数据。 监测指标概览&#x…

Ubuntu 安装 Samba Server

在 Mac 上如何能够与Ubuntu 服务器共享文件夹&#xff0c;需要在 Ubuntu 上安装 Samba 文件服务器。本文将介绍如何在 Ubuntu 上安装 Samba 服务器从而达到以下目的&#xff1a; Mac 与 Ubuntu 共享文件通过用户名密码访问 安装 Samba 服务 sudo apt install samba修改配置文…

数字化招聘系统如何帮助企业实现招聘效率翻倍提升?

众所周知&#xff0c;传统的招聘方式已经难以满足现代企业对人才的需求&#xff0c;而数字化招聘系统的出现&#xff0c;为企业提供了全新的解决方案。通过数字化招聘系统&#xff0c;企业可以自动化处理繁琐的招聘流程&#xff0c;快速筛选合适的候选人&#xff0c;从而大幅提…

C语言数组和字符串笔记

C语言数组和字符串笔记 1. 数组及其相关概念 1.1 为什么需要使用数组&#xff1f; 数组是一个有序的、类型相同的数据集合。这些数据被称为数组的元素。每个数组都有一个名字&#xff0c;数组名代表数组的起始地址。数组的元素通过索引或下标访问&#xff0c;索引从0开始。 …

u-boot移植、配置、编译学习笔记【刚开始就中止了】

教程视频地址 https://www.bilibili.com/video/BV1L24y187cK 【这个视频中途停更了…原因是实际中需要去改u-boot的情况比较少】 使用的u-boot的源码 视频中使用的是 u-boot-2017.03 学习到这里&#xff0c;暂停u-boot的移植、配置、编译学习&#xff0c;原因是经过与老师…

回归任务与分类任务应用及评价指标

能源系统中的回归任务与分类任务应用及评价指标 一、回归任务应用1.1 能源系统中的回归任务应用1.1.1 能源消耗预测1.1.2 负荷预测1.1.3 电池健康状态估计&#xff08;SOH预测&#xff09;1.1.4 太阳能发电量预测1.1.5 风能发电量预测 1.2 回归任务中的评价指标1.2.1 RMSE&…

【树莓派4B】MindSpore lite 部署demo

一个demo&#xff0c;mindspore lite 部署在树莓派4B ubuntu22.04中&#xff0c;为后续操作开个门&#xff01; 环境 开发环境&#xff1a;wsl-ubuntu22.04分发版部署环境&#xff1a;树莓派4B&#xff0c;操作系统为ubuntu22.04mindspore lite版本&#xff1a;mindspore-li…

AI监控赋能健身馆与游泳馆全方位守护,提升安全效率

一、AI视频监控技术的崛起 随着人工智能技术的不断发展&#xff0c;AI视频监控正成为各行业保障安全、提升效率的关键工具。相比传统监控系统&#xff0c;AI技术赋予监控系统实时分析、智能识别和精准预警的能力&#xff0c;让“被动监视”转变为“主动防控”。 二、AI监控应用…

M|林中小屋

title: 林中小屋 The Cabin in the Woods time: 2024-12-13 周五 rating: 7 豆瓣: 7.6 上映时间: “2012” 类型: M恐怖 导演: 德鲁戈达德 Drew Goddard 主演: 克里斯汀康奈利 Kristen Connolly弗兰克朗茨 Fran Kranz 国家/地区: 美国 片长/分钟: 95分钟 M&#xff5…

Mysql中的sql语句怎么执行的?

1.连接MySQL 通过客户端使用TCP&#xff08;数据传输协议&#xff09;连接MySQL连接器&#xff0c;连接器接到请求后对它进行检验是否有权限&#xff0c;有就进行分配资源。&#xff08;这个过程不能超过8小时&#xff09; 2.成功连接(校验效验) 客户端发送sql语句&#xff…

流网络复习笔记

所以这里的19是118-019 <s , w> 1/3就是容量是3&#xff0c;流量是1 残留网络就是两个相对箭头上都是剩余对应方向还能同行的流量 所以s->w 3-1 2, w->s 1

Redis - 实战之 全局 ID 生成器 RedisIdWorker

概述 定义&#xff1a;一种分布式系统下用来生成全局唯一 ID 的工具 特点 唯一性&#xff0c;满足优惠券需要唯一的 ID 标识用于核销高可用&#xff0c;随时能够生成正确的 ID高性能&#xff0c;生成 ID 的速度很快递增性&#xff0c;生成的 ID 是逐渐变大的&#xff0c;有利于…