Skip to content

openwrt - firewall

防火墙、DMZ(独立隔离区)、NAT 转发在 OpenWrt 系统中都是由 /etc/config/firewall 配置文件管理的。

https://openwrt.org/docs/guide-user/firewall/start

https://openwrt.org/zh-cn/doc/uci/firewall

https://openwrt.org/docs/guide-user/firewall/fw3_configurations/fw3_config_examples

https://openwrt.org/docs/guide-user/firewall/fw3_configurations/fw3_dmz

重置防火墙

root@Thingoo:~# /etc/init.d/firewall reload

重启防火墙

root@Thingoo:~# /etc/init.d/firewall restart

查看防火墙完整策略

root@Thingoo:~# iptables -L

防火墙 defaults 配置

config defaults
    option syn_flood    1           # 启用防洪水攻击
    option input        ACCEPT      # INPUT 链过滤策略
    option output       ACCEPT      # OUTPUT 链过滤策略
    option forward      REJECT      # FORWARD 链过滤策略

防火墙 zone 域配置

系统将 LAN 和 WAN 分为两个不同的 zone,它们之间是隔离的。

config zone
    option name         lan         # zone 节点名
    list   network      'lan'       # 指定绑定到该 zone 上的设备
    option input        ACCEPT
    option output       ACCEPT
    option forward      ACCEPT

config zone
    option name         wan
    list   network      'wan'
    list   network      'wan6'
    list   network      'wwan'
    option input        ACCEPT
    option output       ACCEPT
    option forward      REJECT
    option masq         1           # 传输伪装开关,WAN 必须设为 1
    option mtu_fix      1           # 数据输出时开启 MSS 钳制,WAN 必须设为 1

防火墙 forwarding 转发配置

forwarding 配置可以实现两个不同 zone 域之间的数据发送

config forwarding
    option src      lan         # 来源 zone
    option dest     wan         # 目标 zone

防火墙 rule 规则

默认情况下,所有进入 WAN 口的请求都会被拒绝,如果希望有例外,那么要通过 rule 来实现许可。

# Allow IPv4 ping
config rule
    option name         Allow-Ping
    option src          wan                 # 数据源的 zone 域
    option proto        icmp                # 数据源的协议类型
    option icmp_type    echo-request
    option family       ipv4                # IP 协议类型
    option target       ACCEPT              # 规则动作

# 禁止 LAN 口的某个 IP 访问 WAN 口
config rule
    option src      lan                     # 数据源的 zone 域
    option src_ip   192.168.45.2            # 数据源的 IP 地址
    option dest     wan                     # 目的地的 zone 域
    option proto    tcp
    option target   REJECT

# 禁止某个 MAC 地址访问 WAN
config rule
    option dest     wan
    option src_mac  00:11:22:33:44:66       # 数据源的 MAC 地址
    option target   REJECT

# 阻塞某个 zone 上的 ICMP 流量
config rule
    option src      lan
    option proto    ICMP
    option target   DROP

防火墙 redirect 端口转发

端口转发允许访问者通过 WAN 口访问 LAN 口中的一个特定端口,并将结果转发回给访问者。

# 将 LAN 口的 80 端口开放到 WAN 口上
config redirect
    option src          wan             # 被转发来源 zone 域
    option src_dport    80              # 被转发的端口
    option dest         lan             # 转发到哪个 zone 域
    option dest_ip      192.168.16.235  # 转发到哪个 IP 地址
    option dest_port    80              # 转发到哪个端口
    option proto        tcp             # 协议类型

# 将所有来自 WAN 口的 TCP 协议访问 22001 的请求都转发给 LAN 中的一台 80 端口的计算机
config redirect
    option src          wan
    option src_dport    22001
    option dest         lan
    option dest_port    22
    option proto        tcp

# 将 IP 地址 192.168.1.2 设置到 DMZ 隔离区
config redirect
    option src          wan
    option proto        all
    option dest_ip      192.168.1.2