运行 Mikrotik RouterOS,无论是 6.48 版还是 7.9 版都无所谓。
有效的方法:
- 默认配置使 NAT 在 IP 数据包中保留源地址(即连接到服务器的客户端的公共 IP,链:输入 - 传入连接)。
- 对于 50% 的机会来说,从头开始为 1 个 LAN 网络配置路由器并使用掩码 /24 不会导致此 NAT 问题/错误/限制。
有什么问题:
对于传入连接
(即与具有开放端口/端口转发的服务器等对等体建立联系):
制作网络更大- 1 个 LAN 网络,网络掩码例如 /8 和范围 10.0.0.0/8
或
从创建2更局域网- 例如 192.168.100.0/24 和 192.168.200.0/24
结果是源IP(即客户端公网IP)存在被取代有局域网网关 IP
而 NAT 应该保持其不变,但似乎 RouterOS 实际上并没有遵守该规则。
在服务器 - 网络服务器的日志中注意到,$SERVER['REMOTE_ADDR'] 是网关 IP 也不是访问网站的客户端 IP。
存在此问题的示例配置:https://pastebin.com/3Gmxe0SH
物理连接:ISP 路由器 [DMZ 到 Mikrotik] -> 间接 LAN 连接到 Mikrotik 路由器上的 WAN 端口 [NAT] -> LAN2/服务器,LAN1/PC+WiFi
注意:直接连接到服务器的 ISP 路由器正常工作(NAT,源地址保留)
答案1
而 NAT 应该保持其不变,但似乎 RouterOS 实际上并没有遵守该规则。
RouterOS 似乎完全按照你的 NAT 规则执行。你在 pastebin 中看到的是一个非常宽泛的action=masquerade
规则,没有任何源或目的地检查 – 它没有告诉RouterOS 某些数据包不应该被 SNAT:
/ip firewall nat
add action=masquerade chain=srcnat
您的 srcnat 规则需要有选择地应用,以便它们只匹配通过 WAN 接口离开的数据包,例如使用out-interface=
或out-interface-list=
。