Mikrotik 中的 TR-069。 嘗試使用 Freeacs 作為 RouterOS 的自動設定伺服器

在本文中,我將嘗試逐步描述為一個精彩專案安裝測試伺服器的過程 自由克斯 到完全運行狀態,並展示使用 mikrotik 的實用技術:透過參數配置、執行腳本、更新、安裝附加模組等。

本文的目的是鼓勵同事們放棄使用可怕的耙子和拐杖來管理網路設備,以自寫腳本、Dude、Ansible 等形式。並且,在這個場合,引起煙火和群眾歡呼。方形。

0. 選擇

為什麼在中提到了 freeacs 而不是 genie-acs mikrotik-wiki,怎樣才更有活力呢?
因為根據 genie-acs 和 mikrotik 的說法,有西班牙人的出版物。 他們來了 PDF格式 и 視頻 來自去年的媽媽。 幻燈片上的漫畫很酷,但我想擺脫編寫腳本、運行腳本、運行腳本的概念...

1.安裝freeacs

我們將其安裝在Centos7中,由於設備傳輸的資料量相當大,且ACS主動與資料庫合作,因此我們不會貪婪地佔用資源。 為了舒適的工作,我們將分配 2 個 CPU 核心、4GB RAM 和 16GB 快速 SSD raid10 儲存。 我將在 Proxmox VE lxc 容器中安裝 freeacs,您可以使用任何方便的工具進行工作。
請務必在 ACS 計算機上設定正確的時間。

該系統將是一個測試系統,因此我們不會吹毛求疵,只是按原樣使用善意提供的安裝腳本。

wget https://raw.githubusercontent.com/freeacs/freeacs/master/scripts/install_centos.sh
chmod +x install_centos.sh
./ install_centos.sh

腳本完成後,您可以立即透過機器的 IP、使用 admin/freeacs 憑證進入 Web 介面

Mikrotik 中的 TR-069。 嘗試使用 Freeacs 作為 RouterOS 的自動設定伺服器
這是一個非常漂亮的簡約介面,一切都變得多麼酷和快

2. freeacs的初始設置

ACS 的基本管理單元是單元或 CPE(客戶駐地設備)。 我們管理單位最重要的是他們的單位類型,即定義單元及其軟體的一組可設定參數的設備模型。 但是,雖然我們不知道如何正確創建新的單位類型,但最好透過開啟發現模式來詢問單位本身。

這種模式絕對不能用於生產,但我們需要盡快啟動引擎,看看系統的能力。 所有基本設定都儲存在 /opt/freeacs-* 中。 因此,我們打開

 vi /opt/freeacs-tr069/config/application-config.conf 

, 我們發現

discovery.mode = false

並更改為

discovery.mode = true

此外,我們希望增加 nginx 和 mysql 可以使用的最大檔案大小。 對於 mysql,將該行新增至 /etc/my.cnf

max_allowed_packet=32M

,對於 nginx,添加到 /etc/nginx/nginx.conf

client_max_body_size 32m;

到 http 部分。 否則,我們將能夠使用不超過 1M 的韌體。

我們重新啟動,準備好使用設備。

在設備(CPE)的角色中,我們將擁有一個勤奮的寶寶 hAP AC 精簡版.

在進行測試連接之前,建議手動將CPE配置為最低工作配置,以便日後要配置的參數不為空。 對於路由器,您至少可以在 ether1 上啟用 dhcp 用戶端,安裝 tr-069client 軟體包並設定密碼。

3. 連接 Mikrotik

建議使用有效的序號作為登入名稱來連接所有裝置。 然後日誌中的所有內容都會一目了然。 有人建議使用 WAN MAC - 不要相信。 如果有人使用每個人都通用的登入/密碼對,請避免使用他們。

開啟日誌tr-069來監控“談判”

tail -f /var/log/freeacs-tr069/tr069-conversation.log

開啟winbox,選單項目TR-069。
ACS 網址: http://10.110.0.109/tr069/prov (替換為你的IP)
使用者名稱:9249094C26CB(從系統>路由器板複製序號)
密碼:123456(發現不需要,但需要)
我們不會改變定期通知間隔。 我們將透過 ACS 發布此設置

以下是連接遠端初始化的設置,但我無法讓 mikrotik 使用此設置。 儘管遠端請求可以透過電話開箱即用。 我們得想辦法。

Mikrotik 中的 TR-069。 嘗試使用 Freeacs 作為 RouterOS 的自動設定伺服器

點擊「套用」按鈕後,資料將在終端機中交換,在 Freeacs Web 介面中,您將能夠看到我們的路由器具有自動建立的單元類型「hAPaclite」。

Mikrotik 中的 TR-069。 嘗試使用 Freeacs 作為 RouterOS 的自動設定伺服器

路由器已連線。 您可以查看自動建立的單位類型。 開幕 Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite。 什麼沒有啊! 多達928個參數(我在shell中查看過)。 無論是多還是少,我們稍後會弄清楚,但現在我們只是快速瀏覽一下。 這就是單位類型的意義。 這是受支援參數的列表,其中包含鍵但沒有值。 這些值在以下級別中設定 - 設定檔和單位。

4. 設定 Mikrotik

是時候下載了 網頁介面指南 這本 2011 年手冊就像一瓶陳年好酒。 讓我們打開它,讓它呼吸。

而我們自己,在網路介面中,點擊我們單位旁邊的鉛筆,然後進入單位配置模式。 它看起來像這樣:

Mikrotik 中的 TR-069。 嘗試使用 Freeacs 作為 RouterOS 的自動設定伺服器

我們簡單看一下這個頁面有什麼有趣的地方:

單元配置區塊

  • 設定檔:這是單元類型內的設定檔。 層次結構是這樣的: UnitType > Profile > Unit。 也就是說,我們可以創建例如配置文件 hAPaclite > hotspot и hAPaclite > branch,但在設備模型內

配置區塊 帶按鈕
工具提示提示設定區塊中的所有按鈕都可以透過 ConnectionRequestURL 立即套用設定。 但是,正如我上面所說,這不起作用,因此按下按鈕後,您需要重新啟動 mikrotik 上的 tr-069 用戶端才能手動啟動設定。

  • Freq/Spread:每週多少次下發配置±%,以減少伺服器和通訊通道的負載。 預設為 7/20,即每天 ± 20% 並以秒為單位提示具體情況。 目前還沒有必要改變交貨頻率,因為… 日誌中會有額外的噪音,並且設定不會總是按預期應用

配置歷史區塊 (近 48 小時)

  • 從外觀上看,這個故事就像一個故事,但透過點擊標題,您將進入一個方便的資料庫搜尋工具,其中包含正規表示式和好東西

參數區塊

最大和最重要的區塊,實際上是在其中設定和讀取給定單元的參數。 現在我們只能看到最重要的系統參數,沒有這些參數,ACS 就不可能與裝置一起運作。 但我們記得在我們的單位類型中我們有它們 - 928。 讓我們看看所有的含義並決定每個人都用 Mikrotik 吃什麼。

4.1 讀取參數

在“配置”區塊中,按一下“全部讀取”按鈕。 方塊上刻有紅色銘文。 右側會出現一欄 CPE(當前)值。 系統參數中,ProvisioningMode已變更為READALL。

Mikrotik 中的 TR-069。 嘗試使用 Freeacs 作為 RouterOS 的自動設定伺服器

而且...除了 System.X_FREEACS-COM.IM.Message 中的訊息之外,什麼也不會發生 Kick failed at....

重新啟動TR-069用戶端或重新啟動路由器,繼續重新整理瀏覽器頁面,直到看到右側灰色方塊中的參數
如果有人想喝一口陳年酒,該模式在手冊中被描述為10.2檢查模式。 它的啟動和工作方式略有不同,但本質描述得很好

Mikrotik 中的 TR-069。 嘗試使用 Freeacs 作為 RouterOS 的自動設定伺服器

READALL 模式將在 15 分鐘後自行關閉,我們將嘗試找出此處有用的內容,以及在此模式下可以「即時」更正的內容。

您可以更改 IP 位址、啟用/停用介面、帶有註解的防火牆規則(否則就一團糟)、Wi-Fi 等等。

也就是說,僅使用 TR-069 還無法正確設定 mikrotik。 但你可以很好地監控它。 提供有關介面及其狀態、可用記憶體等的統計資訊。

4.2 傳遞參數

現在讓我們嘗試透過 tr-069 以「自然」的方式將參數傳遞到路由器。 第一個受害者將是 Device.DeviceInfo.X_MIKROTIK_SystemIdentity。 我們在 All 單元的參數中找到它。 正如您所看到的,它沒有被指定。 這意味著任何單位本身都可以擁有任何身分。 忍夠了這個!
點擊建立列中的複選框,設定名稱 Mr.White 並點擊更新參數按鈕。 你已經猜到接下來會發生什麼事了。 在與總部的下一次通訊會話期間,路由器必須更改其身分。

Mikrotik 中的 TR-069。 嘗試使用 Freeacs 作為 RouterOS 的自動設定伺服器

但這對我們來說還不夠。 在搜尋所需單位時,最好始終準備好諸如“身份”之類的參數。 按一下參數名稱並選取顯示 (D) 和可搜尋 (S) 複選框。 參數鍵更改為 RWSD(記住,名稱和鍵是在最高單元類型層級設定的)

Mikrotik 中的 TR-069。 嘗試使用 Freeacs 作為 RouterOS 的自動設定伺服器

該值現在不僅顯示在常規搜尋清單中,還可以在 Support > Search > Advanced form

Mikrotik 中的 TR-069。 嘗試使用 Freeacs 作為 RouterOS 的自動設定伺服器

我們發起提供並查看身份。 懷特先生您好! 現在,當 tr-069client 運行時,您將無法更改您的身份

Mikrotik 中的 TR-069。 嘗試使用 Freeacs 作為 RouterOS 的自動設定伺服器

4.3 執行腳本

既然我們發現沒有它們我們就無法生存,那麼就讓我們實施它們。

但在我們開始處理文件之前,我們需要先更正指令 public.url 在文件中 /opt/freeacs-tr069/config/application-config.conf
我們仍然使用一個腳本安裝了一個測試配置。 你忘記了嗎?

# --- Public url (used for download f. ex.) ---
public.url = "http://10.110.0.109"
public.url: ${?PUBLIC_URL}

我們重新啟動 ACS 並直接前往 Files & Scripts.

Mikrotik 中的 TR-069。 嘗試使用 Freeacs 作為 RouterOS 的自動設定伺服器

但現在向我們開放的是Unit Type,即全域到所有 hAP ac lite 路由器,無論是分支路由器、熱點或 capsman。 我們還不需要這麼高的級別,因此在使用腳本和檔案之前,我們應該要建立一個設定檔。 您可以將此稱為設備的「職責」。

讓我們的寶寶成為一個時間伺服器。 一個不錯的位置,有一個單獨的軟體包和少量的參數。 讓我們去 Easy Provisioning > Profile > Create Profile 並在單位類型中建立設定檔:hAPaclite 時間伺服器。 我們的預設設定檔中沒有任何參數,因此無需複製任何內容 複製參數:“不要複製...”

Mikrotik 中的 TR-069。 嘗試使用 Freeacs 作為 RouterOS 的自動設定伺服器

這裡還沒有參數,但可以設定我們稍後希望在時間伺服器上看到的參數,這些參數是由 hAPaclite 拼湊而成的。 例如,NTP 伺服器的通用位址。
讓我們轉到單位配置並將其移至時間伺服器配置文件

我們終於要去 Files & Scripts,製作腳本,這裡有令人驚奇的方便的麵包等著我們。

為了在單元上執行腳本,我們需要選擇 類型:TR069_SCRIPT а 姓名 и 目標名稱 必須具有副檔名 .alter
同時,對於腳本,與軟體不同,您可以下載現成的文件,也可以簡單地在現場編寫/編輯它 內容。 讓我們試著把它寫在那裡。

為了讓您可以立即看到結果,讓我們在 ether1 上的路由器中新增一個 VLAN

/interface vlan
add interface=ether1 name=vlan1 vlan-id=1

Mikrotik 中的 TR-069。 嘗試使用 Freeacs 作為 RouterOS 的自動設定伺服器

開車進去,按 上傳 你就完成了。 我們的劇本 vlan1.alter 伺機而動。

嗯,我們走吧? 不。 我們還需要為我們的個人資料添加一個群組。 群組不包含在裝置層次結構中,但需要在 UnitType 或 Profile 中搜尋單元,並且需要透過 Advanced Provisioning 執行腳本。 通常,群組與位置相關聯並具有嵌套結構。 讓我們組成一個俄羅斯小組。

Mikrotik 中的 TR-069。 嘗試使用 Freeacs 作為 RouterOS 的自動設定伺服器

您能想像我們能夠將搜尋範圍從「hAPaclite 上世界上的所有時間伺服器」縮小到「hAPaclite 上俄羅斯的所有時間伺服器」嗎? 團體中仍然有很多有趣的事情,但我們沒有時間。 讓我們看看腳本。

Advanced Provisioning > Job > Create Job

Mikrotik 中的 TR-069。 嘗試使用 Freeacs 作為 RouterOS 的自動設定伺服器

畢竟,我們處於高級模式,因此您可以在此處指定一系列不同的條件來啟動任務,以及出現錯誤、重複和逾時時的行為。 我建議閱讀手冊中的所有內容或稍後在生產中實現時進行討論。 現在,我們只需將 n1 放入停止規則中,以便任務在第一個單元完成後立即停止。

我們填寫必要的信息,剩下的就是啟動它!

Mikrotik 中的 TR-069。 嘗試使用 Freeacs 作為 RouterOS 的自動設定伺服器

按開始並等待。 現在,被調試不當的腳本殺死的設備的計數器將快速運行! 當然不是。 此類任務需要很長時間,這是它們與腳本、Ansible 等的差異。 單位本身按計劃或在網路上出現時申請任務,ACS 會追蹤哪些單位已收到任務以及它們如何完成,並將其記錄在單位參數中。 我們組裡有1個單位,如果有1001個,管理員就會啟動這個任務去釣魚

快點。 重新啟動路由器或重新啟動 TR-069 用戶端。 一切都會順利進行,Mr.White 將會收到一個新的 VLAN。 我們的停止規則任務將切換到暫停狀態。 也就是說,它仍然可以重新啟動或更改。 如果按一下“完成”,任務將被存檔

4.4 更新軟體

這是非常重要的一點,因為 Mikrotik 韌體是模組化的,但添加模組不會改變裝置的整體韌體版本。 我們的ACS很正常,不習慣這樣。
現在我們將以快速和骯髒的方式進行操作,並將 NTP 模組立即推送到通用韌體中,但是一旦裝置上的版本更新,我們將無法以相同的方式添加另一個模組。
在生產中,最好不要使用這樣的技巧,僅使用腳本安裝單元類型可選的模組。

因此,我們首先要做的就是準備所需版本和架構的軟體包,並將它們放在一些可存取的網路伺服器上。 對於測試,我們的 Mr.White 可以聯繫到的任何人都會進行測試,但對於生產來說,最好組裝所需軟體的自動更新鏡像,這放在網路上並不可怕
重要的! 不要忘記始終在更新中包含 tr-069client 軟體包!

事實證明,資料包路徑的長度非常重要! 當我嘗試使用類似的東西時 http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk,mikrotik 陷入與資源的循環連接,向 tr-069 日誌發送重複的 TRANSFERCOMPLETE。 我花了一些神經細胞試圖找出問題所在。 因此,現在讓我們把它放在根源上,直到我們發現

所以我們應該透過 http 取得三個 npk 檔案。 對我來說結果是這樣的

http://192.168.0.241/routeros-mipsbe-6.45.6.npk
http://192.168.0.241/routeros/stable/mipsbe/ntp-6.45.6-mipsbe.npk
http://192.168.0.241/routeros/stable/mipsbe/tr069-client-6.45.6-mipsbe.npk

現在需要將其格式化為 FileType =“1 Firmware Upgrade Image”的 xml 文件,我們將其提供給 Mikrotik。 讓名稱為 ros.xml

我們按照以下指示進行操作 mikrotik-wiki:

<upgrade version="1" type="links">
    <config />
    <links>
        <link>
            <url>http://192.168.0.241/routeros-mipsbe-6.45.6.npk</url>
        </link>
        <link>
            <url>http://192.168.0.241/ntp-6.45.6-mipsbe.npk</url>
        </link>
        <link>
            <url>http://192.168.0.241/tr069-client-6.45.6-mipsbe.npk</url>
        </link>
    </links>
</upgrade>

存在明顯的短缺 Username/Password 訪問下載伺服器。 您可以嘗試依照協定 tr-3.2.8 的 A.069 段輸入:

<link>
<url>http://192.168.0.237/routeros/stable/mipsbe/ntp-6.45.6-mipsbe.npk</url>
<Username>user</Username>
<Password>pass</Password>
</link>

或直接詢問 Mikrotik 官方關於 *.npk 的最大路徑長度

我們去我們熟悉的地方吧 Files & Scripts,並在那裡創建一個軟體文件 名稱:羅斯.xml, 目標名稱:ros.xml 和 版本:6.45.6
注意力! 這裡的版本必須完全按照裝置上顯示的格式指定並傳入參數 System.X_FREEACS-COM.Device.SoftwareVersion.

選擇要上傳的 xm 文件,就完成了。

Mikrotik 中的 TR-069。 嘗試使用 Freeacs 作為 RouterOS 的自動設定伺服器

現在我們有很多方法來更新設備。 透過主選單中的精靈、進階配置和軟體類型的任務,或直接前往裝置配置並點選升級。 我們還是選擇最簡單的路徑吧,不然文章已經腫起來了。

Mikrotik 中的 TR-069。 嘗試使用 Freeacs 作為 RouterOS 的自動設定伺服器

我們按下按鈕,啟動供應,您就完成了。 測試程序完成。 現在我們可以使用 mikrotik 做更多事情。

5.Заключение

當我開始寫作時,我首先想描述一下IP電話的連接,並用它的例子來解釋當tr-069輕鬆、毫不費力地工作時,它是多麼的酷。 但後來,隨著我對材料的深入研究,我認為對於那些連接 Mikrotik 的人來說,獨立研究沒有手機會令人恐懼。

原則上,我們測試的Freeacs已經可以在生產中使用,但是為此你需要配置安全性、SSL,你需要配置Mikrotik以在重置後自動配置,你需要調試Unit Type的正確添加,分析Web 服務和fusion shell 的工作等等。 試試、發明、寫續集!

各位,謝謝大家的關注! 我很高興看到更正和評論!

使用的材料列表和有用的連結:

當我開始搜尋該主題時遇到的論壇帖子
TR-069 CPE WAN 管理協議修正案 6
Freeacs 維基
Mikrotik中的參數tr-069,以及它們與終端指令的對應關係

來源: www.habr.com