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

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虚拟机采用的是双亲委派模式,即把请求交由父类处理&#xff0c…...

【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种:适配器模式、…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

【机器视觉】单目测距——运动结构恢复

ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛&#xf…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

Kafka入门-生产者

生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统

Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...

rm视觉学习1-自瞄部分

首先先感谢中南大学的开源,提供了很全面的思路,减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接:https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架: 代码框架结构:readme有…...