From f1bd6b8c594c9d5ca773f16e6a0a18f1893c93f9 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 15 Dec 2020 09:16:46 +0100 Subject: [PATCH 1/4] ++ipv4 islands with jool article --- assets/u/image/ipv4-ipv6-nat-asymmetric.png | Bin 0 -> 20686 bytes assets/u/image/ipv4-nat.png | Bin 0 -> 26680 bytes .../image/ipv4-only-island-ipv6-reachable.png | Bin 0 -> 38141 bytes .../contents.lr | 93 ++++++++++++++++++ 4 files changed, 93 insertions(+) create mode 100644 assets/u/image/ipv4-ipv6-nat-asymmetric.png create mode 100644 assets/u/image/ipv4-nat.png create mode 100644 assets/u/image/ipv4-only-island-ipv6-reachable.png create mode 100644 content/u/blog/managing-ipv4-islands-with-jool/contents.lr diff --git a/assets/u/image/ipv4-ipv6-nat-asymmetric.png b/assets/u/image/ipv4-ipv6-nat-asymmetric.png new file mode 100644 index 0000000000000000000000000000000000000000..3e586871e239e72870ed5a7c57403d8dd6dd0747 GIT binary patch literal 20686 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 literal 0 HcmV?d00001 diff --git a/assets/u/image/ipv4-nat.png b/assets/u/image/ipv4-nat.png new file mode 100644 index 0000000000000000000000000000000000000000..d5e32f73b01df3b1ba95d1e2b86b4d55ed1e0df5 GIT binary patch literal 26680 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 literal 0 HcmV?d00001 diff --git a/assets/u/image/ipv4-only-island-ipv6-reachable.png b/assets/u/image/ipv4-only-island-ipv6-reachable.png new file mode 100644 index 0000000000000000000000000000000000000000..5c1aef1af511917f50492b1b858945a036267b2b GIT binary patch literal 38141 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 literal 0 HcmV?d00001 diff --git a/content/u/blog/managing-ipv4-islands-with-jool/contents.lr b/content/u/blog/managing-ipv4-islands-with-jool/contents.lr new file mode 100644 index 0000000..b694cfa --- /dev/null +++ b/content/u/blog/managing-ipv4-islands-with-jool/contents.lr @@ -0,0 +1,93 @@ +_hidden: no +--- +_discoverable: yes +--- +pub_date: 2020-12-15 +--- +title: Managing IPv4 islands with Jool +--- +abstract: How jool allows us to enable IPv4 islands +--- +body: + +## Introduction + +At ungleich we are using [Jool](https://www.jool.mx/) in a +variety of scenarios with NAT64 or SIIT. The main use of jool +in our infrastructure is to enable IPv6 only +hosts to communicate with the IPv4 Internet. + +However today we want to show you a different use case of jool: +Enabling IPv4 islands to communicate with the IPv6 Internet. + +For this we will focus on using Jool on +[OpenWrt](https://openwrt.org), because this is a platform that you +can also easily use in your networks or even at home. + +## The general problem to solve + +The literally biggest problem to solve when connecting the two +different worlds is that the IPv6 space is significantly bigger. This +is a problem, because we cannot achieve a 1:1 mapping from the IPv4 +world, but we can do a 1:1 mapping from the IPv6 world: + +![](/u/image/ipv4-ipv6-nat-asymmetric.png) + +## Making IPv4 islands reachable + +Assume that you are mostly running IPv6 only networks. And you happen +to have some hosts, which, for whatever reason, cannot be switched to +IPv6. We can use a stateful NAT64 to map "the whole IPv6 Internet" to +192.0.2.1 as follows: + +![](/u/image/ipv4-only-island-ipv6-reachable.png) + +This works pretty similar to regular NAT that you are used from +home. If we compare it visually, it is even more clear: + +![](/u/image/ipv4-nat.png) + +Let's have a look at this in an OpenWrt context: + +* The LAN network is usually 192.168.1.0/24 +* The router's IPv4 address is usually 192.168.1.1 +* In this example we routed 2a0a:e5c1:18f::/48 to the router +* 192.168.1.0/24 has 8 bits for the hosts (32-24=8) +* We choose 2a0a:e5c1:18f:b00::/120 to map the IPv4 island (128-120=8) +* We use the OpenWrt's standard address to masquerade/squash the IPv6 Internet + +First we will create an "IPv4 pool": + +``` +root@vigir2:~# jool -4 -a 192.168.1.1 +root@vigir2:~# jool -4 ++------------+-------+--------------------+-----------------+-------------+ +| Mark | Proto | Max iterations | Address | Ports | ++------------+-------+--------------------+-----------------+-------------+ +| 0 | TCP | 1024 ( auto) | 192.168.1.1 | 1-65535 | ++------------+-------+--------------------+-----------------+-------------+ +| 0 | UDP | 1024 ( auto) | 192.168.1.1 | 1-65535 | ++------------+-------+--------------------+-----------------+-------------+ +| 0 | ICMP | 1024 ( auto) | 192.168.1.1 | 0-65535 | ++------------+-------+--------------------+-----------------+-------------+ + (Fetched 3 samples.) +``` + +This allows jool to map IPv6 addresses stateful to 192.168.1.1 and +basically allows incoming IPv6 traffic. What is left now is to +configure the mapping from IPv6 to IPv4. For this we use the pool6 +argument of jool: + +``` +jool -6 2a0a:e5c1:18f:b00::/96 +``` + +Note that we cheated here. We did not only map +2a0a:e5c1:18f:b00::/120, but we did actually map the whole IPv4 +range. The advantage of this is that we do not need to care which +networks are used on the IPv4 island. Any IPv4 address inside the LAN +segment is now reachable. If you want to reach the IP address +192.168.1.42, you can ping as **2a0a:e5c1:18f:b00::192.168.1.42**. As +a matter of fact, while writing this article, the sample network is up and +running and you should be able to **ping +2a0a:e5c1:18f:b00::192.168.1.1** from the IPv6 Internet. From 5c5fa93d130bddd1f3a51008af64ca491e2c7fcd Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 15 Dec 2020 09:17:58 +0100 Subject: [PATCH 2/4] rename slug --- .../contents.lr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename content/u/blog/{managing-ipv4-islands-with-jool => managing-ipv4-islands-with-jool-and-openwrt}/contents.lr (96%) diff --git a/content/u/blog/managing-ipv4-islands-with-jool/contents.lr b/content/u/blog/managing-ipv4-islands-with-jool-and-openwrt/contents.lr similarity index 96% rename from content/u/blog/managing-ipv4-islands-with-jool/contents.lr rename to content/u/blog/managing-ipv4-islands-with-jool-and-openwrt/contents.lr index b694cfa..28208a7 100644 --- a/content/u/blog/managing-ipv4-islands-with-jool/contents.lr +++ b/content/u/blog/managing-ipv4-islands-with-jool-and-openwrt/contents.lr @@ -4,9 +4,9 @@ _discoverable: yes --- pub_date: 2020-12-15 --- -title: Managing IPv4 islands with Jool +title: Managing IPv4 islands with Jool and OpenWrt --- -abstract: How jool allows us to enable IPv4 islands +abstract: How to access IPv4 islands from IPv6 networks --- body: From 1ea1315f0c1cb855c25a2815e5c57cdd6fea9edc Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 15 Dec 2020 09:26:41 +0100 Subject: [PATCH 3/4] ++more of this --- .../contents.lr | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/content/u/blog/managing-ipv4-islands-with-jool-and-openwrt/contents.lr b/content/u/blog/managing-ipv4-islands-with-jool-and-openwrt/contents.lr index 28208a7..2aa51ee 100644 --- a/content/u/blog/managing-ipv4-islands-with-jool-and-openwrt/contents.lr +++ b/content/u/blog/managing-ipv4-islands-with-jool-and-openwrt/contents.lr @@ -12,10 +12,10 @@ body: ## Introduction -At ungleich we are using [Jool](https://www.jool.mx/) in a -variety of scenarios with NAT64 or SIIT. The main use of jool -in our infrastructure is to enable IPv6 only -hosts to communicate with the IPv4 Internet. +At ungleich we are using [Jool](https://www.jool.mx/) in a variety of +scenarios with NAT64 or SIIT. The main use of jool in our +infrastructure is to enable IPv6 only hosts to communicate with the +IPv4 Internet. However today we want to show you a different use case of jool: Enabling IPv4 islands to communicate with the IPv6 Internet. @@ -33,6 +33,16 @@ world, but we can do a 1:1 mapping from the IPv6 world: ![](/u/image/ipv4-ipv6-nat-asymmetric.png) +## Installing jool + +Installing jool on OpenWrt is very easy, it is just a matter of +installing the kernel module and the tools for managing jool: + +``` +opkg update +opkg install kmod-jool jool-tools +``` + ## Making IPv4 islands reachable Assume that you are mostly running IPv6 only networks. And you happen @@ -91,3 +101,8 @@ segment is now reachable. If you want to reach the IP address a matter of fact, while writing this article, the sample network is up and running and you should be able to **ping 2a0a:e5c1:18f:b00::192.168.1.1** from the IPv6 Internet. + +## More of this? + +If you are interested in IPv6 or network, feel free to join us on the +[IPv6.chat](https://IPv6.chat). From 0e880de2d31b361acf485c4b42efe7aac9cfde0b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 15 Dec 2020 09:30:34 +0100 Subject: [PATCH 4/4] ++author --- .../managing-ipv4-islands-with-jool-and-openwrt/contents.lr | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/content/u/blog/managing-ipv4-islands-with-jool-and-openwrt/contents.lr b/content/u/blog/managing-ipv4-islands-with-jool-and-openwrt/contents.lr index 2aa51ee..abd60df 100644 --- a/content/u/blog/managing-ipv4-islands-with-jool-and-openwrt/contents.lr +++ b/content/u/blog/managing-ipv4-islands-with-jool-and-openwrt/contents.lr @@ -8,6 +8,10 @@ title: Managing IPv4 islands with Jool and OpenWrt --- abstract: How to access IPv4 islands from IPv6 networks --- +author: ungleich +--- +twitter_handle: ungleich +--- body: ## Introduction