Linux iptables 命令详解
1.Linux环境变量详解2.Linux find命令详解3.Linux lsof命令详解4.Linux grep命令搜索神器详解5.一文吃透Linux htop命令6.Linux stdin、stdout和stderr详解7.Linux ps命令详解(不是PS)8.Linux 著名的sudo、su是什么?怎么用?9.Linux 查看磁盘信息:df与du命令详解10.Linux &&、& 各种操作符困惑? 看此文11.Linux 常用压缩命令全解,一次搞懂通关!12.Linux 硬链接和软链接怎么区分使用?13.推荐一款基于vim的超可扩展文本编辑器neovim14.Linux Systemd基础教程15.Linux rsync命令详解16.C获取程序名称的方法17.Linux ssh 基础教程18.Linux 如何查询命令的二进制文件位置?19.Linux 如何查看当前系统版本的详细信息?20.Linux 用户账户信息配置文件详解21.Linux Debian发行版系统包管理工具使用教程22.Linux dpkg命令详解23.Linux yum 包管理工具使用教程24.Linux sed 命令详解25.Linux awk 命令详解26.Linux dnf 包管理工具使用教程27.Linux netstat 命令详解28.Linux ss 命令详解29.Linux nc 命令详解30.Linux 用户与组基础教程31.Linux firewalld 命令详解
32.Linux iptables 命令详解
33.Linux 中如何使用Mosquitto MQTT?34.Linux xattr 命令详解35.Linux locate 命令详解36.Linux history 命令详解37.Linux sort 命令详解38.Linux下Certbot使用教程39.Linux ufw 命令详解40.Linux ifconfig ip 命令详解41.Linux setfacl lsattr chattr 命令详解42.Linux zsh基础用法43.Linux umask 命令详解44.Linux 如何设置特殊权限?45.Linux tmux 基础教程46.Linux pstree 命令详解47.Linux tinyproxy 使用教程48.Linux crontab 使用教程49.Linux procps-ng 包详解50.Linux xargs 命令使用教程51.Linux 比grep更快的ack命令详解52.Linux下比ack更快的ag搜索命令详解53.Linux axel 下载加速命令详解54.Linux 下的模糊查找神器 fzf 使用教程55.Linux pget 下载命令详解56.Linux ffmpeg 基础用法57.Linux 怎么在储存设备上创建文件系统?58.Linux 如何使用parted进行磁盘分区?59.Linux 如何使用dd命令来复制和转换数据?60.Linux 如何使用fdisk进行磁盘相关的操作?61.Linux pgrep 命令详解62.Linux lsblk 命令详解63.Linux pkill 命令使用详解64.Linux gdisk 命令使用详解65.Linux stat 命令使用详解66.Linux tr 命令使用详解67.Linux mpstat 命令使用详解68.Linux ifstat 命令使用详解69.Linux iostat 命令使用详解70.Linux zcat 命令使用详解71.Linux nmcli 命令使用详解72.Linux iftop 命令使用详解73.Linux 下使用更强的ripgrep来搜索74.Linux inode 详解75.Linux 下aria2 下载神器使用详解76.Linux nftables 命令使用详解77.Linux 磁盘挂载教程78.Linux sftp 使用详解79.Linux 性能更好的ftp客户端 lftp 使用详解80.Linux 使用nload 监控网络流量81.Linux 使用 cut 进行文本提取操作82.Linux 下使用ncdu更好的查看磁盘使用83.Linux 使用 sosreport 生成系统报告84.Linux 下使用tracepath进行网络诊断分析85.Linux 下使用vmstat监控系统性能86.Linux 下使用mtr命令来进行网络诊断87.Linux 下使用traceroute来进行网络诊断分析88.Linux 下使用nslookup和dig来查询域名和ip信息89.Linux 下使用tcpdump进行网络分析90.Linux 使用 partprobe 更新分区表91.Linux expr命令详解92.Linux egrep 命令使用详解93.Linux fgrep 命令使用详解简介
iptables
是一个在 Linux
中的管理防火墙规则的命令行工具,它作为 Linux
内核的 netfilter
框架的一部分运行,以控制传入和传出的网络流量。
与 firewalld
相比
-
iptables
是基于规则的,每个规则必须独立定义,firewalld
是基于区域的,规则适用于预定义或自定义区域。 -
iptables
适合高度精细和手动的配置,firewalld
动态规则更简单且更加用户友好。 -
iptables
需要刷新或重新启动才能应用更改,firewalld
支持不间断的即时更改。 -
iptables
对于静态、简单的配置来说非常高效,firewalld
由于抽象层,速度稍微慢一些,但大多数情况下可以忽略不计。
基础概念
Chains
处理数据包的一组规则
-
INPUT
: 控制传入数据包。 -
FORWARD
: 控制通过系统转发的数据包。 -
OUTPUT
: 控制传出的数据包。
Tables
规则处理类别
-
filter
: 基本数据包过滤的默认表。 -
nat
: 处理网络地址转换(NAT)。 -
mangle
: 改变数据包。 -
raw
: 在连接跟踪之前配置数据包。
Rules
对数据包应用的操作,例如:
ACCEPT
、DROP
常用操作
列出所有链的规则
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
:指定协议类型,例如:tcp
、udp
、icmp
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)