{"id":13849,"date":"2022-09-13T10:09:11","date_gmt":"2022-09-13T07:09:11","guid":{"rendered":"https:\/\/kifarunix.com\/?p=13849"},"modified":"2024-03-09T21:27:19","modified_gmt":"2024-03-09T18:27:19","slug":"configure-centos-rocky-oracle-linux-as-a-linux-router","status":"publish","type":"post","link":"https:\/\/kifarunix.com\/configure-centos-rocky-oracle-linux-as-a-linux-router\/","title":{"rendered":"Configure CentOS\/Rocky\/Oracle Linux as a Linux Router"},"content":{"rendered":"\n<p>Follow through this guide to learn how to configure CentOS\/Rocky\/Oracle Linux as a Linux Router. <em>A <a href=\"https:\/\/www.cloudflare.com\/learning\/network-layer\/what-is-a-router\/\" target=\"_blank\" rel=\"noreferrer noopener\">router<\/a> is a device that connects two or more IP networks or subnetworks<\/em>. Linux can be configured as a default gateway to route traffic between networks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configure CentOS\/Rocky\/Oracle Linux as a Linux Router<\/h2>\n\n\n\n<p>In this tutorial, we will be basing our configuration on this sample network architecture;<\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/configure-ubuntu-20-04-as-linux-router\/#basic-net-arc\" target=\"_blank\" rel=\"noreferrer noopener\">Basic network architecture<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">IP Address Assignment<\/h3>\n\n\n\n<p>Router (Oracle\/CentOS\/Rocky) Node;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ip a<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\n1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000\n    link\/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n    inet 127.0.0.1\/8 scope host lo\n       valid_lft forever preferred_lft forever\n    inet6 ::1\/128 scope host \n       valid_lft forever preferred_lft forever\n2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000\n    link\/ether 08:00:27:61:8b:f0 brd ff:ff:ff:ff:ff:ff\n    inet 192.168.100.153\/24 brd 192.168.100.255 scope global dynamic noprefixroute enp0s3\n       valid_lft 85790sec preferred_lft 85790sec\n    inet6 fe80::a00:27ff:fe61:8bf0\/64 scope link noprefixroute \n       valid_lft forever preferred_lft forever\n3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000\n    link\/ether 08:00:27:a3:6a:d3 brd ff:ff:ff:ff:ff:ff\n    inet 172.16.0.1\/24 brd 172.16.0.255 scope global noprefixroute enp0s8\n       valid_lft forever preferred_lft forever\n    inet6 fe80::9369:6ae8:76af:9e67\/64 scope link noprefixroute \n       valid_lft forever preferred_lft forever\n4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000\n    link\/ether 08:00:27:32:e2:42 brd ff:ff:ff:ff:ff:ff\n    inet 172.16.1.1\/24 brd 172.16.1.255 scope global noprefixroute enp0s9\n       valid_lft forever preferred_lft forever\n    inet6 fe80::ea61:99b4:6980:4dd2\/64 scope link noprefixroute \n       valid_lft forever preferred_lft forever\n<\/code><\/pre>\n\n\n\n<p>Routing table;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ip r<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>default via <strong>192.168.100.1<\/strong> dev enp0s3 proto dhcp metric 100 \n172.16.0.0\/24 dev enp0s8 proto kernel scope link src 172.16.0.1 metric 105 \n172.16.1.0\/24 dev enp0s9 proto kernel scope link src 172.16.1.1 metric 106 \n192.168.100.0\/24 dev enp0s3 proto kernel scope link src 192.168.100.153 metric 100<\/code><\/pre>\n\n\n\n<p>Host on 172.16.0.0\/24 Network;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ip a<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\n1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000\n    link\/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n    inet 127.0.0.1\/8 scope host lo\n       valid_lft forever preferred_lft forever\n    inet6 ::1\/128 scope host \n       valid_lft forever preferred_lft forever\n2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000\n    link\/ether 08:00:27:90:ff:e8 brd ff:ff:ff:ff:ff:ff\n    inet 172.16.0.10\/24 brd 172.16.0.255 scope global noprefixroute enp0s3\n       valid_lft forever preferred_lft forever\n    inet6 fe80::fffa:c73a:2ba0:bc02\/64 scope link noprefixroute \n       valid_lft forever preferred_lft forever\n<\/code><\/pre>\n\n\n\n<p>Routes;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ip r<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>default via 172.16.0.1 dev enp0s3 proto static metric 100 \n172.16.0.0\/24 dev enp0s3 proto kernel scope link src 172.16.0.10 metric 100<\/code><\/pre>\n\n\n\n<p>Host on 172.16.1.0\/24 network;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ip a<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\n1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000\n    link\/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n    inet 127.0.0.1\/8 scope host lo\n       valid_lft forever preferred_lft forever\n    inet6 ::1\/128 scope host \n       valid_lft forever preferred_lft forever\n2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000\n    link\/ether 08:00:27:87:01:a6 brd ff:ff:ff:ff:ff:ff\n    inet 172.16.1.10\/24 brd 172.16.1.255 scope global noprefixroute enp0s3\n       valid_lft forever preferred_lft forever\n    inet6 fe80::f5ff:ebb9:ef12:eb10\/64 scope link noprefixroute \n       valid_lft forever preferred_lft forever\n<\/code><\/pre>\n\n\n\n<p>Routes;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ip r<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>default via 172.16.1.1 dev enp0s3 proto static metric 100 \n172.16.1.0\/24 dev enp0s3 proto kernel scope link src 172.16.1.10 metric 100<\/code><\/pre>\n\n\n\n<p>As you might have already figured out;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>No LAN system on 172.16.0.0\/24 and 172.16.1.0\/24 network has internet access, except the router itself<\/li>\n\n\n\n<li>LAN systems can access the router only.<\/li>\n\n\n\n<li>Systems on different LANs cannot communicate.<\/li>\n<\/ul>\n\n\n\n<div><a href=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/09\/configure-linux-as-router.png\" class=\"td-modal-image\"><figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1905\" height=\"963\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/09\/configure-linux-as-router.png\" alt=\"Configure CentOS\/Rocky\/Oracle Linux as a Linux Router\" class=\"wp-image-14014\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/09\/configure-linux-as-router.png?v=1663052682 1905w, https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/09\/configure-linux-as-router-768x388.png?v=1663052682 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/09\/configure-linux-as-router-1536x776.png?v=1663052682 1536w\" sizes=\"(max-width: 1905px) 100vw, 1905px\" \/><\/figure><\/a><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Enable Kernel IP forwarding on Ubuntu Linux Router<\/h3>\n\n\n\n<p>In order for the Linux router to function as a router, receive and forward packets, you need to enable kernel IP forwarding.<\/p>\n\n\n\n<p>To enable IP forwarding, you need to uncomment the line&nbsp;<code><strong>net.ipv4.ip_forward<\/strong><\/code>&nbsp;on the&nbsp;<code><strong>\/etc\/sysctl.conf<\/strong><\/code>&nbsp;configuration file and set its value to 1, if by any chance it is set to 0.<\/p>\n\n\n\n<p>So, first check if the said line is already defined on the configuration file;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>grep net.ipv4.ip_forward \/etc\/sysctl.conf<\/code><\/pre>\n\n\n\n<p>if the line is present in the config file and commented, simply uncomment by running the command below;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>sed -i '\/net.ipv4.ip_forward\/s\/^#\/\/' \/etc\/sysctl.conf<\/code><\/pre>\n\n\n\n<p>Otherwise, just insert the line;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>echo 'net.ipv4.ip_forward=1' &gt;&gt; \/etc\/sysctl.conf<\/code><\/pre>\n\n\n\n<p>Next, apply the changes;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>sysctl -p<\/code><\/pre>\n\n\n\n<p>Check the status by running the command below;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>sysctl net.ipv4.ip_forward<\/code><\/pre>\n\n\n\n<p>Value should be 1.<\/p>\n\n\n\n<p>At this point, the systems on different LANs, 172.16.0.0\/24 and 172.16.1.0\/24 can now JUST ping each other. They do not have Internet access, however.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Configure Packet Forwarding on Linux Router<\/h3>\n\n\n\n<p>The configurations in the next step can be handled using&nbsp;<code><strong>iptables<\/strong><\/code>&nbsp;or via the <strong><code>firewalld<\/code><\/strong>.<\/p>\n\n\n\n<p>We use IPtables in this guide;<\/p>\n\n\n\n<p>Hence, stop Firewalld and install IPtables service and start IPtables;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl disable --now firewalld<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>dnf install iptables-services -y<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl enable --now iptables<\/code><\/pre>\n\n\n\n<p>The current firewall rules are saved;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>iptables -L -nv<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\nChain INPUT (policy ACCEPT 0 packets, 0 bytes)\n pkts bytes target     prot opt in     out     source               destination         \n  139 10300 ACCEPT     all  --  *      *       0.0.0.0\/0            0.0.0.0\/0            state RELATED,ESTABLISHED\n    0     0 ACCEPT     icmp --  *      *       0.0.0.0\/0            0.0.0.0\/0           \n    0     0 ACCEPT     all  --  lo     *       0.0.0.0\/0            0.0.0.0\/0           \n    0     0 ACCEPT     tcp  --  *      *       0.0.0.0\/0            0.0.0.0\/0            state NEW tcp dpt:22\n    0     0 REJECT     all  --  *      *       0.0.0.0\/0            0.0.0.0\/0            reject-with icmp-host-prohibited\n\nChain FORWARD (policy ACCEPT 78 packets, 6552 bytes)\n pkts bytes target     prot opt in     out     source               destination         \n\nChain OUTPUT (policy ACCEPT 103 packets, 14732 bytes)\n pkts bytes target     prot opt in     out     source               destination\n<\/code><\/pre>\n\n\n\n<p>First of all, we will set the default policy for the FORWARD chain to DROP so we can explicitly define which traffic to be allowed.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>iptables -P FORWARD DROP<\/code><\/pre>\n\n\n\n<p>Next, let&#8217;s configure the packets received from router LAN interfaces (<strong>enp0s8<\/strong>&nbsp;and&nbsp;<strong>enp0s9<\/strong>) to be forwarded through the WAN interface, which in our case is&nbsp;<code><strong>enp0s3<\/strong><\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>iptables -I FORWARD -i enp0s8 -o enp0s3 -j ACCEPT<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>iptables -A FORWARD -i enp0s9 -o enp0s3 -j ACCEPT<\/code><\/pre>\n\n\n\n<p>Enable packet forwarding between LAN networks;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>iptables -A FORWARD -i enp0s9 -o enp0s8 -j ACCEPT<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>iptables -A FORWARD -i enp0s8 -o enp0s9 -j ACCEPT<\/code><\/pre>\n\n\n\n<p>Similarly, configure packets that are associated with existing connections received on a WAN interface to be forwarded to the LAN interfaces;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>iptables -A FORWARD -i  enp0s3 -o enp0s8 -m state --state RELATED,ESTABLISHED -j ACCEPT<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>iptables -A FORWARD -i  enp0s3 -o enp0s9 -m state --state RELATED,ESTABLISHED -j ACCEPT<\/code><\/pre>\n\n\n\n<p>Note, if you do not want to use the individual FORWARD chain rules above, you can simply allow anything across the chain;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>iptables -I FORWARD -j ACCEPT<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Configure Router Network Address Translation<\/h4>\n\n\n\n<p>Next, configure the router to allow LAN systems to access Internet via the routers default GW IP address. This is called <strong>IP Masquerade<\/strong>. <\/p>\n\n\n\n<p>IP Masquerade can only be done on the NAT table;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE<\/code><\/pre>\n\n\n\n<p>Consult&nbsp;<strong><code>man iptables<\/code><\/strong>&nbsp;for more information.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Save iptables rules Permanently in Linux<\/h4>\n\n\n\n<p>Yo permanently save iptables rules, use the&nbsp;<strong><code>iptables-save<\/code><\/strong>&nbsp;command as follows.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cp \/etc\/sysconfig\/iptables{,.bak}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>iptables-save &gt; \/etc\/sysconfig\/iptables<\/code><\/pre>\n\n\n\n<p>Install IPtables services and restart the services to reload the rules and apply the newly added ones;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dnf install iptables-services<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>systemctl restart iptables<\/code><\/pre>\n\n\n\n<p>Confirm the rules;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>iptables -L -nv<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\nChain INPUT (policy ACCEPT 0 packets, 0 bytes)\n pkts bytes target     prot opt in     out     source               destination         \n   34  2296 ACCEPT     all  --  *      *       0.0.0.0\/0            0.0.0.0\/0            state RELATED,ESTABLISHED\n    0     0 ACCEPT     icmp --  *      *       0.0.0.0\/0            0.0.0.0\/0           \n    0     0 ACCEPT     all  --  lo     *       0.0.0.0\/0            0.0.0.0\/0           \n    0     0 ACCEPT     tcp  --  *      *       0.0.0.0\/0            0.0.0.0\/0            state NEW tcp dpt:22\n    0     0 REJECT     all  --  *      *       0.0.0.0\/0            0.0.0.0\/0            reject-with icmp-host-prohibited\n\nChain FORWARD (policy DROP 0 packets, 0 bytes)\n pkts bytes target     prot opt in     out     source               destination         \n    0     0 ACCEPT     all  --  enp0s8 enp0s3  0.0.0.0\/0            0.0.0.0\/0           \n    0     0 ACCEPT     all  --  enp0s9 enp0s3  0.0.0.0\/0            0.0.0.0\/0           \n    0     0 ACCEPT     all  --  enp0s9 enp0s8  0.0.0.0\/0            0.0.0.0\/0           \n    0     0 ACCEPT     all  --  enp0s8 enp0s9  0.0.0.0\/0            0.0.0.0\/0           \n    0     0 ACCEPT     all  --  enp0s3 enp0s8  0.0.0.0\/0            0.0.0.0\/0            state RELATED,ESTABLISHED\n    0     0 ACCEPT     all  --  enp0s3 enp0s9  0.0.0.0\/0            0.0.0.0\/0            state RELATED,ESTABLISHED\n\nChain OUTPUT (policy ACCEPT 20 packets, 4388 bytes)\n pkts bytes target     prot opt in     out     source               destination\n<\/code><\/pre>\n\n\n\n<p>Check the NAT tables rules;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>iptables -t nat -L -nv<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\nChain PREROUTING (policy ACCEPT 6 packets, 440 bytes)\n pkts bytes target     prot opt in     out     source               destination         \n\nChain INPUT (policy ACCEPT 0 packets, 0 bytes)\n pkts bytes target     prot opt in     out     source               destination         \n\nChain POSTROUTING (policy ACCEPT 1 packets, 60 bytes)\n pkts bytes target     prot opt in     out     source               destination         \n    5   380 MASQUERADE  all  --  *      enp0s3  0.0.0.0\/0            0.0.0.0\/0           \n\nChain OUTPUT (policy ACCEPT 0 packets, 0 bytes)\n pkts bytes target     prot opt in     out     source               destination\n<\/code><\/pre>\n\n\n\n<p>Systems on different LANs should now be able to communicate with each other and to the outside world.<a href=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/05\/lan-internet-connection.png\"><\/a><\/p>\n\n\n\n<div><a href=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/09\/Linux-router-LAN-connections.png\" class=\"td-modal-image\"><figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1906\" height=\"1051\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/09\/Linux-router-LAN-connections.png\" alt=\"Configure CentOS\/Rocky\/Oracle Linux as a Linux Router\" class=\"wp-image-14015\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/09\/Linux-router-LAN-connections.png?v=1663052750 1906w, https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/09\/Linux-router-LAN-connections-768x423.png?v=1663052750 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/09\/Linux-router-LAN-connections-1536x847.png?v=1663052750 1536w\" sizes=\"(max-width: 1906px) 100vw, 1906px\" \/><\/figure><\/a><\/div>\n\n\n\n<p>And there you go. Your CentOS\/Rocky\/Oracle Linux machine now should be able to route traffic through for your LAN.<\/p>\n\n\n\n<p>That concludes our guide on how to configure Linux as a router.<\/p>\n\n\n\n<p>Other Tutorials<\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/basic-operation-of-firewalld-in-linux\/\" target=\"_blank\" rel=\"noreferrer noopener\">Basic Operation of Firewalld in Linux<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/install-pfsense-firewall-on-kvm\/\" target=\"_blank\" rel=\"noreferrer noopener\">Install pfSense Firewall on KVM<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/install-and-configure-endian-firewall-on-virtualbox\/\" target=\"_blank\" rel=\"noreferrer noopener\">Install and Configure Endian Firewall on VirtualBox<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Follow through this guide to learn how to configure CentOS\/Rocky\/Oracle Linux as a Linux Router. A router is a device that connects two or more<\/p>\n","protected":false},"author":1,"featured_media":14016,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_lock_modified_date":false,"footnotes":""},"categories":[121,44,34],"tags":[5798,5797,5800,5799,5801],"class_list":["post-13849","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-howtos","category-firewall","category-security","tag-configure-centos-rocky-oracle-linux-as-a-linux-router","tag-configure-linux-as-router","tag-iptables-linux-router","tag-linux-router","tag-turn-linux-server-into-a-router","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50","resize-featured-image"],"_links":{"self":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/13849"}],"collection":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/comments?post=13849"}],"version-history":[{"count":11,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/13849\/revisions"}],"predecessor-version":[{"id":20619,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/13849\/revisions\/20619"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media\/14016"}],"wp:attachment":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media?parent=13849"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/categories?post=13849"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/tags?post=13849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}