timg.jpeg

0x00

由于 Mikrotik 这个品牌的使用在国内普及度并不高,有些略微复杂的问题很难在百度上有效搜索。知识碎片化也让一些疑难杂症难以解决。

本博客将开设专门的 Mikrotik 系列记录使用 Mikrotik-RouterOS 家用以来解决的以下几个核心点,以及方案思路。

点击下面的链接可以快速跳转到不同的文章:

  • 《家宽拨号后为动态地址,解决 ROS 拨号后的 DDNS 问题》
  • 《内网使用公网地址访问内网机器的问题(俗称流量回流)》
  • 《减少运营商的公网 IP 地址的随机变动,将随机变为可控》
  • 《家宽如何变相解决 80 和 443 端口被封锁》
  • 《抛弃光猫,让 ROS 使用 GPON 模块直插入户光纤》

0x01

大部分智能路由器设置端口映射后,无需其他操作,被映射的端口就能被公网以及内网用户所访问。

但 ROS 不同的是,ROS 在 NAT 防火墙设置端口映射之后,公网地址能够正常访问,但内网使用公网地址访问的时候却不通。

这是因为内网的路由出外网之后,没有设置对应的回流配置,无法正常回流导致的。

0x02

正确的回流方法是需要设置 IP-Firewall-NAT 规则下的 Dst.Address,但家用宽带的 IP 不固定,不可能每次变动都去更新一次,特别是端口特别多的时候。

搜索了一圈,百度大部分的教程都使用一种脚本,配合 Scheduler 定时执行,

大致的流程为:

从PPPOE端口获取公网地址--->通过防火墙的Comments修改对应的Dst.Address

这种脚本方案固然很好,但是 IP 不是时刻都在变动,只是随机性改变(据我观察,最短时间大约 1 天半,最长时间 IP 能保持 3 天左右不会改变),于是通过 Scheduler 每隔 X 分钟定时执行有一种无脑的感觉(大部分都是空执行),设置太长时间又怕 IP 变动后有大幅度的空档期需要等待脚本执行。

当然,也可以用一些小技巧来控制IP的变动时间,可以参阅我的另外一个文章:《家宽拨号后为动态地址,解决 ROS 拨号后的 DDNS 问题》

0x03

根据很长时间的摸索,我个人研究出了一个免脚本更新 IP 地址的方法,这个方法涉及到 ROS 的两个自带功能:

  • ROS 自带的 DDNS 动态解析
  • ROS 防火墙自带的 AddressList 功能

大致思路:将ROS自带的DDNS域名放入到AddressList中,再将所有需要映射的端口用AddressList的方式替代Dst.Address,这个操作实将上 AddressList 当做 ROS 的一个变量进行使用。

0x04 实际操作

获取 ROS 的 DDNS 地址

不多叙述,可以参阅我的另外一个文章:《减少运营商的公网 IP 地址的随机变动,将随机变为可控》

gg.png

将获取的 DDNS 域名填入到 AddressList 中

address list.png

address2.png

修改防火墙的 NAT 规则,改用 AddressList

address3.png

0x05

至此已完成回流方案的优化操作,如果有其他疑问,可以在下面留言,我会依次解答。