目标

architecture

按图所示,我们的router设备上有三块物理接口,其中

  1. ehter1我们计划使用PPPoE协议连接我们的联通宽带 带宽500Mbps。做为我们的主要线路,当所有规则没有命中时走此线路。
  2. ether2接口使用DHCP连接我们的电信线路,带宽100Mbps。备份线路,当线路正常时所有电信段IP走此线路。当主线路挂掉时让所有连接从此线路进出
  3. ether3接口,做我们的内网接入,所有的内网设备通过此接口连接外部。
  4. 从图片可以看到我们还设计了一个l2tp线路,此线路最小化走那些会报404的网站。

开始工作

首先我们下载routeros的图形化配置工具winbox https://mikrotik.com/download 目前最新版本为3.18 并且只有exe版本,如果没有windows的同学请先安装wine来启动此程序。

loading

默认状态下我们的新设备都是没有IP地址的,全部为0.0.0.0首次连接我们需要通过MAC地址来进行连接。用户名admin密码为空即可

main

这就是我们的主界面,针对MikroTik设备的所有操作都可以在这里便捷的进行操作。首先给我们的所有网络接口进行重命名,方便后续的识别。打开Interfaces主界面将我们的三个接口分别重命名为eth1-unicom\eth2-telecom\eth3-lan

interface

配置内网

下一步为我们的内网设置IP并开启内网的DHCP服务。选择IP->Addresses点击添加设置我们的内网网卡IP地址为 192.168.200.1/24接口选择eth3-lan

address

下一步为我们的内网机器分配一个IP池子,打开IP->Pool点击添加,首先为我们的池子起个名字,然后设置我们池子内的IP范围。这次我们设置的是从192.168.200.100-192.168.200.200

pool

最后一步设置DHCP,打开IP->DHCP Server.为我们的DHCP起个名字,然后设置使用DHCP的接口、以及我们要用的地址池子。接下来我们还要进入Networks设置一下分配到机器的默认网关。

当我们都设置好后,打开Leases界面已经可以看到有机器分配到IP地址了。

dhcp

配置线路1

我们的ether1使用联通的pppoe连接,设置ppp即可,并让他自动从运营活的DNS服务器地址。

打开PPP在Interface下点击添加,给新连接起一个名字 pppoe-out-unicom,选择接口为eth1-unicom.切换到DialOut标签下设置拨号的用户名和密码,点OK即可以开始进行连接,并会获得一个IP地址。【这次为了简化设置我们先勾选上增加默认路由,并把router的distance设置的大一点,降低下优先级】

pppoe

接下来让我们LAN内的机器可以正常上网我们还要做一步NAT。打开IP->Firewall->NAT,点击添加Chain=srcnat,out-interface=eth1-unicom,action=masquerade保存即可

性能小优化

在MikroTik的硬件中所有规则操作都会走CPU,我们需要尽可能的简化CPU的操作内容。

在NAT这步如果是pppoe上网,动态获得IP地址的话,大多教程也都会直接使用action=masquerade的方式。这种方式就是在每次做NAT操作的时候检查一下对外接口的IP地址然后在做NAT会有性能能耗损,我们可以通过一个小脚本来解决。首先修改NAT里action=src-nat,to-addresses=0.0.0.0

然后我们打开pppoe指定的profile文件,修改下他的on-up脚本 为,这样每次pppoe拨号成本后会都需找nat并修改他的to-address字段

:local interfaceName [/interface get $interface name]
:local newaddress $"local-address"
:local curaddress [ /ip firewall nat get [/ip firewall nat find comment=("l2tp-tw")] to-addresses ]
:log info "intefaceName = $interfaceName, newadd = $newaddress, old = $curaddress"
:if ($curaddress != $newaddress) do={
    /ip firewall nat set [ /ip firewall nat find out-interface=$interfaceName ] to-address=$newaddress
}

后续

今天先到这里,我们下一次选择写多线拨号负载或l2tp借线上网解决部分网站报404的错误。