linux · 2025-06-30 0

iptables 使用

一、参数

  • -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)