news 2026/7/19 15:27:40

linux网络管理-iptables基础-元一软件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
linux网络管理-iptables基础-元一软件

1.1 四表

应用顺序:由上至下

  • raw:对连接做追踪
  • mangle:对数据包做修改,如给数据包打标记
  • nat :修改数据包地址
  • filter:对数据包过滤

1.2 五链

  • INPUT:针对目标地址
  • OUTPUT:针对源地址
  • FORWARD:穿过防火墙
  • PREROUTING:路由前过滤
  • POSTROUTING:路由后过滤

1.3 四表五链的关系

支持的链
rawPREROUTING、OUTPUT
manglePREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
natPREROUTING、POSTROUTING、OUTPUT
fIlterINPUT、OUTPUT、FORWARD

1.4 使用流程

image.png

1.1 语法

iptables[-t 要操作的表]<操作命令>[要操作的链][规则号码][匹配条件][-j 匹配后的动作]# 小写 大写 大写 小写 大写

1.2 常用操作命令

  • -L:查看,v详细,n不反解
  • -A:追加,放置最后一条
  • -I:插入,默认插入成第一条(第一条生效后不会考虑后边规则
  • -D:删除
  • -F:清空flush
  • -X:删除空的自定义链
  • -P:设置默认策略
  • -Z:计数器归零
  • -N:建立自定义链

1.3 基本匹配条件

  • -s 192.168.2.0/24:源地址
  • -d 192.168.2.1:目标地址
  • -p tcp|upd|icmp:协议
  • -i eth0:input 从eth0接口进入的数据包
  • -o eth0:output 从eth0出去的数据包
  • -p tcp --sport 80:源端口是80的数据包
  • -p tcp --dport 80:目标端口是80

1.4 基本动作

  • filter表
    • -j ACCEPT:接受
    • -j REJECT:拒绝
    • -j DROP:丢弃
    • -j LOG:记录日志

DROP和REJECT的区别:

  • REJECT:直接拒绝链接,和客户端断开。更适合可控网络。
  • DROP:丢弃——意味着不予回复,客户端只能等超时。更适合服务器安全和面对攻击。
  • nat表
    • -j SNAT:源地址转换
    • -j DNAT:目标地址转换
    • -j MASQUERADE:伪装
    • -j REDIRECT:端口转换
  • mangle表
    • -j MARK:标记

1.5 常用命令示例

- 设置默认值

设置默认值,禁止所有穿过防火墙

- 禁止80端口访问

iptables-IINPUT-ptcp--dport80-jDROP

- 查看防火墙规则

  • 默认查看nat表

  • 查看fileter表

  • 查看防火墙规则编号

iptables-nL--line-number

- 保存规则

  • 命令

  • 规则保存位置

该命令会把防火墙规则保存在/etc/sysconfig/iptables文件中

[root@liubei-02 ~]# cat /etc/sysconfig/iptables# Generated by iptables-save v1.4.21 on Tue Jan 10 16:06:09 2023*mangle :PREROUTING ACCEPT[31154:2463094]:INPUT ACCEPT[10892:1355724]:FORWARD ACCEPT[0:0]:OUTPUT ACCEPT[15203:10068473]:POSTROUTING ACCEPT[15203:10068473]COMMIT# Completed on Tue Jan 10 16:06:09 2023# Generated by iptables-save v1.4.21 on Tue Jan 10 16:06:09 2023*raw :PREROUTING ACCEPT[31154:2463094]:OUTPUT ACCEPT[15203:10068473]COMMIT# Completed on Tue Jan 10 16:06:09 2023# Generated by iptables-save v1.4.21 on Tue Jan 10 16:06:09 2023*filter :INPUT ACCEPT[5015:664817]:FORWARD ACCEPT[0:0]:OUTPUT ACCEPT[7751:5368662]-AINPUT-ptcp-mtcp--sport80-jDROP COMMIT# Completed on Tue Jan 10 16:06:09 2023# Generated by iptables-save v1.4.21 on Tue Jan 10 16:06:09 2023*nat :PREROUTING ACCEPT[20546:1128148]:INPUT ACCEPT[235:18006]:OUTPUT ACCEPT[1055:72144]:POSTROUTING ACCEPT[1055:72144]COMMIT# Completed on Tue Jan 10 16:06:09 2023

如上可见:

  • *mangle:表明
  • :INPUT ACCEPT [5015:664817]:这种是默认规则
  • -A INPUT -p tcp -m tcp --sport 80 -j DROP:这种是我们在每个表下加的规则

- 允许ssh

iptables-IINPUT-ptcp--dport22-jACCEPT

- 禁止ping

  • 禁止ping其他服务器
iptables-tfilter-IINPUT-picmp-micmp --icmp-type echo-reply-jREJECT

iptables-tfilter-IINPUT-picmp-micmp --icmp-type0-jREJECT
  • 禁止其他服务器ping本机
iptables-tfilter-IINPUT-picmp-micmp --icmp-type echo-request-jREJECT

iptables-tfilter-IINPUT-picmp-micmp --icmp-type8-jREJECT

- 删除规则

N为规则编号。

- 清除规则(不包括默认规则)

- 新建自定义链

- 删除空的自定义链

- 端口转发

访问本机100端口转发至本机80端口

iptables-tnat-IPREROUTEING-ptcp--dport100-jREDIRECT --to-port80

3.1 创建和删除规则

  • 查看规则
[root@liubei-02 ~]# iptables -LChain INPUT(policy ACCEPT)target prot optsourcedestination Chain FORWARD(policy DROP)target prot optsourcedestination Chain OUTPUT(policy ACCEPT)target prot optsourcedestination

如上可见,当初没有任何规则。

  • 添加一条规则
iptables-IINPUT-ptcp--dport80-jDROP
  • 查看添加结果
[root@liubei-02 ~]# iptables -LChain INPUT(policy ACCEPT)target prot optsourcedestination DROP tcp -- anywhere anywhere tcp dpt:http Chain FORWARD(policy DROP)target prot optsourcedestination Chain OUTPUT(policy ACCEPT)target prot optsourcedestination

如上可见,nat表中多了一条记录

  • 保存iptables规则
[root@liubei-02 ~]# service iptables saveiptables: Saving firewall rules to /etc/sysconfig/iptables:[确定]

如上可见,规则保存在/etc/sysconfig/iptables

  • 查看保存文件
# Generated by iptables-save v1.4.21 on Tue Jan 10 17:22:38 2023*mangle :PREROUTING ACCEPT[1960:156458]:INPUT ACCEPT[675:88821]:FORWARD ACCEPT[0:0]:OUTPUT ACCEPT[961:649865]:POSTROUTING ACCEPT[961:649865]COMMIT# Completed on Tue Jan 10 17:22:38 2023# Generated by iptables-save v1.4.21 on Tue Jan 10 17:22:38 2023*raw :PREROUTING ACCEPT[1960:156458]:OUTPUT ACCEPT[961:649865]COMMIT# Completed on Tue Jan 10 17:22:38 2023# Generated by iptables-save v1.4.21 on Tue Jan 10 17:22:38 2023*filter :INPUT ACCEPT[312:38483]:FORWARD DROP[0:0]:OUTPUT ACCEPT[457:343983]-AINPUT-ptcp-mtcp--dport80-jDROP COMMIT# Completed on Tue Jan 10 17:22:38 2023# Generated by iptables-save v1.4.21 on Tue Jan 10 17:22:38 2023*nat :PREROUTING ACCEPT[1300:68667]:INPUT ACCEPT[15:1030]:OUTPUT ACCEPT[77:5220]:POSTROUTING ACCEPT[77:5220]COMMIT# Completed on Tue Jan 10 17:22:38 2023

如上可见,我们创建的规则被保存在文件中。

  • 删除一条规则

先查看规则的编号

[root@liubei-02 ~]# iptables -nL --line-numberChain INPUT(policy ACCEPT)num target prot optsourcedestination1DROP tcp --0.0.0.0/00.0.0.0/0 tcp dpt:80 Chain FORWARD(policy DROP)num target prot optsourcedestination Chain OUTPUT(policy ACCEPT)num target prot optsourcedestination

如上可见,我们刚才创建的规则是natINPUT链中编号为1的规则

删除规则

[root@liubei-02 ~]# iptables -D INPUT 1

默认是nat表,因此我们不用写-t nat

  • 查看删除结果
[root@liubei-02 ~]# iptables -nLChain INPUT(policy ACCEPT)target prot optsourcedestination Chain FORWARD(policy DROP)target prot optsourcedestination Chain OUTPUT(policy ACCEPT)target prot optsourcedestination

如上可见,之前创建的规则被删除了。

3.2 创建新链并应用

要求:使用新建的MYCHAIN创建允许80端口访问的规则

  • 为了演示效果,INPUT链拒绝一切请求
[root@liubei-02 ~]# iptables -I INPUT -p tcp --dport 80 -j DROP
  • 创建MYCHAIN链
[root@liubei-02 ~]# iptables -N MYCHAIN
  • 目标地址是本机地址且目标端口是80端口的请求全部交给MYCHAIN链处理
[root@liubei-02 ~]# iptables -I INPUT -p tcp --dport 80 -d 10.10.239.32 -j MYCHAIN
  • 设置MYCHAIN链的端口允许通过。
[root@liubei-02 ~]# iptables -I MYCHAIN -p tcp --dport 80 -j ACCEPT

测试一下,此时80端口可以访问了。

  • 查看规则
[root@liubei-02 ~]# iptables -LChain INPUT(policy ACCEPT)target prot optsourcedestination MYCHAIN tcp -- anywhere liubei-02 tcp dpt:http DROP tcp -- anywhere anywhere tcp dpt:http Chain FORWARD(policy ACCEPT)target prot optsourcedestination Chain OUTPUT(policy ACCEPT)target prot optsourcedestination Chain MYCHAIN(1references)target prot optsourcedestination ACCEPT tcp -- anywhere anywhere tcp dpt:http

如上可见

  • INPUT链中添加了一个拒绝规则,添加了一条规则转发的规则
  • 多了一个MYCHAIN链,下边有一条允许80端口通过规则。

3.3 SNAT模式

作用:内网客户端访问公网

  • 环境
内网路由公网
clientLAN:192.168.1.1--------WAN:10.10.239.32web:10.252.96249
iptables-tnat-IPOSTROUTING-s10.252.96.0/24-ptcp-jSNAT--to10.10.239.32

理解路由后过滤,在请求出路由的时候把请求的源地址改成路由本机,使得web可以返回给路由。

3.3 DNAT模式

作用:公网访问内网

  • 环境:
内网路由公网
web:192.168.1.110LAN:192.168.1.1,WAN 10.10.239.3client
  • 添加规则:
iptables-tnat-IPREROUTING-d10.10.239.32-ptcp--dport80-jDNAT--to192.168.1.110

理解路由前过滤:请求目标是路由地址,在进入路由前被修改,否则将直接被路由本机接收。

如果转发端口不同

路由8080端口转发至内网web服务器8080端口

iptables-tnat-IPREROUTING-d10.10.239.32-ptcp--dport8080-jDNAT--to192.168.1.110:80

3.4 FTP服务器防火墙规则

iptables-AINPUT-ptcp--dport20-jACCEPT# 开放FTP主动数据端口iptables-AINPUT-ptcp--dport21-jACCEPT# 对外开放FTP控制端口iptables-AINPUT-ptcp--dport50000:60000-jACCEPT# 对外开放FTP数据端口iptables-AINPUT-jREJECT

3.5 规则备份与恢复

  • 备份:
iptables-save>/etc/iptables-script
  • 恢复
iptables-restore</etc/iptables-script
  • 开机执行
    将恢复命令写入/etc/rc.local
    注意:/etc/rc.local需要执行权限。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/19 15:27:13

python数据可视化技巧的100个练习 -- 26. 平行坐标图用于客户数据分析

重要性★★★★☆ 难度★★★☆☆ 你是一家零售公司的数据分析师。你的经理要求你分析客户数据以识别模式和趋势。你需要创建一个平行坐标图来可视化不同客户属性(如年龄、年收入和消费得分)之间的关系。 生成一个包含以下列的样本数据集:‘Age’(年龄)、‘Annual Inco…

作者头像 李华
网站建设 2026/7/19 15:26:58

【华为OD机试真题 新系统】1043、魔法咒语组合 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

文章目录 一、题目 🎃题目描述 🎃输入输出 🎃样例1 🎃样例2 二、代码与思路参考 🎈C++语言思路 🎉C++代码 🎈Java语言思路 🎉Java代码 🎈Python语言思路 🎉Python代码 🎈C语言思路 🎉 C语言代码 🎈JS语言思路 🎉JS代码 作者:KJ.JK 订阅本专栏后即…

作者头像 李华
网站建设 2026/7/19 15:24:12

如何评估humanizer-1B-OptiQ-4bit的输出质量:7个关键指标

如何评估humanizer-1B-OptiQ-4bit的输出质量&#xff1a;7个关键指标 【免费下载链接】humanizer-1B-OptiQ-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/humanizer-1B-OptiQ-4bit humanizer-1B-OptiQ-4bit是一款基于MLX框架的1B参数AI文本人性化模…

作者头像 李华
网站建设 2026/7/19 15:24:10

为什么选择Valora?面向初学者的生成艺术工具终极指南

为什么选择Valora&#xff1f;面向初学者的生成艺术工具终极指南 【免费下载链接】valora painting by functions 项目地址: https://gitcode.com/gh_mirrors/va/valora 在当今数字艺术创作领域&#xff0c;Valora 作为一款基于Rust语言开发的生成艺术工具&#xff0c;正…

作者头像 李华
网站建设 2026/7/19 15:22:39

USART通信技术详解:原理、应用与优化

1. USART技术解析&#xff1a;从原理到实战的全方位指南USART&#xff08;Universal Synchronous/Asynchronous Receiver/Transmitter&#xff09;作为嵌入式系统中最基础的通信接口之一&#xff0c;几乎出现在所有需要串行通信的场景中。我在工业控制领域工作十年间&#xff0…

作者头像 李华