NipGeihou's blog NipGeihou's blog
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档

NipGeihou

我见青山多妩媚,料青山见我应如是
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档
  • Linux

    • CentOS

    • Ubuntu

    • 环境安装

    • 常用命令

      • 常用命令
      • 网络配置 - ip
      • 防火墙 - iptables
        • 概念
          • 五链
          • INPUT(进站)
          • FORWARD(转发)
          • 四表
          • raw
          • filter(过滤)
          • nat(地址转换)
          • mangle(修改报文)
        • 常见简写
        • 场景
          • 端口转发(中转机)
        • 参考
      • 防火墙 - ufw
      • 服务管理 - systemd
      • 数据包分析器 - tcpdump
      • 网络工具 - netstat
      • 路由追踪-traceroute
      • 编辑器 - Vim
      • 编辑器 - nano
      • 资源监控 - glances
      • 解压缩工具 - tar
      • 后台运行 - nohup
      • 删除命令 - rm
      • SSH密钥对 - ssh-keygen
      • 守护进程 - systemd(Systemctl)
      • 文件同步 - rsync
      • 路由追踪 - NextTrace
      • 虚拟终端 - screen
      • YAML处理器 - yq
    • 常用软件

    • 最佳实践

    • 通用

  • Docker

  • 云原生

  • Kubernetes

  • KubeSphere

  • K3S

  • 笔记

  • PVE

  • 维修

  • DevOps

  • 云服务

  • 路由器

  • Hyper-V

  • Windows

  • macOS

  • 运维
  • Linux
  • 常用命令
NipGeihou
2023-06-08
目录

防火墙 - iptables

# 概念

# 五链

image.png

  1. PREROUTING(预路由) :所有网卡进来的数据包都经过,可用于目标地址转换(DNAT)
  2. INPUT(进站) :目标 IP 是本机 IP 的数据包经过
  3. FORWARD(转发) :目标 IP 不是本机 IP 的数据包经过
  4. OUTPUT(出站) :本机程序出去数据包经过
  5. POSTOUTING(后路由) :所有从网卡出去数据包经过,可用于源地址转换(SNAT)

# INPUT(进站)

# 限制 enp99s0(网卡) tcp 7890(端口)
iptables -A INPUT -i enp99s0 -p tcp --dport 7890 -j DROP

# FORWARD(转发)


# 四表

一般作用域:

filter nat mangle raw
PREROUTING ✅ ✅ ✅
INPUT ✅ ✅
FORWARD ✅ ✅
OUTPUT ✅ ✅ ✅ ✅
POSTROUTING ✅ ✅

常用动作:

  • ACCEPT :允许数据包通过。
  • DROP :直接丢弃数据包,不给任何回应信息。
  • REJECT :拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息。
  • SNAT :源地址转换,解决内网用户用同一个公网地址上网的问题。
  • MASQUERADE :是 SNAT 的一种特殊形式,适用于动态的、临时会变的 ip 上。
  • DNAT :目标地址转换。
  • REDIRECT :在本机做端口映射。
  • LOG :在 /var/log/messages 文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配。

匹配顺序:

raw –> mangle –> nat –> filter , raw 最高

# raw

# filter(过滤)

用作过滤数据包,可将数据丢弃、拒绝……

# 查看filter表规则
iptables -t filter -L
iptables -L # 等价于,默认为filter表
iptables -L -n -v # 详细信息


# 新增(-I)(INPUT)链丢弃(DROP)源自(-s)(123.117.179.97)的数据包规则
iptables -t filter -I INPUT -s 123.117.179.97 -j DROP

# 删除(-D) - 按编号
iptables -t filter -L -n -v --line-numbers
iptables -t filter -D INPUT 1 # 删除filter表的INPUT链的第1条

# nat(地址转换)

# mangle(修改报文)

# 常见简写

--append  -A chain            Append to chain
--check   -C chain            Check for the existence of a rule
--delete  -D chain            Delete matching rule from chain
--delete  -D chain rulenum		Delete rule rulenum (1 = first) from chain
--insert  -I chain [rulenum]	Insert in chain as rulenum (default 1=first)
--replace -R chain rulenum		Replace rule rulenum (1 = first) in chain
--list    -L [chain [rulenum]]	List the rules in a chain or all chains

Options:
    --ipv4      -4              Nothing (line is ignored by ip6tables-restore)
    --ipv6      -6              Error (line is ignored by iptables-restore)
[!] --proto     -p proto        protocol: by number or name, eg. `tcp'
[!] --source    -s address[/mask][...]		source specification
[!] --destination -d address[/mask][...]	destination specification
--jump -j target		target for rule (may load target extension)
--goto      -g chain	jump to chain with no return
--match       -m match	extended match (may load extension)
--numeric     -n              numeric output of addresses and ports
--table       -t table        table to manipulate (default: `filter')
--verbose     -v              verbose mode

# 场景

# 端口转发(中转机)

  • 开启系统的转发功能:
    • 编辑 vi /etc/sysctl.conf
    • 修改为 net.ipv4.ip_forward=1
    • sysctl -p ,正常打印 net.ipv4.ip_forward=1
# 范围端口转发
#   将PREROUTING时目标端口为5000-5100的tcp数据包修改其目标地址为192.168.1.200
iptables -t nat -A PREROUTING -p tcp --dport 5000:5100 -j DNAT --to-destination 192.168.1.200
#   将POSTROUTING时目标ip为
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.200 --dport 5000:5100 -j MASQUERADE

# 参考

  • iptables 命令,Linux iptables 命令详解:Linux 上常用的防火墙软件 - Linux 命令搜索引擎 (opens new window)
  • iptables 核心运作原理和数据包过滤方法_哔哩哔哩_bilibili (opens new window)
  • iptables 使用教程 01 | Levon's Blog (opens new window)
上次更新: 2025/04/18, 19:09:23
网络配置 - ip
防火墙 - ufw

← 网络配置 - ip 防火墙 - ufw→

最近更新
01
Docker Swarm
04-18
02
安全隧道 - gost
04-17
03
Solana最佳实践
04-16
更多文章>
Theme by Vdoing | Copyright © 2018-2025 NipGeihou | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式