序幕
各位网络工程师们,大家好!非常感谢你们在以下情况下的帮助。我做了一些研究,只找到了两种解决方案。由于其中一种不适合我,所以我需要你们在第二种方案上提供帮助。
环境
我有 2 台设备,总共有 3 个接口。每个接口位于不同的 VLAN。以下是概述:
Name: DevA
Type: Red Hat Enterprise Linux (v7)
Interface #1: eth0
Interface #1: xxx.xxx.215.222
和
Name: DevB
Type: MikroTik RouterOS v6.42
Interface #1: ether1
Interface #1: zzz.zzz.214.128
Interface #2: ether2
Interface #2: yyy.yyy.216.92
下面我们来了解更多细节:
- 3 个接口均有公共静态 IP 地址。
- 这 3 个接口均可访问互联网。
- DevA 上有服务正在运行(例如在端口 666 和 999 上)。
目标
- DevB 仅可通过互联网访问以太1。
- 设备 DevA 和 DevB 仅通过专用接口相互通信(eth0和以太2)。
- DevA 上的服务只能通过 DevB 访问,不能直接从互联网访问。
- 如果 DevA 想要访问互联网上的某些内容(例如更新),则必须能够直接访问。也就是说,如果 DevA 发起连接,它会直接连接到互联网。
- DevA 上的服务必须对 DevB 的公共可见以太1IP 地址(如果可能)。
DevA 和 DevB 之间的 VPN 是不允许。这是我之前提到的解决方案,但不适合这种情况。只有在没有其他选择的情况下,我才会考虑这个。
我已经拥有什么
DevA - 防火墙配置
- allow all outgoing traffic on eth0
- allow all incoming traffic from ether2 to eth0
- allow all related and established connections
- drop everything else
DevA-路由配置
dst-address pref-src gateway distance
0.0.0.0/0 xxx.xxx.215.1 1
xxx.xxx.215.0/24 xxx.xxx.215.222 eth0 0
DevB - 防火墙配置
- allow all outgoing traffic on ether1 and ether2
- allow incoming traffic on ether1 for ports 666 and 999
- allow all incoming traffic from eth0 to ether2
- allow all related and established connections
- drop everything else
DevB-路由配置
dst-address pref-src gateway distance
0.0.0.0/0 zzz.zzz.214.1 1
zzz.zzz.214.0/24 zzz.zzz.214.128 ether1 0
xxx.xxx.215.0/24 yyy.yyy.216.1 1
yyy.yyy.216.0/24 yyy.yyy.216.92 ether2 0
那么,你能帮我解开这个谜题吗?
我预计必须在 DevB 上配置更多路由(也许还有 NAT/masquerade?),可能在 DevA 上也需要配置。有什么想法吗?如果我忘记提到什么,请直接询问。
多谢。
答案1
您应该编写一个 DNAT 规则来将流量从 DevB 转发到 DevA,同时最好在 DevB 中编写一个 SNAT/MASQUERADE 来使转发的流量返回到 DevB,然后再返回到 Internet。如下所示:
DNAT:
ip firewall nat add chain=prerouting protocol=tcp dst-address=zzz.zzz.214.128 dst-port=666,999 action=dst-nat to-addresses=xxx.xxx.215.222
源地址转换(SNAT):
ip firewall nat add chain=srcnat dst-address=xxx.xxx.215.222 action=masquerade
顺便说一句,将设备上应该互相连接的两个接口放在同一个 Vlan 中并使用无效的 IP 地址使它们相互通信是明智的做法。(如果可能的话!)