在OpenWrt中设置端口转发(Port Forwarding)有两种方式:通过UCI命令行或直接编辑配置文件。
- 使用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
- 直接编辑配置文件方式:
# 编辑 /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
- 多端口转发示例:
# 转发多个端口
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'
- 常用参数说明:
name # 规则名称
src # 源区域(通常是wan)
dest # 目标区域(通常是lan)
proto # 协议类型(tcp/udp/tcp udp)
src_dport # 外部端口
dest_ip # 内网目标IP
dest_port # 内网目标端口
target # 转发类型(通常是DNAT)
enabled # 是否启用(默认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'
- 验证配置:
# 检查端口是否开放(从外部网络)
nc -zv your_wan_ip 8080
# 查看防火墙日志
logread | grep FORWARD
注意事项:
- 确保内网IP地址正确且固定
- 注意端口冲突
- 考虑安全性,只开放必要的端口
- 建议使用非标准端口以增加安全性
- 可以使用LuCI Web界面进行配置(如果已安装)
- 记得备份重要的防火墙配置
如果使用LuCI Web界面:
7. 进入 Network → Firewall → Port Forwards
8. 点击 Add
9. 填写相关信息
10. 保存并应用更改
11.
Target方式
在OpenWrt的防火墙规则中,target(目标)定义了对匹配的流量应该采取什么行动。以下是主要的target类型:
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'
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
ACCEPT
:
# 允许流量通过
config rule
option target 'ACCEPT'
option src 'wan'
option dest_port '22'
option proto 'tcp'
DROP
:
# 直接丢弃数据包,不发送任何响应
config rule
option target 'DROP'
option src 'wan'
option proto 'tcp'
option dest_port '23' # 例如阻止telnet
REJECT
:
# 拒绝数据包并发送响应(比DROP更友好)
config rule
option target 'REJECT'
option src 'wan'
option proto 'tcp'
option dest_port '80'
MASQUERADE
:
# 动态源NAT,适用于动态IP环境
config redirect
option target 'MASQUERADE'
option src 'lan'
option dest 'wan'
MARK
:
# 标记数据包,用于高级路由
config rule
option target 'MARK'
option set_mark '0x1/0xf'
option src 'lan'
option dest_ip '8.8.8.8'
NOTRACK
:
# 禁用连接跟踪,用于特定流量
config rule
option target 'NOTRACK'
option src 'lan'
option proto 'udp'
option dest_port '53'
常见使用场景:
- 端口转发:
# 使用DNAT
config redirect
option target 'DNAT'
option src 'wan'
option src_dport '80'
option dest_ip '192.168.1.100'
option dest_port '8080'
- 出站NAT:
# 使用SNAT或MASQUERADE
config redirect
option target 'MASQUERADE'
option src 'lan'
option dest 'wan'
- 安全规则:
# 阻止特定流量
config rule
option target 'DROP'
option src 'wan'
option proto 'tcp'
option dest_port '135-139' # 阻止Windows文件共享端口
- DMZ主机设置:
# 将所有入站流量转发到特定主机
config redirect
option target 'DNAT'
option src 'wan'
option dest 'lan'
option dest_ip '192.168.1.100'
注意事项:
- 规则优先级:
# 更具体的规则应该放在前面
config rule
option target 'ACCEPT'
option priority '1' # 较低数字 = 较高优先级
- 安全考虑:
# 默认策略通常设置为DROP
config defaults
option input 'DROP'
option output 'ACCEPT'
option forward 'DROP'
- 调试技巧:
# 添加日志规则
config rule
option target 'LOG'
option log_prefix 'FIREWALL: '
option src 'wan'
- 性能优化:
# 对于高流量服务使用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