标签 mikrotik 下的文章

Routeros 配置WireGuard

Routeros在2019年下半年发布了V7的beta版,我在之前文章一直在更新beta版新特性。2020年6月routeros v7beta7系统内核升级到5.6,8月发布了Routeros v7.1 beta2增加了对WireGuard的支持。
WireGuard被视为下一代VPN隧道协议,是类似于gre、ipip隧道的无状态VPN隧道,基于UDP协议,配置简单。

由于Routeros V7还在beta阶段,webfig和winbox等UI控制台还存在很多不完善的地方,下面通过命令行配置。
以下配置基于Routeros V7.1beta2 CHR版。

简单介绍一下拓扑,routeros作为唯一路由器,新建两个wireguard接口:wg-access和wg-hk,wg-access用于手机、PC等在非本地网络下的远程接入,wg-hk用于连接香港VPS用于加速访问境外地址。

本地lan的地址是192.168.1.1/24,wg-access地址是10.0.0.1/24,wg-hk的地址是10.0.1.1/30,手机wireguard的地址是10.0.0.2/32,笔记本电脑的地址是10.0.0.3/32
香港wg0地址是10.0.1.2/30

通过ssh连接routeros或者webfig、winbox的terminal输入命令。
1,wg-access
新建本地routeros的wg-access接口,注意mtu要改成1500,默认是1420,输入下面新建接口命令后会自动创建接口的private-key和对应的public-key

/interface/wireguard/add name="wg-access" mtu=1500 listen-port=50000

给本地routeros的wg-access接口配置IP地址

/ip/address/add address=10.0.0.1/24 interface=wg-access

添加wg-access接口下的客户端peers,注意下面的public-key和preshared-key替换成实际的key,客户端的key在新建空隧道时会自动生成

/interface/wireguard/peers/add interface=wg-access public-key="lYVc...AlE=" allowed-address=10.0.0.2/32 preshared-key="93E...PSA="
/interface/wireguard/peers/add interface=wg-access public-key="lYVc...AlE=" allowed-address=10.0.0.3/32 preshared-key="93E...PSA="

2,wg-hk
新建本地routeros的wg-hk接口

/interface/wireguard/add name="wg-hk" mtu=1500 listen-port=10000

新建香港VPS上routeros的wg0接口

/interface/wireguard/add name="wg0" mtu=1500 listen-port=10000

在香港routeros的wg0接口下添加peer

/interface/wireguard/peers/add interface=wg0 public-key="lYVc...AlE=" allowed-address=10.0.1.1/30 preshared-key="93E...PSA="

给香港routeros的wg0接口配置IP地址

/ip/address/add address=10.0.1.2/30 interface=wg0

在香港routeros上添加本地lan的路由

/ip/route/add dst-address=192.168.1.1/24 gateway=10.0.1.1

在本地routeros的wg-hk接口下添加peer

/interface/wireguard/peers/add interface=wg-hk public-key="lYVc...AlE=" endpoint=香港VPS的公网IP:10000 allowed-address=0.0.0.0/0 preshared-key="93E...PSA="

给本地routeros的wg-hk接口配置IP地址

/ip/address/add address=10.0.1.1/30 interface=wg-hk

配置本地routeros的策略路由
参考Routeros V7配置策略路由routeros配置vpn分流大陆ip

关于routeros的wireguard的说明
1,mtu要修改成1500,使用默认的1420时会有部分cdn不能加载,现象是浏览器报超时错误。mtu问题类似情况参考ikev2 客户端mtu引起的网络故障
2,wireguard每个接口有个自己的公钥对应的路由表,配置peer就是写路由表,routeros v7.1beta2目前有bug,配置多个相同路由的peer,删除后配置的不会恢复之前的路由。
3,routeros v7.1beta2的全局路由表和wireguard的路由表可能存在某些bug,如果配置后不生效,可以删除peer后重新添加。

公网服务器安装routeros后的安全设置

最近很多朋友尝试在vps或者云服务器上安装ros,由于服务器是公网ip,安全风险很大,在这里写一下安装routeros后的安全设置。如何在云服务器上安装routeros,可以参考 Google Cloud Platform(gcp)谷歌云安装Routeros青云主机安装routeros,附一键安装routeros脚本

routeros安装完成首次启动是没有密码的,并且所有管理端口是开放的,也就是说,任何人只要先于你设置了密码,你就失去了控制权。

如果你是公有云(如阿里云,谷歌gcp等)的ecs上安装的话,先要设置安全组或者防火墙只允许自己宽带的公网ip访问,这样可以最大限度保证自己能在第一时间设置密码。如果是普通idc的vps的话,只能加快手速了。

1,使用webfig或者winbox登陆到routeros后,第一件事就是设置密码,路径是/webfig/#System:Password

2,关闭不需要的管理端口,路径是/webfig/#IP:Services,这里建议关闭除winbox和www的所有服务,并把开放的服务修改成其他端口号

3,修改管理员账号,/webfig/#System:Users,新建管理员,记得group选full取得所有权限,使用新管理员账号登陆routeros后禁用admin账号,避免输错管理员账号密码把自己关在外面

4,配置完其他后,记得在防火墙关闭公网dns查询,/webfig/#IP:Firewall.Filter_Rules.new,chain选input,protocol选udp,dst.port写53,in.interface选你的公网接口如ether1,最后action选drop。这样就能防止你的routeros被用来做ddos的放大攻击工具攻击别人,防止云服务商或者idc因为你的攻击行为(尽管非你本意)关闭你的服务器。

40Gbps交换机CRS326-24S+2Q+RM开箱及拆解

mikrotik 2019年底发布了他家最高带宽交换机CRS326-24S+2Q+RM,24个10gbps的sfp+口,2个40gbps的qsfp+口
45度照
正面
背面
内部
此交换机配置了三个4cm的三线高转速风速,短期观察有四档温度调节,停转,电压6v低速3k转,9v中速4k转,12v高速6k转,噪音较大,这里更换了猫扇NF-A4x20 PWM,主板风扇接口是4口,而且手上没有NF-A4x20 FLX,所以就直接用了pwm的,短暂测试没有发现问题,系统也可以看到转速。
风扇
风扇
同时购入了两个sfp+转万兆电口模块S+RJ10
万兆电口模块
预计此交换机将替代现在的xs716t成为我的核心交换机

青云主机安装routeros,附一键安装routeros脚本

20201111更新:routeros chr版本,mount命令offset。

在阿里云安装过routeros,用相同脚本在青云就遇到了坑。
阿里云ecs没有cpu选项,而青云有,创建主机的时候cup高级选项,CPU 体系架构,默认值启动routeros后会cpu100%,选择haswell架构就没有问题,broadwell也不行,再往下的架构没有测试。
附一键安装routeros脚本

wget https://download.mikrotik.com/routeros/6.47.7/chr-6.47.7.img.zip -O chr.img.zip && \
gunzip -c chr.img.zip > chr.img && \
mount -o loop,offset=512 chr.img /mnt && \
ADDRESS0=`ip addr show eth0 | grep global | cut -d' ' -f 6 | head -n 1` && \
GATEWAY0=`ip route list | grep default | cut -d' ' -f 3` && \
echo "/ip address add address=$ADDRESS0 interface=[/interface ethernet find where name=ether1]
/ip route add gateway=$GATEWAY0
" > /mnt/rw/autorun.scr && \
umount /mnt && \
echo u > /proc/sysrq-trigger && \
dd if=chr.img bs=1024 of=/dev/vda && \
reboot

routeros配置vpn分流大陆ip

20201203更新:Routeros V7的分流方法参考Routeros V7配置策略路由
20201202更新:Routeros V7连接境外服务器的vpn方式可以参考Routeros 配置WireGuard
20200503更新:添加dnsmasq白名单分流解析
20200416更新:添加使用ipip.net的大陆ip列表生成命令并添加了私有ip地址

ros使用pppoe连网,ros上配置vpn连接香港服务器上的ros。目标:内网需要翻墙的ip通过大陆ip列表分流,大陆ip走默认路由,境外ip走vpn。其他内网ip全部走默认路由。
首先下载大陆ip列表,推荐方法2
方法1:

curl 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | grep ipv4 | grep CN | awk -F\| '{ printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > chnroute.txt

生成的txt文件使用sublime的多行编辑功能或其他方式转换成ros的cn-ip.rsc脚本格式。

/ip firewall address-list
add list=cn-ip address=1.0.1.0/24
add list=cn-ip address=1.0.2.0/23
。。。

方法2:使用ipip.net发布在github的大陆ip列表生成

curl -s https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt |sed -e 's/^/add address=/g' -e 's/$/ list=CNIP/g'|sed -e $'1i\\\n/ip firewall address-list' -e $'1i\\\nremove [/ip firewall address-list find list=CNIP]' -e $'1i\\\nadd address=10.0.0.0/8 list=CNIP comment=private-network' -e $'1i\\\nadd address=172.16.0.0/12 list=CNIP comment=private-network' -e $'1i\\\nadd address=192.168.0.0/16 list=CNIP comment=private-network'>cnip.rsc

以上脚本在CNIP列表里添加了私有ip地址192.168.0.0/16,172.16.0.0/12和10.0.0.0/8

方法3:下载别人制作好的脚本
http://www.iwik.org/ipcountry/mikrotik/CN

使用import cnip.rsc导入ros。添加内网需要翻墙的ip列表。
配置ip firewall的mangle
prerouting,source address list,destination address list取反,destination address type,address type local,invert,mark routing,cross-gfw。
配置ip routes的网关
0.0.0.0/0,gateway设置为vpn对端地址,routing mark 使用上面的cross-gfw。

现在解决dns问题,由于ros的dns功能比较弱,这里使用dnsmasq
内网一台linux系统,可以是虚拟机,可以是容器,安装dnsmasq。配置dnsmasq的源dns为google dns,然后使用github上的大陆网址白名单生成脚本添加需要使用大陆解析的域名。https://github.com/felixonmars/dnsmasq-china-list
具体方法参考使用dnsmasq基于大陆域名白名单分流解析域名