{"id":18767,"date":"2026-05-25T21:16:55","date_gmt":"2026-05-25T21:16:55","guid":{"rendered":"https:\/\/made4it.com.br\/blog\/how-to-configure-geofeed-on-registro-br\/"},"modified":"2026-06-29T19:45:31","modified_gmt":"2026-06-29T19:45:31","slug":"how-to-configure-geofeed-on-registro-br","status":"publish","type":"post","link":"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/","title":{"rendered":"How to Configure Geofeed on Registro.br"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\" id=\"bkmrk-no-artigo-anterior-f\">In the previous article, we discussed Geofeed, RFC 8805, RFC 9632, RDAP, and why this matters to service providers.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-agora-vamos-para-a-p\">Now let&#8217;s move on to the practical part.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-a-ideia-aqui-%C3%A9-monta\">The idea here is to set up a simple example of a geofeed publication using Registro.br, with a CSV file published over HTTPS and validation via WHOIS and RDAP.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-para-n%C3%A3o-usar-nenhum\">To avoid using any actual blocks, the examples below use blocks reserved for testing and documentation. In production, of course, you should replace them with the actual ASN blocks. <\/p>\n\n<h2 class=\"wp-block-heading\" id=\"bkmrk-cen%C3%A1rio-de-exemplo\">Example Scenario<\/h2>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-vamos-imaginar-que-o\">Let&#8217;s imagine that the provider has an IPv4 block <code>\/22<\/code> and uses each <code>\/24<\/code> in a different city.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-para-o-exemplo-ipv4%2C\">For the IPv4 example, let&#8217;s use:<\/p>\n\n<pre class=\"wp-block-code\"><code>198.18.0.0\/22<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-esse-bloco-faz-parte\">This block is part of a space reserved for testing and benchmarking. It should not be used in production on the Internet. Here, it serves only to make the example look like a real-world operation, without exposing the prefix.  <\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-a-divis%C3%A3o-operaciona&amp;content-text=A%20divis%C3%A3o%20operacional%20seria%3A\"><\/a>  The operational breakdown would be:<\/p>\n\n<pre class=\"wp-block-code\"><code>198.18.0.0\/24      Apucarana - PR\n198.18.1.0\/24      Londrina - PR\n198.18.2.0\/24      Sao Paulo - SP\n198.18.3.0\/24      Porto Alegre - RS<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">For IPv6, we&#8217;ll use the documentation block:<\/p>\n\n<pre class=\"wp-block-code\"><code>2001:db8::\/32<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">And break it down into <code>\/40<\/code>:<\/p>\n\n<pre class=\"wp-block-code\"><code>2001:db8:0000::\/40   Apucarana - PR\n2001:db8:0100::\/40   Londrina - PR\n2001:db8:0200::\/40   Sao Paulo - SP\n2001:db8:0300::\/40   Porto Alegre - RS<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-essa-abordagem-fica-\">This approach is closer to the real world: a larger registered block, with divisions by city or region within it.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"bkmrk-um-arquivo-por-bloco\">One file per block<\/h2>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-por-enquanto%2C-o-regi\">For now, Registro.br maintains a more restrictive policy regarding the publication of geofeeds.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-na-pr%C3%A1tica%2C-o-caminh\">In practice, the safest approach is to work with <strong>one file per registered block<\/strong>, containing only that block or its subblocks.<\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-ent%C3%A3o%2C-se-o-bloco-ca&amp;content-text=Ent%C3%A3o%2C%20se%20o%20bloco%20cadastrado%20%C3%A9%3A\"><\/a>  So, if the registered block is:<\/p>\n\n<pre class=\"wp-block-code\"><code>198.18.0.0\/22<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">It makes sense to have a single file for this <code>\/22<\/code>, containing the internal <code>\/24<\/code>:<\/p>\n\n<pre class=\"wp-block-code\"><code>geofeeds_198.18.0.0_22.csv<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">Contents:<\/p>\n\n<pre class=\"wp-block-code\"><code>198.18.0.0\/24,BR,BR-PR,Apucarana,\n198.18.1.0\/24,BR,BR-PR,Londrina,\n198.18.2.0\/24,BR,BR-SP,Sao Paulo,\n198.18.3.0\/24,BR,BR-RS,Porto Alegre,<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-perceba-o-ponto-prin\">Note the key point: all the lines are inside the ` <code>198.18.0.0\/22<\/code>` block.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-isso-%C3%A9-diferente-de-\">This is different from combining independent blocks into the same file.<\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-por-exemplo%2C-se-voc%C3%AA&amp;content-text=Por%20exemplo%2C%20se%20voc%C3%AA%20tivesse%20dois%20blocos%20diferente\"><\/a>  For example, if you had two different blocks registered with Registro.br, such as:<\/p>\n\n<pre class=\"wp-block-code\"><code>198.18.0.0\/22\n198.18.8.0\/22<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-n%C3%A3o-seria-uma-boa-id\">It wouldn&#8217;t be a good idea to put everything in the same CSV file right now. The safest approach would be to create a separate file for each block. <\/p>\n\n<h2 class=\"wp-block-heading\" id=\"bkmrk-arquivo-ipv6\">IPv6 Archive<\/h2>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-para-o-ipv6%2C-seguind&amp;content-text=Para%20o%20IPv6%2C%20seguindo%20a%20mesma%20l%C3%B3gica%2C%20o%20bloco%20cada\"><\/a>  For IPv6, following the same logic, the registered block would be:<\/p>\n\n<pre class=\"wp-block-code\"><code>2001:db8::\/32<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">The file could be named:<\/p>\n\n<pre class=\"wp-block-code\"><code>geofeeds_2001-db8_32.csv<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">Contents:<\/p>\n\n<pre class=\"wp-block-code\"><code>2001:db8:0000::\/40,BR,BR-PR,Apucarana,\n2001:db8:0100::\/40,BR,BR-PR,Londrina,\n2001:db8:0200::\/40,BR,BR-SP,Sao Paulo,\n2001:db8:0300::\/40,BR,BR-RS,Porto Alegre,<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-aqui-tamb%C3%A9m-vale-a-m\">The same rule applies here as well: the <code>\/40<\/code> are located within <code>\/32<\/code>.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-em-um-provedor-real%2C\">With a real provider, the granularity may vary. You can use <code>\/40<\/code>, <code>\/44<\/code>, <code>\/48<\/code>, or another size, depending on how IPv6 was designed. The important thing is that the geofeed represents the operation consistently and does not attempt to be more precise than the network actually allows.  <\/p>\n\n<h2 class=\"wp-block-heading\" id=\"bkmrk-formato-correto-do-c\">Correct CSV Format<\/h2>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-a-rfc-8805-define-o-&amp;content-text=A%20RFC%208805%20define%20o%20formato%20base%20do%20geofeed%20%5B1%5D%3A\"><\/a>  RFC 8805 defines the base format of the geofeed [1]:<\/p>\n\n<pre class=\"wp-block-code\"><code>ip_prefix,alpha2code,region,city,postal_code<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-mas-no-arquivo-publi\">But in a published file, you usually don&#8217;t include a header.<\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-ent%C3%A3o-n%C3%A3o-fa%C3%A7a-assim&amp;content-text=Ent%C3%A3o%20n%C3%A3o%20fa%C3%A7a%20assim%3A\"><\/a>  So don&#8217;t do it this way:<\/p>\n\n<pre class=\"wp-block-code\"><code>ip_prefix,alpha2code,region,city,postal_code\n198.18.0.0\/24,BR,BR-PR,Apucarana,<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">Here&#8217;s how to do it:<\/p>\n\n<pre class=\"wp-block-code\"><code>198.18.0.0\/24,BR,BR-PR,Apucarana,<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-alguns-detalhes-impo\">Some important details:<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-o-arquivo-deve-estar\">The file must be in UTF-8.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-o-prefixo-precisa-es\">The prefix must be in CIDR format.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-o-pa%C3%ADs-do-brasil-%C3%A9-b\">The country of Brazil is <code>BR<\/code>.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-o-estado-precisa-seg\">The state must comply with ISO 3166-2. Paran\u00e1 is <code>BR-PR<\/code>, S\u00e3o Paulo is <code>BR-SP<\/code>, and Rio Grande do Sul is <code>BR-RS<\/code>. <\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-a-cidade-n%C3%A3o-deve-co\">The city name should not contain a comma.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-o-campo-de-c%C3%B3digo-po\">The ZIP code field should be left blank, but the final comma should remain.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"bkmrk-onde-consultar-os-c%C3%B3\">Where to find state codes<\/h2>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-para-o-campo-de-regi\">For the region field, use ISO 3166-2.<\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-alguns-exemplos%3A&amp;content-text=Alguns%20exemplos%3A\"><\/a>  Some examples:<\/p>\n\n<pre class=\"wp-block-code\"><code>BR-PR  Paran\u00e1\nBR-SP  S\u00e3o Paulo\nBR-RS  Rio Grande do Sul\nBR-SC  Santa Catarina\nBR-MG  Minas Gerais\nBR-RJ  Rio de Janeiro\nBR-DF  Distrito Federal<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-a-fonte-oficial-%C3%A9-a-\">The official source is the ISO Online Browsing Platform [4].<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-para-consulta-r%C3%A1pida\">For quick reference, the ISO 3166-2:BR page also lists the codes for Brazilian states [5].<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"bkmrk-publicando-o-arquivo\">Publishing the file<\/h2>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-voc%C3%AA-pode-publicar-o\">You can publish the CSV on the provider&#8217;s website, on a web server, in a public bucket, or using GitHub Pages.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-o-ponto-principal-%C3%A9-\">The main point is that the URL needs to download the file directly.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-exemplo-para-ipv4%3A\">Example for IPv4:<\/p>\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;geo.seuprovedor.com.br\/geofeeds_198.18.0.0_22.csv<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">Example for IPv6:<\/p>\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;geo.seuprovedor.com.br\/geofeeds_2001-db8_32.csv<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">Or, using GitHub Pages:<\/p>\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;usuario.github.io\/geofeeds\/geofeeds_198.18.0.0_22.csv\nhttps:\/\/usuario.github.io\/geofeeds\/geofeeds_2001-db8_32.csv<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">Be careful with links like these:<\/p>\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;github.com\/usuario\/geofeeds\/blob\/main\/geofeeds_198.18.0.0_22.csv<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-esse-link-abre-uma-p\">This link opens an HTML page on GitHub, not the file itself.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-para-o-registro.br%2C-\">For Registro.br, the URL must serve the CSV file directly.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"bkmrk-exemplo-com-github-p\">Example using GitHub Pages<\/h2>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-um-caminho-simples-p\">A simple option for labs or small providers is to use GitHub Pages.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-o-fluxo-%C3%A9%3A\">The flow is:<\/p>\n\n<ol id=\"bkmrk-criar-uma-conta-no-g\" class=\"wp-block-list\">\n<li>create a GitHub account;<\/li>\n\n\n\n<li>create a repository named <code>geofeeds<\/code>;<\/li>\n\n\n\n<li>Create the file ` <code>geofeeds_198.18.0.0_22.csv<\/code>`;<\/li>\n\n\n\n<li>put the CSV content into it;<\/li>\n\n\n\n<li>enable GitHub Pages in the repository;<\/li>\n\n\n\n<li>Access the generated public URL.<\/li>\n<\/ol>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-o-arquivo-ipv4-ficar&amp;content-text=O%20arquivo%20IPv4%20ficaria%20assim%3A\"><\/a>  The IPv4 file would look like this:<\/p>\n\n<pre class=\"wp-block-code\"><code>198.18.0.0\/24,BR,BR-PR,Apucarana,\n198.18.1.0\/24,BR,BR-PR,Londrina,\n198.18.2.0\/24,BR,BR-SP,Sao Paulo,\n198.18.3.0\/24,BR,BR-RS,Porto Alegre,<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">The final URL could look like this:<\/p>\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;usuario.github.io\/geofeeds\/geofeeds_198.18.0.0_22.csv<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-se-ao-abrir-essa-url\">If, when you open this URL, the browser downloads or displays only the CSV content, you&#8217;re on the right track.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-se-abrir-uma-p%C3%A1gina-\">If you open a GitHub page with a layout, buttons, a menu, and a preview, that&#8217;s wrong.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"bkmrk-content-type\">Content-Type<\/h2>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-o-registro.br-pode-v\">Registro.br can validate the type of content published.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-o-ideal-%C3%A9-que-o-serv\">Ideally, the server should respond with:<a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-o-ideal-%C3%A9-que-o-serv&amp;content-text=O%20ideal%20%C3%A9%20que%20o%20servidor%20responda%20com%3A\"><\/a><\/p>\n\n<pre class=\"wp-block-code\"><code>Content-Type: text\/csv<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">or:<\/p>\n\n<pre class=\"wp-block-code\"><code>Content-Type: application\/geofeed+csv<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-a-rfc-9877-registra-\">RFC 9877 defines the &#8221; <code>application\/geofeed+csv<\/code> &#8221; type for geofeed files [3].<\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-para-validar%3A&amp;content-text=Para%20validar%3A\"><\/a>  To validate:<\/p>\n\n<pre class=\"wp-block-code\"><code>curl -I https:\/\/usuario.github.io\/geofeeds\/geofeeds_198.18.0.0_22.csv<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">Example of an expected answer:<\/p>\n\n<pre class=\"wp-block-code\"><code>HTTP\/2 200\ncontent-type: text\/csv<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">or:<\/p>\n\n<pre class=\"wp-block-code\"><code>HTTP\/2 200\ncontent-type: application\/geofeed+csv<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\" id=\"bkmrk-validando-a-sintaxe\">Validating the syntax<\/h2>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-antes-de-cadastrar-n\">Before registering with Registro.br, it&#8217;s a good idea to run the file through a validator.<\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-uma-op%C3%A7%C3%A3o-pr%C3%A1tica-%C3%A9%3A&amp;content-text=Uma%20op%C3%A7%C3%A3o%20pr%C3%A1tica%20%C3%A9%3A\"><\/a>  A practical option is:<\/p>\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;opengeofeed.org\/validator<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-ele-ajuda-a-pegar-er\">It helps catch silly mistakes, such as:<\/p>\n\n<ul id=\"bkmrk-campo-faltando%3B-esta\" class=\"wp-block-list\">\n<li>missing field;<\/li>\n\n\n\n<li>in the wrong format;<\/li>\n\n\n\n<li>invalid prefix;<\/li>\n\n\n\n<li>Malformed CSV;<\/li>\n\n\n\n<li>duplicate line;<\/li>\n\n\n\n<li>invalid country;<\/li>\n\n\n\n<li>incorrect use of &#8220;region.&#8221;<\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-exemplo-errado%3A&amp;content-text=Exemplo%20errado%3A\"><\/a>  Wrong example:<\/p>\n\n<pre class=\"wp-block-code\"><code>198.18.0.0\/24,BR,PR,Apucarana<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-problemas%3A\">Problems:<\/p>\n\n<ul id=\"bkmrk-pr-deveria-ser-br-pr\" class=\"wp-block-list\">\n<li><code>PR<\/code>  It should be <code>BR-PR<\/code>;<\/li>\n\n\n\n<li>the final comma was missing;<\/li>\n\n\n\n<li>The number of fields is inconsistent.<\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-correto%3A&amp;content-text=Correto%3A\"><\/a>  Correct:<\/p>\n\n<pre class=\"wp-block-code\"><code>198.18.0.0\/24,BR,BR-PR,Apucarana,<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\" id=\"bkmrk-configurando-no-regi\">Configuring in Registro.br<\/h2>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-depois-de-publicar-e\">After publishing and validating the file, go to the Registro.br portal.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-o-fluxo-geral-%C3%A9%3A\">The general workflow is:<a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-entrar-no-portal%3B-ac&amp;content-text=%0Aentrar%20no%20portal%3B%0Aacessar%20a%20%C3%A1rea%20de%20Numera%C3%A7%C3%A3o%3B%0A\"><\/a> <\/p>\n\n<ol id=\"bkmrk-entrar-no-portal%3B-ac\" class=\"wp-block-list\">\n<li>log in to the portal;<\/li>\n\n\n\n<li>access the <strong>Numbering<\/strong> section;<\/li>\n<\/ol>\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/made4it.com.br\/wp-content\/uploads\/2026\/05\/image-1024x641.png\" alt=\"\" class=\"wp-image-16796\"\/><\/figure>\n\n<p class=\"wp-block-paragraph\">3. Select the block and open the &#8221; <strong>Configure Geofeed<\/strong>&#8221; option;<\/p>\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/made4it.com.br\/wp-content\/uploads\/2026\/05\/image-1-1024x495.png\" alt=\"\" class=\"wp-image-16799\"\/><\/figure>\n\n<p class=\"wp-block-paragraph\">4. Enter the HTTPS URL of the file;<\/p>\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/limbo.made4it.com.br\/uploads\/images\/gallery\/2026-05\/geofeed-registrobr-passo-3-configuracao-url.png\"><img decoding=\"async\" src=\"https:\/\/limbo.made4it.com.br\/uploads\/images\/gallery\/2026-05\/scaled-1680-\/geofeed-registrobr-passo-3-configuracao-url.png\" alt=\"geofeed-registrobr-step-3-url-configuration.png\"\/><\/a><\/figure>\n\n<ol start=\"5\" id=\"bkmrk-salvar.\" class=\"wp-block-list\">\n<li>save.<\/li>\n<\/ol>\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/limbo.made4it.com.br\/uploads\/images\/gallery\/2026-05\/geofeed-registrobr-passo-4-geofeed-publicado.png\"><img decoding=\"async\" src=\"https:\/\/limbo.made4it.com.br\/uploads\/images\/gallery\/2026-05\/scaled-1680-\/geofeed-registrobr-passo-4-geofeed-publicado.png\" alt=\"geofeed-registrobr-step-4-geofeed-published.png\"\/><\/a><\/figure>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-exemplo-ipv4%3A&amp;content-text=Exemplo%20IPv4%3A\"><\/a>  IPv4 example:<\/p>\n\n<pre class=\"wp-block-code\"><code>Bloco: 198.18.0.0\/22\nGeofeed: https:\/\/usuario.github.io\/geofeeds\/geofeeds_198.18.0.0_22.csv<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">IPv6 example:<\/p>\n\n<pre class=\"wp-block-code\"><code><code>Bloco: 2001:db8::\/32\nGeofeed: https:\/\/usuario.github.io\/geofeeds\/geofeeds_2001-db8_32.csv<\/code><\/code><\/pre>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-lembrando-novamente%3A\">Just a reminder: these blocks are only examples for documentation purposes. In production, you would use the actual blocks. <\/p>\n\n<h2 class=\"wp-block-heading\" id=\"bkmrk-validando-no-whois\">Checking WHOIS<\/h2>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-depois-de-configurar\">After setting it up, check to see if the geofeed appears in WHOIS.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-exemplo-ipv4%3A-1\">IPv4 example:<\/p>\n\n<pre class=\"wp-block-code\"><code>whois -h whois.registro.br 198.18.0.0 | grep -i geofeed<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">Expected result:<\/p>\n\n<pre class=\"wp-block-code\"><code>geofeed: https:\/\/usuario.github.io\/geofeeds\/geofeeds_198.18.0.0_22.csv<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">IPv6 example:<\/p>\n\n<pre class=\"wp-block-code\"><code>whois -h whois.registro.br 2001:db8:: | grep -i geofeed<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">Expected result:<\/p>\n\n<pre class=\"wp-block-code\"><code>geofeed: https:\/\/usuario.github.io\/geofeeds\/geofeeds_2001-db8_32.csv<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-em-produ%C3%A7%C3%A3o%2C-substit\">In a production environment, replace these with the actual IP addresses of the configured blocks.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"bkmrk-validando-no-rdap\">Validating in RDAP<\/h2>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-tamb%C3%A9m-d%C3%A1-para-valid\">You can also validate it via RDAP.<\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-ipv4%3A&amp;content-text=IPv4%3A\"><\/a>  IPv4:<\/p>\n\n<pre class=\"wp-block-code\"><code>curl -s https:\/\/rdap.registro.br\/ip\/198.18.0.0 | jq '.links&#91;] | select(.rel == \"geofeed\")'<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">Expected result:<\/p>\n\n<pre class=\"wp-block-code\"><code>{\n  \"rel\": \"geofeed\",\n  \"href\": \"https:\/\/usuario.github.io\/geofeeds\/geofeeds_198.18.0.0_22.csv\",\n  \"type\": \"application\/geofeed+csv\"\n}<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">IPv6:<\/p>\n\n<pre class=\"wp-block-code\"><code>curl -s https:\/\/rdap.registro.br\/ip\/2001:db8:: | jq '.links&#91;] | select(.rel == \"geofeed\")'<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">Expected result:<\/p>\n\n<pre class=\"wp-block-code\"><code>{\n  \"rel\": \"geofeed\",\n  \"href\": \"https:\/\/usuario.github.io\/geofeeds\/geofeeds_2001-db8_32.csv\",\n  \"type\": \"application\/geofeed+csv\"\n}<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-o-rdap-%C3%A9-importante-\">The RDAP is important because it is the most structured way for automated systems to discover the geofeed.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-a-rfc-9877-foi-criad\">RFC 9877 was created specifically to standardize this geofeed link within RDAP responses [3].<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"bkmrk-validando-se-ficou-d\">Checking to see if it&#8217;s now discoverable<\/h2>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-al%C3%A9m-de-whois-e-rdap&amp;content-text=Al%C3%A9m%20de%20WHOIS%20e%20RDAP%2C%20uma%20ferramenta%20%C3%BAtil%20%C3%A9%20o%20Geol\"><\/a>  In addition to WHOIS and RDAP, GeolocateMuch is a useful tool:<\/p>\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;geolocatemuch.com\/?resource=198.18.0.0<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-em-ambiente-real%2C-us\">In a production environment, use the prefix or IP address.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-essa-ferramenta-ajud\">This tool helps you verify whether the geofeed is being discovered based on public data.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"bkmrk-checklist-final\">Final Checklist<\/h2>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-antes-de-considerar-&amp;content-text=Antes%20de%20considerar%20finalizado%2C%20revise%3A\"><\/a>  Before considering it complete, review:<\/p>\n\n<pre class=\"wp-block-code\"><code>&#91; ] Existe um arquivo por bloco cadastrado\n&#91; ] O arquivo cont\u00e9m somente o bloco atual ou sub-blocos dele\n&#91; ] O arquivo est\u00e1 em UTF-8\n&#91; ] O arquivo est\u00e1 em CSV\n&#91; ] N\u00e3o existe cabe\u00e7alho\n&#91; ] O prefixo est\u00e1 em CIDR\n&#91; ] O pa\u00eds est\u00e1 como BR\n&#91; ] O estado est\u00e1 no formato ISO 3166-2, exemplo BR-PR\n&#91; ] A cidade n\u00e3o cont\u00e9m v\u00edrgula\n&#91; ] O postal_code est\u00e1 vazio\n&#91; ] A v\u00edrgula final foi mantida\n&#91; ] A URL \u00e9 HTTPS\n&#91; ] A URL baixa diretamente o arquivo\n&#91; ] O Content-Type \u00e9 text\/csv ou application\/geofeed+csv\n&#91; ] O arquivo passa no validador\n&#91; ] O geofeed aparece no WHOIS\n&#91; ] O geofeed aparece no RDAP<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\" id=\"bkmrk-erros-comuns\">Common Mistakes<\/h2>\n\n<h3 class=\"wp-block-heading\" id=\"bkmrk-misturar-blocos-dife\">Combining different blocks in the same file<\/h3>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-errado%3A&amp;content-text=Errado%3A\"><\/a>  Wrong:<\/p>\n\n<pre class=\"wp-block-code\"><code>198.18.0.0\/24,BR,BR-PR,Apucarana,\n198.18.8.0\/24,BR,BR-SP,Sao Paulo,<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-se-o-arquivo-%C3%A9-do-bl\">If the file is in the &#8221; <code>198.18.0.0\/22<\/code>&#8221; block, the prefix &#8221; <code>198.18.8.0\/24<\/code> &#8221; is outside of it.<\/p>\n\n<h3 class=\"wp-block-heading\" id=\"bkmrk-usar-estado-sem-o-pr\">Use the state without the country code<\/h3>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-errado%3A-1&amp;content-text=Errado%3A\"><\/a>  Wrong:<\/p>\n\n<pre class=\"wp-block-code\"><code>198.18.0.0\/24,BR,PR,Apucarana,<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">Correct:<\/p>\n\n<pre class=\"wp-block-code\"><code>198.18.0.0\/24,BR,BR-PR,Apucarana,<\/code><\/pre>\n\n<h3 class=\"wp-block-heading\" id=\"bkmrk-esquecer-a-v%C3%ADrgula-f\">Forgetting the final comma<\/h3>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-errado%3A-2&amp;content-text=Errado%3A\"><\/a>  Wrong:<\/p>\n\n<pre class=\"wp-block-code\"><code>198.18.0.0\/24,BR,BR-PR,Apucarana<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">Correct:<\/p>\n\n<pre class=\"wp-block-code\"><code>198.18.0.0\/24,BR,BR-PR,Apucarana,<\/code><\/pre>\n\n<h3 class=\"wp-block-heading\" id=\"bkmrk-usar-link-de-preview\">Use a GitHub preview link instead of the direct file link<\/h3>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/limbo.made4it.com.br\/books\/rpki-irr-e-geolocalizacao-pelo-registrobr\/page\/artigo-2-como-configurar-geofeed-no-registrobr\/edit?content-id=bkmrk-errado%3A-3&amp;content-text=Errado%3A\"><\/a>  Wrong:<\/p>\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;github.com\/usuario\/geofeeds\/blob\/main\/geofeeds_198.18.0.0_22.csv<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">That&#8217;s right, using GitHub Pages:<\/p>\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;usuario.github.io\/geofeeds\/geofeeds_198.18.0.0_22.csv<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\" id=\"bkmrk-boas-pr%C3%A1ticas-operac\">Best Operational Practices<\/h2>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-depois-de-configurar-1\">Once you&#8217;ve set it up, don&#8217;t forget that it needs to be maintained.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-revise-o-geofeed-qua\">Check the geofeed when:<\/p>\n\n<ul id=\"bkmrk-novo-bloco%3B-transfer\" class=\"wp-block-list\">\n<li>new block;<\/li>\n\n\n\n<li>fund transfer;<\/li>\n\n\n\n<li>activation of a new POP;<\/li>\n\n\n\n<li>relocation to another city handled;<\/li>\n\n\n\n<li>CGNAT reorganization;<\/li>\n\n\n\n<li>separation of prefixes by location;<\/li>\n\n\n\n<li>change in IPv6 usage;<\/li>\n\n\n\n<li>acquisition of or merger with another provider;<\/li>\n\n\n\n<li>Recurring complaints about incorrect locations.<\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-o-ideal-%C3%A9-que-a-info\">Ideally, the information should come from a reliable source: IPAM, POP documentation, a block inventory, or the operation\u2019s internal database.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-geofeed-feito-%E2%80%9Cde-ca\">A Geofeed built &#8220;off the top of your head&#8221; might work at first, but it becomes a problem as the network grows.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"bkmrk-conclus%C3%A3o\">Conclusion<\/h2>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-configurar-geofeed-n\">Setting up a geofeed on Registro.br isn&#8217;t complicated.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-o-que-exige-aten%C3%A7%C3%A3o-\">It&#8217;s the details that require attention.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-um-arquivo-por-bloco-1\">One file per registered block.<br\/>Only the block or its sub-blocks.<br\/>CSV in UTF-8.<br\/>Direct download via HTTPS URL.<br\/>Country code in the ISO 3166-2 standard.<br\/>Validation via WHOIS and RDAP.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-com-isso%2C-o-provedor\">As a result, the provider will now publish an official feed so that geolocation users can better understand where their IP addresses are being used.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-n%C3%A3o-resolve-todos-os\">It doesn&#8217;t solve all geolocation problems overnight, but it puts the operation on the right track.<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-e%2C-principalmente%2C-t\">And, most importantly, it frees the ISP from having to simply react when a customer complains.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"bkmrk-refer%C3%AAncias\">References<\/h2>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-%5B1%5D-rfc-8805-%E2%80%94-a-for\">[1] RFC 8805 &#8211; A Format for Self-Published IP Geolocation Feeds<br\/>https:\/\/www.rfc-editor.org\/rfc\/rfc8805<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-%5B2%5D-rfc-9632-%E2%80%94-findi\">[2] RFC 9632 &#8211; Finding and Using Geofeed Data<br\/>https:\/\/www.rfc-editor.org\/rfc\/rfc9632<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-%5B3%5D-rfc-9877-%E2%80%94-rdap-\">[3] RFC 9877 &#8211; RDAP Extension for Geofeed Data<br\/>https:\/\/www.rfc-editor.org\/rfc\/rfc9877<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-%5B4%5D-iso-online-brows\">[4] ISO Online Browsing Platform &#8211; ISO 3166 \/ Brazil<br\/>https:\/\/www.iso.org\/obp\/ui\/#iso:code:3166:BR<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-%5B5%5D-iso-3166-2%3Abr-%E2%80%94-\">[5] ISO 3166-2:BR &#8211; list of Brazilian state codes<br\/>https:\/\/en.wikipedia.org\/wiki\/ISO_3166-2:BR<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-%5B6%5D-opengeofeed-vali\">[6] OpenGeofeed Validator<br\/>https:\/\/opengeofeed.org\/validator<\/p>\n\n<p class=\"wp-block-paragraph\" id=\"bkmrk-%5B7%5D-geolocatemuch-%E2%80%94-\">[7] GeolocateMuch \u2014 geofeed discovery test<br\/>https:\/\/geolocatemuch.com\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the previous article, we discussed Geofeed, RFC 8805, RFC 9632, RDAP, and why this matters to service providers. Now let&#8217;s move on to the practical part. The idea here is to set up a simple example of a geofeed publication using Registro.br, with a CSV file published over HTTPS and validation via WHOIS and RDAP. To avoid using any actual blocks, the examples below use blocks reserved for testing and documentation. In production, of course, you should replace them with the actual ASN blocks. Example Scenario Let&#8217;s imagine that the provider has an IPv4 block \/22 and uses each \/24 in a different city. For the IPv4 example, let&#8217;s use: This block is part of a space reserved for testing and benchmarking. It should not be used in production on the Internet. Here, it serves only to make the example look like a real-world operation, without exposing the prefix. The operational breakdown would be: For IPv6, we&#8217;ll use the documentation block: And break it down into \/40: This approach is closer to the real world: a larger registered block, with divisions by city or region within it. One file per block For now, Registro.br maintains a more restrictive policy regarding the publication of geofeeds. In practice, the safest approach is to work with one file per registered block, containing only that block or its subblocks. So, if the registered block is: It makes sense to have a single file for this \/22, containing the internal \/24: Contents: Note the key point: all the lines are inside the ` 198.18.0.0\/22` block. This is different from combining independent blocks into the same file. For example, if you had two different blocks registered with Registro.br, such as: It wouldn&#8217;t be a good idea to put everything in the same CSV file right now. The safest approach would be to create a separate file for each block. IPv6 Archive For IPv6, following the same logic, the registered block would be: The file could be named: Contents: The same rule applies here as well: the \/40 are located within \/32. With a real provider, the granularity may vary. You can use \/40, \/44, \/48, or another size, depending on how IPv6 was designed. The important thing is that the geofeed represents the operation consistently and does not attempt to be more precise than the network actually allows. Correct CSV Format RFC 8805 defines the base format of the geofeed [1]: But in a published file, you usually don&#8217;t include a header. So don&#8217;t do it this way: Here&#8217;s how to do it: Some important details: The file must be in UTF-8. The prefix must be in CIDR format. The country of Brazil is BR. The state must comply with ISO 3166-2. Paran\u00e1 is BR-PR, S\u00e3o Paulo is BR-SP, and Rio Grande do Sul is BR-RS. The city name should not contain a comma. The ZIP code field should be left blank, but the final comma should remain. Where to find state codes For the region field, use ISO 3166-2. Some examples: The official source is the ISO Online Browsing Platform [4]. For quick reference, the ISO 3166-2:BR page also lists the codes for Brazilian states [5]. Publishing the file You can publish the CSV on the provider&#8217;s website, on a web server, in a public bucket, or using GitHub Pages. The main point is that the URL needs to download the file directly. Example for IPv4: Example for IPv6: Or, using GitHub Pages: Be careful with links like these: This link opens an HTML page on GitHub, not the file itself. For Registro.br, the URL must serve the CSV file directly. Example using GitHub Pages A simple option for labs or small providers is to use GitHub Pages. The flow is: The IPv4 file would look like this: The final URL could look like this: If, when you open this URL, the browser downloads or displays only the CSV content, you&#8217;re on the right track. If you open a GitHub page with a layout, buttons, a menu, and a preview, that&#8217;s wrong. Content-Type Registro.br can validate the type of content published. Ideally, the server should respond with: or: RFC 9877 defines the &#8221; application\/geofeed+csv &#8221; type for geofeed files [3]. To validate: Example of an expected answer: or: Validating the syntax Before registering with Registro.br, it&#8217;s a good idea to run the file through a validator. A practical option is: It helps catch silly mistakes, such as: Wrong example: Problems: Correct: Configuring in Registro.br After publishing and validating the file, go to the Registro.br portal. The general workflow is: 3. Select the block and open the &#8221; Configure Geofeed&#8221; option; 4. Enter the HTTPS URL of the file; IPv4 example: IPv6 example: Just a reminder: these blocks are only examples for documentation purposes. In production, you would use the actual blocks. Checking WHOIS After setting it up, check to see if the geofeed appears in WHOIS. IPv4 example: Expected result: IPv6 example: Expected result: In a production environment, replace these with the actual IP addresses of the configured blocks. Validating in RDAP You can also validate it via RDAP. IPv4: Expected result: IPv6: Expected result: The RDAP is important because it is the most structured way for automated systems to discover the geofeed. RFC 9877 was created specifically to standardize this geofeed link within RDAP responses [3]. Checking to see if it&#8217;s now discoverable In addition to WHOIS and RDAP, GeolocateMuch is a useful tool: In a production environment, use the prefix or IP address. This tool helps you verify whether the geofeed is being discovered based on public data. Final Checklist Before considering it complete, review: Common Mistakes Combining different blocks in the same file Wrong: If the file is in the &#8221; 198.18.0.0\/22&#8221; block, the prefix &#8221; 198.18.8.0\/24 &#8221; is outside of it. Use the state without the country code Wrong: Correct: Forgetting the final comma Wrong: Correct: Use a GitHub preview link instead of the direct file link Wrong: That&#8217;s<\/p>\n","protected":false},"author":5,"featured_media":18768,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31],"tags":[],"class_list":["post-18767","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-nao-categorizado"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"In the previous article, we discussed Geofeed, RFC 8805, RFC 9632, RDAP, and why this matters to service providers. Now let&#039;s move on to the practical part. The idea here is to set up a simple example of a geofeed publication using Registro.br, with a CSV file published over HTTPS and validation via WHOIS and\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Made4it\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Made4it -\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"How to Configure Geofeed on Registro.br -\" \/>\n\t\t<meta property=\"og:description\" content=\"In the previous article, we discussed Geofeed, RFC 8805, RFC 9632, RDAP, and why this matters to service providers. Now let&#039;s move on to the practical part. The idea here is to set up a simple example of a geofeed publication using Registro.br, with a CSV file published over HTTPS and validation via WHOIS and\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/made4it.com.br\/wp-content\/uploads\/2025\/09\/logomade4it.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/made4it.com.br\/wp-content\/uploads\/2025\/09\/logomade4it.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"87\" \/>\n\t\t<meta property=\"og:image:height\" content=\"27\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-05-25T21:16:55+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-06-29T19:45:31+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"How to Configure Geofeed on Registro.br -\" \/>\n\t\t<meta name=\"twitter:description\" content=\"In the previous article, we discussed Geofeed, RFC 8805, RFC 9632, RDAP, and why this matters to service providers. Now let&#039;s move on to the practical part. The idea here is to set up a simple example of a geofeed publication using Registro.br, with a CSV file published over HTTPS and validation via WHOIS and\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/made4it.com.br\/wp-content\/uploads\/2025\/09\/logomade4it.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/how-to-configure-geofeed-on-registro-br\\\/#blogposting\",\"name\":\"How to Configure Geofeed on Registro.br -\",\"headline\":\"How to Configure Geofeed on Registro.br\",\"author\":{\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/author\\\/made4it\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/made4it.com.br\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/Capa-artigo-GEOFEED.png\",\"width\":978,\"height\":630},\"datePublished\":\"2026-05-25T21:16:55+00:00\",\"dateModified\":\"2026-06-29T19:45:31+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/how-to-configure-geofeed-on-registro-br\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/how-to-configure-geofeed-on-registro-br\\\/#webpage\"},\"articleSection\":\"N\\u00e3o categorizado\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/how-to-configure-geofeed-on-registro-br\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/category\\\/nao-categorizado\\\/#listItem\",\"name\":\"N\\u00e3o categorizado\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/category\\\/nao-categorizado\\\/#listItem\",\"position\":2,\"name\":\"N\\u00e3o categorizado\",\"item\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/category\\\/nao-categorizado\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/how-to-configure-geofeed-on-registro-br\\\/#listItem\",\"name\":\"How to Configure Geofeed on Registro.br\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/how-to-configure-geofeed-on-registro-br\\\/#listItem\",\"position\":3,\"name\":\"How to Configure Geofeed on Registro.br\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/category\\\/nao-categorizado\\\/#listItem\",\"name\":\"N\\u00e3o categorizado\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/#organization\",\"name\":\"Made4it\",\"url\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/made4it.com.br\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/logomade4it.png\",\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/how-to-configure-geofeed-on-registro-br\\\/#organizationLogo\",\"width\":87,\"height\":27},\"image\":{\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/how-to-configure-geofeed-on-registro-br\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/author\\\/made4it\\\/#author\",\"url\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/author\\\/made4it\\\/\",\"name\":\"Made4it\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/how-to-configure-geofeed-on-registro-br\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9e851ee58f38006902829c03b2dc8e42c8a735a5561b807ca366ed66bd41f2ca?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Made4it\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/how-to-configure-geofeed-on-registro-br\\\/#webpage\",\"url\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/how-to-configure-geofeed-on-registro-br\\\/\",\"name\":\"How to Configure Geofeed on Registro.br -\",\"description\":\"In the previous article, we discussed Geofeed, RFC 8805, RFC 9632, RDAP, and why this matters to service providers. Now let's move on to the practical part. The idea here is to set up a simple example of a geofeed publication using Registro.br, with a CSV file published over HTTPS and validation via WHOIS and\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/how-to-configure-geofeed-on-registro-br\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/author\\\/made4it\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/author\\\/made4it\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/made4it.com.br\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/Capa-artigo-GEOFEED.png\",\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/how-to-configure-geofeed-on-registro-br\\\/#mainImage\",\"width\":978,\"height\":630},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/blog\\\/how-to-configure-geofeed-on-registro-br\\\/#mainImage\"},\"datePublished\":\"2026-05-25T21:16:55+00:00\",\"dateModified\":\"2026-06-29T19:45:31+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/\",\"name\":\"Made4it\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/made4it.com.br\\\/en\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"How to Configure Geofeed on Registro.br -","description":"In the previous article, we discussed Geofeed, RFC 8805, RFC 9632, RDAP, and why this matters to service providers. Now let's move on to the practical part. The idea here is to set up a simple example of a geofeed publication using Registro.br, with a CSV file published over HTTPS and validation via WHOIS and","canonical_url":"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/#blogposting","name":"How to Configure Geofeed on Registro.br -","headline":"How to Configure Geofeed on Registro.br","author":{"@id":"https:\/\/made4it.com.br\/en\/blog\/author\/made4it\/#author"},"publisher":{"@id":"https:\/\/made4it.com.br\/en\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/made4it.com.br\/wp-content\/uploads\/2026\/05\/Capa-artigo-GEOFEED.png","width":978,"height":630},"datePublished":"2026-05-25T21:16:55+00:00","dateModified":"2026-06-29T19:45:31+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/#webpage"},"isPartOf":{"@id":"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/#webpage"},"articleSection":"N\u00e3o categorizado"},{"@type":"BreadcrumbList","@id":"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/made4it.com.br\/en\/#listItem","position":1,"name":"Home","item":"https:\/\/made4it.com.br\/en\/","nextItem":{"@type":"ListItem","@id":"https:\/\/made4it.com.br\/en\/blog\/category\/nao-categorizado\/#listItem","name":"N\u00e3o categorizado"}},{"@type":"ListItem","@id":"https:\/\/made4it.com.br\/en\/blog\/category\/nao-categorizado\/#listItem","position":2,"name":"N\u00e3o categorizado","item":"https:\/\/made4it.com.br\/en\/blog\/category\/nao-categorizado\/","nextItem":{"@type":"ListItem","@id":"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/#listItem","name":"How to Configure Geofeed on Registro.br"},"previousItem":{"@type":"ListItem","@id":"https:\/\/made4it.com.br\/en\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/#listItem","position":3,"name":"How to Configure Geofeed on Registro.br","previousItem":{"@type":"ListItem","@id":"https:\/\/made4it.com.br\/en\/blog\/category\/nao-categorizado\/#listItem","name":"N\u00e3o categorizado"}}]},{"@type":"Organization","@id":"https:\/\/made4it.com.br\/en\/#organization","name":"Made4it","url":"https:\/\/made4it.com.br\/en\/","logo":{"@type":"ImageObject","url":"https:\/\/made4it.com.br\/wp-content\/uploads\/2025\/09\/logomade4it.png","@id":"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/#organizationLogo","width":87,"height":27},"image":{"@id":"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/made4it.com.br\/en\/blog\/author\/made4it\/#author","url":"https:\/\/made4it.com.br\/en\/blog\/author\/made4it\/","name":"Made4it","image":{"@type":"ImageObject","@id":"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/9e851ee58f38006902829c03b2dc8e42c8a735a5561b807ca366ed66bd41f2ca?s=96&d=mm&r=g","width":96,"height":96,"caption":"Made4it"}},{"@type":"WebPage","@id":"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/#webpage","url":"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/","name":"How to Configure Geofeed on Registro.br -","description":"In the previous article, we discussed Geofeed, RFC 8805, RFC 9632, RDAP, and why this matters to service providers. Now let's move on to the practical part. The idea here is to set up a simple example of a geofeed publication using Registro.br, with a CSV file published over HTTPS and validation via WHOIS and","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/made4it.com.br\/en\/#website"},"breadcrumb":{"@id":"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/#breadcrumblist"},"author":{"@id":"https:\/\/made4it.com.br\/en\/blog\/author\/made4it\/#author"},"creator":{"@id":"https:\/\/made4it.com.br\/en\/blog\/author\/made4it\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/made4it.com.br\/wp-content\/uploads\/2026\/05\/Capa-artigo-GEOFEED.png","@id":"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/#mainImage","width":978,"height":630},"primaryImageOfPage":{"@id":"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/#mainImage"},"datePublished":"2026-05-25T21:16:55+00:00","dateModified":"2026-06-29T19:45:31+00:00"},{"@type":"WebSite","@id":"https:\/\/made4it.com.br\/en\/#website","url":"https:\/\/made4it.com.br\/en\/","name":"Made4it","inLanguage":"en-US","publisher":{"@id":"https:\/\/made4it.com.br\/en\/#organization"}}]},"og:locale":"en_US","og:site_name":"Made4it -","og:type":"article","og:title":"How to Configure Geofeed on Registro.br -","og:description":"In the previous article, we discussed Geofeed, RFC 8805, RFC 9632, RDAP, and why this matters to service providers. Now let's move on to the practical part. The idea here is to set up a simple example of a geofeed publication using Registro.br, with a CSV file published over HTTPS and validation via WHOIS and","og:url":"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/","og:image":"https:\/\/made4it.com.br\/wp-content\/uploads\/2025\/09\/logomade4it.png","og:image:secure_url":"https:\/\/made4it.com.br\/wp-content\/uploads\/2025\/09\/logomade4it.png","og:image:width":87,"og:image:height":27,"article:published_time":"2026-05-25T21:16:55+00:00","article:modified_time":"2026-06-29T19:45:31+00:00","twitter:card":"summary_large_image","twitter:title":"How to Configure Geofeed on Registro.br -","twitter:description":"In the previous article, we discussed Geofeed, RFC 8805, RFC 9632, RDAP, and why this matters to service providers. Now let's move on to the practical part. The idea here is to set up a simple example of a geofeed publication using Registro.br, with a CSV file published over HTTPS and validation via WHOIS and","twitter:image":"https:\/\/made4it.com.br\/wp-content\/uploads\/2025\/09\/logomade4it.png"},"aioseo_meta_data":{"post_id":"18767","title":"#post_title #separator_sa","description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":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_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":null,"twitter_description":null,"schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"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,"limit_modified_date":false,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-06-29 19:45:25","updated":"2026-06-29 21:08:52"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/made4it.com.br\/en\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/made4it.com.br\/en\/blog\/category\/nao-categorizado\/\" title=\"N\u00e3o categorizado\">N\u00e3o categorizado<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tHow to Configure Geofeed on Registro.br\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/made4it.com.br\/en\/"},{"label":"N\u00e3o categorizado","link":"https:\/\/made4it.com.br\/en\/blog\/category\/nao-categorizado\/"},{"label":"How to Configure Geofeed on Registro.br","link":"https:\/\/made4it.com.br\/en\/blog\/how-to-configure-geofeed-on-registro-br\/"}],"_links":{"self":[{"href":"https:\/\/made4it.com.br\/en\/wp-json\/wp\/v2\/posts\/18767","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/made4it.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/made4it.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/made4it.com.br\/en\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/made4it.com.br\/en\/wp-json\/wp\/v2\/comments?post=18767"}],"version-history":[{"count":1,"href":"https:\/\/made4it.com.br\/en\/wp-json\/wp\/v2\/posts\/18767\/revisions"}],"predecessor-version":[{"id":18769,"href":"https:\/\/made4it.com.br\/en\/wp-json\/wp\/v2\/posts\/18767\/revisions\/18769"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/made4it.com.br\/en\/wp-json\/wp\/v2\/media\/18768"}],"wp:attachment":[{"href":"https:\/\/made4it.com.br\/en\/wp-json\/wp\/v2\/media?parent=18767"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/made4it.com.br\/en\/wp-json\/wp\/v2\/categories?post=18767"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/made4it.com.br\/en\/wp-json\/wp\/v2\/tags?post=18767"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}