{"id":616,"date":"2022-01-17T19:12:01","date_gmt":"2022-01-17T19:12:01","guid":{"rendered":"https:\/\/adrianotanaka.com.br\/?p=616"},"modified":"2022-03-11T19:17:43","modified_gmt":"2022-03-11T19:17:43","slug":"transit-routing-acessando-servicos-do-oci-de-maneira-privada","status":"publish","type":"post","link":"https:\/\/adrianotanaka.com.br\/index.php\/2022\/01\/17\/transit-routing-acessando-servicos-do-oci-de-maneira-privada\/","title":{"rendered":"Transit Routing &#8211; Acessando servi\u00e7os do OCI de maneira privada"},"content":{"rendered":"\n<p>Um dos recursos dispon\u00edveis (e sugeridos) no OCI \u00e9 o uso de uma topologia de Hub-and-Spoke (<a rel=\"noreferrer noopener\" href=\"https:\/\/adrianotanaka.com.br\/index.php\/2021\/03\/22\/oci-rede-hub-spoke-libreswan\/\" target=\"_blank\">que eu j\u00e1 comentei aqui<\/a>) e podemos usar essa topologia para o acesso \u00e0 servi\u00e7os do OCI, tudo isso passando por dentro dessa conex\u00e3o, basicamente a sua rede local vai ser comunicar com a OCI sem passar pela internet, a conex\u00e3o pode ser tanto em cima de um Fastconnect ou VPN(que vamos abordar aqui).<\/p>\n\n\n\n<p>Esses s\u00e3o alguns dos servi\u00e7os que podem ser acessados dessa forma:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Autonomous Shared<\/li><li>Object Storage<\/li><li>Data Safe<\/li><li>Analytics Cloud<\/li><\/ul>\n\n\n\n<p>Os acessos s\u00e3o divididos em duas categorias:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Private Endpoint<ul><li>Nessa categoria ficam os servi\u00e7os que geram um ip privado para o acesso como por exemplo o autonomous Database<\/li><\/ul><\/li><li>Service Gateway<ul><li>Aqui s\u00e3o os servi\u00e7os que podem ser acessados via Service Gateway, o mais comum \u00e9 o Object Storage mas existe uma lista gigante do que pode ser acessado: <ul><li><a href=\"https:\/\/www.oracle.com\/cloud\/networking\/service-gateway\/service-gateway-supported-services\/\" target=\"_blank\" rel=\"noreferrer noopener\">Service Gateway: Supported Cloud Services in Oracle Services Network<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul>\n\n\n\n<p>A diferen\u00e7a aqui \u00e9 que os servi\u00e7os que entregam acesso via Private Endpoint geram um IP na sua VCN e voc\u00ea pode inclusive gerenciar seu acesso com NSG\/Sec. List enquanto que no acesso via Service Gateway voc\u00ea n\u00e3o tem esse controle.<\/p>\n\n\n\n<p>Essa diferen\u00e7a \u00e9 demonstrada na topologia abaixo:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"788\" height=\"428\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image.png\" alt=\"\" class=\"wp-image-618\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image.png 788w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-300x163.png 300w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-768x417.png 768w\" sizes=\"auto, (max-width: 788px) 100vw, 788px\" \/><figcaption>De verde o acesso via Service GW e de Amarelo o acesso via Private Endpoint<\/figcaption><\/figure>\n\n\n\n<p>Al\u00e9m disso, ainda temos duas possibilidades de configura\u00e7\u00e3o, uma utilizando o que chamamos de roteamento entre Gateways e outra chamada Roteamento atrav\u00e9s de um IP Privado que \u00e9 basicamente quando temos um Firewall entre as duas pontas, hoje vou falar sobre a primeira op\u00e7\u00e3o.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Topologia<\/h1>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"607\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-1-1024x607.png\" alt=\"\" class=\"wp-image-620\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-1-1024x607.png 1024w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-1-300x178.png 300w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-1-768x455.png 768w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-1.png 1209w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Aqui vou usar um pouco do que j\u00e1 fiz no <a rel=\"noreferrer noopener\" href=\"https:\/\/adrianotanaka.com.br\/index.php\/2021\/03\/22\/oci-rede-hub-spoke-libreswan\/\" target=\"_blank\">post do Hub and Spoke<\/a>, minha topologia \u00e9 organizada da seguinte forma:<\/p>\n\n\n\n<p>IAD(meu lado onpremises)<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Rede: 10.100.0.0\/16<\/li><li>VPN: 10.100.71.204<\/li><li>VM client: 10.100.70.52<\/li><li>Tabela de rotas: Endere\u00e7o Obj Storage GRU -&gt; 10.100.71.204<\/li><\/ul>\n\n\n\n<p>GRU(meu lado cloud)<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Rede: 10.70.0.0\/16<\/li><li>Service Gateway<\/li><li>DRG<\/li><li>Tabelas de rota:<ul><li>RT_SGW_OUT: Rede IAD -&gt; DRG<\/li><li>RT_FAST: OCI GRU Object Storage -&gt; Service GW<\/li><\/ul><\/li><li>Object Storage<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">M\u00e3o na massa<\/h2>\n\n\n\n<p>Vamos assumir que voc\u00ea j\u00e1 tenha uma conex\u00e3o entre os dois ambientes(seja via VPN ou Fastconnect) e passar direto para a configura\u00e7\u00e3o dos recursos, a maior parte das configura\u00e7\u00f5es vai ser feita em GRU.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Recursos de rede:<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Tabelas de rota<\/h2>\n\n\n\n<p>Vamos precisar de duas tabelas de rota, uma que vai ser vinculada ao Service Gateway e vai conter a rede local(propaga a rota de volta) e outra que vai ser attachada ao DRG apontando o Service Gateway como destino(que propaga os endere\u00e7os dos servi\u00e7os dentro do t\u00fanel).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"519\" height=\"111\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-3.png\" alt=\"\" class=\"wp-image-629\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-3.png 519w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-3-300x64.png 300w\" sizes=\"auto, (max-width: 519px) 100vw, 519px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"751\" height=\"562\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-4.png\" alt=\"\" class=\"wp-image-630\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-4.png 751w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-4-300x225.png 300w\" sizes=\"auto, (max-width: 751px) 100vw, 751px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"632\" height=\"568\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-6.png\" alt=\"\" class=\"wp-image-632\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-6.png 632w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-6-300x270.png 300w\" sizes=\"auto, (max-width: 632px) 100vw, 632px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Service Gateway<\/h2>\n\n\n\n<p>Com a tabela de rotas criada, voc\u00ea pode criar o Service Gateway e vincular a tabela de rota que cont\u00e9m a rede local dentro dele, aqui vale ressaltar que a op\u00e7\u00e3o em Services vai ser respons\u00e1vel por propagar os endere\u00e7os, ent\u00e3o se voc\u00ea selecionar a op\u00e7\u00e3o All Services, todos os servi\u00e7os daquela regi\u00e3o v\u00e3o ser propagados.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"403\" height=\"397\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-7.png\" alt=\"\" class=\"wp-image-634\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-7.png 403w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-7-300x296.png 300w\" sizes=\"auto, (max-width: 403px) 100vw, 403px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"697\" height=\"94\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-2.png\" alt=\"\" class=\"wp-image-628\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-2.png 697w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-2-300x40.png 300w\" sizes=\"auto, (max-width: 697px) 100vw, 697px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">DRG<\/h2>\n\n\n\n<p>Ap\u00f3s o DRG criado, voc\u00ea precisa vincular uma tabela de rotas dentro dele, dentro do attachment voc\u00ea vai em edit e seleciona a tabela de rotas que aponta para o Service Gateway:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1022\" height=\"499\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-8.png\" alt=\"\" class=\"wp-image-635\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-8.png 1022w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-8-300x146.png 300w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-8-768x375.png 768w\" sizes=\"auto, (max-width: 1022px) 100vw, 1022px\" \/><\/figure>\n\n\n\n<p>Essa rota deve aparecer dentro da tabela de rotas do DRG, se voc\u00ea estiver usando tudo no padr\u00e3o ela vai se chamar <strong>Autogenerated Drg Route Table for VCN attachments<\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"947\" height=\"259\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-9.png\" alt=\"\" class=\"wp-image-636\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-9.png 947w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-9-300x82.png 300w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-9-768x210.png 768w\" sizes=\"auto, (max-width: 947px) 100vw, 947px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Ajustando o lado onpremises<\/h1>\n\n\n\n<p>No meu lado onpremises eu subi uma VPN usando Libreswan e tive que adicionar algumas rotas de forma manual pois estou usando VPN do tipo Route Based, o ideal \u00e9 que se voc\u00ea puder, use BGP pois dessa forma esse ajuste manual n\u00e3o \u00e9 necess\u00e1rio.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tabela de rotas no OCI<\/h2>\n\n\n\n<p>Perceba que a terceira linha joga todo o tr\u00e1fego com destino ao IP do Object Storage da regi\u00e3o GRU para a interface de rede da VPN:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"698\" height=\"357\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-12.png\" alt=\"\" class=\"wp-image-640\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-12.png 698w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-12-300x153.png 300w\" sizes=\"auto, (max-width: 698px) 100vw, 698px\" \/><\/figure>\n\n\n\n<p>Dentro da minha VM do LibreSwan eu tenho uma rota que joga o mesmo pacote para a interface de VPN:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"305\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-10-1024x305.png\" alt=\"\" class=\"wp-image-638\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-10-1024x305.png 1024w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-10-300x89.png 300w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-10-768x228.png 768w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-10.png 1042w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Dica, caso voc\u00ea esteja usando os dois t\u00faneis que a OCI disponibiliza(essa \u00e9 a melhor pr\u00e1tica) voc\u00ea pode adicionar a rota da seguinte forma:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ip route add 134.70.84.3\/32 nexthop dev vti01 nexthop dev vti2<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Testes<\/h2>\n\n\n\n<p>Nesse primeiro teste eu removi a rota que joga o trafego para a interface de VPN e ele est\u00e1 indo pela internet:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[opc@tnk-oci360 ~]$ traceroute objectstorage.sa-saopaulo-1.oraclecloud.com\ntraceroute to objectstorage.sa-saopaulo-1.oraclecloud.com (134.70.84.3), 30 hops max, 60 byte packets\n 1  140.91.196.216 (140.91.196.216)  0.138 ms 140.91.196.209 (140.91.196.209)  0.103 ms 140.91.196.222 (140.91.196.222)  0.133 ms\n 2  140.91.208.23 (140.91.208.23)  135.132 ms 140.91.208.10 (140.91.208.10)  135.087 ms 140.91.208.11 (140.91.208.11)  135.060 ms\n 3  * * *\n28  * * *\n29  * * *\n30  * * *\n[opc@tnk-oci360 ~]$ ping objectstorage.sa-saopaulo-1.oraclecloud.com\nPING objectstorage.sa-saopaulo-1.oci.oraclecloud.com (134.70.84.3) 56(84) bytes of data.\n64 bytes from 134.70.84.3 (134.70.84.3): icmp_seq=1 ttl=62 time=135 ms\n64 bytes from 134.70.84.3 (134.70.84.3): icmp_seq=2 ttl=62 time=135 ms\n64 bytes from 134.70.84.3 (134.70.84.3): icmp_seq=3 ttl=62 time=135 ms\n64 bytes from 134.70.84.3 (134.70.84.3): icmp_seq=4 ttl=62 time=135 ms\n^C\n--- objectstorage.sa-saopaulo-1.oci.oraclecloud.com ping statistics ---\n4 packets transmitted, 4 received, 0% packet loss, time 3004ms\nrtt min\/avg\/max\/mdev = 135.469\/135.531\/135.599\/0.453 ms\n<\/pre>\n\n\n\n<p>Adicionei a rota for\u00e7ando que o trafego saia da m\u00e1quina cliente para a de VPN mas deixei a VPN down:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[root@tnk-oci360 opc]# traceroute objectstorage.sa-saopaulo-1.oraclecloud.com\ntraceroute to objectstorage.sa-saopaulo-1.oraclecloud.com (134.70.84.3), 30 hops max, 60 byte packets\n 1  tanaka-libreswan.redewanusa.vcntanakausa.oraclevcn.com (10.100.71.204)  0.301 ms  0.261 ms  0.232 ms\n 2  tanaka-libreswan.redewanusa.vcntanakausa.oraclevcn.com (10.100.71.204)  0.230 ms !H  0.222 ms !H  0.196 ms !H\n\n<\/pre>\n\n\n\n<p>Subi a VPN e adicionei a rota na m\u00e1quina:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[root@tnk-oci360 opc]# traceroute objectstorage.sa-saopaulo-1.oraclecloud.com\ntraceroute to objectstorage.sa-saopaulo-1.oraclecloud.com (134.70.84.3), 30 hops max, 60 byte packets\n 1  tanaka-libreswan.redewanusa.vcntanakausa.oraclevcn.com (10.100.71.204)  0.342 ms  0.310 ms  0.294 ms\n 2  * * *\n 3  * * *\n 4  * * *\n 5  134.70.84.3 (134.70.84.3)  156.746 ms  150.718 ms  164.532 ms\n[root@tnk-oci360 opc]# \n\n<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Verificando por onde a comunica\u00e7\u00e3o est\u00e1 sendo feita<\/h1>\n\n\n\n<p>Se quiser validar por onde o acesso est\u00e1 sendo feito, basta ativar a op\u00e7\u00e3o de log no bucket e validar o campo clientIPAddress:<\/p>\n\n\n\n<p>Download da minha m\u00e1quina via internet:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"444\" height=\"326\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-14.png\" alt=\"\" class=\"wp-image-653\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-14.png 444w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-14-300x220.png 300w\" sizes=\"auto, (max-width: 444px) 100vw, 444px\" \/><\/figure>\n\n\n\n<p>Download via Transit:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"401\" height=\"292\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-15.png\" alt=\"\" class=\"wp-image-654\" srcset=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-15.png 401w, https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/image-15-300x218.png 300w\" sizes=\"auto, (max-width: 401px) 100vw, 401px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Removendo a comunica\u00e7\u00e3o<\/h1>\n\n\n\n<p>Para remover a comunica\u00e7\u00e3o, uma das formas \u00e9 remover a rota que aponta para a sua rede local:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1712\" height=\"650\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/transit.gif\" alt=\"\" class=\"wp-image-645\"\/><\/figure>\n\n\n\n<p>Voc\u00ea tamb\u00e9m pode usar a op\u00e7\u00e3o Block Traffic direto no Service Gateway mas isso vai parar todo e qualquer tr\u00e1fego que esteja usando esse gateway!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1712\" height=\"650\" src=\"https:\/\/adrianotanaka.com.br\/wp-content\/uploads\/2022\/01\/transit_2.gif\" alt=\"\" class=\"wp-image-648\"\/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Um dos recursos dispon\u00edveis (e sugeridos) no OCI \u00e9 o uso de uma topologia de Hub-and-Spoke (que eu j\u00e1 comentei aqui) e podemos usar essa topologia para o acesso \u00e0 servi\u00e7os do OCI, tudo isso passando por dentro dessa conex\u00e3o, basicamente a sua rede local vai ser comunicar com a OCI sem passar pela internet, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":618,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"material-hide-sections":[],"footnotes":""},"categories":[8,6,1],"tags":[],"class_list":["post-616","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oci","category-oracle","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/posts\/616","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=616"}],"version-history":[{"count":24,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/posts\/616\/revisions"}],"predecessor-version":[{"id":772,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/posts\/616\/revisions\/772"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/media\/618"}],"wp:attachment":[{"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=616"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=616"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=616"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}