介绍

MikroTik RouterOS支持通用即插即用架构,用于个人电脑和支持网络的智能设备或电器的透明对等网络连接。

UPnP使任何两个设备在网络上任何控制设备的命令下进行数据通信。通用即插即用完全独立于任何特定的物理介质。无需任何初始配置就能自动发现的网络,据此,设备可以动态地加入一个网络。DHCP和DNS服务器是可选的,如果网络上有,就会使用。UPnP实现了一个简单而强大的NAT穿越解决方案,使客户能够从NAT后面获得完全的双向对等网络支持。

UPnP有两种接口类型。内部(本地客户连接的接口)和外部(互联网连接的接口)。一个路由器只能有一个活动的外部接口,上面有一个"公共"IP地址,并根据需要有许多内部接口,都有源NAT的 "内部"IP地址。该协议通过创建动态NAT条目工作。

UPnP协议用于许多现代应用,如大多数DirectX游戏,以及各种Windows Messenger功能,如远程协助、应用共享、文件传输、语音、防火墙后的视频。

配置

常规属性

/ip upnp

属性 说明
allow-disable-external-interface (yes | no ; Default: yes) 是否允许用户禁用路由器的外部接口。这个功能(让用户能够在没有任何认证的情况下关闭路由器的外部接口)是标准所要求的,但由于在UPnP部署中有时并不期望或不需要这个功能,而这个标准并不是为其设计的(它主要是为家庭用户建立自己的本地网络而设计),可以禁用这个行为
enabled (yes | no ; Default: no) 启用UPnP服务
show-dummy-rule (yes | no ; Default: yes) 启用一个解决方法以应对一些破损的实现,这些实现正在错误地处理没有UPnP规则的情况(例如,弹出错误信息)。这个选项指示服务器安装一个假的(无意义的)UPnP规则,可以被客户端观察到,否则会拒绝正确工作

如果没有禁用 允许禁用外部接口,任何来自本地网络的用户都可以(无需任何认证程序)禁用路由器的外部接口。

UPnP 接口

/ip upnp interface

属性 说明
interface (string; Default: ) 运行uPnP的接口名称
type (external | internal; Default: no) UPnP接口类型:
- external (外部)- 全局IP地址分配的接口
- internal (内部)- 客户端连接到路由器的本地接口。
forced-external-ip (Ip; Default: ) 如果外部接口有多个IP可用,允许指定使用哪个公共IP。

在带有VLAN的更复杂的设置中,VLAN接口被认为是LAN接口,VLAN接口本身应被指定为内部接口,使UPnP正常工作。

配置实例

路由器上已经启用了伪装功能:

[admin@MikroTik] ip upnp> /ip firewall src-nat print
Flags: X - disabled, I - invalid, D - dynamic
  0   chain=srcnat action=masquerade out-interface=ether1
[admin@MikroTik] ip upnp>

启用UPnP特性:

[admin@MikroTik] ip upnp> set enable=yes
[admin@MikroTik] ip upnp> print
                             enabled: yes
    allow-disable-external-interface: yes
                     show-dummy-rule: yes
[admin@MikroTik] ip upnp>

现在要做的就是添加接口:

[admin@MikroTik] ip upnp interfaces> add interface=ether1 type=external
[admin@MikroTik] ip upnp interfaces> add interface=ether2 type=internal
[admin@MikroTik] ip upnp interfaces> print
Flags: X - disabled
  #   INTERFACE TYPE
  0 X ether1    external
  1 X ether2    internal

[admin@MikroTik] ip upnp interfaces> enable 0,1

现在,一旦客户端从内部接口一侧发送UPnP请求,动态NAT规则将在路由器上创建,示例规则看起来类似以下内容:

[admin@MikroTik] > ip firewall nat print
Flags: X - disabled, I - invalid, D - dynamic

0 chain=srcnat action=masquerade out-interface=ether1

1 D ;;; upnp 192.168.88.10: ApplicationX
chain=dstnat action=dst-nat to-addresses=192.168.88.10 to-ports=55000 protocol=tcp
dst-address=10.0.0.1 in-interface=ether1 dst-port=55000

2 D ;;; upnp 192.168.88.10: ApplicationX
chain=dstnat action=dst-nat to-addresses=192.168.88.10 to-ports=55000 protocol=udp
dst-address=10.0.0.1 in-interface=ether1 dst-port=55000