单LAN多WAN(ADSL+UPF)分流模式下解决端口映射
环境:WAN1IP=192.168.100.242 pppoe-client
WAN2IP=192.168.2.1 pppoe-client
WAN3IP=15.12.11.1 upf
LANGWIP=192.168.1.254
SERVICE=192.168.1.149:80 web
LANUSER=192.168.1.1
WANUSER=192.168.2.10
建立所有wan口ip地址列表
/ ip firewall address-list
add list=wany address=192.168.100.242 comment="adsl1" disabled=no
add list=wany address=192.168.2.1 comment="adsl2" disabled=no
add list=wany address=15.12.11.1 comment="upf" disabled=no
adsl动态更新可以通过adslup来完成,添加如下一段
/ip fir add set adsl*= pref-src]
标记对所有wan80端口访问的新连接为change
/ ip firewall mangle
add chain=prerouting protocol=tcp dst-port=80 connection-state=new \
dst-address-list=wany action=mark-connection new-connection-mark=change \
passthrough=yes comment="change-mark" disabled=no
由于是多网关分流,mangle表中可能存在针对内网ip地址来分流的网关路由标记脚本,若服务器ip192.168.1.149也在分配列表当中,那么不单影响内网映射还会涉及到外网
假设服务器ip不存在其中,修改分流脚本,不要对含有change标记的连接进行路由标记,避免内网不同ip访问映射被按普通访问来修改源地址(srcnat操作,源地址按ip分流列表被修改为不同wan口的地址),蓝色处
/ ip firewall mangle
add chain=prerouting src-address=192.168.1.141/31 connection-mark=!change \
action=mark-routing new-routing-mark=20 passthrough=yes comment="wan2" \
disabled=no
针对连接标记change修改目标地址与源地址
dst-nat 只做目标地址与端口修改,判断工作已在mangle-prerouting完成
src-nat 修改判定转发后的源地址为lan网关ip,在nat模式下对于目标为192.168.1.149也就是与lan接口处在同一段下的ip也会自动发送,由于通过了in/out所以并不认为这个发送是一个nat操作,所以需要手动来修改让路由为其匹配一个un-nat以免192.168.1.149的答复信息不能回到请求源的地址192.168.1.1or192.168.2.10
/ ip firewall nat
add chain=dstnat connection-mark=change action=dst-nat to-addresses=192.168.1.149 \
to-ports=0-65535 comment="change-dstnat" disabled=no
add chain=srcnat connection-mark=change action=src-nat to-addresses=192.168.1.254 \
to-ports=0-65535 comment="change-srcnat" disabled=no
以上脚本在routeros2.9.27下测试无误,只有一个问题,那就是外网访问映射时使用那个路由表,我是在VM环境下操作的,因为基础是桥接,所以不大能确定我对这个问题测试的结果,日志显示按返回包中的目标地址网段的标记路由表走了
我的路由表不存在主表(main)只存在静态的标记路由表AS
没能实现。
我刚做了一个ROS,一条固定IP的光纤,一条活动IP的ADSL,ADSL是策略路由,我只想把光纤的那个IP来做与内网的web的端口映射,结果发现如果是在ADSL策略路由中用户访问我就会出现不能访问WEB的问题,其它用户(指不是ADSL策略路由中的用户)就能访问,检查发现问题还是当用户输入固定IP的地址后,ROS就不会向固定IP的发TCP连接,而是向ADSL中的策略路由试图中用户建立连接。用你说的方式也没有成功。/ip fir man
add chain=prerouting dst-address=外网IP protocol=tcp dst-port=80 \
connection-state=new action=mark-connection new-connection-mark=change \
passthrough=yes comment="" disabled=no
add chain=prerouting connection-mark=change action=mark-routing \
new-routing-mark=main passthrough=yes comment="" disabled=no
/ip fir nat
add chain=dstnat dst-address=外网IP protocol=tcp dst-port=80 \
action=dst-nat to-addresses=192.168.1.1 to-ports=80 comment="80 " \
disabled=no
[ 本帖最后由 cwjzjr 于 2007-2-5 21:17 编辑 ] 大哥,俺只在分流下实现了,策略方式没研究过 楼主怎么分流的
/ip route? 我是练手的,通过添加路由标记来分流的,同时还做了SNAT 比较简单的做法,添加默认路由。让域名指向默认路由那个interface的IP。
这种方法简单可靠,多WAN口只能通过一条WAN口访问路由。
想每条都可以访问的话就复杂多了,我没试过,设置得不好的话,可靠性低 原帖由 younger 于 2007-2-13 13:00 发表
比较简单的做法,添加默认路由。让域名指向默认路由那个interface的IP。
这种方法简单可靠,多WAN口只能通过一条WAN口访问路由。
想每条都可以访问的话就复杂多了,我没试过,设置得不好的话,可靠性低
实际上一但设置MX与A,就是这样子解决,不过练手吗,嘿嘿 具体怎么做,说说
不要光说理论,要在实际应用中可行 大哥,我是说绑定域名后就用你前边说的方法
至于我这贴子里的是自已试验的,也可行
我是在mangle中按源IP来添加路由标记分流,NAT为SNAT,剩下的就在一楼了 哦!我以为你说设置MX与A,就可以多WAN口都可以访问呢 也可以呀,一个是多别名绑定,一个是在高级域名管理中才会提供的那个什么什么功能,鸟文,记不起了 感觉好像一做了标记就不能回流的
页:
[1]