网络路由和端口转发问题

网络路由和端口转发问题

我有 2 个网络(图表见下面的链接)

答:10.0.0.0/24

地址:192.168.1.0/24

在网络 A 中,所有设备都通过交换机连接。某些设备提供某些服务,例如 ssh 或访问数据库服务器。

计算机(PC1)装有 Ubuntu 20 操作系统。我想继续使用该系统。

网络 A 上的计算机(PC1)可以通过 Wi-Fi 连接到网络 B,并通过以太网连接到网络 A。我希望能够通过特定端口上的一个地址从网络 B 访问一些服务(来自网络 A)。网络上的其余服务应该不可用。

我尝试使用 DNAT 和 SNAT 失败了。我可以访问设置了 nat 的计算机,但其他设备没有收到数据包

‘端口转发已启用’

PC1 的地址为:

A)172.17.10.2

B)192.168.1.196

sudo iptables -t nat -A PREROUTING -d 192.168.1.196 -j DNAT --to-destination 172.17.10.2

sudo iptables -t nat -A POSTROUTING -s 172.17.10.2 -j SNAT --to-source 192.168.1.196

我认为我应该使用路由到网络 B 的网络 A 网关,但我不知道如何实现这个目标。

网络图

答案1

我认为您想要实现的目标是让运行 Ubuntu 的 PC1 为从网络 B 上的客户端到网络 A 上的某些特定服务器的 IP 流量提供 DNAT(目标地址和端口更改),并且您希望将这些服务器的服务映射到 PC1 的网络 B IP 地址上的特定端口。但是,您不想在网络 A 到 B 或反之亦然之间进行通用 NAT 路由,并且互联网流量不需要在 A 和 B 之间传递。

这基本上称为“端口转发”或 DNAT,这是通用家庭 NAT 路由器提供的功能之一,它位于您的 ISP(单个公共 IP 地址)和您的私有本地网络之间。但您的应用程序不需要家庭 NAT 路由器的其他典型功能,例如 DHCP 服务器或互联网上游 NAT。

使用 iptables 防火墙规则并启用数据包转发是正确的。直接配置iptables 理解起来很复杂,但您的需求相当简单。不幸的是,我没有适合您应用程序的 iptables 的 DNAT 配方,但我会寻找以下详细信息。首先,您需要一条规则来对您尝试转发的每项服务执行从 PC1 网络 B:端口 X 到网络 A 上的服务器:端口 Y 的 DNAT 映射,并且它必须包含两侧使用的端口号,并且需要第二条规则来从网络 A 服务器反向返回的流量,该规则依赖于第一条规则的状态(我相信这是 iptables 中的两个独立规则)。您的示例 DNAT 规则需要修改,以便 DNAT 目标是网络 A 上的服务器 IP 地址,而不是 PC1 网络 A 的 IP 地址。最后,您需要规则来覆盖通常会阻止来自 B 的流量到达 A 的任何默认 DROP 规则,但仅适用于流向您希望开放到网络 B 并在网络 B 本地获取的特定服务的流量。

我没有直接编写 iptables 规则,而是使用防火墙规则生成程序,例如防火墙生成器(图形输入)FireHOL(基于文本的输入),它可以帮助您建立和维护非常复杂的防火墙和 NAT 路由规则。

我希望这能帮助您找到解决方案。

相关内容