如何设置端口跳跃?

Linux 端口转发规则管理:查看与设置详解

在 Linux 系统中,端口转发是一种常见的网络管理方式,广泛应用于流量重定向、服务代理等场景。本文将详细介绍如何通过 iptables 查看现有的端口转发规则,以及如何设置新的端口转发规则并实现持久化保存。

一、查看端口转发规则

在管理端口转发规则之前,我们需要先了解系统中已有的规则。以下是几种常用的查看方法,主要针对 NAT 表中的 PREROUTINGPOSTROUTING 链,因为它们通常用于端口转发(DNAT 和 SNAT)。

1. 查看 DNAT 端口转发规则(目标地址转换)

PREROUTING 链通常用于 DNAT(目标地址转换),我们可以直接查看该链中的规则:

# 查看 PREROUTING 链中的端口转发规则
sudo iptables -t nat -L PREROUTING -n -v --line-numbers

# 或者查看整个 NAT 表的规则
sudo iptables -t nat -L -n -v --line-numbers
  • -t nat:指定查看 NAT 表。
  • -L:列出规则。
  • -n:以数字形式显示 IP 和端口,便于阅读。
  • -v:显示详细信息,如数据包计数。
  • --line-numbers:显示规则编号,方便后续操作。

2. 使用 iptables-save 过滤查看特定规则

如果规则较多,可以通过 iptables-save 结合 grep 快速筛选相关规则:

# 查看 NAT 表中所有的 DNAT 规则
sudo iptables-save -t nat | grep DNAT

# 查看所有与端口转发相关的规则(包括 DNAT、REDIRECT 和 dport)
sudo iptables-save -t nat | grep -E "DNAT|REDIRECT|dport"

这种方法适合快速定位特定类型的规则,节省排查时间。

3. 更详细或针对性的查看方式

如果需要更深入了解规则的细节,或者只关心特定端口的转发规则,可以使用以下命令:

# 显示 PREROUTING 链的完整规则信息
sudo iptables -t nat -S PREROUTING

# 查看特定端口(如 80 端口)的转发规则
sudo iptables -t nat -L PREROUTING -n -v | grep ":80"

这些方法可以帮助你快速定位和管理复杂的端口转发规则。


二、设置端口转发规则

在了解现有规则的基础上,我们可以根据需求添加新的端口转发规则。以下是一个实际案例:将所有 UDP 协议的 31000-33000 端口流量重定向到 30000 端口。

配置端口重定向规则

iptables -t nat -A PREROUTING -p udp --dport 31000:33000 -j REDIRECT --to-ports 30000
  • -A PREROUTING:在 PREROUTING 链上追加规则。
  • -p udp:指定协议为 UDP(也可以是 TCP)。
  • --dport 31000:33000:指定源端口范围。
  • -j REDIRECT:使用 REDIRECT 目标进行重定向。
  • --to-ports 30000:将流量重定向到目标端口 30000。

注意:此规则仅适用于本机流量重定向。如果需要将流量转发到其他主机,应使用 DNAT 目标。


三、持久化端口转发规则

通过 iptables 设置的规则默认会在系统重启后丢失。为了避免这种情况,我们需要将规则持久化保存。以下是实现方法:

安装 iptables-persistent 工具

在基于 Debian/Ubuntu 的系统中,可以使用 iptables-persistent 包来自动保存和恢复规则:

# 更新软件包列表
apt update

# 安装 iptables-persistent
apt install iptables-persistent

提示:在安装过程中,系统会提示是否保存当前规则,选择“是”后,规则将被自动保存到 /etc/iptables/rules.v4 文件中。每次重启时,系统会从该文件加载规则。

如果你使用的是其他 Linux 发行版,可以手动将规则保存到文件中,并在启动时加载:

# 保存当前规则
sudo iptables-save > /etc/iptables/rules.v4

# 加载规则(可添加到启动脚本中)
sudo iptables-restore < /etc/iptables/rules.v4