在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类型对于实现预期的网络行为和安全性非常重要。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐