当前位置: 首页 > news >正文

【Linux】iptables命令的基本使用

语法格式

iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 目标动作或跳转]

注意事项

  • 不指定表名时,默认使用 filter
  • 不指定链名时,默认表示该表内所有链
  • 除非设置规则链的缺省策略,否则需要指定匹配条件

设置规则内容

  • -A:追加规则到指定链末尾
  • -I:在指定位置插入规则(默认插入到第 1 条)
  • -R:替换指定位置的规则
  • -P:设置默认策略(如 ACCEPTDROP

示例:

iptables -A INPUT -p tcp -j ACCEPT
iptables -nL

插入规则:

iptables -I INPUT -p icmp -j ACCEPT
iptables -I INPUT 2 -p udp -j ACCEPT

设置默认策略:

iptables -P INPUT DROP

注意事项:

如果设置了 INPUT 链为 DROP,但未写允许 SSH 的规则,可能会断开连接,建议使用 crontab 定时清空规则以防万一:

crontab -l
*/1 * * * * bash  /root/iptables/clear_iptables_rules.sh
# /root/iptables/clear_iptables_rules.sh
#!/bin/bash
/usr/sbin/iptables -t nat -F
/usr/sbin/iptables -t filter -F
/usr/sbin/iptables -P INPUT ACCEPT

列表查看规则

  • -n:数字显示 IP 和端口,避免 DNS 解析
  • -v:显示详细信息(流量统计)
  • --line-numbers:显示规则的行号(方便删除、替换)

清除规则

  • -F:清空链中的规则(保留链)
  • -X:删除用户自定义的空链
  • -Z:将计数器归零

自定义规则链

创建链:

iptables -N luobozi -t filter

添加规则:

iptables -A luobozi -p tcp --dport 2233 -j DROP

主链中调用自定义链:

iptables -A INPUT -p tcp -j luobozi

删除自定义链(需先解除引用并清空):

iptables -D INPUT -j luobozi
iptables -F luobozi
iptables -X luobozi

示例:控制 ping 通信

只允许自己 ping 出去,别人不能 ping 进来:

iptables -A INPUT -p icmp --icmp-type 8 -j DROP
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT

允许多个端口通过(多端口匹配)

iptables -A INPUT -p tcp -m multiport --dport 21,23,25,80 -j ACCEPT

常见目标动作

  • ACCEPT:允许
  • REJECT:拒绝并发送响应
  • DROP:丢弃数据包
  • SNAT:源地址转换
  • DNAT:目标地址转换
  • LOG:记录日志
  • MASQUERADE:伪装(多用于动态 IP)

规则持久化

保存规则:

iptables-save > rules.txt

恢复规则:

iptables-restore < rules.txt

启动脚本示例(iptables_rules.sh

#!/bin/bash

#清空规则链
/usr/sbin/iptables -X
/usr/sbin/iptables -t nat -F
/usr/sbin/iptables -t filter -F
/usr/sbin/iptables -P INPUT ACCEPT

#定义可访问的端口
iptables -A INPUT -p tcp -m multiport --dport 80,443,22,3306,21,20 -j ACCEPT
iptables -A INPUT -p udp -m multiport --sport 53 -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT

#创建自定义表,记录日志规则
iptables -N luobozi_LOG
iptables -A luobozi_LOG -p tcp -j LOG --log-level 4 --log-prefix '##luobozi##'
iptables -A luobozi_LOG -p udp -j LOG --log-level 4 --log-prefix '##luobozi##'
iptables -A luobozi_LOG -p icmp -j LOG --log-level 4 --log-prefix '##luobozi##'

#绑定日志规则
iptables -I INPUT -p tcp --dport 80 -j luobozi_LOG
iptables -I INPUT -p udp -j luobozi_LOG
iptables -I INPUT -p icmp -j luobozi_LOG

#拒绝特定网段过来访问
iptables -I INPUT -s 139.9.44.0/24 -j DROP
iptables -I INPUT -p tcp -m multiport --dport 80,443,22 -s 189.65.2.36 -j DROP

iptables -P INPUT DROP
iptables -nL --line

模块支持检查与加载

查看模块:

lsmod

加载 FTP NAT 模块:

modprobe ip_nat_ftp

相关文章:

  • 语法: lcd_load( buffer_pointer, offset, length);
  • “下岗潮”又开始了,这次更恐怖!4大行业沦为“重灾区”,希望不会轮到你
  • 如何理解神经网络中的“分段线性单元”,优雅解析前向和反向传播
  • 网络安全技术文档
  • ESPIDF备忘
  • AlgerMusic 4.2.0 |开源音乐软件,支持B站和网易云音乐播放及批量下载
  • PyTorch 深度学习 || 6. Transformer | Ch6.3 Transformer 简单案例
  • Tire树(字典树)
  • mysql-sql_mode参数类型
  • 知识表示方法之五:脚本表示法
  • 4.nRF52xx蓝牙学习(GPIOTE与外部中断)
  • 新增一种线性回归的增量学习框架,已更新31个模型!Matlab回归预测大合集又更新啦!
  • 【备赛】蓝桥杯实现多个LED联合控制
  • Java 21新特性实战:虚拟线程如何让吞吐量提升10倍?
  • WPS宏开发手册——附录
  • PostgreSQL迁移
  • vs中两个项目同在一个解决方案时,只生成一个的bug
  • Redis 渐进式rehash怎么判定rehash完成了?
  • Java基础 4.6
  • 算法专题(八):分治-归并排序
  • 学校网站怎么做推广/sem培训学校
  • 做销售的网站/企业品牌策划
  • 网站论坛建设方案/苏州网络推广seo服务
  • 怎么建立局域网网站/广告公司推广渠道
  • 网站建设制作流程/网站维护收费标准
  • 做t恤网站 一件也可以做/网站代运营多少钱一个月