我在 Mikrotik RB750 上遇到了基本的 NAT/路由问题,过去几天一直无法解决。从我们的 ISP 我们有 26 个 IP 地址:10.10.10.192/27, 和10.10.10.193是网关,10.10.10.194 是第一个可用 IP。
我需要的是与以太2从 DHCP 服务器获取公共 IP,并且所有连接到以太3从另一个 DHCP(192.168.100.0/24)获取本地 IP。所有客户端都应该可以访问互联网(稍后我将研究带宽限制),并且最好只是“看到”彼此(所有机器都是 Win7,我猜这最终可以通过 VPN 来解决)。
这是我的设置: 以太1(10.10.10.194)直接连接到 ISP。
20 个客户端已连接到以太2(10.10.10.195),另外还有 20 个以太3(10.10.10.196)(均通过相同的 24 端口交换机)。
这是我的设置,不起作用,所有 20 个客户端都来自以太2可以访问互联网,尽管所有通信似乎都来自 10.10.10.194(这是由于 ether1 上的伪装吗?),并且以太3根本无法访问互联网。
我认为我需要伪装以太3以及 SNAT/DNAT 或 NETMAP以太2但这也不起作用,我想我需要以某种方式“连接”两者乙醚2+3到以太1。
地址列表:
# ADDRESS NETWORK INTERFACE
0 ;;; public
10.10.10.194/32 10.10.10.192 ether1-gateway
1 ;;; inner DHCP
192.168.100.0/24 192.168.100.0 ether3-private
2 ;;; public
10.10.10.195/32 10.10.10.192 ether2-pub
3 ;;; public
10.10.10.196/32 10.10.10.192 ether3-private
NAT
0 ;;; ether3 nat
chain=srcnat action=src-nat to-addresses=10.10.10.196
src-address=192.168.100.0/24 out-interface=ether3-private
1 ;;; ether3 nat
chain=dstnat action=dst-nat to-addresses=192.168.100.0/24
in-interface=ether3-private
2 ;;; ether1 masquerade
chain=srcnat action=masquerade to-addresses=10.10.10.194
out-interface=ether1-gateway
路线:
# DST-ADDRESS PREF-SRC GATEWAY DISTANCE
0 A S 0.0.0.0/0 ether1-gateway 1
2 A S 10.10.10.192/27 10.10.10.195 ether2-pub 1
3 ADC 10.10.10.192/32 10.10.10.195 ether2-pub 0
ether1-gateway
ether3-private
4 ADC 192.168.100.0/24 192.168.100.0 ether3-private 0
IP 池:
# NAME RANGES
0 public-pool 10.10.10.201-10.10.10.220
1 private-pool 192.168.100.2-192.168.100.254
DHCP 配置:
# NAME INTERFACE RELAY ADDRESS-POOL LEASE-TIME ADD-ARP
0 public-dhcp ether2-pub public-pool 3d
1 private-dhcp ether3-private private-pool 3d
谢谢!
答案1
您必须做出决策并设计您的网络。
在以太1连接到您的ISP,您应该定义一个较小的网络。例如/30(说实话,如果您从ISP请求一个更小的范围比分割您现在拥有的范围要容易得多)。
很快以太110.10.10.192/30 您的网关是 10.10.10.193,10.10.10.194/30 是您的 IP(在 mikrotik - ether1 上)。然后您要求您的 ISP 进行路由
- 10.10.10.196/30
- 10.10.10.200/29
- 10.10.10.208/28
到地址 10.10.10.194,并在他们那边设置与您自己那边相同的 /30 网络掩码。
然后以太2您可以配置上面显示的一个或多个地址范围。在此界面上,您可以不执行任何 NAT。您可以根据接口上配置的地址范围来设置池。
在以太3您可以根据需要配置私有地址。您提供的示例看起来不错。您在这里进行了设置MASQUERADE
,这是您唯一拥有 NAT 的地方。
您原来的设置有什么问题?
- 您不应该按照原来的方式分配 /32 网络。
- ISP 会将所有人都视为位于同一网络上,但事实并非如此。
- 您不能在一个接口上同时执行 SNAT 和 DNAT。在这种情况下,您只能执行 SNAT,这会改变来源地址。当数据包返回时,netfilter 子系统会记住它所做的操作,并自动进行反向转换。(MASQUERADE 是 SNAT 的一个特例)
编辑如果你不想让你的 ISP 参与其中,那么你可以执行相同的操作并启用代理 arp,这里对此有详细描述:http://wiki.mikrotik.com/wiki/Manual:IP/ARP#Proxy_ARP
答案2
您在设置前缀为 32 的 ether3 IP 时出错。它必须是 24。
我不明白,你说的 dst-nat 什么意思?看起来它阻止了 ether3 中的互联网
1 ;;; ether3 nat chain=dstnat action=dst-nat to-addresses=192.168.100.0/24 in-interface=ether3-private
当你改变IP时,通常关闭网络字段并让其自动计算。例如
address=10.10.10.195/32 network=10.10.10.195 interface=ether2-pub
您可以尝试从伪装规则 src-address=!10.10.10.192/27 中排除您的公共网络,并在 ether1-public 上启用代理 arp。也许这样可行。我不确定,因为我最近使用了这种“奇怪”的配置。
PS. 对我来说,最好在 ether2 上提供私有子网,并设置 1 对 1 nat(src-nat 和 dst-nat)
答案3
为什么不简单地将路由器配置为在 Ether1 上接收 ISP 的 IP,桥接 Ether 2 和 3,然后在桥接器上为内部客户端应用 DHCP 服务器...假设您的内部 IP 需要更改,但更简单,您甚至可以将旧网关和范围添加为绑定到桥接器的静态 IP,直到让每个人都使用 DHCP...并且如果您在 24 端口交换机之间运行了一条额外的电缆,这也可能为您提供一些故障转移冗余(您需要查看交换机文档以了解它支持什么)然后您将桥接器伪装成 NAT 到网络,它还会将您自己的流量保持在内部并允许您进行一些防火墙等。