Iptables命令大全 本文共有4554个字,关键词: INPUT(入站数据过滤) OUTPUT(出站数据过滤) FORWARD(转发数据过滤) PREROUTING(路由前过滤) 和POSTROUTING(路由后过滤) ```bash iptables语法 iptables [-t table] command [match] [target] -t: 用于指定所要操作的表,不指定则默认 filter 表 command:具体的命令动作,比如对指定链添加/删除规则 match:对所要处理包的匹配规则 target:数据包的处理动作 ``` |命令|说明| | ------------ | ------------ | |-A |iptables -A chain rule-specification 在指定链表chain末尾添加规则| |-C |iptables -C chain rule-specification 检测是否存在该规则| |-D |iptables -D chain rule-specification 删除指定规则,需要将规则完整的写出来| |-D |iptables -D chain rulenum 删除指定规则序号对应的那条规则,上面的rulenum 可通过 iptables -L –line-numbers 显示,每个链表的第一条规则对应序号1| |-I |iptables -I chain [rulenum] rule-specification 向指定链表的对应规则序号前面插入规则,如果不指定 rulenum,则默认是序号1| |-R |iptables -R chain rulenum rule-specification 替换规则| |-L |iptables -L [chain] 显示所有的规则,一般紧跟使用-n 选项,避免转换成主机名形式;跟-v选项可以看更详细的信息。默认显示所有链([] 中括号表示该参数是可选的)| |-S |iptables -S [chain] 显示所有的规则| |-F |iptables -F [chain] 默认删除所有链表里的规则| |-P |iptables -P chain target 指定该链表的默认操作(DROP和ACCEPT)| iptables命令选项的输入顺序: ```bash iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作 ``` 表名包括: - raw:高级功能,如:网址过滤 - mangle:数据包修改(QOS),用于实现服务质量 - net:地址转换,用于网关路由器 - filter:包过滤,用于防火墙规则 规则链名包括: - INPUT链:处理输入数据包 - OUTPUT链:处理输出数据包 - PORWARD链:处理转发数据包 - PREROUTING链:用于目标地址转换(DNAT) - POSTOUTING链:用于源地址转换(SNAT) 动作包括: - accept:接收数据包 - DROP:丢弃数据包 - REDIRECT:重定向,映射,透明代理 - SNAT:源地址转换 - DNAT:目标地址转换 - MASQUERADE:IP伪装(NAT),用于ADSL - LOG:日志记录 ```bash 添加规则 添加规则有两个参数分别是 -A 和 -I。其中 -A 是添加到规则的末尾;-I 可以插入到指定位置,没有指定位置的话默认插入到规则的首部。 修改规则,把添加在第 6 行规则的 DROP 修改为 ACCEPT iptables -R INPUT 6 -s 194.168.1.5 -j ACCEPT #保存在默认文件夹中(保存防火墙规则) iptables-save > /etc/sysconfig/iptables #保存在其他位置(备份防火墙规则 iptables-save > 文件名称 #ptables-restore 命令可以批量导入Linux防火墙规则,同时也需要结合重定向输入来指定备份文件的位置。命令如下: #注意,导入的文件必须是使用 iptables-save工具导出来的才可以。 iptables-restore < 文件名称 ``` ```bash #清除已有iptables规则 iptables -F iptables -X iptables -Z ``` ```bash 开发指定的端口 #允许本地回环接口(即运行本机访问本机) iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允许已建立的或相关连的通行 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许所有本机向外的访问 iptables -A OUTPUT -j ACCEPT #允许访问22端口 iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许访问80端口 iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允许ftp服务的21端口 iptables -A INPUT -p tcp --dport 21 -j ACCEPT #允许FTP服务的20端口 iptables -A INPUT -p tcp --dport 20 -j ACCEPT #禁止其他未允许的规则访问 iptables -A INPUT -j reject #禁止其他未允许的规则访问 iptables -A FORWARD -j REJECT ``` ```bash #屏蔽IP #屏蔽单个IP的命令 iptables -I INPUT -s 123.45.6.7 -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令 iptables -I INPUT -s 123.0.0.0/8 -j DROP #封IP段即从123.45.0.1到123.45.255.254的命令 iptables -I INPUT -s 124.45.0.0/16 -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令 iptables -I INPUT -s 123.45.6.0/24 -j DROP ``` ```bash #查看已添加的iptables规则 iptables -L -n -v 或者 iptables -nvL 各参数的含义为: -L 表示查看当前表的所有规则,默认查看的是 filter 表,如果要查看 nat 表,可以加上 -t nat 参数。 -n 表示不对 IP 地址进行反查,加上这个参数显示速度将会加快。 -v 表示输出详细信息,包含通过该规则的数据包数量、总字节数以及相应的网络接口。 #将所有iptables以序号标记显示,执行: iptables -L -n --line-numbers #删除已添加的iptables规则 比如要删除INPUT里序号为8的规则,执行: iptables -D INPUT 8 ``` 1. /etc/init.d/iptables stop #关闭iptables命令 2. iptables -nL #查看iptables详细策略信息 3. iptables -A INPUT -p tcp --dport 8080 -j ACCEPT #放通入方向的8080端口 4. iptables -A OUTPUT -p tcp --sport 8080 -j ACCEPT #放通出方向的8080端口 5. iptables -F:清除所有制订的规则 6. iptables -X:清除所有用户“自定义”的chain 7. iptables -Z:将所有chain的计数与流量统计都归零 8. iptables --line -vnL INPUT #显示入方向所有策略 9. iptables -t filter -D INPUT 2 #删除入方向的第二条策略 ```bash #禁止某个容器访问外网,只打开某个端口 iptables -I DOCKER-USER -s 172.10.0.10 -j DROP iptables -I DOCKER-USER -s 172.10.0.10 -p tcp --dport 80 -j ACCEPT iptables -I DOCKER-USER -s 172.10.0.10 -m state --state RELATED,ESTABLISHED -j RETURN ``` 查看防火墙开放端口的步骤 1.查看防火墙状态 查看防火墙状态 systemctl status firewalld 开启防火墙 systemctl start firewalld 关闭防火墙 systemctl stop firewalld 开启防火墙 service firewalld start 若遇到无法开启 先用:systemctl unmask firewalld.service 然后:systemctl start firewalld.service 2.查看对外开放的端口状态 查询已开放的端口 netstat -ntulp | grep 端口号:可以具体查看某一个端口号 查询指定端口是否已开 firewall-cmd --query-port=666/tcp 提示 yes,表示开启;no表示未开启。 3.对外开发端口查看想开的端口是否已开:firewall-cmd --query-port=6379/tcp 添加指定需要开放的端口:firewall-cmd --add-port=123/tcp --permanent 重载入添加的端口:firewall-cmd --reload 查询指定端口是否开启成功:firewall-cmd --query-port=123/tcp 移除指定端口:firewall-cmd --permanent --remove-port=123/tcp 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 梦白沙 (๑>ڡ<)☆谢谢老板~ 1元 2元 5元 10元 50元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 收藏 2022-09-19 评论 390 次浏览