Linux iptables 命令详解

server/2024/11/28 22:37:00/

简介

iptables 是一个在 Linux 中的管理防火墙规则的命令行工具,它作为 Linux 内核的 netfilter 框架的一部分运行,以控制传入和传出的网络流量。

firewalld 相比

  • iptables 是基于规则的,每个规则必须独立定义,firewalld 是基于区域的,规则适用于预定义或自定义区域。

  • iptables 适合高度精细和手动的配置,firewalld 动态规则更简单且更加用户友好。

  • iptables 需要刷新或重新启动才能应用更改,firewalld 支持不间断的即时更改。

  • iptables 对于静态、简单的配置来说非常高效,firewalld 由于抽象层,速度稍微慢一些,但大多数情况下可以忽略不计。

基础概念

Chains

处理数据包的一组规则

  • INPUT: 控制传入数据包。

  • FORWARD: 控制通过系统转发的数据包。

  • OUTPUT: 控制传出的数据包。

Tables

规则处理类别

  • filter: 基本数据包过滤的默认表。

  • nat: 处理网络地址转换(NAT)。

  • mangle: 改变数据包。

  • raw: 在连接跟踪之前配置数据包。

Rules

对数据包应用的操作,例如:ACCEPTDROP

常用操作

列出所有链的规则
sudo iptables -L
列出带行号的规则
sudo iptables -L --line-numbers
列出特定表中的规则
sudo iptables -t nat -L
允许指定端口传入流量
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT# -A INPUT: 追加到 INPUT链# -p tcp: 指定协议为 TCP# --dport 80: 指定目标端口为80# -j ACCEPT: 接受数据包
阻止来自指定IP的流量
sudo iptables -A INPUT -s 192.168.1.100 -j DROP# -s 192.168.1.100: 指定源IP地址
允许来自子网的流量
sudo iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
允许端口 22 (SSH) 上的传出流量
sudo iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
网络之间转发流量
sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
按行号删除规则
sudo iptables -D INPUT 2# -D INPUT 2: 删除 INPUT 链的第二个规则
将传入流量的默认策略设置为 DROP
sudo iptables -P INPUT DROP
将传出流量的默认策略设置为 ACCEPT
sudo iptables -P OUTPUT ACCEPT
保存当前规则到指定文件
sudo iptables-save > /etc/iptables.rules
从文件中恢复规则
sudo iptables-restore < /etc/iptables.rules
将端口 8080 转发至 80
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
伪装流量(NAT)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
转发流量到其他IP
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.200:80
记录丢弃的数据包
sudo iptables -A INPUT -j LOG --log-prefix "Dropped Packet: " --log-level 4
记录已接受的数据包
sudo iptables -A INPUT -j LOG --log-prefix "Accepted Packet: " --log-level 4
查看数据包和字节数
sudo iptables -L -v
重置计数器
sudo iptables -Z
刷新所有规则
sudo iptables -F
在指定的 Table 上刷新规则
sudo iptables -t nat -F
删除所有用户定义的 Chains
sudo iptables -X

常用选项

  • -A:追加到规则到链中

  • -D:从链中删除一个规则

  • -P:为链设置默认策略

  • -F:刷新链中的所有规则

  • -L:列出链中的所有规则

  • -t [table]:指定 table

  • -i:指定输入接口,例如:eth0

  • -o:指定输出接口

  • -s:指定源IP地址

  • -d:指定目标IP地址

  • -p:指定协议类型,例如:tcpudpicmp


http://www.ppmy.cn/server/145741.html

相关文章

JS基础知识04-DOM、BOM、事件、(字符串内置方法)

目录 一、DOM 1.1.DOM的基本概念 1.2.DOM的树结构 1.3.DOM的使用 1.获取DOM 2.通过关系获取节点 3.操作DOM节点 1.4.事件处理 1.5.字符串&#xff08;内置方法&#xff09; 二、BOM 2.1.windows对象 alert&#xff08;&#xff09; confirm&#xff08;&#xff0…

虚拟现实与Web3:元宇宙中的技术融合

随着技术的飞速发展&#xff0c;虚拟现实&#xff08;VR&#xff09;与Web3逐渐成为科技领域的热门话题。元宇宙作为一个以沉浸式体验为核心的虚拟世界&#xff0c;不仅是虚拟现实的延展&#xff0c;更依赖于去中心化的Web3技术的支撑。本文将探讨虚拟现实和Web3技术如何在元宇…

C++ —— 以真我之名 如飞花般绚丽 - 智能指针

目录 1. RAII和智能指针的设计思路 2. C标准库智能指针的使用 2.1 auto_ptr 2.2 unique_ptr 2.3 简单模拟实现auto_ptr和unique_ptr的核心功能 2.4 shared_ptr 2.4.1 make_shared 2.5 weak_ptr 2.6 shared_ptr的缺陷&#xff1a;循环引用问题 3. shared_ptr 和 unique_…

无人机舵机转速运行原理!

一、核心技术 PWM&#xff08;脉冲宽度调制&#xff09;技术 PWM技术通过调节电流脉冲的宽度&#xff0c;即改变电流在每个周期内的“开”与“关”的时间比例&#xff0c;来调节电机接收到的平均电流大小&#xff0c;进而控制电机的转速和扭矩。 在舵机中&#xff0c;PWM信号…

微服务即时通讯系统的实现(服务端)----(2)

目录 1. 语音识别子服务的实现1.1 功能设计1.2 模块划分1.3 模块功能示意图1.4 接口的实现 2. 文件存储子服务的实现2.1 功能设计2.2 模块划分2.3 模块功能示意图2.4 接口的实现 3. 用户管理子服务的实现3.1 功能设计3.2 模块划分3.3 功能模块示意图3.4 数据管理3.4.1 关系数据…

matlab 实现混沌麻雀搜索算法的光伏MPPT控制仿真

1、内容简介 略 103-可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略

Qt/C++基于重力模拟的像素点水平堆叠效果

本文将深入解析一个基于 Qt/C 的像素点模拟程序。程序通过 重力作用&#xff0c;将随机分布的像素点下落并水平堆叠&#xff0c;同时支持窗口动态拉伸后重新计算像素点分布。 程序功能概述 随机生成像素点&#xff1a;程序在初始化时随机生成一定数量的像素点&#xff0c;每个…

学习HTML第三十三天

学习文章目录 一.fieldset 与 legend 的使用&#xff08;了解&#xff09;二.表单总结三.框架标签 一.fieldset 与 legend 的使用&#xff08;了解&#xff09; fieldset 可以为表单控件分组、 legend 标签是分组的标题 二.表单总结 form表单&#xff1a; action 属性&#…