ros端口映射的另外一种方式

学到了一种新的配置RouterOS端口映射的方法

原方案

  • 添加dst-nat, 填写 Dst. Address Protocol Dst. Port In. Interface, action选择dst-nat, 填写ip和端口

  • 再添加一条回流规则, 把In. Interface 改为lan, 不加回流的话在局域网里使用ddns域名将无法访问服务

  • 为每条规则都加上备注portmap, 方便脚本匹配和修改Dst. Address

1
2
3
4
5
:global ddnsinterface pppoe-out1
:global ddnsip ""
:set ddnsip [/ip address get [find where interface=$ddnsinterface] value-name=address]
:set ddnsip [:pick $ddnsip 0 [:find $ddnsip "/"]]
/ip firewall nat set [find comment="portmap"] dst-address=$ddnsip

新方案

  • 添加dst-nat, 填写 Dst. Address, Action选择jump, Jump Target填自定义的 port-nat

  • 添加Chain选择port-nat, Protocol选择tcp, Dst. Port填写外部端口, action选 dst-nat, 下面的和以前一样

  • 只需要保留jump那一条的注释为portmap即可, 上面的脚本能无缝使用, 其他dst-nat的注释都去掉

新方案优点

  • 不用给每个dst-nat都设置Dst. Address了, 也无需设置In. Interface
  • 脚本只需要更新一条规则的ip即可, 省事儿了
  • 直接支持回流, 一个端口只需要一条规则即可, 不像原方案, 一个端口要两条规则, 累死
Licensed under CC BY-NC-SA 4.0
记录平时瞎折腾遇到的各种问题, 方便查找
使用 Hugo 构建
主题 Stack 3.29.0Jimmy 设计