Press "Enter" to skip to content

MikroTik Routers 多个外网地址,映射访问内网

家庭使用ros拨号上网,内网有多个服务对外提供,之前使用的普通的dnat模式,正常运作,内网使用伪装上网,一切如常。

最近尝试在内网搭建了一套SaaS服务,可能要动态的映射端口出去。虽然可以端口号段的来映射,想来还是整个地址映射更舒适。

增加个网口,外网多拨了一路,现想使用pppoe-out2的外网地址全映射到内网的10.255.255.51服务器。

1.地址映射

前提:

目前有两路外网地址,分别是pppoe-out1和pppoe-out2。

我拨号上没有勾选创建默认路由,我收到在ip-route里面配置了一条通过pppoe-out1的上网路由。

配置映射:

chain=dstnat action=dst-nat to-addresses=10.255.255.51 protocol=tcp in-interface=pppoe-out2 
log=no log-prefix="" 

可以了吗?

有点网络知识感觉,可能知道不行。

想象请求从外网过来,进到pppoe-out2口,路由正确的nat,将目标地址是pppoe-out2的外网地址dnat到10.255.255.51服务器。

服务器收到请求,处理请求,现在服务器要返回数据被源请求者。这个请求者不在服务器服务器一个网段,服务器会发送给自己的默认网关。好吧,我们现在假设请求者ip是1.2.3.4。服务器告诉路由器,来吧,把我这个response给 1.2.3.4这个家伙。路由器怎么处理呢?嗯,路由器也有默认路由,就是我之前配置的pppoe-out1的路由。现在和奇怪了吧。请求从pppoe-out2进来的,路由器又从 pppoe-out1发送了返回,可以工作吗?

应该是不行的哦,因为我们的1.2.3.4请求者,明明是发送给pppoe-out2的外网地址的。所以请求者只会等待out2对应外网地址的返回,out1的显然是不行的。

处理方法:

我们需要尝试区别,哪些流量是从pppoe-out2进来的,给他打标记。然后路由出去的时候,再把这些打了标记的流量从他应该出去的接口

送出去。

;;; 步骤一,将从pppoe-out2进来的链接标记一下(wan2_conn)
chain=prerouting action=mark-connection new-connection-mark=wan2_conn passthrough=yes 
      connection-state=new connection-mark=no-mark in-interface=pppoe-out2 log=no log-prefix="" 

;;; 步骤二,将output chain里面标记为(wan2_conn)的链接,路由表示标记一下(to_wan2)
chain=output action=mark-routing new-routing-mark=to_wan2 passthrough=yes 
      connection-mark=wan2_conn out-interface=pppoe-out2 log=no log-prefix="" 

;;; 步骤二,将prerouting chain里面标记为(wan2_conn)的链接,路由表示标记一下(to_wan2)
chain=prerouting action=mark-routing new-routing-mark=to_wan2 passthrough=yes 
      connection-mark=wan2_conn in-interface=!pppoe-out2 log=no log-prefix="

步骤二是为了处理路由器直接返回给源端的流量,最好加上。

一切就绪,我们再加一个将标识为 to_wan2的流量进行正确路由的路由条目,就OK了!

发表评论

电子邮件地址不会被公开。 必填项已用*标注