分类 RouterOS 下的文章

routeros网络问题ERROR: bad HTTP response升级失败的解决办法

routeros系统内升级能获取到版本,但是不能下载,提示ERROR: bad HTTP response,不知道是联通作恶还是gfw。
理论上chr版本也可以手动下载安装包扔到files里重启自动升级,但是总觉得存在潜在风险,所以还是想系统自动升级。
解决办法:
首先需要有个隧道或vpn到境外,参见之前文章
1,找到ip-dns-cache-flush cache,清除dns缓存
2,system-packages-check for updates-check for updates-download and install,此时会提示ERROR: bad HTTP response
3,然后到ip-dns-cache,查看mikrotik.com所有域名对应的ip,记下来
4,ip-routes,新建3中ip的路由,网关为隧道或vpn地址
5,回到system-packages-check for updates-check for updates-download and install,此时下载正常,重启后就更新完了
6,删除4中创建的路由。

routeros 动态公网ip建立gre隧道

2019.2.19更新,routeros最新版已支持隧道端为域名,所以动态ip端设置好ddns就行了

由于routeros chr版最近更新加入了cloud功能,不需要再使用第三方ddns了,pppoe拨号的动态公网ip建立gre隧道更简单了。
打开cloud功能,记下routeros的域名
cloud域名

建立两个路由器之间gre隧道,local address可以不填
gre隧道

然后,给隧道两端配置IP地址
gre隧道ip

之后在/tools/netwatch新建监测
netwatch
down命令是

/interface gre set gre-xxxx remote-address=[:resolve xxxxxxx.sn.mynetname.net]

对方路由作相似设置。

如果是光猫拨号的话,routeros的cloud是不能自动更新的,需要添加一个监测,
cloud强制更新
down命令是

/ip cloud force-update

done

以routeros为宿主机基于kvm安装虚拟机

先说一个坑,routeros的x86版的是32位,chr版是64位,所以在x86版下用kvm安装虚拟机只能安装32位系统,而koolshare的lede只有64位系统,所以在x86架构的routeros下并不能用来安装koolshare的lede,但是可以安装原版openwrt,目前18.06.1版openwrt x86版img下载地址

以下以routeros v6.43.7为例,其他版本选择对应版本的组件,安装ubuntu 18.04 x86

1,安装kvm组件,下载routeros v6.43.7 extra packages,解压,把kvm-6.43.7.npk上传到根目录,重启路由器会自动安装kvm组件
2,创建routeros的img或者上传自定义img,此处img为虚拟机硬盘,ubuntu img下载地址,上传到路由器
3,创建虚拟机,选择合适的cpu,内存,并填写硬盘img的路径
4,创建虚拟机网卡
5,桥接虚拟机网卡
6,虚拟机开机

未完待续

routeros的默认nat尽量不要用masquerade

最近配置服务器安全策略遇到问题,一些内网主机ip被routeros nat了,服务端看到的都是routeros的IP地址。
仔细检查nat规则时,发现默认srcnat是所有接口masquerade,这在简单的共享上网路由器里没什么问题,因为只有一个公网出口,但是当路由器有多个出口时,比如有pptp接口,gre隧道接口等,连接两个子网的桥,由于配置了masquerade,会将两侧子网客户端ip 转换为桥接口的地址。
如192.168.1.1/24<-->10.0.0.1桥10.0.0.2<-->172.16.1.0/24中,192.168.1.100这个客户端要和172.16.1.100通信,由于所有接口的masquerade的存在,172.16.1.100看到的是10.0.0.2这个ip和自己通信,而192.168.1.100却不知道,另一192.168.1.200也要和172.16.1.100通信,172.16.1.100看到的同样是10.0.0.2。
由于nat优先级要高于路由转发,所以即使指定的静态路由没问题,ip也是被nat过的。而且nat性能消耗要高于路由转发。
解决这个问题其实很简单,就是换掉所有接口masquerade,具体到接口的srcnat或者只在公网接口上使用masquerade。所以不要偷懒,要不然迟早要还的。

routeros的日志中剔除不必要的日志

routeros的dhcp日志有一个困扰了很久的问题,安卓设备休眠唤醒时会重新向dhcp服务器申请ip,安卓设备每分钟都会唤醒,导致日志中出现大量dhcp,info内容assigned和deassigned,如下
大量assigned和deassigned日志

解决办法如下:
在/system/logging/rules下,选择info,在topics里添加!dhcp,如下图
修改日志info

其他等级的dhcp日志应该还是有的。