iptables 基本操作
iptables 基本操作
一、 基本概念
四表五链
四表
表名 | 作用 |
---|---|
filter | (默认) 过滤数据包 |
nat | 网络地址转换、 端口、地址映射 |
mangle | 用于对特定数据报的修改 |
rwa | 优先级最高,主要做连接追踪(一般不用) |
五链
链名 | 作用 |
---|---|
PREROUTING | 进入路由表之前 |
INPUT | 通过路由表后,目的为本机 |
FORWARD | 通过路由表后, 做转发 |
OUTPUT | 由本机向外出的数据 |
POSTROUTING | 出路由表后的 |
数据包走向
二、 命令操作
iptables [-t 表名] 命令选项 [链名] [规则号码] [条件匹配] [-j 目标动作]
例如:允许80端口通过防火墙
# iptables -t 表名 -I 链名 -p tcp协议 目的端口80 -j 动作 允许通过 iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT # iptables 默认表 filter 可以省略 iptables -I INPUT -p tcp --dport 80 -j ACCEPT
1 . 查看 防火墙规则
-t:后面接table
-L:列出目前的table的规则
-n:不进行IP与HOSTNAME的反查,显示信息速度回快很多。
-v:列出更多的信息,包括通过该规则的数据包总位数、相关的网络接口等
# 查看规则 iptables -nL iptables -t 某个表 -nL
2 . 添加规则
-I : 插入
-A : 追加
# iptables 默认表 filter 可以省略 iptables -I INPUT -p tcp --dport 80 -j ACCEPT # 也可以写成这样, -m 模块(添加80端口) iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT # (添加22端口) iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-j 后面跟动作 :
ACCEPT:允许数据包通过。
DROP:直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。
REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息。
3 . 删除某条规则
-D : 删除规则
# 删除某条规则,分2种 一个按照序号, 一个详细信息 1、 按序号(需要先查看) iptables -nL --line # 查看 显示序号 iptables -D INPUT 2 # 删除序号2 iptables -t nat -D PREROUNTING 2 # 删除 nat 表 prerounting 链的第二条 2、 按详细信息(怎么添加的怎么删除) 把 -I 换成 -D iptables -D INPUT -p tcp --dport 80 -j ACCEPT
--line : 查看显示序号
4. 清空防火墙规则
iptables -F iptables -t filter -F # 清空filter表的所有规则
5. 命令设置只是暂时- 永久保存
# 需要保存到配置文件中 iptables-save
6. 本地端口转发
# 外部访问 9999 端口,实际访问的是80 端口, 80端口不允许直接访问 iptables -t mangle -I PREROUTING -p tcp --dport 80 -j DROP iptables -t nat -I PREROUTING -p tcp --dport 9999 -j REDIRECT --to-ports 80 # 防火墙允许端口 iptables -I INPUT -p tcp --dport 80 -j ACCEPT iptables -I INPUT -p tcp --dport 9999 -j ACCEPT