当前位置: 首页 > 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会发生变更
http://www.lryc.cn/news/418776.html

相关文章:

  • JVM类加载中的双亲委派机制
  • 【OpenCV C++20 学习笔记】范围阈值操作
  • 【Material-UI】Checkbox组件:Indeterminate状态详解
  • 一文了解K8S(Kubernates)
  • 三星、小米和 OPPO设备实验室将采用Android设备流技术
  • 华为OD-D卷万能字符单词拼写
  • 顶象文字点选模型识别
  • C#如何将自己封装的nuget包引入到项目中
  • 数据结构(学习)2024.8.8(栈,队列)
  • 服务端开发常用知识(持续更新中)
  • MySQL入门学习-运维与架构.复制过滤器
  • 【深度学习】生成领域里,Normalizing Flow、GAN、VAE、Diffusion Models的区别是什么?
  • Qt 串口通信(C++)
  • 聊聊AUTOSAR: 基于DaVinci的SecOC开发与配置
  • .net6.0 重启控制台 命令
  • LVS 调度器 nat和DR模式
  • MTK Android12 SystemUI 手势导航 隐藏导航栏底部布局
  • electron调用c++ dll lib
  • 23种设计模式(持续更新中)
  • Linux文件系统详解
  • 大数据面试SQL(五):查询最近一笔有效订单
  • OpenCV图像滤波(8)getGaborKernel()函数的使用
  • 门店收银系统源码+同城即时零售多商户入驻商城源码
  • MaxKB:基于 LLM大语言模型的知识库问答系统实操
  • linux文件命令:更新文件时间戳的工具touch详解
  • Docker学习(6):Docker Compose部署案例
  • 4章3节:处理医学类原始数据的重要技巧,R语言中的宽长数据转换,tidyr包的使用指南
  • [Web安全架构] HTTP协议
  • mysql数据库之运算符
  • Spark轨迹大数据高效处理_计算两经纬度点间的距离_使用Haversine formula公式