RouterOS Port Forward 與 NAT 教學:把內網服務安全開到外網

教你在 MikroTik RouterOS 設定 dst-nat、port forward、防火牆放行與基本安全檢查,並說明公網 IP、CGNAT、hairpin NAT 與常見連不進來的原因。

RouterOSMikroTikPort ForwardNATdst-natFirewall防火牆公網IPCGNAT路由器伺服器網路排錯

Port Forward 是把外部連線轉到內網某台設備。例如你有一台內網伺服器 192.168.88.50,想讓外面連到它的 HTTPS 服務。

RouterOS 可以做到,但不要只照抄一條 NAT 規則。你還要確認自己有公網 IP、防火牆有正確放行,而且沒有把不該公開的服務暴露出去。

先確認你有沒有公網 IP

在 RouterOS 看 WAN IP:

/ip address print
/ip cloud print

再用外部網站查你的出口 IP。兩邊如果不同,可能是:

  • 你在 ISP 的 CGNAT 後面。
  • 前面還有另一台路由器。
  • PPPoE / DHCP 拿到的是私有 IP。

如果 WAN IP 是這些範圍,多半不是可直接連進來的公網 IP:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16
  • 100.64.0.0/10

沒有公網 IP 時,port forward 通常不會成功。你需要向 ISP 申請固定 IP / 公網 IP,或改用 VPN、Tunnel、反向代理等方式。

基本 dst-nat 範例

假設:

  • WAN interface:ether1
  • 內網伺服器:192.168.88.50
  • 外部 port:443
  • 內部 port:443

設定 NAT:

/ip firewall nat add chain=dstnat in-interface=ether1 protocol=tcp dst-port=443 action=dst-nat to-addresses=192.168.88.50 to-ports=443 comment="Forward HTTPS to server"

如果 WAN 是 PPPoE,要改成:

/ip firewall nat add chain=dstnat in-interface=pppoe-out1 protocol=tcp dst-port=443 action=dst-nat to-addresses=192.168.88.50 to-ports=443 comment="Forward HTTPS to server"

防火牆也要放行

有些預設防火牆會擋 forward chain。你需要允許已 dst-nat 的連線:

/ip firewall filter add chain=forward connection-nat-state=dstnat action=accept comment="Allow port forwarded traffic"

規則位置很重要。如果前面已經有 drop rule,新增在後面可能不會生效。請用:

/ip firewall filter print

確認順序。

不要公開管理介面

不要把這些服務直接 port forward 到外網:

  • WinBox。
  • SSH。
  • WebFig。
  • RouterOS API。
  • NAS 管理後台。
  • 沒有更新的攝影機或 IoT 後台。

如果真的要遠端管理,優先用 VPN,或至少限制來源 IP。

常見連不進來原因

狀況可能原因
外面完全連不到沒有公網 IP、ISP 擋 port、前面還有一台路由器
NAT 有寫但沒生效in-interface 寫錯、port 寫錯、connection tracking 舊連線未清
內網可以連,外網不行防火牆 forward chain 擋住、服務只 listen 在內網
用網域測不通DNS 還沒指到正確公網 IP
從內網用公網域名連不回來可能需要 hairpin NAT 或 split DNS

RouterOS 官方提醒,NAT 只處理連線的第一個封包,後續由 connection tracking 記住。改 NAT 後如果測試怪怪的,可以清掉 connection tracking 或等連線過期。

檢查 NAT 規則命中

查看 NAT counter:

/ip firewall nat print stats

如果外面測試時 counter 完全不增加,代表封包沒有打到這條規則。先查:

  • WAN interface 是否寫對。
  • 外部 port 是否寫對。
  • 公網 IP 是否真的在這台 RouterOS 上。
  • ISP 是否擋了 port。

測試方式

從外部網路測,不要只在同一個 LAN 裡測。

可以用手機 5G 測:

curl -I https://你的網域/

或測 port:

nc -vz 你的網域 443

Windows 可以用 PowerShell:

Test-NetConnection 你的網域 -Port 443

安全建議

  • 只開必要 port。
  • 內部服務要更新。
  • 管理介面不要開到全 Internet。
  • 有條件就限制來源 IP。
  • 做好 log 與備份。
  • 不確定時先用 VPN,不要直接公開後台。

下一步

如果你還不確定 WAN / LAN / NAT 基礎設定,先看 RouterOS 新手第一次設定

如果 port forward 仍不通,請看 RouterOS 基礎排錯教學

參考資料:

需要主機來實作?

侃瑞科技提供 cPanel 虛擬主機與 VPS,教學裡的操作開箱即用。

查看方案 →