iptables 常用规则速查与示例
type
status
date
slug
summary
tags
category
icon
password
一、iptables 概述
iptables 是 Linux 系统内核防火墙(netfilter)的用户空间管理工具,用于定义、查看、修改防火墙规则。
它通过“表(table)”和“链(chain)”的概念对网络包进行控制。
1、常见表(table)
表名 | 功能 | 常用链 |
filter | 数据包过滤(最常用) | INPUT、FORWARD、OUTPUT |
nat | 网络地址转换(NAT) | PREROUTING、POSTROUTING、OUTPUT |
mangle | 修改数据包(TOS、TTL等) | 各链皆可 |
raw | 数据包连接跟踪前的处理 | PREROUTING、OUTPUT |
2、常见链(chain)
链名 | 作用 |
INPUT | 进入本机的数据包 |
OUTPUT | 本机发出的数据包 |
FORWARD | 经过本机转发的数据包 |
PREROUTING | 数据包进入路由前 |
POSTROUTING | 数据包离开路由后 |
3、iptables语法格式
iptables常用参数:
-P 设置默认策略:iptables
-P INPUT (DROP|ACCEPT)
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如tcp,udp,icmp
--dport num 匹配目标端口号
--sport num 匹配来源端口号
二、基础操作
1、清空规则
2、查看规则
3、设置默认策略
默认策略用于匹配不到任何规则时的处理方式。
💡 通常服务器上建议:
- INPUT:DROP(防护)
- FORWARD:DROP(非路由用途)
- OUTPUT:ACCEPT(一般允许外联)
三、规则示例合集
1、阻止指定 IP
指定网卡:
2、允许 SSH 连接
允许所有外部主机 SSH 访问:
仅允许指定网段访问 SSH:
3、允许 HTTP / HTTPS
多端口合并写法(multiport 模块)
4、从本机发起的连接(主动外联)
例如允许服务器主动 SSH 或 HTTPS 出站:
5、Ping 通信(ICMP)
6、允许回环访问
7、内外网转发
假设:
- eth0:内部网(192.168.1.0/24)
- eth1:外部网(互联网)
8、DNS、邮件、数据库常用端口
9、邮件访问协议(IMAP/POP3)
10、防止 DoS 攻击
--limit 25/minute:每分钟最多25个连接--limit-burst 100:突发连接上限
四、端口转发与 NAT
1、端口转发(DNAT)
2、IP 映射(NAT)
假设:
名称 | 内部IP | 外部IP |
A单位 | 192.168.1.100 | 202.110.123.100 |
B单位 | 192.168.1.200 | 202.110.123.200 |
防火墙:
- 内网接口:
eth1→ 192.168.1.1
- 外网接口:
eth0→ 202.110.123.1
添加公网别名 IP
DNAT:外到内
SNAT:内到外
五、日志记录
1、创建 LOGGING 链
记录被丢弃的数据包信息,可查看 /var/log/messages 或 /var/log/syslog。
六、常用扩展模块
模块 | 作用 |
state / conntrack | 追踪连接状态 |
limit | 限速/防DoS攻击 |
multiport | 多端口匹配 |
nth | 负载均衡 |
mac | 根据MAC地址匹配 |
iprange | IP区间匹配 |
七、保存与持久化
八、负载均衡示例(nth 模块)
每3个新连接轮流分配至3台后端主机,实现简单的轮询负载均衡。
九、补充
- iptables 已逐步被 nftables 取代,但许多企业环境仍以 iptables 为主。
- 持久化管理工具:
iptables-servicesfirewalld(iptables 封装)
- 快速调试:
- 使用
iptables -vnL查看匹配计数 - 使用
iptables -t nat -L -n -v查看NAT转发情况
- 安全建议:
- 开启日志记录,避免隐形丢包
- 对外服务只开放必要端口
- 定期保存规则文件备份
Loading...