openwrt下,用iptable转发端口访问远程的SMB服务
首先初步学习一下iptales的命令
iptales指令的详细教程:https://blog.csdn.net/weixin_44390164/article/details/120500075
实践一、转发地址与端口
外网远程服务上开放了SMB服务,端口号自定义的为44513,WINDOWS不能直接访问,可以通过路由器上的转发功能来实现,但是远程服务又是动态IP地址,可以用以下方式来访问:
要想自动获取动态IP并转发,可以在/root/目录下面新建以下脚本文件,命名为jiong818.6655.la.sh
1、开机时先自动执行一次
将下面命令添加到本地启动脚本里面
iptables -t nat -I PREROUTING -p tcp -d 192.168.6.1 --dport 445 -j DNAT --to $(cat /root/jiong818.6655.la.IP):44513
#iptables -t filter -I FORWARD 1 -p all -d $(cat /root/jiong818.6655.la.IP) -j ACCEPT
#iptables -t filter -I FORWARD 1 -p all -d $(cat /root/weixu1129.x3322.net.IP) -j ACCEPT# 192.168.6.1为路由器地址,当访问路由器的445端口时,将会自动转换到远程域名对应的IP地址与端口上去
# jiong818.6655.la为域名
# 44513为远程SMB端口号
2、建立脚本文件jiong818.6655.la.sh
dyIP=$(ping jiong818.6655.la -c1 | grep PING | awk '{ print $3 }' | cut -c 2- | cut -d\) -f1)
if [ -z "$dyIP" ];thenecho "get Ip false"exit
fifile_content=$(cat jiong818.6655.la.IP)
echo "newIP="$dyIP
echo "lastIP="$file_contentif [ "$file_content" != "$dyIP" ];thenecho "print new ip to text file"echo $dyIP>jiong818.6655.la.IPiptables -t nat -D PREROUTING 1iptables -t nat -I PREROUTING -p tcp -d 192.168.6.1 --dport 445 -j DNAT --to $dyIP:44513
# iptables -t filter -D FORWARD 1
# iptables -t filter -I FORWARD 1 -p all -d $dyIP -j ACCEPT
elseecho "no change!"
fi
3、添加实时任务,每5分钟执行一次
crontab -e
*/5 * * * * sh /root/jiong818.6655.la.sh
#*/5 * * * * sh /root/weixu1129.x3322.net.sh
自此就可以自动转发了,随便远程IP怎么变化都可以正常访问SMB服务了。
实践二、控制终端访问情况
要想让MAC为:F8:4E:17:D7:E6:29的终端,在任何时间都可以通过WAN口访问124.229.32.179
iptables -t filter -I zone_lan_forward 3 -p all -d 124.229.32.179 -m mac --mac-source F8:4E:17:D7:E6:29 -j zone_wan_dest_ACCEPT
# -t filter 【表示指定filter表】
# -I zone_lan_forward 3 【插入自定义名的zone_lan_forward链 第三行,如果没有3,则默认插入到第一条】
# -p all 【匹配所有协议包括TCP\UDP等】
# -d 124.229.32.179 【匹配要访问的目标IP地址】
# -m mac --mac-source F8:4E:17:D7:E6:29 【匹配需要访问的终端MAC地址】
# -j zone_wan_dest_ACCEPT 【前面匹配成功后规则,最后指定动作--允许从WAN口访问】#如果之前有记录的话,要先删除
iptables -t filter -D zone_lan_forward 3
所有终端允许访问jiong818.6655.la 和 weixu1129.x3322.net
在
iptables -t filter -I FORWARD 1 -p all -d $(ping jiong818.6655.la -c1 | grep PING | awk '{ print $3 }' | cut -c 2- | cut -d\) -f1) -j ACCEPT
iptables -t filter -I FORWARD 1 -p all -d $(ping weixu1129.x3322.net -c1 | grep PING | awk '{ print $3 }' | cut -c 2- | cut -d\) -f1) -j ACCEPT
iptables -t filter -D FORWARD 2
iptables -t filter -I FORWARD 1 -p all -d 124.229.32.179 -j ACCEPT
iptables -t filter -nvL FORWARD --line
以下是iptables一些其它选项的说明
-t :指定表
-I: 插入新规则(默认为1:插入到第一个) 与之对应的有 -A :新增一条规则,默认加在已存在的规则的最底端
PREROUTING:PREROUTING链在进行路由决定之前处理数据包,因此可以用来修改目标地址(DNAT)或源地址(SNAT)。iptables -t nat -L PREROUTING:查看nat表PREROUTING链的规则
-p :对相应网络协议的包做规则限制如tcp、udp、icmp或all
-d:目标地址
–dport:目的端口
-j:对条件满足数据作出对应的动作(有ACCEPT,DROP,REJECT等下列可选项)
ACCEPT:接受
DROP:丢弃
REJECT:决绝
LOG:记录日志
SNAT:源地址转换
DNAT:目标地址转换
MASQUERADE:源地址动态转换为指定网卡上可用的IP地址
REDIRECT:重定向:将本机端口映射到本机的另一个端口
#查看规则所在nat表中链PREROUTING的行号
iptables -t nat -L PREROUTING -n --line-numbers
#删除所在nat表中链PREROUTING第[$Num]行规则
iptables -t nat -D PREROUTING [$Num] #[$Num]指的是需要删除的num。删除规则后,下方的其他规则会补位,num会发生变更
相关文章:
openwrt下,用iptable转发端口访问远程的SMB服务
首先初步学习一下iptales的命令 iptales指令的详细教程:https://blog.csdn.net/weixin_44390164/article/details/120500075 实践一、转发地址与端口 外网远程服务上开放了SMB服务,端口号自定义的为44513,WINDOWS不能直接访问,…...
JVM类加载中的双亲委派机制
【1】什么是双亲委派 Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模式,即把请求交由父类处理,…...
【OpenCV C++20 学习笔记】范围阈值操作
范围阈值操作 原理HSV颜色空间RGB与HSV颜色空间之间的转换 代码实现颜色空间的转换范围阈值操作 原理 HSV颜色空间 HSV(色相hue, 饱和度sarturation, 色明度value)颜色空间与RGB颜色空间相似。hue色相通道代表颜色类型;saturation饱和度通道代表颜色的饱和度&…...
【Material-UI】Checkbox组件:Indeterminate状态详解
文章目录 一、什么是Indeterminate状态?二、Indeterminate状态的实现1. 基本用法示例2. 代码解析3. Indeterminate状态的应用场景 三、Indeterminate状态的UI与可访问性1. 无障碍设计2. 用户体验优化 四、Indeterminate状态的最佳实践1. 状态同步2. 优化性能3. 提供…...
一文了解K8S(Kubernates)
一、K8S 1. 概述 Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态,其服务、支持和工具的使用范围相当广泛。 Kubernetes 这个名字源于希腊…...
三星、小米和 OPPO设备实验室将采用Android设备流技术
早在 5 月份的年度开发者大会上,Google就发布了 Android 设备流测试版。开发人员可以在Google数据中心的真实物理设备上更轻松、更互动地测试自己的应用程序,这些设备会直接串流到 Android Studio。今天,Google宣布与三星、小米和 OPPO 合作扩…...
华为OD-D卷万能字符单词拼写
有一个字符串数组words和一个字符串chars。 假如可以用chars中的字母拼写出words中的某个“单词”(字符串),那么我们就认为你掌握了这个单词。 words的字符仅由 a-z 英文小写字母组成。 例如: abc chars 由 a-z 英文小写字母和 “?”组成。其…...
顶象文字点选模型识别
注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 文字点选如何训练,之前的文章说了很多遍了,这里只放现成的模型供查看,有需要成品联系…...
C#如何将自己封装的nuget包引入到项目中
问题 自己封装好了一个nuget包,但是不想上传到外网,想局域网使用,有两种方案 搭建私有nuget仓库放到离线文件夹中直接使用 第一种方式请请参考proget安装 下面主要是第二种方式 准备 新建类库项目 using System;namespace ClassLibrary…...
数据结构(学习)2024.8.8(栈,队列)
今天学习的是线性表里面的栈和队列 链表的相关知识可以查看http://t.csdnimg.cn/NX464 顺序表的相关知识可以查看http://t.csdnimg.cn/5IMAZ 目录 栈 栈的定义 栈的特点 顺序栈 结构体 顺序栈的相关操作案例 链式栈 结构体 链式栈的相关操作案例 总结 队列 队列…...
服务端开发常用知识(持续更新中)
Java方面 1 基础篇 1.1 网络基础 tcp三次握手和四次挥手-CSDN博客 tcp和udp区别,tcp拥塞控制算法和粘包问题-CSDN博客 http的发展历史,各版本的差异点,以及和https的区别-CSDN博客 2 jvm篇 3 多线程篇 4 mysql篇 5 redis篇 6 kafk…...
MySQL入门学习-运维与架构.复制过滤器
MySQL 复制过滤器是一种用于过滤复制数据的机制。它可以根据特定的规则,选择要复制的数据库、表或列,从而减少复制的数据量,提高复制性能。 一、以下是一些常见的 MySQL 复制过滤器: 1. 基于二进制日志的过滤器: 通过…...
【深度学习】生成领域里,Normalizing Flow、GAN、VAE、Diffusion Models的区别是什么?
文章目录 1. Normalizing Flow2. GAN (Generative Adversarial Networks)3. VAE (Variational Autoencoders)4. Diffusion Models总结1. Normalizing Flow公式代码示例2. GAN (Generative Adversarial Networks)公式代码示例3. VAE (Variational Autoencoders)公式代码示例4. D…...
Qt 串口通信(C++)
1. 基本概念 串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接…...
聊聊AUTOSAR: 基于DaVinci的SecOC开发与配置
一、什么是SecOC 当前车载网络通讯环境越来越复杂,未采取任何安全保护的报文,一旦被伪造或者篡改,将非常危险。为了提升信息的安全性,AUTOSAR标准中引进了SecOC,加入了通讯认证机制,能够有效的辨别出信息是…...
.net6.0 重启控制台 命令
在.NET 6.0中,如果你想要创建一个命令行应用程序来重启当前运行的控制台,你可以使用System.Diagnostics命名空间下的Process类来启动一个新的进程,并结束当前进程。 以下是一个简单的示例代码,展示了如何实现重启控制台的功能&am…...
LVS 调度器 nat和DR模式
lvs-nat 修改请求报文的目标IP,多目标IP的DNAT 配置网络 LVS主机 注意网卡的顺序 (nat和主机模式) [rootlvs ~]# cat /etc/NetworkManager/system-connections/ens160.nmconnection [connection] idens160 typeethernet interface-nameens160 [ip…...
MTK Android12 SystemUI 手势导航 隐藏导航栏底部布局
问题:android12 平台手势导航情况下,app页面未设置全屏情况下,底部导航栏会有一个高度的颜色,底部导航会有一个手势导航提示条 需求:去掉手势导航情况下底部的导航栏和手势提示条 文章目录 相关资源修改问题描述解决方案代码跟踪中间提醒小方块代码查找底部手势导航条跟踪…...
electron调用c++ dll lib
主要的工具包 node-addon-apinode-gyp 主要的配置 {"variables": {# module_mac: "./../sdk/mac",},"targets": [{"target_name": "native_module","defines": ["NAPI_DISABLE_CPP_EXCEPTIONS"],&qu…...
23种设计模式(持续更新中)
参考链接干货分享 | 《设计模式之美》学习笔记 - 知乎 (zhihu.com) 总体来说设计模式分为三大类: 创建型模式,共5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共7种:适配器模式、…...
OpenClaw未来展望:Qwen3-4B与Agent技术融合趋势
OpenClaw未来展望:Qwen3-4B与Agent技术融合趋势 1. 从工具到伙伴:个人自动化助手的进化之路 去年冬天的一个深夜,我正为一份紧急报告焦头烂额时,电脑突然弹出一条提示:"检测到您连续工作超过4小时,已…...
在 Windows 上实现 SSH 掉线重连与会话持久化
在 Windows 上实现 SSH 掉线重连与会话持久化:完整方案指南 SSH 是连接和管理远程 Linux 服务器的必备工具,但在 Windows 环境下,网络波动或电脑休眠常常导致 SSH 连接中断,正在运行的任务(如模型训练、编译等…...
编程新手学编程,先学C语言还是C++?学姐告诉你答案
身为一名编程方面的新手,大家都会遭遇的一个疑问是:是要先去学习C语言,还是要先去学习C?有些同学会认为倘若我先着手学习C,之后再回过头来学习C语言,这样是不是会更为简便?毕竟,升级…...
告别Transformer!用TimeKAN在ETTh1数据集上实现SOTA级长时序预测(附PyTorch复现指南)
TimeKAN:用频率分解与轻量架构重塑长时序预测的PyTorch实践指南 时序预测领域正在经历一场静悄悄的革命——当Transformer模型因计算复杂度陷入瓶颈时,一种融合频率分解思想与新型网络架构的解决方案正在ETTh1等基准数据集上刷新纪录。本文将带您深入Tim…...
基于Spring Boot+Vue3的烹饪交流学习系统 设计与实现
基于 Spring Boot Vue3 的烹饪交流学习系统 设计与实现 一、项目概述 随着人们对烹饪学习与交流需求的增加,传统线下学习模式在菜谱管理、内容发现、交流共享与个性化推荐等方面存在明显不足。为此,本项目基于 Spring Boot Vue3 技术栈,构建…...
中文语音识别工具实测:Fun-ASR识别准确率对比,效果令人惊喜
中文语音识别工具实测:Fun-ASR识别准确率对比,效果令人惊喜 1. 为什么选择Fun-ASR进行测试? 在当今语音识别技术百花齐放的市场中,Fun-ASR作为钉钉联合通义实验室推出的开源语音识别系统,凭借其本地化部署、中文优化…...
Intv_AI_MK11 处理时序数据:LSTM 思想在对话状态跟踪中的应用
Intv_AI_MK11 处理时序数据:LSTM 思想在对话状态跟踪中的应用 1. 引言:对话状态跟踪的挑战 在多轮对话系统中,准确跟踪对话状态是核心挑战之一。传统方法往往难以有效捕捉对话历史中的长期依赖关系,导致系统在复杂对话场景中容易…...
gallery用户留存技巧:提高本地AI平台用户的活跃度
gallery用户留存技巧:提高本地AI平台用户的活跃度 【免费下载链接】gallery A gallery that showcases on-device ML/GenAI use cases and allows people to try and use models locally. 项目地址: https://gitcode.com/GitHub_Trending/gallery44/gallery …...
Excel实战:手把手教你用条件格式和分类汇总分析个人开支(计算机二级考点全覆盖)
Excel实战:手把手教你用条件格式和分类汇总分析个人开支(计算机二级考点全覆盖) 在个人财务管理中,Excel是最基础也最强大的工具之一。无论是备考计算机二级的考生,还是希望提升工作效率的职场人士,掌握Exc…...
ZYNQ AXI_DMA配置避坑指南:如何避免DDR3数据传输中的栈区溢出
ZYNQ AXI_DMA配置避坑指南:如何避免DDR3数据传输中的栈区溢出 在嵌入式系统开发中,内存管理往往是决定项目成败的关键因素之一。最近接手一个ZYNQ项目时,我遇到了一个令人头疼的问题:当使用AXI_DMA从PL端向PS端的DDR3内存传输大量…...
