1、实验环境:

准备一台 ROS 设备,一个国内互联网,一个海外通道,一份国内路由地址表(CN.rsc)文件,一份海外网站列表(gwflist.rsc)文件

2、实验目的

实现Mikrotik下的pc国内外网站访问正常,及PC的DNS 不管设置那个ip都可以解析。

3、实验步骤:

3.1、将CN.rsc,gwflist.rsc文件上传到ROS设备上

ROS搭建国内外分流环境2_NAT

这两份文件可以从这位大神这里https://github.com/ruijzhan/chnroute  获取(非常感谢),不过我用的ROS版本是V6的版本,在gwflist.rsc文件里面导入的话会报错,需要对文件进行以下修改下,拿掉address-list 这列参数,然后保存上传

ROS搭建国内外分流环境2_命令行_02


3.2、导入上面两份文件:

3.2.1、导入CN.rsc文件

[century@MikroTik] > import file-name=CN.rsc 

ROS搭建国内外分流环境2_NAT_03

导入后的结果:

ROS搭建国内外分流环境2_DNS_04

3.2.2、利用脚本修改gfwlist.rsc里面的dnsserver 地址

命令行:

/system script

add dont-require-permissions=no name=gfwlist owner=century policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\

    ":global dnsserver 8.8.8.8\r\

    \n\r\

    \nimport file-name=gfwlist.rsc\r\

    \n"

界面操作:

ROS搭建国内外分流环境2_NAT_05

脚本:

:global dnsserver 8.8.8.8

import file-name=gfwlist.rsc

3.2.3、开启设备的DNS server设置,及修改dns缓存大小情况,及查看刚才导入的gwflist文件列表情况

命令行:

/ip dns

set allow-remote-requests=yes cache-size=20480000KiB servers=114.114.114.114,223.5.5.5.5 

ROS搭建国内外分流环境2_命令行_06

查看gwflist导入的情况

ROS搭建国内外分流环境2_DNS_07


3.2.4、配置Mangle 策略匹配非CN地址,做mark routing 标记为Oversea标记

命令行:

/ip firewall mangle

add action=mark-routing chain=prerouting dst-address-list=!CN new-routing-mark=Oversea passthrough=yes src-address=192.168.88.0/24

/ip firewall nat

add action=masquerade chain=srcnat comment="defconf: masquerade" ipsec-policy=out,none out-interface=ether10

add action=src-nat chain=srcnat comment="Oversea internet" out-interface=gre-tunnel900-to-oversea to-addresses=海外地址

界面操作:

ROS搭建国内外分流环境2_命令行_08

ROS搭建国内外分流环境2_命令行_09

ROS搭建国内外分流环境2_DNS_10


3.2.5、 配置NAT转发及DNS劫持

NAT配置:

ROS搭建国内外分流环境2_NAT_11

DNS劫持配置:

命令行:

/ip firewall filter

add action=fasttrack-connection chain=forward dst-port=53 protocol=udp

/ip firewall nat

add action=redirect chain=dstnat dst-port=53 protocol=udp to-ports=53

界面操作:

ROS搭建国内外分流环境2_NAT_12

ROS搭建国内外分流环境2_NAT_13

ROS搭建国内外分流环境2_命令行_14

3.2.6、配置路由

命令行:

/ip route

add distance=1 gateway=海外ip地址网关(自行替换) routing-mark=Oversea

add distance=1 gateway=192.168.203.254

add distance=1 dst-address=8.8.8.8/32 gateway=海外ip地址网关(自行替换)

界面操作:

ROS搭建国内外分流环境2_命令行_15


4、测试验证

4.1、测试设备上的域名解析情况

由于设备上做了策略,如果直接ping海外网站是ping不通的,但是可以解析出来或者我们可以利用以下命令来验证解析情况

[century@MikroTik] > put [resolve www.youtube.com  server=8.8.8.8]      

142.251.130.14

ROS搭建国内外分流环境2_DNS_16

设备上的dns cache情况

ROS搭建国内外分流环境2_NAT_17


如果dns缓存有问题的话可以用以下命令清除缓存

[century@MikroTik] > ip dns cache flush 


PC端解析海外网站情况

ROS搭建国内外分流环境2_DNS_18

PC端解析国内网站情况

ROS搭建国内外分流环境2_NAT_19

4.2、测试下网页浏览情况

用ip111.cn测试分流情况

ROS搭建国内外分流环境2_NAT_20

ROS搭建国内外分流环境2_NAT_21

ROS搭建国内外分流环境2_DNS_22

国内网站打开情况:

ROS搭建国内外分流环境2_DNS_23

ROS搭建国内外分流环境2_NAT_24



4.3、测试dns劫持情况

PC的dns随意改个IP,我改成10.1.1.1,(随意改)

ROS搭建国内外分流环境2_命令行_25


依旧能正常解析:

ROS搭建国内外分流环境2_命令行_26

网页打开测试:

ROS搭建国内外分流环境2_命令行_27

ROS搭建国内外分流环境2_NAT_28