RouterOS的CHR P10版实现多线分流+IPIP通道建立。
配置详情
网络构架
CHR软路由:
- 千兆公网eth0 IP 95.217.x.100
- 万兆内网eth1 IP 10.0.0.1
- 公网主网关 95.217.x.1 @ eth0 distance=1
- 公网副网关 10.1.1.1~5 @ eth1 distance=2
物理机1~5:
- 千兆公网eth0 IP 95.217.x.101~105
- 万兆内网eth1 IP 10.1.2.1~5
- 开启NAT转发:iptables -t nat -A POSTROUTING -s ‘10.0.0.0/8’ -o vmbr1 -j MASQUERADE
开始配置
先配置路由器的公网和内网IP,然后去IP>Firewall>Mangle,设置分流标记,具体方法如下:
- 在Mangle下点击新建规则
- 在General下选择Chain为prerouting,src-address=10.0.0.0/8
- 在Advance下配置Per Connection Classifier,推荐选both addresses and ports,后面的参数写5和0,其中5为拟使用的WAN数量,0是标志排序(从0开始,0~4,这两个数字搞得人比较难受,从1开始多好….)
- 在Extra下配置Dst-address-type的address-type为Local,勾选Invert(代表排除路由器本地IP地址)
- 在Action下配置action=mark-connection标记连接,new-connection-mark取名c101
然后设置分流规则,具体方法如下:
- 在Mangle下点击新建规则
- 在General下选择Chain为prerouting,src-address=10.0.0.0/8,Connection Mark设为c101
- 在Action中选择Action为mark-routing,new-routing-mark取名route-c101
再去IP>Routes里添加副路由,gateway设为10.1.2.1,Routing Mark选择route-c101,distance选2(因为主路由还是走上联公网)
最后去IP>Firewall>NAT中新增一个srcnat,src-address=10.0.0.0/8,Out Interface选eth0,Connection Mark设为c101,Action选masquerade
这样一个节点就配置好了,其他的节点一样的步骤重复即可。也可以通过terminal设置:
- /ip firewall mangle
- add action=mark-connection chain=prerouting \
- comment=c102 dst-address-type=!local new-connection-mark=c102 \
- per-connection-classifier=both-addresses:4/0 \
- src-address=10.0.0.0/8
- add action=mark-routing chain=prerouting connection-mark=c102 \
- new-routing-mark=route-c102 src-address=10.0.0.0/8
- /ip firewall nat
- add chain=srcnat connection-mark=c102 action=masquerade
效果
完成后测试多线程下载,10G的文件使用40秒完成下载,平均速率245MB/s,平均带宽1.96Gbps;最高速率437MB/s,带宽约3.5Gbps:
- [root@lxc-test ~]# axel -n 100 https://speed.hetzner.de/10GB.bin
- ——-
- Connection 0 finished
- Downloaded 10000.0 megabytes in 40 seconds. (251086.72 KB/s)
速度虽然超过了单线带宽,可能受限于下载源的带宽所以没有达到理论的5Gbps。
查看connection可以看到分流到了不同的网关: