@
raycheung Router OS 端口映射,支持回流
/ip firewall nat
add action=src-nat chain=srcnat comment=SNAT to-addresses=111.175.157.94
add action=dst-nat chain=dstnat comment=HairpinNAT dst-address=111.175.157.94 dst-port=21194 protocol=udp to-addresses=192.168.88.2 to-ports=21194
add action=dst-nat chain=dstnat comment=HairpinNAT dst-address=111.175.157.94 dst-port=8443 protocol=tcp to-addresses=192.168.88.201 to-ports=8443
说明:action=src-nat 规则行设置 NAT ,action=dst-nat 规则行设置支持回流的端口映射
其中 111.175.157.94 为公网 IP ,这里可以不手动修改,利用下面的脚本自动修改!
特别注意的是,注释:comment 指令不能省略,下面的脚本根据这个来更新规则的!
================================================
Router OS 自动更新上面规则中公网 IP 的脚本
:global ipaddr [/ip address get [/ip address find interface="pppoe-out1"] address];
:set ipaddr [:pick $ipaddr 0 ([len $ipaddr]-3)];
:global oldip [/ip firewall nat get [/ip firewall nat find chain=srcnat action=src-nat] to-addresses];
:if ($ipaddr != $oldip) do={
/ip firewall nat set [/ip firewall nat find chain=srcnat action=src-nat comment="SNAT"] to-addresses=$ipaddr;
/ip firewall nat set [/ip firewall nat find chain=dstnat action=dst-nat comment="HairpinNAT"] dst-address=$ipaddr;
}
将此脚本放到 RouterOS 中运行,其中 pppoe-out1 是 PPPoE 拨号接口的名字!
这个脚本从 pppoe-out1 接口获取公网 IP ,然后去 firewall nat 表更新 comment="SNAT" 和 comment="HairpinNAT" 规则中的公网 IP
设置这个脚本在 RouterOS 中每 10 分钟运行一下就可以了,完美解决 RouterOS 回流问题!
就是这么简单!