TL;DR 我有两个路由器和一个交换机,并且已将80
两个路由器上的端口转发到交换机,但取决于哪个路由器为交换机提供其 IP,它会将其作为其默认网关,而我无法通过另一个路由器访问它。
我觉得我需要 NAT 或 Mangle 或路由规则?
我尝试将另一个路由器添加为默认网关,突然间端口转发可以通过该路由器工作,但现在它在第一个路由器上不起作用。
我看过使用两个路由器进行端口转发但是解决方案真的是创建 VRRP10.0.19.3/24
并手动访问所有服务器,并将其设置为其默认网关吗?
更多信息
我可以看到防火墙规则增加了数据包数量,所以我知道我遇到了这些数据包,而且我可以监听交换机上的数据包,发现它正在接收流量,但没有发送任何回信。可能是因为缺少路由,它不知道将数据包发送到哪里?
详细设置
路由器 A1.2.3.4
在 eth1 (WAN) 上有一个公共 IP,并在桥上与其余 8 个端口(7 个 Ge,1 个 SFP)组成桥接网络10.0.19.1/24
。它为 运行 DHCP 服务器10.0.19.32/27
。
路由器 B5.6.7.8
在 eth1 (WAN) 上有一个公共 IP,并在桥上与其余 8 个端口(7 个 Ge,1 个 SFP)组成桥接网络10.0.19.2/24
。它为 运行 DHCP 服务器10.0.19.64/27
。
ether9
路由器通过 SFP+ 电缆连接。
交换机连接到ether2
两个路由器,并具有10.0.19.20/24
来自路由器 A 的静态 IP。它还有一个动态 IP 10.0.19.90/24
。(在绑定路由器和交换机上的接口并在路由器 B 上添加静态 IP 后,此问题应该会消失。)
当我检查交换机上的路由时,它
DST-Address Gateway
0.0.0.0/0 10.0.19.2
10.0.19.0/24 bridge
我在两个路由器上的传入端口添加了 dstnat 规则,80
并带有操作dstnat
、到10.0.19.20
和端口。80
当我访问时,http://1.2.3.4
什么也没有得到。当我访问时,http://5.6.7.8
我得到了切换 UI。
现在,当我在交换机上手动添加路由时。
DST-Address Gateway
0.0.0.0/0 10.0.19.1
行为发生了变化,当我访问时,http://1.2.3.4
我得到了切换 UI。当我访问时,http://5.6.7.8
我什么也没有得到。
显然这也不是我想要的。但现在我知道我可以影响“开关知道要响应谁”。
理想情况下,它会响应请求的来源,而不管默认网关是什么。
我尝试srcnat
使用路由器 DHCP 范围或整个10.0.19.0/24
网络作为源地址和操作来创建规则masquerade
,但它并没有改变任何东西。
arp
交换机上的表显示了两个路由器及其各自的 IP 和 MAC 。
其他事情
硬件是两个RB5009UG+S+IN
路由器和一个CRS354-48P-4S+2Q+RM
交换机。
我已经配置了 VRRP vIP 9.10.11.12
。我将在一些服务器上使用它,这些服务器将位于两个路由器后面,因此我需要两个路由器都能够正确地来回转发流量。
我尝试过谷歌搜索很多内容,但是我能找到的所有“一个网络上的两个路由器/网关”和“端口转发”线程都是关于将它们菊花链连接到不同的子网,但实际上我在同一个网络上有两个路由器和 dhcp 服务器。
此外,这不是一个网络上可以有多个 DHCP 服务器吗?
我并不怀疑是否可以在同一个网络上拥有两个 DHCP 服务器。我有。我怀疑如何配置两者的下游路由。
谢谢。
答案1
正如@HBruijn所建议的,我遗漏了..
源 NAT(使用明确的 SNAT 映射到路由器内部 IP 或自动使用 MASQUERADE 规则)。
我的问题是我没有正确配置destination address
。
在 Mikrotiks RouterOS 上,规则如下所示(您可以使用任一项..):
chain=srcnat action=masquerade to-addresses=10.0.19.0/24 protocol=tcp dst-address=10.0.19.0/24
chain=srcnat action=src-nat to-addresses=10.0.19.1 protocol=tcp dst-address=10.0.19.0/24
10.0.19.1
如果您选择-action,则应该在哪里更新第二个路由器src-nat
。