CHH上越来越多的兄弟开始使用RouterOS路由器了,由于我之前回了几个关于RouterOS问题的帖子,很多兄弟都PM我一些问题,正好这段时间比较闲,就大家问得比较多的两个问题通过Step by Step的方式写出来,希望帮助ROS入门的兄弟,在各位老鸟面前献丑了!
一、多拨带宽叠加负载均衡
ROS的多拨负载均衡有两种方式,NTH和PCC,一般来说PCC的稳定性要好一些,下面是双线PCC的操作步骤,多线同理:
1.配置Wan连接
不管你是静态IP还是动态IP抑或是PPPOE拨号连接,请先设置Wan连接,下面以PPPOE为例,建立2个PPPOE连接,分别命名为pppoe-out1和pppoe-out2:
002.PNG (206.31 KB, 下载次数: 0)
2.设置NAT
WAN连接建立好后,如果设置正确,对应的连接名称前会有一个“R”的标识。下面设置NAT,由于示例中内网只有一个网段,所以只需要一条规则即可,如下图。
003.PNG (21.15 KB, 下载次数: 0)
004.PNG (201.1 KB, 下载次数: 0)
其中Src.Address表示你内网的网段,10.0.0.0/24代表10.0.0.0到10.0.0.255之间所有的地址(实际可用254个),子网掩码为255.255.255.0,学过Linux的兄弟应该不会对这种表示方式陌生,如果你的内网有多个网段,可以通过建立多条NAT规则或者通过计算子网掩码来实现。如果对子网掩码不熟悉,网上有很多子网掩码计算工具,或者直接指定24,即255.255.255.0,即与普通家用路由器的设置方法类似。
如果你已经设置好DHCP,现在客户机应该已经可以通过这台路由器上网了。
3.包标记
我认为Ros的精华部分就是包标记,同时也是难点,初学者很容易在学习这一块时放弃,但如果你之前用过iptables或Cisco或华为的设备,则很好理解。
配置PCC负载均衡同样也需要进行标记,这样最终Ros就能通过我们标记的包来确认数据流向,从而完成带宽的叠加和负载均衡,虽然比起普通家用路由器设置进来要复杂很多,但Ros的灵活性是普通其它普通路由器无法比拟的。
由于我们演示的即使是最简单的双线,通过winbox操作的步骤也比较多,就直接将脚本帖出来。
/ip firewall mangle
add action=mark-connection chain=prerouting dst-address-type=!local \
new-connection-mark=pcc1 per-connection-classifier=both-addresses:2/0 \
src-address=10.0.0.0/24
add action=mark-connection chain=prerouting dst-address-type=!local \
new-connection-mark=pcc2 per-connection-classifier=both-addresses:2/1 \
src-address=10.0.0.0/24
add action=mark-routing chain=prerouting connection-mark=pcc1 \
new-routing-mark=r1 src-address=10.0.0.0/24
add action=mark-routing chain=prerouting connection-mark=pcc2 \
new-routing-mark=r2 src-address=10.0.0.0/24
add action=mark-connection chain=input in-interface=pppoe-out1 \
new-connection-mark=pcc1
add action=mark-connection chain=input in-interface=pppoe-out2 \
new-connection-mark=pcc2
add action=mark-routing chain=output connection-mark=pcc1 new-routing-mark=r1
add action=mark-routing chain=output connection-mark=pcc2 new-routing-mark=r2复制代码 执行以上脚本后会创建如下图中所示的前8条规则。
005.PNG (90.17 KB, 下载次数: 0)
先说前面两条命令,需要特别说明的是,如果你的双线速率不同,比如一条50Mb,另一条100Mb,这里就应该将PCC分类器分为三份了,这样每份为50Mb,多线同理。这里由于是最简单的双线同速率的负载均衡,所以设置为2/0即可。这样标识了名为PCC1和PCC2的连接。
第3、4条命令是创建名为R1和R2的路由标识。
第5、6条命令是创建回程路由标识,为后面第7、8条命令作准备。
第7、8条命令是通过前面两条命令创建的连接标识创建名为R1和R2的路由标识。
4.添加路由
以上第3步所有的标识都是为这一步服务的,这里我们只需要将两条WAN链接对应的路由标识添加到路由表即可,下面同时贴出winbox界面和脚本:
/ip route
add check-gateway=ping distance=1gateway=pppoe-out1 routing-mark=r1
add check-gateway=ping distance=1gateway=pppoe-out2 routing-mark=r2复制代码
001.PNG (122.87 KB, 下载次数: 0)
这样就完成了双线叠加或负载均衡的配置。下图是一个接入电信双100Mb的Ros路由器做的带宽叠加和均衡负载,大家可以看到,虽然在一定时间内双线的负载并不能保证是绝对的均衡,但总上下行流量基本保持一致,在客户机上全速下载也基本能够得到两条wan带宽的总和。
007.PNG (189.46 KB, 下载次数: 0)
以上介绍的普通的双线双拨(多线多拨同理),如果你当地的网络提供商没有限制单线多拨,那么通过Ros的vrrp则可很方便地完成,然后再通过PCC叠加带宽,而不用增加任何硬件。网上相关教程很多,而且也不具备普遍性,这里就不再赘述了。
未完待续....
评论
收藏学习,以后备用吗,谢谢!
评论
请问ros如何mac地址白名单允许上网
评论
谢谢,太好了,收藏了
评论
通过防火墙过滤规则很容易实现啊,具体思路是先允许规则中已存在的MAC地址,拒绝规则中所有的请求:
/ip firewall filter
add chain=forward src-mac-address=00:14:85:D6:60:03
add action=drop chain=forward复制代码以上脚本即可允许MAC地址为00:14:85:D6:60:03的网卡上网,而拒绝其它所有MAC地址。如果需要往白名单中添加MAC地址,只需要在drop规则前按第2行的方法重复添加规则即可。
评论
写的很好,非常不错,公司用ROS几年了,碰到个问题一直没有很好解决,多线分流后,外网V P N始终无法配置成功,无论是WAN1还是WAN2都无法拨进来,内网倒是能拨网关的V P N,但这毫无意义。。。不知楼主是否能帮忙分析一下原因。
评论
楼主好棒!
评论
你所说的问题我至今还没有遇到过,因为我没有在多WAN的Ros上做过V P N,单WAN上做过没问题,双WAN的ROS做V P N客户端也没问题,但每次服务端得到的客户端IP都是WAN1的,具体原因不明。
不过从你描述的问题来看,我猜测应该是从外面拨进来V P N的连接被分流了,你可以先试试禁用一个WAN,然后禁用所有PCC规则,再逐个开启,用排除法来确认问题的来源,如果问题真的出现在PCC分流上,那么可以尝试在分流规则时添加基于协议和端口号的选项,用来判断该连接是否来自V P N连接。
ROS默认的V P N端口我整理如下,你可以试试:
L2TP udp 1701
PPTP tcp 1723
SSTP tcp 443
OpenV P N tcp 1194
评论
应该是回流的问题 ,标记一下路由,从pppoe-out1进就要从pppoe-out1出
#进口连接-->出口路由标记
:for m from=1 to=4 do={
/ip firewall mangle add action=mark-connection chain=input in-interface=("pppoe-out" . $m) new-connection-mark=$m passthrough=yes comment=($m . " - in conn") disabled=yes###disable=yes 规则未启用,请手动启用或者改成no
/ip firewall mangle add action=mark-routing chain=output connection-mark=$m new-routing-mark=($m . "r") passthrough=no comment=($m . " - in conn --> route") disabled=yes
}
###标记路由,与上面的路由标记对应
:for m from=1 to=4 do={
/ip route add distance=1 gateway=("pppoe-out" .$m) routing-mark=($m . "r")
}
###备份路由
:for m from=1 to=4 do={
/ip route add distance=$m gateway=("pppoe-out" .$m)
}
####以上to=4 ,4条宽带,据实际情况修改几个参数/变量###另外如果还有别的规则 可能会干扰到上面标记,那个只能具体情况具体分析
14.jpg (52.04 KB, 下载次数: 0)
12.jpg (38.54 KB, 下载次数: 0)
如果还有其他标记,建议你贴出图来
评论
非常感谢,正在根据你回复的内容分析中。。
评论
非常感谢,目前情况是外网就无法连通WAN1或者WAN2的***端口,不知楼主是否有空,可否加个QQ详细请教下。。
评论
已PM QQ
评论
留个名,
不过我那951貌似多了个bridge
评论
调试时注意查看作为服务端的ros日志,更好地确定问题所在。
评论
那是因为ROS默认设置是eth1为WAN端口,其它端口做了桥接。
评论
谢谢兄台,已找LZ解决问题了,LZ是货真价实的高手。。。
评论
LS在说什么?我表示看不懂
评论
哈哈,没注意回复的就是LZ
评论
技术帖子!
评论
跪谢,看来随着宽带的提高,落后功能的家用路由器是满足不了大家的需求,继而寻求小企业级,ROS确实不错,就是入门起点高,还有就是一些人打着幌子要钱。
rosjb.com推出的软件不错
评论
非常感谢楼主分享,ROS还是玩不来。
评论
ROS能在Hyper-V下用吗?
评论
不同运营商叠加,会稳定吗?我是电信50M加移动100M的,可以实现网页稳定,迅雷叠加吗?
评论
我用PCC的方式做过,可是每次都有些问题,没法叠加成功,有时候UPNP不行。ROS的配置确实有点复杂,目前用OpenWrt方便一些。等有空再折腾ROS
评论
ros新版本应该已经不支持Hyper-V了,但可以在ESXI上工作良好。
评论
不同运营商带宽的叠加要麻烦一些,因为要涉及到策略路由,即自动选择目标IP地址所在的运营商,以最优化网络连接。
如果不做策略路由也可以带宽叠加,至于带宽速率不同,只需要调整PCC权重即可,用最大公约数计算。
评论
虽然没多拨,收藏学习。
评论
密切留意
评论
羡慕啊,本地电信不能多拨,拨了两个就说有两台机器在线,要你关闭一个
评论
官方的教程里,下面两行入口标记,是放在prerouting链。
add action=mark-connection chain=input in-interface=pppoe-out1 \
new-connection-mark=pcc1
add action=mark-connection chain=input in-interface=pppoe-out2 \
new-connection-mark=pcc2
官方的:
add chain=prerouting in-interface=ISP1 connection-mark=no-mark action=mark-connection \
new-connection-mark=ISP1_conn
add chain=prerouting in-interface=ISP2 connection-mark=no-mark action=mark-connection \
new-connection-mark=ISP2_conn
放在prerouting和input有什么区别么?性能有差别吗?
官网链接:
http://wiki.mikrotik.com/wiki/Manual:PCC兄弟这个问题提得相当好,我一直以来也忽略了prerouting链和input链之间的性能差异。
我们知道RouterOS是基于Linux的,它的防火墙同样也是iptables,所以下面看看iptables处理数据包的流程(图片来自网络)
193925_cNWe_874335.png (44.54 KB, 下载次数: 0)
Mangle表的5条链:
(1)PREROUTING 链:数据包进入防火墙后,路由判断之前改变数据包。
(2)POSTROUTING链:数据包确定了目标地址后,即路由判断前改变数据包。
(3)OUTPUT链:在数据包被确定目的地址前改变数据包
(4)INPUT链:在数据包进入本机后,应用程序接受之前改变数据包。
(5)FORWARD链:第一次路由判断之后,最后一次路由判断前改变数据包。
在iptables中,数据包只要匹配了其中一条规则,过滤就会结束,否则会继续按规则链的流向走,经过一次就需要进行比较,经过的规则越多,性能损失就越大。而在多线PCC中,根本不需要进行多余的处理规则,只需要对进入的数据包进行标识即可。
所以,从理论上来讲,此处在prerouting处标识比input性能更高,即官方脚本更有效率。
评论
专业,受教了,我的ros,现在多拨成功了,不过用了ECMP,感觉PCC的效率有点低,我50Mbps多拨,下行基本到不了70Mbps,但是用ECMP可以到100Mbps。
感觉ROS确实强大,不过需要不少时间来琢磨。
我现在遇到一个端口转发的问题,感觉多拨情况下,设置的端口转发,会经常失效。
兄弟能否私信一下联系方式,想请教一下。
评论
多线的端口转发可以通过指定in interfrace和routing mark来区分数据包的入口。
入下所示:
add action=dst-nat chain=dstnat comment="port forward 880" disabled=no \
dst-port=880 in-interface=ether1-gateway protocol=tcp routing-mark=pcc1 \
to-addresses=192.168.1.50 to-ports=880复制代码以上这段脚本即可将入口为ether1-gateway ,并且路由标识为pcc1的TCP 880端口转发到内网的192.168.1.50的880端口上。如果有多线,就需要建立多条规则。
评论
ros 有ECMP?这个是个啥?
评论
PCC以后如何完美UPNP?
评论
ros的单线多拨是并发还是依次拨号?
评论
mark一下!学习
评论
mark..专业。
其实我一直有个没完成的配置
就是进prerouting以后打标。。。根据目的地不同,非CN的加routing标记然后路由转发去另外一个设备。
然后另外一个设备(OpenWRT)在做完他的操作以后(都懂的那种)...然后再次进入ROS LAN口。。
这时候有2个状态
1. 被操作进入代理状态的流量会因为改变了Source IP而正常路由出WAN口
2. 没做代理操作的流量会被直接forward到LAN口,这时候原来的打标似乎是仍然生效的,包上的源IP也不会变。。所以这部分包其实就完蛋了。。
所以现在我的做法是所有流量都进二级设备先做分离在进ROS...虽然没撒大问题但是这样就需要在虚拟机(OpenWRT)重启的时候手工修改DHCP的网关地址啥。
或者还有一种做法就是得在OpenWRT上启用全局模式,不过我也不是很喜欢这样。。
所以暂时就先这样半吊着用了。。。
想咨询下有啥更高明的办法不?比如在出口的时候把prerouting的标去掉??虽然设想过当时完全不知道怎么实现...擦..
电路 电子 维修 求创维42c08RD电路图 评论 电视的图纸很少见 评论 电视的图纸很少见 评论 创维的图纸你要说 版号,不然无能为力 评论 板号5800-p42ALM-0050 168P-P42CLM-01 电路 电子 维修 我现在把定影部分拆出来了。想换下滚,因为卡纸。但是我发现灯管挡住了。拆不了。不会拆。论坛里的高手拆解过吗? 评论 认真看,认真瞧。果然有收
·日本中文新闻 唐田绘里香为新剧《极恶女王》剃光头 展现演员决心
·日本中文新闻 真子小室夫妇新居引发隐私担忧
·日本中文新闻 前AKB48成员柏木由纪与搞笑艺人交往曝光
·日本学校 {日本国际学校}梅田インターナショナルスクール
·日本学校 LINE:sm287 陳雨菲、20歳、台湾からの留学生、東京に来たばかり
·日本留学生活 出售平成22年走行48000km 代步小车
·日本华人网络交流 円相場 一時1ドル=140円台まで上昇?
·日本华人网络交流 问日本华人一个问题
·日本旅游代购 富山接机
·生活百科 英国转澳大利亚转换插头
·汽车 【求助】修车遇到困难怎么办?