linux—iptables
大佬文档:iptables详解
关系图
四表
filter:包过滤
NAT:ip地址和端口转换
mangle:
raw:
五链
PRE ROUTING:预路由
INPUT:入站
FORWARD:转发
POST ROUTING:已路由
OUTPUT:出站
表应用顺序:RAW>mangle>nat>filter
链应用顺序:入站>转发>出战
基本语法
iptables -t 表名 管理选项[链名][匹配条件][-j 控制类型]
参数
-L :显示表中的所有规则 -n:不要把端口或ip反向解析为名字 -t:指定表,不指定默认是filter表 -A:append追加末尾 -D:delete删除 -I:insert拒绝的规则放在最上面
-p:指定协议,端口,tcp/udp/icmp/all --dport:目标端口 --sport:源端口 -s:source ip -d:目标ip -m:指定模块 -j:满足条件后的动作:DROP/ACCEPT/REJECT
DROP:丢弃,不返回信息给用户;REJECT:拒绝,会返回数据给用户
-i:input输入从哪个网卡进来
-o:output输出从哪个网卡输出
规则备份
iptables-save > /etc/sysconfig/iptables # 默认输出到屏幕
规则恢复
重启iptables也会自动读取/etc/sysconfig/iptables内容
iptables-restore < /etc/sysconfig/iptables
如果不指定表,默认是fileter表
ttl:数据包生命周期,避免数据包环路,占用带宽资源filter表操作
查看规则
[root@master-2 rt]# iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 # 查看规则 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
删除规则
[root@master-2 rt]# iptables -nL --line-num # 查看规则序列号 Chain INPUT (policy ACCEPT) num target prot opt source destination 1 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
再次查看
[root@master-2 rt]# iptables -D INPUT 1 [root@master-2 rt]# iptables -nL --line-num Chain INPUT (policy ACCEPT) num target prot opt source destination Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination
禁止22连接
iptables -I INPUT -s 192.168.64.114 -p TCP --dport 22 -j DROP
只允许10网段访问,其他都拒绝
iptables -I INPUT ! -s 10.0.0.0/24 -j DROP
修改默认规则
iptables -A INPUT -s 192.168.64.0/24 -j ACCEPT # 先允许后deny iptables -P INPUT DROP
屏蔽范围端口,调用模块multiport,连续端口可以不用multiport
iptables -A INPUT -p tcp -m multiport --dport 80,25 -j DROP
禁止icmp协议
]# iptables -A INPUT -p icmp -s 192.168.64.110 -j DROP
网络连接状态
NEW:已经或将启动新的连接
ESTABLISHED:已建立的连接
RELATED:正在启动的新连接
INVALD:非法或无法识别的
指定网卡
iptables -A INPUT -i ens32 -s 192.168.64.114 -j DROP
拒绝任何地址到22端口访问
[root@master-2 ~]# iptables -A INPUT -p tcp --dport 22 -j DROP
禁ping,但是可以ping别的地址
0 应答
8 请求
iptables -A INPUT -i ens32 -p icmp --icmp-type 8 -j REJECT [root@master-2 ~]# ping www.baidu.com PING www.a.shifen.com (182.61.200.7) 56(84) bytes of data. 64 bytes from 182.61.200.7 (182.61.200.7): icmp_seq=1 ttl=128 time=49.6 ms 64 bytes from 182.61.200.7 (182.61.200.7): icmp_seq=2 ttl=128 time=48.8 ms 64 bytes from 182.61.200.7 (182.61.200.7): icmp_seq=3 ttl=128 time=48.8 ms 换台机器 [root@node2 ~]# ping 192.168.64.111 PING 192.168.64.111 (192.168.64.111) 56(84) bytes of data. From 192.168.64.111 icmp_seq=1 Destination Port Unreachable From 192.168.64.111 icmp_seq=2 Destination Port Unreachable From 192.168.64.111 icmp_seq=3 Destination Port Unreachable
禁止一个IP范围
iptables -A INPUT -i ens32 -p tcp -m iprange --src-range 192.168.64.200-192.168.64.210 -j DROP
-m state --state
限速
-m limit --limit n/{second/min/hour}
-m limit --limit 10/min # 每分钟只能有10个数据包,相当于6s一个
解释:指定时间内请求速率n为速率,后面为时间,分别为秒,分,时
--limit-burst
解释:在同一时间允许通过的请求次数n,默认为5。
-m limit --limit 10/min --limit-burst 5 # 限制速率
[root@master-2 ~]# iptables -A INPUT -p icmp -m limit --limit 10/minute --limit-burst 5 -j ACCEPT [root@master-2 ~]# iptables -vnL Chain INPUT (policy ACCEPT 80 packets, 48958 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 10/min burst 5
[root@master-2 ~]# iptables -P INPUT DROP
[root@node2 ~]# ping 192.168.64.111 PING 192.168.64.111 (192.168.64.111) 56(84) bytes of data. 64 bytes from 192.168.64.111: icmp_seq=1 ttl=64 time=1.49 ms 64 bytes from 192.168.64.111: icmp_seq=2 ttl=64 time=0.427 ms 64 bytes from 192.168.64.111: icmp_seq=3 ttl=64 time=0.488 ms 64 bytes from 192.168.64.111: icmp_seq=4 ttl=64 time=0.865 ms 64 bytes from 192.168.64.111: icmp_seq=5 ttl=64 time=0.796 ms 64 bytes from 192.168.64.111: icmp_seq=7 ttl=64 time=0.527 ms 64 bytes from 192.168.64.111: icmp_seq=13 ttl=64 time=0.430 ms # 每6s一个数据包 64 bytes from 192.168.64.111: icmp_seq=19 ttl=64 time=0.509 ms 64 bytes from 192.168.64.111: icmp_seq=25 ttl=64 time=0.897 ms 64 bytes from 192.168.64.111: icmp_seq=31 ttl=64 time=0.712 ms 64 bytes from 192.168.64.111: icmp_seq=37 ttl=64 time=0.637 ms
NAT表
SNAT 在server2服务器,将源IP100.10转换为192.168.200.10访问200.20
iptables -t nat -A POSTROUTING -p tcp -s 192.168.100.0/24 -j SNAT --to-source 192.168.200.10
MASQUERADE
用于转换后的地址不固定
iptables -t nat -A POSTROUTING -p tcp -s 192.168.100.0/24 -o ens32 -j MASQUERADE
Chain POSTROUTING (policy ACCEPT 7 packets, 420 bytes) pkts bytes target prot opt in out source destination 0 0 MASQUERADE all -- * !docker0 172.17.0.0/16 0.0.0.0/0 0 0 MASQUERADE all -- * !br-67a843cf91b9 10.10.0.0/24 0.0.0.0/0 0 0 MASQUERADE tcp -- * * 172.17.0.2 172.17.0.2 tcp dpt:80 0 0 MASQUERADE tcp -- * ens32 192.168.100.0/24 0.0.0.0/0 # 目标地址0.0.0.0
DNAT
将路由器外网地址跟内网地址捆绑,点对点
iptables -t nat -A PREROUTING -i ens34 -d 192.168.200.10 -p tcp --dport 22 -j DNAT --to-destination 192.168.100.10
PNAT 安全加固
iptables -t nat -A PREROUTING -i ens34 -d 192.168.200.10 -p tcp --dport 22222 -j DNAT --to-destination 192.168.100.10:22
远程
ssh root@192.168.200.10 -p22222
越学越感到自己的无知
分类:
linux
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!