【RouterOS(ROS)】UPNP 设置 - 自动老化及重拨后修改 IP

  • 以下脚本命令基于 ROS 7.2.3,其他版本不一定适用

  • 此脚本在 7.9 或更早已经失效,新版本的 ROS 不允许删除动态对象

  • ROS 开启 UPNP 后,会自动映射端口,所生成的端口映射可以在 IP - Firewall - NAT 中查询,但 ROS 自动生成的端口映射没有老化时间,需要手动进行删除,或使用脚本进行删除,这里记录一下编写的脚本。

  • upnp 老化(自行设定定时执行)

    1
    2
    3
    4
    5
    6
    7
    /ip firewall nat;
    :foreach singleRule in=[find where dynamic=yes] do={
    :if ([:ping [get $singleRule to-addresses] count=2] < 1) do={
    remove $singleRule
    :log warning "*** 删除不可用的 upnp 规则 ***";
    }
    };
  • 拨号后自动修改 dst-address (建议 pppoe 接口绑定拨号脚本,然后在 PPP - Profiles 下添加)

    1
    2
    3
    4
    5
    6
    7
    8
    :global addold
    :global addnew
    :set addnew [/interface get [/interface find name="pppoe-out1"] running]
    :if ($addnew=true) do={
    :set addold [/ip address get [/ip address find dynamic=yes interface="pppoe-out1"] address]
    :set addold [:pick $addold 0 ([:len $addold ] -3)]
    /ip firewall nat set [find dynamic=yes comment ~"^upnp*."] dst-address=$addold
    }

End

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2022-2023 tty228
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信