如何在 Linux 中使用 Iptables 转发端口?

linuxoperating systemopen source

简介

端口转发是一种允许网络系统通过转发特定端口来访问网络外部资源的技术。该过程涉及中间设备(例如路由器)接受指定端口上的传入连接,然后将流量重定向到网络内部设备。最终结果是允许远程设备连接并与本地网络内设备上运行的服务进行通信。

实际上,这意味着如果您想从家用电脑运行 Web 服务器,任何尝试从家庭网络外部连接的人都需要知道您的公共 IP 地址,然后通过端口 80(HTTP)或端口 443(HTTPS)发送请求。但是,如果没有正确配置端口转发,传入的连接请求将无法到达您的家用计算机,因为它们会被路由器的防火墙保护机制阻止。

Iptables 简介

Iptables 是 Linux 系统可用的几种防火墙解决方案之一。它运行在内核级别,提供强大的数据包过滤功能以及状态数据包检测、NAT(网络地址转换)、连接跟踪等高级功能。

Iptables 主要用于控制传入和传出的网络流量,包括阻止或允许特定协议、端口或 IP 地址。iptables 工具使用一组预定义的规则链来根据一组规则评估传入流量,每个规则都定义了允许或拒绝流量必须满足的特定条件。

这些规则链以分层结构组织,其中包含不同的表,这些表根据规则中指定的条件执行各种操作,例如过滤数据包或修改数据包以进行转发。在下一节中,我们将探讨如何使用 iptables 在 Linux 系统上配置端口转发。

了解 iptables

什么是 iptables?

iptables 是一款功能强大的防火墙实用程序,预装在大多数 Linux 发行版中。它的工作原理是检查通过网络接口的数据包,并根据用户定义的规则做出决策。

这些规则用于决定是允许还是阻止流量,或者将传入流量转发到特定端口或地址。简单来说,iptables 就像您的计算机和网络其他部分之间的过滤器。

您可以配置它以仅允许某些类型的流量进入您的系统,同时阻止所有其他不需要的流量。这对于需要公开访问但又需要防范恶意攻击的服务器尤为重要。

它是如何工作的?

Iptables 的工作原理是创建多个规则链,定义如何处理传入和传出流量。这些规则链本质上是一组规则,它们根据数据包的属性(例如源 IP 地址、目标 IP 地址、协议类型和端口号)确定如何处理数据包。

当传入数据包到达网络接口时,iptables 会按顺序根据每个规则链中的每个规则检查其属性,直到找到匹配项。如果没有找到匹配项,则根据 iptables 的配置方式丢弃或拒绝该数据包。

iptables 的基本命令

要开始使用 iptables,您需要了解一些用于配置其规则的基本命令 -

  • iptables -L − 列出所有当前定义的规则链。

  • iptables -F − 刷新(删除)所有规则链中的所有规则。

  • iptables -A chain rule − 在现有规则链的末尾附加(添加)一条新规则。

  • iptables -D chain rule − 从现有规则链中删除一条规则。

  • iptables -P chain target − 为给定规则链设置默认策略(接受、丢弃或拒绝)。

这些只是 iptables 众多命令中的一小部分。通过学习这些基础知识,您将能够熟练掌握这款强大的防火墙实用程序。

使用 iptables 进行端口转发

选择要转发的端口

在使用 iptables 在 Linux 中设置端口转发之前,务必确定要转发的端口。端口转发允许将特定端口上的传入流量重定向到另一个内部网络地址。

当您在本地网络上运行服务器或托管服务,并且希望外部用户访问它时,此功能非常有用。常见的转发端口包括用于 Web 流量的 80 端口、用于 SSH 的 22 端口和用于远程桌面协议 (RDP) 的 3389 端口。

设置端口转发的 iptables 规则

确定要转发的端口后,就可以开始设置 iptables 端口转发规则了。为此,我们需要在 NAT 表中创建一个新的链。

创建新的端口转发链

要创建新的端口转发链,请使用以下命令 -

sudo iptables -t nat -N

这将在 NAT 表中以指定名称创建一个新链。

配置 NAT 表

创建新链后,我们需要配置 NAT 表,将新链添加为 NAT 表的其中一条链 -

sudo iptables -t nat -A PREROUTING -j

这将把新创建的链添加为 NAT 表的 PREROUTING 规则中的一条链。

添加规则以转发端口

现在我们已经设置了新的链并相应地配置了 NAT 表,我们可以添加实际执行端口转发的规则。有三种方法可以实现此目的 -

a) 转发单个端口:

要将特定端口上的传入流量转发到内部 IP 地址和端口,请使用以下命令 -

sudo iptables -t nat -A -p --dport -j DNAT --to-destination

b) 转发端口范围​​:

要将特定端口范围上的传入流量转发到内部 IP 地址和端口,请使用以下命令 -

sudo iptables -t nat -A -p --dport : -j DNAT --to-destination

c) 一次转发多个端口:

要转发多个特定端口上的传入流量到内部 IP 地址和端口,对要转发的每个端口使用以下命令 -

sudo iptables -t nat -A -p --dport ,,...-j DNAT --to-destination 

在本地网络上运行服务器或托管服务时,在 Linux 中使用 iptables 设置端口转发至关重要。

结论

在本文中,我们介绍了端口转发的基础知识以及如何在 Linux 中使用 iptables 进行端口转发。我们概述了 iptables 及其基本命令,然后提供了有关如何使用 iptables 设置端口转发的详细指南。我们讨论了使用 iptables 设置端口转发时可能出现的常见问题,并提供了一些故障排除技巧来帮助您解决这些问题。

端口转发是网络的一个重要方面,它使来自互联网的传入流量能够到达网络上的特定设备或服务。此过程对于许多关键应用程序(例如远程访问、游戏、文件共享和 Web 托管)至关重要。如果您想有效地管理网络,了解如何在 Linux 中使用 iptables 转发端口至关重要。

Iptables 是一款功能强大的防火墙工具,可让您配置网络安全的高级设置。通过了解其工作原理和功能,您可以改善网络安全态势,同时确保网络内设备或服务之间的流量顺畅传输。

此外,请记住,每当网络基础设施或应用程序需求发生变化时,都必须更新端口转发配置。通过遵循本文概述的指南并逐步付诸实践,用户可以掌握配置 iptables 所需的技能,并使其网络更加安全可靠。


相关文章


有用资源