我有 2 个网络(下面链接中的图表)
答:10.0.0.0/24
B: 192.168.1.0/24
在网络 A 中,所有设备都通过交换机连接。某些设备提供某些服务,例如 ssh 或对数据库服务器的访问。
Compter (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 的网关,但我不知道如何实现这个目标。
我相信您要完成的是让运行 Ubuntu 的 PC1 为从网络 B 上的客户端到网络 A 上的某些特定服务器的 IP 流量提供 DNAT(目标地址和端口更改),并且您希望从这些服务器连接到网络 B 上的特定端口 PC1 的 IP 地址。但是,您不想在网络 A 到 B 之间进行通用 NAT 路由,反之亦然,并且 Internet 的流量不需要在 A 和 B 之间传递。
这基本上称为“端口转发”或 DNAT,它是位于您的 ISP(单一公共 IP 地址)和您的私有本地网络之间的通用家庭 NAT 路由器提供的功能之一。但是您的应用程序不需要家庭 NAT 路由器的其他典型功能,例如 DHCP 服务器或上游 NAT 到 Internet。
您在正确的轨道上使用 iptables 防火墙规则并启用数据包转发。直接配置iptables比较复杂,但您的需求相当简单。不幸的是,我没有适用于您的应用程序的 iptables 的 DNAT 配方,但我会查找以下内容的详细信息。首先,您需要一个规则来为您尝试转发的每个服务执行从 PC1 网络 B:portX 到网络 A:portY 上的服务器的 DNAT 映射,并且它必须包括双方正在使用的端口号,并且需要第二条规则从网络 A 服务器返回的反向流量依赖于第一条规则的状态(我相信这是 iptables 中的两个独立规则)。您的示例 DNAT 规则需要修改,以便 DNAT 目标是网络 A 上的服务器 IP 地址,而不是 PC1 网络 A IP 地址。最后,您需要规则来覆盖通常会阻止流量从 B 到达 A 的任何默认 DROP 规则,
我没有直接编写 iptables 规则,而是使用了Firewall Builder(图形输入)和FireHOL(基于文本的输入)等防火墙规则生成程序,它们可以帮助您构建和维护非常复杂的防火墙和 NAT 路由规则。
我希望这可以帮助您找到解决方案。