UniFi - UniFi 设备的 3 层采用与管理

前言

UniFi 企业网解决方案摒弃了传统的硬件管理器( AC )的方式, 改而采用免费提供控制器软件,使得网络建设投入成本大幅降低并且灵活性大大提升。 在许多情况下,UniFi 控制器不一定需要运行在站点中,您也可以将控制器放在云端或者您的片上网络(NoC)上运行, 这样您分布在多个区域的项目就不再受站点数量和位置的限制了(比如连锁酒店、跨国企业等)。在本贴中我们将会教大家几种在通过 3 层的方式来采用 UniFi 设备的方法,这些方式适用于所有 UniFi 网络产品,包含:

  • UniFi® Security Gateway (交换机)
  • UniFi® AP (无线接入点)
  • UniFi® Switch (交换机)

 

 

实施流程

假如我们手上有一个新的 UniFi 企业无线覆盖工程, 我们需要:

  1. 租用云服务器(可参考国内腾讯云上安装控制器实例) 或自行架设云服务器(需要固定公网 IP 和开放端口)并安装 UniFi 控制器
  2. 待采用的 UniFi 设备;
  3. 当我们到客户现场后,在浏览器中打开云端控制器;
  4. 可以通过以下三种方式来将站点中的 UniFi 设备指向云控制器:
  5. 指向完成后即可以在任何地方长期对设备进行配置/管理/监控,并且很多云服务器提供商还具备非常强大的防火墙功能,可以确保控制器数据的安全

注意:

  1. 在执行 inform 命令的时候, 需要确保你的 UniFi 设备能够访问公网,即与云 AC 是可以连通
  2. 本教程假设所有待管理的 UniFi 设备都处于出厂默认状态(即未被管理过),如果如果AP不在默认状态,请先复位。

 

 

提前了解

读者在开始 3 层管理之前应先了解一下 UniFi 的工作原理(例如当AP和控制器都同在同一个 L2 网络中时),L3管理在增加了许多不确定因素 (比如网络更复杂),不过也不必担心,了解以下两点有助于我们理解 3 层管理操作的原理所在:

  • 在工具采用和 SSH 采用时:UniFi 设备有一个默认的通知 URL:http://unifi:8080/inform( 2 层采用的默认地址),其实在 3 层采用时,只需要把这个地址替换成云 AC 的地址就可以了,即 http://unifi控制器地址:8080/inform
  • 在 DHCP option 43 和 DNS 采用时:使用 DHCP option 43 或 DNS 是为了让 UniFi 设备知道公网中控制器的 IP 地址。

 

 

操作方式

当云服务器架设好后,您需要将新的 UniFi 设备采用到云服务器上的某个站点,以下为您详解这 五种将 UniFi 设备指向云服务器的方式,用户可选择任意一种方式均可实现。

 

方式一:Ubiquiti 设备发现工具

不是所有环境都有配置 DHCP 服务器,有些甚至连 DNS 服务器也没有。这就是为什么要有 UniFi 发现实用工具, 它从 UniFi AP 监听多播/广播封包并让你告诉 AP 任何你想要用的 URL(只有在出厂默认状态或者未与其它控制器连接中的 AP 才会显示出来)

  • 打开 Ubiquiti Device Discovery Tool > 选择 UNIFI FAMILY > 此时会发现设备正处于 Pending 的状态 > 点击 ACTION 进行操作>
  • Action 中选择 Set Inform > 在 Inform URL 中将 UniFi 字段替换成云 AC 地址(其它字段不变)
  • 最后 EXECUTE 执行操作 

  • 然后你就可以在对应的 UniFi 云控制器上找到这台 AP, 呈 ‘等待采用中’ 状态,然后点击 ‘采用’ 按钮
  • (建议隔 5 ~ 10 秒后再重复按 1 次 EXECUTE 键 )等到其变更为 ‘已连接’ 状态即代表采用完成

注:如果有多个站点,需要先切换到待采用的站点中,如:

 

另外,在个人电脑上安装 UniFi 控制器时也会默认安装一个 UniFi 发现实用工具,同样也可以用来实施 3 层采用。相关操作可参考:UniFi - 如何使用 UniFi 发现工具 (UniFi-Discover)。您可以通过以下路径找到这个 java 程序:

  • 在Windows操作系统下,它在 开始->Ubiquiti UniFi->UniFi-Discover下
  • 在Mac操作系统下,/Applications/UniFi-Discover.app (或者使用Spotlight可以找到)
  • 运行 "java -jar <unifi_base>/lib/ace.jar discover"

 

 

 

方式二:UniFi 手机 App

  • 在 UniFi 手机 App 中选择云访问

  • 登录要 3 层指向的控制器,并切换到对应站点
  • 在 更多 页下实用工具中找到 3 层采用

  • 会自动发现处在默认状态的 UniFi 设备,点击采用

  • 等待设备处于 已连接 状态,即代表采用完成

 

 

 

方式三:DNS

  • 你需要去设置你的 DNS 服务器去解析 unifi 到你的控制器的IP地址,确保 AP 能够解析到控制器的域名。比如说, 如果你设定 http://XYZ:8080/inform, 然后从 AP 端去 ping 来确定XYZ是否能被解析/到达
  • 或者, 为控制器通知 URL, http://FQDN:8080/inform 使用 FQDN
  • 问题排查 - AP (用静态 IP ) 连接到 L3 控制器失败
    • 在控制器UI中, 当设置一个 AP 的地址从 DHCP 到静态后,确保你有填入 DNS 的 IP 地址, 如果没有,则 AP 无法连接 DNS 去解析控制器域名
    • 如果 AP 有被复位过(通过按复位键),有时你需要用发现工具将控制器的 IP 重复 inform 一次. 

 

 

 

方式四:DHCP Option 43

要使用DHCP option 43你需要设定你的DHCP服务器, 比如说:

Linux's ISC DHCP server: dhcpd.conf 配置:

# ...
option space ubnt;
option ubnt.unifi-address code 1 = ip-address;

class "ubnt" {
        match if substring (option vendor-class-identifier, 0, 4) = "ubnt";
        option vendor-class-identifier "ubnt";
        vendor-option-space ubnt;
}

subnet 10.10.10.0 netmask 255.255.255.0 {
        range 10.10.10.100 10.10.10.160;
        option ubnt.unifi-address 201.10.7.31;  ### UniFi Controller IP ###
        option routers 10.10.10.2;
        option broadcast-address 10.10.10.255;
        option domain-name-servers 168.95.1.1, 8.8.8.8;
        # ...
}

 

思科命令行(CLI)配置:

# assuming your UniFi is at 192.168.3.10
ip dhcp pool <pool name>
network <ip network> <netmask>
default-router <default-router IP address>
dns-server <dns server IP address>
option 43 hex 0104C0A8030A # 192.168.3.10 -> CO A8 03 0A

# Why 0104C0A8030A ?
#
# 01: suboption
# 04: length of the payload (must be 4)
# C0A8030A: 192.168.3.10

 

Mikrotik 命令行配置:

/ip dhcp-server option add code=43 name=unifi value=0x0104C0A8030A
/ip dhcp-server network set 0 dhcp-option=unifi

# Why 0104C0A8030A ?
#
# 01: suboption
# 04: length of the payload (must be 4)
# C0A8030A: 192.168.3.10

Cisco 有一篇写得很不错的介绍 DHCP option 43 设置的文章

 

在 Ubiquiti EdgeRouter 上的配置:

对于 UBNT 的 EdgeRouter 路由器, 设置起来就非常简单了, 只需要简单地在 DHCP 服务器上面填上你的三层 UniFi 控制器的 IP 地址就可以了:

 

 

 

 

方式 五:SSH 

  • 先确保 UniFi 控制器界面能够兼容设备的固件,否则请升级固件
  • 请确保 UniFi 设备正处于出厂默认状态,否则用以下命令使其恢复到出厂默认
syswrapper.sh restore-default
  • 再次 SSH 进到待采用的设备上,输入以下命令:
set-inform http://ip-of-controller:8080/inform
  • 在控制器对应站点下点击 采用 该设备,点击后设备会短暂呈离线状态;
  • (重要!!!) 在离线后请重下一次 set-inform 命令,这样才会将设备采用信息完全记录在云控制器上
  • 直到设备显示 已连接 状态,代表 3 层采用完成

 

延伸阅读:阿里云上安装 UniFi 控制器的基础教学(Ubuntu 版)