{"id":38422,"date":"2019-10-31T22:23:40","date_gmt":"2019-10-31T19:23:40","guid":{"rendered":"https:\/\/prohoster.info\/blog\/tr-069-v-mikrotik-ispytyvaem-freeacs-v-kachestve-servera-avtokonfiguratsii-dlya-routeros\/"},"modified":"2020-12-15T02:12:35","modified_gmt":"2020-12-15T00:12:35","slug":"tr-069-v-mikrotik-ispytyvaem-freeacs-v-kachestve-servera-avtokonfiguratsii-dlya-routeros","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/tr-069-v-mikrotik-ispytyvaem-freeacs-v-kachestve-servera-avtokonfiguratsii-dlya-routeros","title":{"rendered":"TR-069 in Mikrotik. Testing Freeacs as a configuration server for RouterOS","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>In this article, I will attempt to describe step by step the process of setting up a test server for a wonderful project. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/freeacs\/freeacs\">Freeacs<\/a><\/noindex> to a fully operational state, and show practical techniques for working with Mikrotik: configuration through parameters, running scripts, updates, installation of additional modules, etc.<\/p>\n<p>The goal of the article is to encourage colleagues to abandon the management of network devices using dreadful hacks and crutches, such as custom scripts, Dude, Ansible, etc. And, in this regard, to spark celebrations and mass rejoicing in the squares.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>0. Selection<\/h4>\n<p>Why Freeacs and not Genie-Acs, mentioned in <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.mikrotik.com\/wiki\/Manual:TR069-client\">mikrotik-wiki<\/a><\/noindex>, as a more active option?<br \/>\nBecause there are publications by Spanish authors on Genie-Acs with Mikrotik. Here are their <noindex><a rel=\"nofollow\" href=\"https:\/\/mum.mikrotik.com\/presentations\/EU18\/presentation_5202_1523350603.pdf\">pdf<\/a><\/noindex> and <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=MoywoC8BC0M\">video<\/a><\/noindex> from last year's MUM. Auto-sharing in slides is cool, but I would like to move away from the concept of writing scripts to run scripts to run scripts...<\/p>\n<h4>1. Installing Freeacs<\/h4>\n<p>We will install on Centos7, and since devices transmit quite a lot of data, and ACS actively interacts with the database, we won't skimp on resources. For comfortable operation, we will allocate 2 CPU cores, 4GB RAM, and 16GB of fast SSD RAID10 storage. I will install Freeacs in a Proxmox VE LXC container, but you can work with any tool you prefer.<br \/>\nDon't forget to set the correct time on the ACS machine.<\/p>\n<p>The system will be a test one, so we won't complicate things and will simply use the kindly provided installation script as is.<\/p>\n<pre><code class=\"bash\">wget https:\/\/raw.githubusercontent.com\/freeacs\/freeacs\/master\/scripts\/install_centos.sh\nchmod +x install_centos.sh\n.\/install_centos.sh<\/code><\/pre>\n<p>As soon as the script completes \u2014 you will immediately have access to the web interface via the machine's IP, with the credentials admin\/freeacs.<\/p>\n<p><img decoding=\"async\" alt=\"TR-069 in Mikrotik. Testing Freeacs as a configuration server for RouterOS\" src=\"\/wp-content\/uploads\/2019\/09\/2725143fa775c7bae02c710eaec05eaf.png\" style=\"display:block;margin: 0 auto;\"><br \/>\n<i>Here is such a nice minimalist interface, and how great and quickly everything turned out.<\/i><\/p>\n<h4>2. Initial Setup of Freeacs<\/h4>\n<p>The basic unit of management for ACS is the unit or CPE (Customer Premises Equipment). The most important thing we need to manage the units is their Unit Type, i.e., the model of the equipment that defines the set of configurable parameters for the unit and its software. But since we don't yet know how to properly register a new Unit Type, it's best to ask the unit itself by enabling Discovery Mode.<\/p>\n<p>This mode should categorically not be used in production, but we need to start the engine and see the system's capabilities. All main configurations are stored in \/opt\/freeacs-*. Therefore, let's open<\/p>\n<pre><code class=\"bash\"> vi \/opt\/freeacs-tr069\/config\/application-config.conf <\/code><\/pre>\n<p>, we find<\/p>\n<pre><code class=\"bash\">discovery.mode = false<\/code><\/pre>\n<p>and change to<\/p>\n<pre><code class=\"bash\">discovery.mode = true<\/code><\/pre>\n<p>Additionally, we should increase the maximum file sizes that nginx and mysql will work with. For mysql, add the line to \/etc\/my.cnf<\/p>\n<pre><code class=\"bash\">max_allowed_packet=32M<\/code><\/pre>\n<p>, and for nginx, in \/etc\/nginx\/nginx.conf, add<\/p>\n<pre><code class=\"bash\">client_max_body_size 32m;<\/code><\/pre>\n<p>to the http section. Otherwise, we will only be able to work with firmware sizes up to 1M.<\/p>\n<p>We restart, and we are ready to work with devices.<\/p>\n<p>And the device (CPE) will be our little workhorse <b><noindex><a rel=\"nofollow\" href=\"https:\/\/mikrotik.com\/product\/RB952Ui-5ac2nD\">hAP AC lite<\/a><\/noindex><\/b>.<\/p>\n<p>Before the test connection, it is advisable to manually configure the CPE to the minimal working configuration so that the parameters you wish to configure in the future are not empty. For the router, at a minimum, you can enable the dhcp client on ether1, install the tr-069client package, and set passwords.<\/p>\n<h4>3. Connect Mikrotik<\/h4>\n<p>It is advisable to connect all units using a valid serial number as the login. This way, everything in the logs will be clear. Some recommend using WAN MAC \u2014 do not believe them. Some use a shared login\/password for all \u2014 avoid them.<\/p>\n<p>Open the tr-069 log to monitor the \"conversations\"<\/p>\n<pre><code class=\"bash\">tail -f \/var\/log\/freeacs-tr069\/tr069-conversation.log<\/code><\/pre>\n<p>Open winbox, menu item TR-069.<br \/>\nACS URL: <code>http:\/\/10.110.0.109\/tr069\/prov<\/code> (replace with your IP)<br \/>\nUsername: 9249094C26CB (copy the serial number from system&gt;routerboard)<br \/>\nPassword: 123456 (not needed for discovery, but it should be there)<br \/>\nWe do not change the Periodic inform interval. This setting will be provided through our ACS<\/p>\n<p>Below are the settings for remote initialization of connection, but I couldn\u2019t get Mikrotik to work with this straight away. However, with phones, the remote request works \"out of the box.\" We will need to look into it.<\/p>\n<p><img decoding=\"async\" alt=\"TR-069 in Mikrotik. Testing Freeacs as a configuration server for RouterOS\" src=\"\/wp-content\/uploads\/2019\/09\/4ea9279e8e3715ba28ee52638314109f.png\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>After clicking the Apply button \u2014 data exchange will start in the terminal, and in the Freeacs web interface, we will be able to see our router with the automatically created Unit Type \"hAPaclite.\"<\/p>\n<p><img decoding=\"async\" alt=\"TR-069 in Mikrotik. Testing Freeacs as a configuration server for RouterOS\" src=\"\/wp-content\/uploads\/2019\/09\/53dc9241200dbee24d958c57adbc0264.png\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>The router is connected. You can look at the automatically created Unit Type. Open <code>Easy Provisioning &gt; Unit Type &gt; Unit Type Overview &gt; hAPaclite<\/code>. There isn't much there! A total of 928 parameters (I checked in the shell). Whether that\u2019s a lot or a little \u2014 we will figure out later, but for now, let\u2019s take a quick look. This is what the Unit Type means. It\u2019s a list of supported parameters with keys but without values. Values are set in lower levels \u2014 Profiles and Units.<\/p>\n<h4>4. Configure Mikrotik<\/h4>\n<p>It\u2019s time to download <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/mortensimon\/web\/blob\/master\/docs\/Fusion%20Web%20User%20Manual.pdf\">the web interface manual<\/a><\/noindex> This manual is from 2011 \u2014 like a bottle of good, aged wine. Let\u2019s open it and let it breathe.<\/p>\n<p>Now, in the web interface, let's click on the pencil icon next to our unit and proceed to the unit configuration mode. It looks like this:<\/p>\n<p><img decoding=\"async\" alt=\"TR-069 in Mikrotik. Testing Freeacs as a configuration server for RouterOS\" src=\"\/wp-content\/uploads\/2019\/09\/5268ac4e3cece3aae79dd58602c69f61.png\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>Let's briefly go over what interesting things are on this page:<\/p>\n<p><i>Unit Configuration Block<\/i><\/p>\n<ul>\n<li>Profile: This is a profile within Unit Type. The hierarchy is as follows: <code>UnitType &gt; Profile &gt; Unit<\/code>. This means we can create, for example, profiles <code>hAPaclite &gt; hotspot<\/code> and <code>hAPaclite &gt; branch<\/code>, but within the device model<\/li>\n<\/ul>\n<p><i>Provisioning Block<\/i> with buttons<br \/>\nHints suggest that all buttons in the Provisioning block can immediately apply configurations via ConnectionRequestURL. However, as I mentioned earlier, this does not work, so after clicking the buttons, you will need to restart the TR-069 client on the MikroTik for manual provisioning start.<\/p>\n<ul>\n<li>Freq\/Spread: How often to deliver configuration \u00b1 %, to reduce load on the server and communication channels. By default, it is set to 7\/20, i.e., every day \u00b1 20% with a hint as to what this means in seconds. There is no need to change the delivery frequency yet, as it will create unnecessary noise in the logs and not always result in expected configuration application.<\/li>\n<\/ul>\n<p><i>Provisioning History Block<\/i> (last 48 hours)<\/p>\n<ul>\n<li>At first glance, the history looks like history, but clicking on the header takes you to a convenient database search tool, with regexp and other features.<\/li>\n<\/ul>\n<p><i>Parameters Block<\/i><\/p>\n<p>The largest and most important block, where the parameters for this unit are actually set and read. Currently, we see only the most important system parameters, without which the ACS cannot work with the unit. But we remember that in the Unit Type we have \u2014 <i>928<\/i>. Let's look at all the values and decide what to do with them on the MikroTik.<\/p>\n<h4>4.1 Reading Parameters<\/h4>\n<p>In the Provisioning block, click the Read all button. In the block \u2014 there will be a red notice. A column will appear on the right <i>CPE (current) value<\/i>. In the system parameters, ProvisioningMode has changed to READALL.<\/p>\n<p><img decoding=\"async\" alt=\"TR-069 in Mikrotik. Testing Freeacs as a configuration server for RouterOS\" src=\"\/wp-content\/uploads\/2019\/09\/c8e3161270f35955f79cbce576965690.png\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>And... nothing will happen except a message in System.X_FREEACS-COM.IM.Message <code>Kick failed at...<\/code>.<\/p>\n<p>Restart the TR-069 client or reboot the router, and continue refreshing the browser page until you see the parameters in cheerful gray rectangles on the right.<br \/>\nFor anyone wanting to sip on some aged content \u2014 this mode is described in the manual as 10.2 Inspection mode. It is turned on and works somewhat differently, but the essence is well-described.<\/p>\n<p><img decoding=\"async\" alt=\"TR-069 in Mikrotik. Testing Freeacs as a configuration server for RouterOS\" src=\"\/wp-content\/uploads\/2019\/09\/40ca0f85f2635ba84f9c4540464176dd.png\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>The READALL mode will turn off automatically after 15 minutes, and we will try to figure out what is useful here and what we can adjust \"on the fly\" while we are in this mode.<\/p>\n<p>You can change IP addresses, enable\/disable interfaces, firewall rules with comments (otherwise it will be a complete mess), Wi-Fi, and little things like that.<\/p>\n<p>In other words, it is not yet possible to reasonably configure Mikrotik only with TR-069 tools. But you can monitor quite well. Statistics for interfaces and their status, free memory, etc. are available.<\/p>\n<h4>4.2 Delivering Parameters<\/h4>\n<p>Now let's try to deliver parameters to the router via TR-069 in a 'natural' way. The first victim will be Device.DeviceInfo.X_MIKROTIK_SystemIdentity. We find it in the unit parameters All. As you can see, it is not set. This means that any unit can have any Identity on its own. Enough of this!<br \/>\nWe check the box in the create column, set the name Mr.White, and click the Update parameters button. You can guess what will happen next. During the next communication session with the headquarters, the router should change its Identity.<\/p>\n<p><img decoding=\"async\" alt=\"TR-069 in Mikrotik. Testing Freeacs as a configuration server for RouterOS\" src=\"\/wp-content\/uploads\/2019\/09\/1ce9ebf23135717abb3c6d0696a8e1b1.png\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>But we need more than that. Such a parameter as Identity is always good to have on hand when searching for the desired unit. We click on the parameter name and check the boxes Display(D) and Searchable(S). The parameter key changes to RWSD (Remember, names and keys are assigned at the highest level of Unit Type).<\/p>\n<p><img decoding=\"async\" alt=\"TR-069 in Mikrotik. Testing Freeacs as a configuration server for RouterOS\" src=\"\/wp-content\/uploads\/2019\/09\/513fb00425c43ab4632491dd9133d624.png\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>The value is now not only displayed in the general search list but also available for searching in <code>Support &gt; Search &gt; Advanced form<\/code><\/p>\n<p><img decoding=\"async\" alt=\"TR-069 in Mikrotik. Testing Freeacs as a configuration server for RouterOS\" src=\"\/wp-content\/uploads\/2019\/09\/bc8b087f3c44fb3a8b7974a204fe1d1f.png\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>We initiate provisioning and look at the Identity. Hello, Mr.White! Now you will not be able to change your appearance yourself while the tr-069client is running.<\/p>\n<p><img decoding=\"async\" alt=\"TR-069 in Mikrotik. Testing Freeacs as a configuration server for RouterOS\" src=\"\/wp-content\/uploads\/2019\/09\/80de1bf2aa0c2295d08da862c67fc90b.png\" style=\"display:block;margin: 0 auto;\"><\/p>\n<h4>4.3 Executing Scripts<\/h4>\n<p>Now that we have figured out that we cannot do without them, let's execute them.<\/p>\n<p>But before we start working with files, we need to adjust the directive <code>public.url<\/code> in the file <code>\/opt\/freeacs-tr069\/config\/application-config.conf<\/code><br \/>\nAfter all, we still have a test configuration installed by a single script. Don't forget?<\/p>\n<pre><code class=\"bash\"># --- Public url (used for download f. ex.) ---\npublic.url = \"http:\/\/10.110.0.109\"\npublic.url: ${?PUBLIC_URL}<\/code><\/pre>\n<p>We restart the ACS and head straight to <code>Files &amp; Scripts<\/code>.<\/p>\n<p><img decoding=\"async\" alt=\"TR-069 in Mikrotik. Testing Freeacs as a configuration server for RouterOS\" src=\"\/wp-content\/uploads\/2019\/09\/816dad5c374c015d9f8ffcd4d7f416a7.png\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>But what is opening up for us now belongs to the Unit Type, i.e. globally to all hAP ac lite routers, whether it's a branch router, hotspot, or CAPsMAN. We don't need such a high level right now, so before we work with scripts and files, we should create a profile. You can call it something like 'device position'.<\/p>\n<p>Let's make our little one a time server. A worthy position with a separate software package and a few parameters. We go to <code>Easy Provisioning &gt; Profile &gt; Create Profile<\/code> and create a profile in Unit Type: hAPaclite <i>timeserver<\/i>. We had no parameters in the default profile, so there is nothing to copy.<i> Copy parameters from: \"don't copy...\"<\/i><\/p>\n<p><img decoding=\"async\" alt=\"TR-069 in Mikrotik. Testing Freeacs as a configuration server for RouterOS\" src=\"\/wp-content\/uploads\/2019\/09\/d2ee21aa2e04caf5b18ae6fe25e96016.png\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>There are currently no parameters here, but we will be able to specify those that we wish to see on our time servers made from hAPaclite later. For example, the common addresses of NTP servers.<br \/>\nLet's move to the unit's configuration and shift it to the timeserver profile.<\/p>\n<p>Finally, we head to <code>Files &amp; Scripts<\/code>, to create scripts, and here we will find incredibly convenient features.<\/p>\n<p>To execute a script on the unit, we need to select <i>Type:TR069_SCRIPT<\/i> a <i>Name <\/i>and <i>Target Name<\/i> must have the .alter extension<br \/>\nUnlike software, for scripts, we can either upload a ready file or simply write\/edit it in the field <i>Content. <\/i>Let's try writing directly there.<\/p>\n<p>And to see the result immediately, let's add a VLAN to the router on ether1.<\/p>\n<pre><code class=\"bash\">\/interface vlan\nadd interface=ether1 name=vlan1 vlan-id=1<\/code><\/pre>\n<p><img decoding=\"async\" alt=\"TR-069 in Mikrotik. Testing Freeacs as a configuration server for RouterOS\" src=\"\/wp-content\/uploads\/2019\/09\/f026cf2468f57272afd0be6a964fc874.png\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>We type it in, click <i>Upload<\/i> and done. Our script <code>vlan1.alter<\/code> is waiting for its moment.<\/p>\n<p>So, shall we go? No. We still need to add a group for our profile. Groups do not fall under the hardware hierarchy but are necessary for finding units in UnitType or Profile and are mandatory for executing scripts via Advanced Provisioning. Typically, groups are associated with locations and have a nested structure. Let's create a group called Russia.<\/p>\n<p><img decoding=\"async\" alt=\"TR-069 in Mikrotik. Testing Freeacs as a configuration server for RouterOS\" src=\"\/wp-content\/uploads\/2019\/09\/b9c52bcff93aa197b5ad1bc83d46c533.png\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>Can you imagine we just narrowed our search from \"All time servers worldwide on hAPaclite\" to \"All time servers in Russia on hAPaclite\"? There's a vast amount of interesting details regarding groups, but we don't have time for that. Let's move on to the scripts.<\/p>\n<pre><code class=\"plaintext\">Advanced Provisioning &gt; Job &gt; Create Job<\/code><\/pre>\n<p><img decoding=\"async\" alt=\"TR-069 in Mikrotik. Testing Freeacs as a configuration server for RouterOS\" src=\"\/wp-content\/uploads\/2019\/09\/ca83378e36cb6e716e489c868601f1f4.png\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>Since we are in Advanced mode, we can specify a number of different conditions for the start of the task, behaviors when errors occur, retries, and timeouts. I recommend reading all of this in the manuals or we can discuss it later during production implementation. For now, let's just set n1 in Stop rules so that the task stops as soon as it is completed on our 1 unit.<\/p>\n<p>We fill in what is necessary, and it's time to launch!<\/p>\n<p><img decoding=\"async\" alt=\"TR-069 in Mikrotik. Testing Freeacs as a configuration server for RouterOS\" src=\"\/wp-content\/uploads\/2019\/09\/4c93aa74e152f255c009ee888dfda4b3.png\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>We click START and wait. The counter of devices killed by the under-tested script will now run smoothly! No, of course not. Such tasks take a long time, and that\u2019s the difference from scripts, Ansible, etc. Units themselves request tasks on a schedule or as they appear in the network; ACS keeps track of which units have already received tasks and how they were completed, recording this in the unit parameters. In our group, there's 1 unit, but if there were 1001, the admin would have launched this task and gone fishing.<\/p>\n<p>Come on. Restart the router or reboot the TR-069 client. Everything should go smoothly and Mr.White will receive a new VLAN. Our task in the Stop rule will change to PAUSED status. That means it can still be restarted or modified. If you hit FINISH, the task will be archived.<\/p>\n<h4>4.4 Updating the Software<\/h4>\n<p>This is a very important point, as the MikroTik firmware is modular, but adding modules does not change the overall firmware version of the device. Our ACS is normal, and we are not used to that.<br \/>\nRight now, we'll do it in a quick &amp; dirty style and push the NTP module into the general firmware immediately, but once the device's version updates, we won't be able to add another module in the same way.<br \/>\nIn production, it's better not to use such a trick and install optional modules for Unit Type only via scripts.<\/p>\n<p>So, the first thing we need to do is prepare the software packages of the required versions and architectures, and place them on an accessible web server. For testing, any server that Mr.White can reach will do, but for production, it's better to set up an auto-updating mirror of the necessary software that can be exposed on the web.<br \/>\nImportant! Always remember to include the tr-069client package in the updates!<\/p>\n<p>As it turned out, the path length to the packages is very important! In my attempts to use something like <code>http:\/\/192.168.0.237\/routeros\/stable\/mipsbe\/routeros-mipsbe-6.45.6.npk<\/code>, MikroTik fell into a cyclic connection with the resource, sending repeating TRANSFERCOMPLETE messages in the tr-069 log. And I spent a fair amount of nerve cells trying to figure out what was wrong. So for now, let's put it in the root until we find out.<\/p>\n<p>So, we should have three npk files accessible via http. I ended up with this:<\/p>\n<pre><code class=\"bash\">http:\/\/192.168.0.241\/routeros-mipsbe-6.45.6.npk\nhttp:\/\/192.168.0.241\/routeros\/stable\/mipsbe\/ntp-6.45.6-mipsbe.npk\nhttp:\/\/192.168.0.241\/routeros\/stable\/mipsbe\/tr069-client-6.45.6-mipsbe.npk<\/code><\/pre>\n<p>Now this needs to be formatted in an xml file with FileType=\"1 Firmware Upgrade Image\" which we will feed to MikroTik. Let's name it ros.xml.<\/p>\n<p>Following the instructions from <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.mikrotik.com\/wiki\/Manual:TR069-client#RouterOS_Update_.281_Firmware_Upgrade_Image.29\">mikrotik-wiki<\/a><\/noindex>:<\/p>\n<pre><code class=\"xml\">http:\/\/192.168.0.241\/routeros-mipsbe-6.45.6.npk\n        \n        \n            http:\/\/192.168.0.241\/ntp-6.45.6-mipsbe.npk\n        \n        \n            http:\/\/192.168.0.241\/tr069-client-6.45.6-mipsbe.npk<\/code><\/pre>\n<p>The lack of <code>Username\/Password<\/code> for accessing the download server stands out. You could either try to enter this as in point A.3.2.8 of the tr-069 protocol:<\/p>\n<pre><code class=\"xml\">http:\/\/192.168.0.237\/routeros\/stable\/mipsbe\/ntp-6.45.6-mipsbe.npk\nuser\npass<\/code><\/pre>\n<p>Or ask the official MikroTik support directly about the maximum path length to *.npk.<\/p>\n<p>Let's go to the known locations <code>Files &amp; Scripts<\/code>, and create a file of the type SOFTWARE with <b>Name:<\/b>ros.xml, <b>Target Name:<\/b>ros.xml and <b>Version:<\/b>6.45.6<br \/>\nAttention! The version here must be specified exactly in the format in which it is displayed on the device and sent in the parameter <code>System.X_FREEACS-COM.Device.SoftwareVersion<\/code>.<\/p>\n<p>We choose our xm file for download and that\u2019s it.<\/p>\n<p><img decoding=\"async\" alt=\"TR-069 in Mikrotik. Testing Freeacs as a configuration server for RouterOS\" src=\"\/wp-content\/uploads\/2019\/09\/aad6d1a64c5e81899c67b5bf085cc188.png\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>Now we have a multitude of ways to update the device. Through the Wizard in the main menu, through Advanced Provisioning and tasks of type SOFTWARE, or simply go into the unit configuration and click Upgrade. Let's choose the simplest path, as this article is already getting lengthy.<\/p>\n<p><img decoding=\"async\" alt=\"TR-069 in Mikrotik. Testing Freeacs as a configuration server for RouterOS\" src=\"\/wp-content\/uploads\/2019\/09\/045624f1a1ecc062b7e416c086df62d4.png\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>We click the button, initiate provision and that\u2019s it. The test program is complete. Now we can do more with MikroTik.<\/p>\n<h4>5. Conclusion<\/h4>\n<p>When I started writing, I initially wanted to describe the connection of an IP phone and illustrate how great it can be when TR-069 works effortlessly. But then, as I progressed and delved into the materials, I thought that anyone who connected MikroTik would not be afraid of any phone for self-study.<\/p>\n<p>In principle, FreeACS, which we tested, can already be applied in production, but for that, security must be configured, SSL must be set up, MikroTiks need to be configured for autoconfiguration after reset, the correct addition of Unit Type needs to be debugged, the operation of web services and fusion shell needs to be understood, and much more. Try it, invent, and write a continuation!<\/p>\n<p>Thank you all for your attention! I would appreciate any corrections and comments!<\/p>\n<p>List of materials used and useful links:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/forum.mikrotik.com\/viewtopic.php?t=116977&amp;start=50\">The forum thread I stumbled upon at the beginning of my searches on the topic<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.broadband-forum.org\/download\/TR-069_Amendment-6.pdf\">TR-069 CPE WAN Management Protocol Amendment-6<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/freeacs\/freeacs\/wiki\">FreeACS wiki<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.mikrotik.com\/wiki\/Manual:TR069-parameters-6.39\">TR-069 parameters in MikroTik and their correspondence to terminal commands<\/a><\/noindex><\/p>\n<p>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/468241\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Freeacs \u0434\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u0435\u043c\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 mikrotik: \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0434\u043e\u043f.\u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0438 \u0442.\u0434. \u0426\u0435\u043b\u044c \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 \u043f\u043e\u0434\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u0433 \u043a \u043e\u0442\u043a\u0430\u0437\u0443 \u043e\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0442\u0435\u0432\u044b\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0436\u0430\u0441\u043d\u044b\u0445 \u0433\u0440\u0430\u0431\u043b\u0435\u0439 \u0438 \u043a\u043e\u0441\u0442\u044b\u043b\u0435\u0439, \u0432 \u0432\u0438\u0434\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28841,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38422","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Freeacs \u0434\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/tr-069-v-mikrotik-ispytyvaem-freeacs-v-kachestve-servera-avtokonfiguratsii-dlya-routeros\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47TR-069 \u0432 Mikrotik. \u0418\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u0435\u043c Freeacs \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0430\u0432\u0442\u043e\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f RouterOS | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Freeacs \u0434\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/tr-069-v-mikrotik-ispytyvaem-freeacs-v-kachestve-servera-avtokonfiguratsii-dlya-routeros\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:23:40+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-12-15T00:12:35+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47TR-069 in MikroTik. Testing FreeACS as an autoconfiguration server for RouterOS | ProHoster","description":"In this article, I will try to describe the process of setting up a test server for the wonderful FreeACS project step by step.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/tr-069-v-mikrotik-ispytyvaem-freeacs-v-kachestve-servera-avtokonfiguratsii-dlya-routeros","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47TR-069 \u0432 Mikrotik. \u0418\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u0435\u043c Freeacs \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0430\u0432\u0442\u043e\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f RouterOS | ProHoster","og:description":"\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Freeacs \u0434\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/tr-069-v-mikrotik-ispytyvaem-freeacs-v-kachestve-servera-avtokonfiguratsii-dlya-routeros","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:23:40+00:00","article:modified_time":"2020-12-15T00:12:35+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38422","title":null,"description":"","keywords":"","keyphrases":null,"primary_term":null,"canonical_url":"","og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 22:00:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:09:23","updated":"2026-01-23 22:00:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/38422","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=38422"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/38422\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/28841"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=38422"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=38422"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=38422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}