linux防火墙本身不负责路由决策,但能与内核路由协同,在数据包经过路由判断后、交付本地或转发前,对内网区域间流量实施精细化过滤,关键在于利用forward链配合源/目标地址、接口、连接状态等条件实现区域隔离与策略控制。

Linux 防火墙本身不负责路由决策,但能与内核路由协同,在数据包经过路由判断后、交付本地或转发前,对内网区域间流量实施精细化过滤。关键在于利用 FORWARD 链 配合源/目标地址、接口、连接状态等条件,实现区域隔离与策略控制。
明确区域边界与接口划分
内网区域隔离依赖物理或逻辑网络接口的清晰界定。例如:
- eth0 接办公网(192.168.10.0/24)
- eth1 接服务器区(172.16.20.0/24)
- eth2 接访客网(10.0.30.0/24)
确保每个区域有独立子网,并在系统中通过 ip addr 或 ifconfig 确认接口绑定正确。防火墙规则必须基于接口(-i / -o)和地址段(-s / -d)联合匹配,否则无法精准区分区域流向。
用 FORWARD 链控制跨区域流量
所有经本机转发的数据包(即非发往本机、也非由本机发出)都经过 FORWARD 链。这是实现区域间过滤的核心位置:
宝塔Linux面板11.8.1为官网当前正式版,新增AI建站能力并经过宝塔网站工程师深度调教,开放自定义AI功能API,同时对WAF进行界面重构和深度优化,提升拦截能力与运维效率。
- 默认拒绝:先设策略
iptables -P FORWARD DROP - 允许办公网访问服务器区:
iptables -A FORWARD -i eth0 -o eth1 -s 192.168.10.0/24 -d 172.16.20.0/24 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT - 禁止访客网访问服务器区:
iptables -A FORWARD -i eth2 -o eth1 -j DROP - 允许服务器区主动访问办公网(返回流量已由 ESTABLISHED 覆盖,此处可加显式放行):
iptables -A FORWARD -i eth1 -o eth0 -s 172.16.20.0/24 -d 192.168.10.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT
结合连接状态与协议细化控制
仅靠地址和接口不够精细。加入连接跟踪模块可区分新连接与响应流量:
-
--ctstate NEW匹配首次发起的连接请求(如 TCP SYN) -
--ctstate ESTABLISHED,RELATED放行已建立连接及关联流量(如 FTP 数据通道、ICMP 错误报文) - 限制办公网对服务器区数据库端口(3306)的访问频次:
iptables -I FORWARD -i eth0 -o eth1 -p tcp --dport 3306 -m connlimit --connlimit-above 5 --connlimit-mask 32 -j REJECT - 记录违规尝试:
iptables -A FORWARD -i eth2 -o eth1 -j LOG --log-prefix "GUEST-TO-SERVER-DENIED: "
启用 IP 转发并持久化规则
若本机作为路由器使用,必须开启内核转发功能:
- 临时启用:
echo 1 > /proc/sys/net/ipv4/ip_forward - 永久生效:编辑
/etc/sysctl.conf,取消注释或添加net.ipv4.ip_forward = 1,再运行sysctl -p - 保存规则(以 iptables 为例):
iptables-save > /etc/sysconfig/iptables(CentOS/RHEL)或iptables-save | sudo tee /etc/iptables/rules.v4(Debian/Ubuntu)
注意:firewalld 用户应使用 firewall-cmd --direct --add-rule ipv4 filter FORWARD ... 并配合 --permanent 参数,避免重启后失效。










