一、参数
- -L 显示表中所有规则
- -n 不要把端口或ip反向解析成名字
- -t 指定表,不指定默认是 filter 表
- -A append 追加,加入准许类的规则
- -I insert 把规则加在链的第一条
- -D delete 删除
- -p protocal 协议 tcp/udp/tcmp/all
- --dport 目标端口
- --sport 源端口
- -s --source 源 ip
- -d --destination 目标 ip
- -m 指定模块 multiport
- -i input 输入的时候,从哪个网卡进来
- -o output 输出的时候,从哪个网卡出去
- -j 满足条件后的动作,DROP/ACCEPT/REJECT
- -F 清除所有的规则,不会处理默认的规则
- -X 删除用户自定义的链
- -Z 链的计算器清零
iptables 命令及选项 | 指定表 | 指定链(输入追加删除) | IP | 具体要求(端口ip协议) | 端口 | 动作 |
---|---|---|---|---|---|---|
iptables | -t filter | -A/-I/-D | -s/-d | -p tcp/udp/icmp | --dport/--sport | -j DROP/ACCEPT/REJECT |
二、filter 表
filter 表的 input 链, forward 链, output 链中存在规则
filter 表说明用于实现防火墙功能,屏蔽或准许端口
# 1.查看规则
iptables -nL
iptables -t filter -nL
# 2.查看规则并加上序号
iptables -t filter -nL --line-number
# 3.丢弃所有 ICMP 请求
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
# 4.开放22端口
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
# 5.丢弃访问22端口的包
iptables -t filter -A INPUT -p tcp --dport 22 -j DROP
# 6.丢弃某个ip的包
iptables -t filter -I INPUT -s 172.17.0.2 -j DROP
# 7.丢弃网段连入端口的包
iptables -t filter -I INPUT -s 10.0.0.0/24 -p tcp --dport 8080 -j DROP
# 8.只准许 10.0.0.0/24 访问 ,利用 ! 进行排除 ,除了 10.0.0.0/24 都丢弃
iptables -t filter -I INPUT ! -s 10.0.0.0/24 -j DROP
# 9.拒绝访问22端口的包
iptables -t filter -A INPUT -p tcp --dport 22 -j REJECT
iptables -t filter -A INPUT -p tcp --dport 22 -j REJECT --reject-with icmp-port-unreachable
iptables -t filter -A INPUT -p tcp --dport 22 -j REJECT --reject-with tcp-reset
# 10.删除规则
iptables -t filter -D INPUT 1
# 11.清空所有默认规则
iptables -F
--reject-with 是 iptables 中 REJECT 目标的一个扩展选项,用于指定当数据包被拒绝时,应该发送哪种类型的响应。这个选项主要适用于 TCP、UDP 和 ICMP 协议。
TCP 相关:
值 | 说明 |
---|---|
tcp-reset 或 tcp-rst | 发送 TCP RST 包,表示连接被拒绝。适用于 TCP 连接请求(SYN 包),客户端会立即收到连接被拒绝的响应。 |
ICMP 相关(适用于 TCP 和 UDP):
值 | 说明 |
---|---|
icmp-net-unreachable | 发送 ICMP 网络不可达 |
icmp-host-unreachable | 发送 ICMP 主机不可达 |
icmp-port-unreachable | 默认值,发送 ICMP 端口不可达(最常用) |
icmp-proto-unreachable | 发送 ICMP 协议不可达 |
icmp-net-prohibited | 网络被禁止(根据防火墙策略) |
icmp-host-prohibited | 主机被禁止 |
icmp-admin-prohibited | 管理员禁止(常用于默认拒绝规则,如 REJECT --reject-with icmp-admin-prohibited) |