<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Sipcalc | sgala.com . website</title><link>https://staging.sgala.com/tag/sipcalc/</link><atom:link href="https://staging.sgala.com/tag/sipcalc/index.xml" rel="self" type="application/rss+xml"/><description>Sipcalc</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Mon, 30 May 2022 09:17:06 +0100</lastBuildDate><image><url>https://staging.sgala.com/media/icon_hu_fc753c5997041613.png</url><title>Sipcalc</title><link>https://staging.sgala.com/tag/sipcalc/</link></image><item><title>IPv6 subnetting in command line with sipcalc</title><link>https://staging.sgala.com/post/ipv6-command-line-subnetting/</link><pubDate>Mon, 30 May 2022 09:17:06 +0100</pubDate><guid>https://staging.sgala.com/post/ipv6-command-line-subnetting/</guid><description>&lt;p&gt;I had to put my hands on my IPv6 network after lots of years&amp;hellip; my memories are not so good&amp;hellip;how to subnet a IPv6 network in command line?&lt;/p&gt;
&lt;h1 id="what-to-do"&gt;What to do&lt;/h1&gt;
&lt;p&gt;I need to generate a pool of network /64, /60, /56 and /48 to assign to new customers from larger CIDR. Quickly and without painass.&lt;/p&gt;
&lt;h1 id="sipcalc"&gt;Sipcalc&lt;/h1&gt;
&lt;p&gt;
it&amp;rsquo;s an amazing tool for IPv4 and IPv6 calculations.&lt;/p&gt;
&lt;p&gt;From the
I found a perfect option to do this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;* -S, --v6split=MASK (IPv6)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Split the current network into subnets of MASK size. MASK must be given in
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; CIDR form, either with or with the &amp;#39;/&amp;#39; character.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="problem"&gt;Problem&lt;/h1&gt;
&lt;p&gt;For example, I have a /48 network and I want to split into /56&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt; sipcalc -u 2a01:b600:4000::/48 -S &lt;span class="m"&gt;56&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt;head -n &lt;span class="m"&gt;50&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-&lt;span class="o"&gt;[&lt;/span&gt;ipv6 : 2a01:b600:4000::/48&lt;span class="o"&gt;]&lt;/span&gt; - &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;Split network - verbose&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-&lt;span class="o"&gt;[&lt;/span&gt;ipv6 : 2a01:b600:4000::/48&lt;span class="o"&gt;]&lt;/span&gt; - &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;IPV6 INFO&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Expanded Address - 2a01:b600:4000:0000:0000:0000:0000:0000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Compressed address - 2a01:b600:4000::
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Subnet prefix &lt;span class="o"&gt;(&lt;/span&gt;masked&lt;span class="o"&gt;)&lt;/span&gt; - 2a01:b600:4000:0:0:0:0:0/56
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Address ID &lt;span class="o"&gt;(&lt;/span&gt;masked&lt;span class="o"&gt;)&lt;/span&gt; - 0:0:0:0:0:0:0:0/56
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Prefix address - ffff:ffff:ffff:ff00:0:0:0:0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Prefix length - &lt;span class="m"&gt;56&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Address &lt;span class="nb"&gt;type&lt;/span&gt; - Aggregatable Global Unicast Addresses
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Network range - 2a01:b600:4000:0000:0000:0000:0000:0000 -
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2a01:b600:4000:00ff:ffff:ffff:ffff:ffff
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-&lt;span class="o"&gt;[&lt;/span&gt;ipv6 : 2a01:b600:4000::/48&lt;span class="o"&gt;]&lt;/span&gt; - &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;IPV6 INFO&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Expanded Address - 2a01:b600:4000:0100:0000:0000:0000:0000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Compressed address - 2a01:b600:4000:100::
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Subnet prefix &lt;span class="o"&gt;(&lt;/span&gt;masked&lt;span class="o"&gt;)&lt;/span&gt; - 2a01:b600:4000:100:0:0:0:0/56
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Address ID &lt;span class="o"&gt;(&lt;/span&gt;masked&lt;span class="o"&gt;)&lt;/span&gt; - 0:0:0:0:0:0:0:0/56
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Prefix address - ffff:ffff:ffff:ff00:0:0:0:0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Prefix length - &lt;span class="m"&gt;56&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Address &lt;span class="nb"&gt;type&lt;/span&gt; - Aggregatable Global Unicast Addresses
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Network range - 2a01:b600:4000:0100:0000:0000:0000:0000 -
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2a01:b600:4000:01ff:ffff:ffff:ffff:ffff
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-&lt;span class="o"&gt;[&lt;/span&gt;ipv6 : 2a01:b600:4000::/48&lt;span class="o"&gt;]&lt;/span&gt; - &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;IPV6 INFO&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Expanded Address - 2a01:b600:4000:0200:0000:0000:0000:0000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Compressed address - 2a01:b600:4000:200::
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Subnet prefix &lt;span class="o"&gt;(&lt;/span&gt;masked&lt;span class="o"&gt;)&lt;/span&gt; - 2a01:b600:4000:200:0:0:0:0/56
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Address ID &lt;span class="o"&gt;(&lt;/span&gt;masked&lt;span class="o"&gt;)&lt;/span&gt; - 0:0:0:0:0:0:0:0/56
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Prefix address - ffff:ffff:ffff:ff00:0:0:0:0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Prefix length - &lt;span class="m"&gt;56&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Address &lt;span class="nb"&gt;type&lt;/span&gt; - Aggregatable Global Unicast Addresses
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Network range - 2a01:b600:4000:0200:0000:0000:0000:0000 -
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2a01:b600:4000:02ff:ffff:ffff:ffff:ffff
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As you can see the result are the /48 network splitted with lots of info that can be useful or not.&lt;/p&gt;
&lt;p&gt;As i need only the IPv6 address generated with the CIDR this is a output more useful (in this example the first 10 nets):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt; sipcalc -u 2a01:b600:4000::/48 -S 56&lt;span class="p"&gt;|&lt;/span&gt;grep &lt;span class="s1"&gt;&amp;#39;prefix&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;head -n &lt;span class="m"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Subnet prefix &lt;span class="o"&gt;(&lt;/span&gt;masked&lt;span class="o"&gt;)&lt;/span&gt; - 2a01:b600:4000:0:0:0:0:0/56
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Subnet prefix &lt;span class="o"&gt;(&lt;/span&gt;masked&lt;span class="o"&gt;)&lt;/span&gt; - 2a01:b600:4000:100:0:0:0:0/56
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Subnet prefix &lt;span class="o"&gt;(&lt;/span&gt;masked&lt;span class="o"&gt;)&lt;/span&gt; - 2a01:b600:4000:200:0:0:0:0/56
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Subnet prefix &lt;span class="o"&gt;(&lt;/span&gt;masked&lt;span class="o"&gt;)&lt;/span&gt; - 2a01:b600:4000:300:0:0:0:0/56
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Subnet prefix &lt;span class="o"&gt;(&lt;/span&gt;masked&lt;span class="o"&gt;)&lt;/span&gt; - 2a01:b600:4000:400:0:0:0:0/56
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Subnet prefix &lt;span class="o"&gt;(&lt;/span&gt;masked&lt;span class="o"&gt;)&lt;/span&gt; - 2a01:b600:4000:500:0:0:0:0/56
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Subnet prefix &lt;span class="o"&gt;(&lt;/span&gt;masked&lt;span class="o"&gt;)&lt;/span&gt; - 2a01:b600:4000:600:0:0:0:0/56
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Subnet prefix &lt;span class="o"&gt;(&lt;/span&gt;masked&lt;span class="o"&gt;)&lt;/span&gt; - 2a01:b600:4000:700:0:0:0:0/56
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Subnet prefix &lt;span class="o"&gt;(&lt;/span&gt;masked&lt;span class="o"&gt;)&lt;/span&gt; - 2a01:b600:4000:800:0:0:0:0/56
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Subnet prefix &lt;span class="o"&gt;(&lt;/span&gt;masked&lt;span class="o"&gt;)&lt;/span&gt; - 2a01:b600:4000:900:0:0:0:0/56
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It&amp;rsquo;s done. You can generate all type of network split you want modifying the network size and split size.&lt;/p&gt;
&lt;p&gt;Thanks for reading!&lt;/p&gt;</description></item></channel></rss>