多线PCC后端口映射
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ROS多线叠加端口映射及回流设置
2012年04月14日⁄RouterOS⁄评论数 2⁄被围观 8,003 views+
我做完ROS加VLAN ADSL多线PCC叠加设置设置后不久,网站开发小组的项目经理就找到我向我提出了需求,因为现在他们的测试服务器是放在我们办公室内网的,我们公司其它部门和其它分公司和我们办公室不是一个局域网,网站开发小组的项目经理想让我们公司的所有同事都能访问到测试服务器做用户体验度测试,想让我帮助实现,当时我一口答应下来,也觉得这是个很简单的事情,但是事情往往出人意料。
我一开始的思路是这样的,第一步就是在IP->firewall-> nat下面做基于目标的伪装,也就是映射,第二步就是要做回流让内网的客户端也能通过公网IP 访问到服务器,第三步就是做动态映射的计划任务,定时更新第一步里面的目标地址即ADSL的地址,最后一步就要用到DDNS做一个二级域名的动态解析方便同事记忆和输入。做完以后发现需求基本满足,就是内网客户端不能通过域名访问到服务器,只能通过内网IP访问,为了精益求精,继续研究,baidu和google 上搜索了无数方法均无效,后来在一个论坛里面看到一个高人的回复内容给了我启发,于是再一次尝试配置居然成功了。不敢独享,现在将思路和脚本整理分享给更多需要的人。
首先我来分析下出现上述问题的原因,因为我们这里的环境是多线叠加的,我们的每个连接在进行路由之前都会对连接进行标记并路由,不同的标记有可能走不同的路由导致数据没办法顺利到达服务器,其内部数据的具体流向以及转换我也不是很清楚,如有高手路过请不吝赐教。下面进入正题,其实很简单,我们只要在标记里面把目标地址为我们的外网接口地址的数据直接通过就可以解决这个问题了,有几条线就做几个标记,最后要添加计划任务更新标记里的目标地址为对应的外网接口地址,所以加上这最后两步一共是六步,下面就放出每一步的脚本(我的环境是双线叠加的,所以以下脚本都是适合双线的,改成多线的也很容易)
1、做映射,这里以把内网的8890端口映射成9000端口为例。comment内容可以先运行脚本以后在winbox里面改,下同
1./ip firewall nat
2.add action=dst-nat chain=dstnat comment="225 9000\B6\CB\BF\DA1" disabled=no \
3.dst-address=175.0.42.18 dst-port=9000 protocol=tcp to-addresses=\
4.192.168.0.225 to-ports=8890 add action=dst-nat chain=dstnat comment="225 9000
\B6\CB\BF\DA2" disabled=no \
5.dst-address=222.247.11
6.136 dst-port=9000 protocol=tcp to-addresses=\
6.192.168.0.225 to-ports=8890
如果想让外网能通过第一条线路都能访问到服务器的话就要做多少和线路数相同条数的映射
2、做回流
1./ip firewall nat
2.add action=masquerade chain=srcnat comment="\BB\D8\C1\F7" disabled=no \
3.out-interface=lan
3、做动态映射的计划任务,下面的脚本需要手动添加到计划任务里面去,下同
1.:global ip1 [ /ip address get [/ip address find interface=pppoe-out1] address ]
2.:global newip1 [:pick $ip1 0 [:find $ip1 "/"]]
3.:global oldip1 [/ip fi nat get [/ip fi nat find comment="225 9000端口
1"] dst-address]
4.:if ($newip1 != $oldip1) do={ :log info [/ip fi nat set [/ip firewall nat find comment="
225 9000端口1"] dst-address=$newip1]}
5.:global ip2 [ /ip address get [/ip address find interface=pppoe-out2] address ]
6.:global newip2 [:pick $ip2 0 [:find $ip2 "/"]]
7.:global oldip2 [/ip fi nat get [/ip fi nat find comment="225 9000端口
2"] dst-address]
8.:if ($newip2 != $oldip2) do={ :log info [/ip fi nat set [/ip firewall nat find comment="
225 9000端口2"] dst-address=$newip2]}
4、做DDNS动态域名解析
脚本1(适合只需要一条线能访问到服务器的情况)
1./tool dns-update name= address=127.0.0.255 key-name=chen
gipuser key=chengippass
脚本2(适合需要每条线都能访问到服务器的情况)
1.:global ddnsuser "chengipuser"
2.
3.:global ddnspass "chengippass"
4.
5.:global ddnshost1 ""
6.
7.:global ddnsip1
8.
9.:global ddnsip1fn
10.