首页 > 其他分享 >详细介绍了openwrt的防火墙以及target的方式DNAT SNAT

详细介绍了openwrt的防火墙以及target的方式DNAT SNAT

时间:2024-11-12 09:47:40浏览次数:3  
标签:redirect src target dest config SNAT openwrt option

在OpenWrt中设置端口转发(Port Forwarding)有两种方式:通过UCI命令行或直接编辑配置文件。

  1. 使用UCI命令行方式:
# 添加端口转发规则
uci add firewall redirect
uci set firewall.@redirect[-1].name='my-service-forward'
uci set firewall.@redirect[-1].src='wan'
uci set firewall.@redirect[-1].dest='lan'
uci set firewall.@redirect[-1].proto='tcp'              # 协议类型:tcp/udp/tcp udp
uci set firewall.@redirect[-1].src_dport='8080'        # 外部端口
uci set firewall.@redirect[-1].dest_ip='192.168.1.100' # 内网目标IP
uci set firewall.@redirect[-1].dest_port='80'          # 内网目标端口
uci set firewall.@redirect[-1].target='DNAT'

# 保存并应用更改
uci commit firewall
/etc/init.d/firewall restart
  1. 直接编辑配置文件方式:
# 编辑 /etc/config/firewall
vim /etc/config/firewall

# 添加以下配置
config redirect
    option name 'my-service-forward'
    option src 'wan'
    option dest 'lan'
    option proto 'tcp'
    option src_dport '8080'        # 外部端口
    option dest_ip '192.168.1.100' # 内网目标IP
    option dest_port '80'          # 内网目标端口
    option target 'DNAT'

# 重启防火墙
/etc/init.d/firewall restart
  1. 多端口转发示例:
# 转发多个端口
config redirect
    option name 'multi-ports'
    option src 'wan'
    option dest 'lan'
    option proto 'tcp udp'
    option src_dport '8080-8090'        # 端口范围
    option dest_ip '192.168.1.100'
    option dest_port '8080'
    option target 'DNAT'
  1. 常用参数说明:
name        # 规则名称
src         # 源区域(通常是wan)
dest        # 目标区域(通常是lan)
proto       # 协议类型(tcp/udp/tcp udp)
src_dport   # 外部端口
dest_ip     # 内网目标IP
dest_port   # 内网目标端口
target      # 转发类型(通常是DNAT)
enabled     # 是否启用(默认1启用)
  1. 查看和管理规则:
# 查看所有防火墙规则
uci show firewall

# 查看端口转发规则
uci show firewall | grep redirect

# 删除最后一条转发规则
uci delete firewall.@redirect[-1]

# 删除指定名称的规则(假设规则名为'my-service-forward')
uci del_list firewall.@redirect[0].name='my-service-forward'
  1. 验证配置:
# 检查端口是否开放(从外部网络)
nc -zv your_wan_ip 8080

# 查看防火墙日志
logread | grep FORWARD

注意事项:

  1. 确保内网IP地址正确且固定
  2. 注意端口冲突
  3. 考虑安全性,只开放必要的端口
  4. 建议使用非标准端口以增加安全性
  5. 可以使用LuCI Web界面进行配置(如果已安装)
  6. 记得备份重要的防火墙配置

如果使用LuCI Web界面:
7. 进入 Network → Firewall → Port Forwards
8. 点击 Add
9. 填写相关信息
10. 保存并应用更改
11.

Target方式

在OpenWrt的防火墙规则中,target(目标)定义了对匹配的流量应该采取什么行动。以下是主要的target类型:

  1. DNAT (Destination NAT):
# 用于端口转发,改变数据包的目标地址和端口
config redirect
    option target 'DNAT'
    option src 'wan'
    option dest 'lan'
    option src_dport '8080'
    option dest_ip '192.168.1.100'
    option dest_port '80'
  1. SNAT (Source NAT):
# 修改数据包的源地址,通常用于出站流量
config redirect
    option target 'SNAT'
    option src 'lan'
    option dest 'wan'
    option src_ip '192.168.1.0/24'
    option snat_ip '1.2.3.4'  # 外网IP
  1. ACCEPT:
# 允许流量通过
config rule
    option target 'ACCEPT'
    option src 'wan'
    option dest_port '22'
    option proto 'tcp'
  1. DROP:
# 直接丢弃数据包,不发送任何响应
config rule
    option target 'DROP'
    option src 'wan'
    option proto 'tcp'
    option dest_port '23'  # 例如阻止telnet
  1. REJECT:
# 拒绝数据包并发送响应(比DROP更友好)
config rule
    option target 'REJECT'
    option src 'wan'
    option proto 'tcp'
    option dest_port '80'
  1. MASQUERADE:
# 动态源NAT,适用于动态IP环境
config redirect
    option target 'MASQUERADE'
    option src 'lan'
    option dest 'wan'
  1. MARK:
# 标记数据包,用于高级路由
config rule
    option target 'MARK'
    option set_mark '0x1/0xf'
    option src 'lan'
    option dest_ip '8.8.8.8'
  1. NOTRACK:
# 禁用连接跟踪,用于特定流量
config rule
    option target 'NOTRACK'
    option src 'lan'
    option proto 'udp'
    option dest_port '53'

常见使用场景:

  1. 端口转发:
# 使用DNAT
config redirect
    option target 'DNAT'
    option src 'wan'
    option src_dport '80'
    option dest_ip '192.168.1.100'
    option dest_port '8080'
  1. 出站NAT:
# 使用SNAT或MASQUERADE
config redirect
    option target 'MASQUERADE'
    option src 'lan'
    option dest 'wan'
  1. 安全规则:
# 阻止特定流量
config rule
    option target 'DROP'
    option src 'wan'
    option proto 'tcp'
    option dest_port '135-139'  # 阻止Windows文件共享端口
  1. DMZ主机设置:
# 将所有入站流量转发到特定主机
config redirect
    option target 'DNAT'
    option src 'wan'
    option dest 'lan'
    option dest_ip '192.168.1.100'

注意事项:

  1. 规则优先级:
# 更具体的规则应该放在前面
config rule
    option target 'ACCEPT'
    option priority '1'  # 较低数字 = 较高优先级
  1. 安全考虑:
# 默认策略通常设置为DROP
config defaults
    option input 'DROP'
    option output 'ACCEPT'
    option forward 'DROP'
  1. 调试技巧:
# 添加日志规则
config rule
    option target 'LOG'
    option log_prefix 'FIREWALL: '
    option src 'wan'
  1. 性能优化:
# 对于高流量服务使用NOTRACK
config rule
    option target 'NOTRACK'
    option proto 'udp'
    option dest_port '53'  # DNS服务

这些target类型可以根据需要组合使用,创建复杂的防火墙规则来满足各种网络需求。选择合适的target类型对于实现预期的网络行为和安全性非常重要。

标签:redirect,src,target,dest,config,SNAT,openwrt,option
From: https://blog.csdn.net/u011027104/article/details/143680506

相关文章

  • 最简单的定制openwrt,用在线编译来做一个不怕恢复出厂设置的rom
    简介:这两天在调试一些openwrt设备,但是调错了怎么办?恢复出厂设置是最简单的。可是一顿操作猛如虎,远程调试openwrt,这么恢复出厂设置呢?连pppoe拨号都没有了,动态域名也没有了,怎么办?定制rom是唯一的出路。官方说明:[OpenWrtWiki]UCI默认设置官方示例:cat<<"EOF">/etc/uci-d......
  • openwrt软件包 2: linux 内核软件包 in openwrt
    上篇介绍了基础的Makefile使用和如何加载到镜像中,此篇来介绍一下内核的软件包openwrt软件包1内核软件包首先第一个问题就是:为什么区分了openwrt软件包和内核软件包?其实这就是openwrt这个系统的一个问题,它把整个系统分成了用户态和内核态,内核态有更高的操作权......
  • 群晖虚拟openwrt做旁路由
     群晖NAS安装openWRT旁路由保姆级教程2023-12-0522:24:09 121点赞 1098收藏 77评论之前写过一篇用群晖做ikuai旁路由的教程,ikuai用来做网络行为管控相当不错,但其他服务和应用丰富度不如openWRT,比如有时候需要开全局加速什么的;家里有一台稳定的路由器,但基本没什么功......
  • RK3568开发板Openwrt文件系统构建
    iTOP-RK3568开发板使用教程更新,后续资料会不断更新,不断完善,帮助用户快速入门,大大提升研发速度。本次更新内容为《iTOP-3568开发板文件系统构建手册》,对Openwrt文件系统的编译烧写以及系统移植步骤进行详细介绍。      教程目录第1章Linux文件系统简介1.1知识导......
  • openwrt解决docker拉取失败问题
    非原创,原文链接:loveyu.org/6115.html背景:在openwrt上的docker拉取失败,提示如下错误:root@openwrt:\~#dockerpulldebianErrorresponsefromdaemon:Get"https://registry-1.docker.io/v2/":contextdeadlineexceeded(Client.Timeoutexceededwhileawaitingheade......
  • 在openwrt上跑golang程序
    1.安装Go语言、搭建开发环境https://blog.csdn.net/qq_38105536/article/details/1426351322.VMwareWorkstation部署最新版OpenWrt23.05.3https://blog.csdn.net/gtj0617/article/details/137706312桥接模式(负责物理网络连接状态),设置ip:192.168.0.11设置root密码root@Ope......
  • 编译opencv 提示opencv_sfm links to target absl::log but not found解决办法
    先说解决办法,安装ceres库版本需要<2ErrorwhileconfiguringCMaketobuildwithcontribmodules在香橙派5上编译opencv+opencv_contrib我是先源码编译的ceres库(2.2版本的,查看include\version.h)在opencv\build目录下生成配置时,提示configdone,generatefailed!并报......
  • OpenWrt 用 ssh 换回默认主题
    OpenWrt用ssh换回默认主题opkgremoveluci-theme-argon2021年04月29日 / in 日常水文 3638OpenWrt用ssh(命令行)换回默认主题lede大神版本的OpemWrt固件,用ssh换回默认主题。用命令修改配置文件vi/etc/config/luci configcore'main'optionresourcebase......
  • Openwrt编译后生成的固件区别
    Openwrt编译后生成的固件区别2024-07-02固件格式:kernel:内置最简文件系统的Linux内核,适用于首次安装或故障恢复sysupgrade:从本来就是openwrt的固件基础上升级,或者无刷机引导限制的机器上直接刷入此格式文件factory:用于从设备的原厂固件刷入factory,再刷入breed之类不死......
  • Cinemachine——磁力吸实现&CinemachineTargetGroup
    视角“聚焦”是游戏过场动画中常见的功能,Cinemachine实现这个功能,让我们看看具体怎么使用吧。通过PackageManager导入Cinemachine插件,在导入CinemachineSample后,我们可以在Assets文件夹下Cinemachine/2.6.17(这个是你下载的cinemachine版本号)/CinemachineExampleScenes/Scenes......