搭建一台外部的RouterOS VPS主机,目的是使用隧道协议连接外部网络

完成在VPS的RouterOS CHR的安装后(参考 RouterOS CHR安装到VPS),测试本地到VPS的网络延迟和丢包在接受范围内,就可以开始正式部署

 

VPSRouterOS

隧道协议选择SSTP(也可以选择其他隧道协议,如OVPN,L2TP或者v7支持的wireguard等,根据实际情况而定),启用SSTP协议服务器,默认端口为443,当然端口也可以自己定义

/interface sstp-server server
set enabled=yes port=443

 

创建一个vps策略,定义local-address为10.200.1.1

/ppp profile
add local-address=10.200.1.1 name=vps

 

创建客户端账号和密码为yus,分配该账号的IP地址为10.200.1.2

/ppp secret
add name=yus password=yus profile=vps service=sstp remote-address=10.200.1.2

配置nat规则

/ip firewall nat
add action=masquerade chain=srcnat

 

本地RouterOS

本地RouterOS配置,有两种方式,一种是静态路由,将CN地址在/ip route下配置静态路由,另一种是策略路由方式,通过mangle标记:

静态路由方式:

首先创建全国的静态路由表,网关指向拨号网关,这样RouterOS路由器也可以使用VPS的外部路由

/ip route
add distance=1 dst-address=1.0.1.0/24 gateway=pppoe-out1
add distance=1 dst-address=1.0.2.0/23 gateway=pppoe-out1
add distance=1 dst-address=1.0.8.0/21 gateway=pppoe-out1
add distance=1 dst-address=1.0.32.0/19 gateway=pppoe-out1
add distance=1 dst-address=1.1.0.0/24 gateway=pppoe-out1
add distance=1 dst-address=1.1.2.0/23 gateway=pppoe-out1
add distance=1 dst-address=1.1.4.0/22 gateway=pppoe-out1
add distance=1 dst-address=1.1.8.0/24 gateway=pppoe-out1
add distance=1 dst-address=1.1.9.0/24 gateway=pppoe-out1
add distance=1 dst-address=1.1.10.0/23 gateway=pppoe-out1
add distance=1 dst-address=1.1.12.0/22 gateway=pppoe-out1

我做的静态路由,当然也可以选择address-list的策略路由,但策略路由配置较多,涉及路由标记和其他配置,所以使用静态路由操作简单,缺点是不易于管理。

静态路由脚本下载(注意:提供的不是.rsc脚本文件,是txt,因为gateway默认设置为pppoe-out1,如果拨号接口名称不一样,或者使用IP作为网关,请自行修改后,导入RouterOS)

提示:需要将指VPS服务器的IP地址走路由器默认路由,如本地光猫拨号pppoe-out1,避免VPS的IP走到隧道,会造成隧道无法建立的问题,如下配置:

/ip route

add distance=1 dst-address=VPS_IP gateway=pppoe-out1

如果你家是光猫拨号,修改pppoe-out1的默认路由距离为3,作为RouterOS的备份默认路由

/interface pppoe-client set name=pppoe-out1 default-route-distance=3

创建sstp客户端,设置了SSTP隧道为默认路由,默认路由距离为1,优先级高于pppoe-out1的默认路由,设置连接的VPS_ip和账号密码

/interface sstp-client
add add-default-route=yes connect-to=vps_ip:443 disabled=no name=sstp-vps user=yus password=yus profile=default-encryption default-route-distance=1

配置sstp-out1到vps隧道连接的默认路由

/ip route
add distance=1  gateway=sstp-out1

这样配置后,全国IP走静态路由,剩下的其他IP则走默认路由出去,路由部分已经配置完成,最后配置nat:

/ip firewall nat
add action=masquerade chain=srcnat out-interface=pppoe-out1
add action=masquerade chain=srcnat out-interface=sstp-out1

 

策略路由方式

缺点,RouterOS路由器无法享受VPS的出口路由,内网用户可以通过策略标记走VPS出口

优点是:address-list方便管理

策略路由方式,需要使用address-list地址列表管理,将国内的出口设置为默认路由。

/ip route
add distance=1  gateway=pppoe-out1

这样的配置无需将VPS的IP地址,单独配置静态路由,因为路由器本身不会走策略路由!

然后需要做manlge标记,

/ip firewall mangle
add action=mark-routing chain=prerouting dst-address-list=!cnlist new-routing-mark=vps passthrough=yes src-address-list=lan

规则含义是:src-address-list定义内网主机IP段,dst-address-list定义除了cnlist列表的地址,都打上vps路由标记

注意:src-address-list=lan,是需要自己定义内网IP地址段列表,假如内网IP地址段为192.168.88.0/24,配置如下

/ip firewall address-list
add address=192.168.88.0/24 list=lan

然后将标记好的路由指向sstp-out1

/ip route
Add gateway=sstp-out1 routing-mark=vps

address-list的cnlist地址列表下载(改为rsc脚本文件,不定期更新,能通过http get方式获取,更新时间:2021-08-05)

RouterOS计划任务更新脚本,system schedule配置,每隔一天下载更新(脚本执行周期也可以自定义更长时间,比如7天)

/tool fetch url="http://irouteros.com/duibi/cnlist.rsc" dst-path=cnlist.rsc
:delay 1s
:local t [:time {/import cnlist.rsc}]
:log info "import time is $t "

 

剩下的就是DNS,要求RouterOS版本是6.47以上,因为需要使用DNS转发功能,在6.47后的版本才支持该功能,关于DNS转发介绍可以参考RouterOS V6.47 DNS转发功能介绍

 

本地的DNS服务器配置不变,新版本的RouterOS支持dns forward类型,所以我们可以指定相应网站的域名走指定dns解析,配置如下(注特别注意,regexp中是命令行配置,非Winbox配置,请勿直接复制到winbox中):

/ip dns static
add forward-to=8.8.8.8 regexp=".*\\.google\\.com" type=FWD
add forward-to=8.8.8.8 regexp=".*\\.youtube\\.com" type=FWD
add forward-to=8.8.8.8 regexp=".*\\.ytimg\\.com" type=FWD
add forward-to=8.8.8.8 regexp=".*\\.wikipedia\\.org" type=FWD

一个简单的RouterOS DNS转发配置文件供下载:dns配置文件

注意:确保转发域名和转发的DNS都指定到了VPS的线路,这样才能调度到就就近上网线路的资源(原理参见

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章很值,打赏犒劳作者一下