如何在 Linux 中使用 iptables 转发端口?
介绍
端口转发是一种允许网络系统通过转发特定端口来访问网络外部资源的技术。这是一个涉及中间设备(例如路由器)接受指定端口上的传入连接,然后将流量重定向到网络上的内部设备的过程。最终结果是允许远程设备与本地网络内的设备上运行的服务进行连接和通信。
实际上,这意味着如果您想从家庭计算机运行 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 链规则 - 在现有链的末尾附加(添加)新规则。
iptables -D 链规则 - 从现有链中删除规则。
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 表 -
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 设置端口转发时可能出现的常见问题以及一些帮助您解决这些问题的故障排除提示。
端口转发是网络的一个重要方面,它使来自互联网的传入流量能够到达网络上的特定设备或服务。此过程对于远程访问、游戏、文件共享和网络托管等许多关键应用程序至关重要。如果您想有效地管理网络,了解如何在 Linux 中使用 iptables 转发端口至关重要。
Iptables 是一个功能强大的防火墙工具,允许您配置网络安全的高级设置。通过了解其工作原理及其功能,您可以改善网络的安全状况,同时确保流量在网络内的设备或服务之间顺畅流动。
此外,请记住,只要网络基础设施或应用程序要求发生变化,就必须更新端口转发配置。通过遵循本文概述的指南并随着时间的推移逐步付诸实践,用户可以培养配置 iptables 所需的技能,并使他们的网络更加安全可靠。