MikroTik RouterOS 端口映射与防火墙配置实操
整理 MikroTik RouterOS 端口映射与防火墙配置的完整实操流程,涵盖 dst-nat 端口转发、回流(Hairpin NAT)、防火墙规则、fasttrack 加速和连接追踪,附命令行示例和常见问题排查方法。
# MikroTik RouterOS 端口映射与防火墙配置实操
## 前言
MikroTik RouterOS 在中小企业网络里应用广泛,但它的配置逻辑(Chain、NAT、Connection Tracking)对新手有一定门槛。本文聚焦最常用的端口映射和防火墙场景,给出可直接套用的配置。
## 基础概念
RouterOS 防火墙分两块:
- **Filter Rules**:过滤规则(input/forward/output)
- **NAT Rules**:地址转换(srcnat/dstnat/masquerade)
NAT 规则同样遵循从上到下匹配。
## 场景一:内网上网(masquerade)
```bash
/ip firewall nat
add chain=srcnat src-address=192.168.1.0/24 out-interface=ether1 action=masquerade
```
ether1 是外网口,所有内网流量出去时伪装成外网口 IP。
## 场景二:端口映射(dst-nat)
把外网 8080 端口映射到内网 192.168.1.10 的 80 端口:
```bash
/ip firewall nat
add chain=dstnat protocol=tcp dst-port=8080 in-interface=ether1 action=dst-nat to-addresses=192.168.1.10 to-ports=80
```
映射多个端口:
```bash
/ip firewall nat
add chain=dstnat protocol=tcp dst-port=80 in-interface=ether1 action=dst-nat to-addresses=192.168.1.10 to-ports=80
add chain=dstnat protocol=tcp dst-port=443 in-interface=ether1 action=dst-nat to-addresses=192.168.1.10 to-ports=443
```
## 场景三:回流(Hairpin NAT)
内网设备通过公网 IP/域名访问自己的服务器时,需要回流规则:
```bash
/ip firewall nat
add chain=srcnat src-address=192.168.1.0/24 dst-address=192.168.1.10 protocol=tcp dst-port=80 out-interface=bridge action=masquerade
```
没有这条规则,内网访问公网域名会超时。
## 场景四:基础防火墙规则
```bash
/ip firewall filter
# 放行已建立连接
add chain=input connection-state=established,related action=accept
add chain=forward connection-state=established,related action=accept
# 放行内网访问路由器(管理)
add chain=input in-interface=bridge action=accept
# 放行 ICMP
add chain=input protocol=icmp action=accept
# 最后默认丢弃
add chain=input action=drop
add chain=forward action=drop
```
注意规则顺序:先 accept 再 drop。
## 场景五:Fasttrack 加速
高带宽场景开启 fasttrack 降低 CPU 占用:
```bash
/ip firewall filter
add chain=forward action=fasttrack-connection connection-state=established,related
add chain=forward action=accept connection-state=established,related
```
fasttrack 规则要放在其他 forward 规则之前。
## 常见问题排查
### 问题1:端口映射后外网仍访问不了
- 确认 dst-nat 规则的 in-interface 是否正确
- 确认 forward 链没有 drop 掉该流量
- 确认内网服务器网关指向路由器
```bash
# 查看 NAT 规则
/ip firewall nat print
# 查看连接表
/ip firewall connection print where dst-address=192.168.1.10
```
### 问题2:规则不生效
检查规则顺序,RouterOS 从上到下匹配,第一条命中的规则生效。用 `print` 看顺序,必要时用 `move` 调整:
```bash
/ip firewall nat move 3 0
```
### 问题3:内网访问公网域名失败
加回流规则(场景三),或改用内网 DNS 解析到内网 IP。
## 小结
RouterOS 端口映射核心就三条:srcnat(上网)、dst-nat(映射)、masquerade(回流)。防火墙记住"放行已建立连接 + 放行管理 + 默认丢弃"的顺序。配完用 `print` 检查规则顺序,用连接表验证流量走向。