<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ipv6 &#8211; Giovanni F. Mazzeo De Santolo</title>
	<atom:link href="https://desantolo.com/tag/ipv6/feed/" rel="self" type="application/rss+xml" />
	<link>https://desantolo.com</link>
	<description>That italian IT guy</description>
	<lastBuildDate>Sun, 20 Jun 2021 03:51:32 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>
<site xmlns="com-wordpress:feed-additions:1">123042357</site>	<item>
		<title>How to setup dual-stack IPv4 IPv6 Azure VM without a load-balancer</title>
		<link>https://desantolo.com/2021/04/how-to-setup-dual-stack-ipv4-ipv6-azure-vm-without-a-load-balancer/</link>
					<comments>https://desantolo.com/2021/04/how-to-setup-dual-stack-ipv4-ipv6-azure-vm-without-a-load-balancer/#respond</comments>
		
		<dc:creator><![CDATA[Giovanni]]></dc:creator>
		<pubDate>Sun, 11 Apr 2021 20:32:31 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[azure]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[dual stack]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[virtual server]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[vm]]></category>
		<category><![CDATA[vmnet]]></category>
		<guid isPermaLink="false">https://desantolo.com/?p=616</guid>

					<description><![CDATA[I wanted to document my Microsoft Azure saga in getting a public IPv6 address to work in a virtual machine without a load balancer in front of it. My needs were pretty simple and straightforward I wanted a virtual server &#8230; <a href="https://desantolo.com/2021/04/how-to-setup-dual-stack-ipv4-ipv6-azure-vm-without-a-load-balancer/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p>I wanted to document my Microsoft Azure saga in getting a public IPv6 address to work in a virtual machine without a load balancer in front of it. My needs were pretty simple and straightforward <strong>I wanted a virtual server that had a static IPv4 and IPv6 public addresses</strong> so that I can monitor my home network and other websites. </p>



<p>You would think this would be pretty easy, a few clicks and done? That wasn&#8217;t my experience on Azure and setting this up isn&#8217;t easy nor straightforward. Below is how to get it done, if this helps you &#8211; you can <a rel="noreferrer noopener" href="https://www.buymeacoffee.com/thelinuxguy" target="_blank">buy me a coffee or beer</a>.</p>



<span id="more-616"></span>



<div class="wp-block-jetpack-markdown"><h3>What Microsoft documentation said</h3>
<p>You can use public IPv6 address on a load balancer which needs to be a separate paid server/product in front of your servers. This isn&#8217;t what I was looking &#8211; I complained about it on github with screenshots <a href="https://github.com/MicrosoftDocs/azure-docs/issues/69167">issue #69167</a>.</p>
<p><strong>Disclaimer:</strong> I have no expertise on Microsoft Azure prior to this (I currently work at Google and GCP is what we do). I chose to use Azure for my hobby/playground primarily because I get $50 a month free credit with my MSDN subscription.</p>
<h3>My hacky (undocumented) way of getting it set up</h3>
<ol>
<li>Create a new Virtual Machine</li>
</ol>
<p>Use <a href="http://portal.azure.com/">portal.azure.com</a> &#8211; I am not going to go in depth here but I will call out the items you need to make sure to enable or change at setup.</p>
<p><strong>Do pay attention to these when creating VM</strong>:</p>
<ul>
<li>Use &quot;create a resource&quot; select &quot;Ubuntu Server 18.04 LTS&quot; and should default to virtual server.</li>
<li>Make sure to select &#8216;create new resource group&#8217; to bundle everything of this server together.</li>
<li>Disable default &#8216;scheduled shutdown&#8217;</li>
</ul>
<p>Deploy it. Go back to the newly created resource group.</p>
<ol start="2">
<li>Edit Virtual Network to add IPv6 (address space)</li>
</ol>
<p>You should see only IPv4 listed here. Like 10.0.0.0/24 &#8211; add IPv6.</p>
<p>Input: <strong>ace:cab:deca::/48</strong></p>
<p>Hit save.</p>
<ol start="3">
<li>Edit Virtual Network to add IPv6 (subnets)</li>
</ol>
<p>You should see <strong>default</strong> click it. On the right dialog that opens click <strong>Add IPv6 address space</strong></p>
<p>Input: <strong>ace:cab:deca::/64</strong></p>
<p>Make sure to select a network Security Group. (whatever the name you gave it). Save.</p>
<ol start="4">
<li>Create a dual-stack IPv4 and IPv6 public address</li>
</ol>
<p>Search Azure for <strong>Public IP addresses</strong> create one.</p>
<p><strong>Pay attention at creation</strong>:</p>
<ul>
<li>Select IP version <strong>both</strong></li>
<li>Select SKU <strong>standard</strong></li>
<li><strong>Ensure you associate it to your VM resource group and zone otherwise it won&#8217;t work</strong></li>
</ul>
<ol start="5">
<li>Stop virtual machine.</li>
</ol>
<p>Self explanatory, or during step 1 make sure to ensure it won&#8217;t be auto started.</p>
<ol start="6">
<li>Associate the new NIC and delete the old NIC from the VM</li>
</ol>
<p>With the VM shutdown, networking settings &gt; &quot;Attach network interface&quot; menu. Select create and attach network interface.</p>
<p>At <strong>NIC create</strong>:</p>
<ul>
<li>NIC security group select NONE.</li>
<li>Select Private IPv6 address. Give it a name &quot;v6&quot; for me.</li>
</ul>
<p>Detach the old NIC and delete from resource group (self-explanatory).</p>
<ol start="8">
<li>Associate the public IPv6 and IPv6 to the network interface</li>
</ol>
<p>Go to the new NIC we created and associated, &quot;IP configuration&quot; menu.</p>
<p>You should see &#8216;ipconfig1&#8217; is IPv4 and &quot;v6&quot; is secondary with our local IPv6 we gave on step 2.</p>
<p><strong>Associate IPv4 public address by clicking ipconfig1</strong> a new menu with a drop-down box and the new IPv4 (dual-stack) shows up. Select and save.</p>
<p><strong>Associate IPv6 public address</strong> same as above. You should end up with something like this</p>
</div>



<figure class="wp-block-image size-large"><a href="https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?ssl=1"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="500" height="382" data-attachment-id="618" data-permalink="https://desantolo.com/2021/04/how-to-setup-dual-stack-ipv4-ipv6-azure-vm-without-a-load-balancer/2021-04-11_16-24-18/" data-orig-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?fit=1179%2C901&amp;ssl=1" data-orig-size="1179,901" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="2021-04-11_16-24-18" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?fit=300%2C229&amp;ssl=1" data-large-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?fit=500%2C382&amp;ssl=1" src="https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?resize=500%2C382&#038;ssl=1" alt="" class="wp-image-618" srcset="https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?resize=1024%2C783&amp;ssl=1 1024w, https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?resize=300%2C229&amp;ssl=1 300w, https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?resize=768%2C587&amp;ssl=1 768w, https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?resize=800%2C611&amp;ssl=1 800w, https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?w=1179&amp;ssl=1 1179w" sizes="(max-width: 500px) 100vw, 500px" /></a></figure>



<div class="wp-block-jetpack-markdown"><ol start="9">
<li>Incoming firewall rules</li>
</ol>
<p>Make sure to add necessary firewall rules, if you created the default settings on the security group you probably already have SSH (port 22) and that&#8217;s it.</p>
<p>You probably want to add a rule for ICMP traffic (ping).</p>
<p>If you like to have no security at all (or implement your own firewall on the virtual server) you can add a blanked incoming rule for all ports 0-65535 and this should open everything.</p>
<p><strong>Note microsoft IPv6 implementation sucks and <a href="https://docs.microsoft.com/en-us/answers/questions/279687/ipv6-icmp-tofrom-the-internet-with-public-ip.html">ICMP ping on IPv6 incoming/outgoing WILL NOT WORK</a>! This is what tripped me out and I spent several hours trying to troubleshoot something that Microsoft could have easily documented&#8230; but here we are&#8230; I spent hours frustrated but hopefully with this guide I wrote for you it saved you all this time. If you appreciated it &#8211; remember you can <a href="https://www.buymeacoffee.com/thelinuxguy">buy me a coffee</a></strong> <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Go ahead start your virtual server and you should be able to use nmap on its IPv6 address or SSH remotely and see it work. See above in:re ping on IPv6.</p>
</div>



<h2 class="wp-block-heading">Updates</h2>



<p><strong>June 2021</strong>: Reader &#8220;Ben R&#8221; contacted me about this article and shared some noteworthy information for folks using older VM images or installations. <strong>DHCPv6 may be disabled and must be manually enabled</strong>. See this article for <a href="https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-ipv6-for-linux" data-type="URL" data-id="https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-ipv6-for-linux">enabling DHCPv6 on Azure</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://desantolo.com/2021/04/how-to-setup-dual-stack-ipv4-ipv6-azure-vm-without-a-load-balancer/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">616</post-id>	</item>
		<item>
		<title>Linux IPv6 command cheatsheet</title>
		<link>https://desantolo.com/2021/03/linux-ipv6-command-cheatsheet/</link>
					<comments>https://desantolo.com/2021/03/linux-ipv6-command-cheatsheet/#respond</comments>
		
		<dc:creator><![CDATA[Giovanni]]></dc:creator>
		<pubDate>Fri, 05 Mar 2021 05:02:14 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[dhclient]]></category>
		<category><![CDATA[ip route]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[netstat]]></category>
		<guid isPermaLink="false">https://desantolo.com/?p=596</guid>

					<description><![CDATA[Good articles about IPv6: IPv6 range blocks IPv6 unicast, anycast, multicast &#8211; well known addresses. Troubleshooting tools: IPv6 ping from multiple locations. Bonus section &#8216;ufw&#8217; firewall Check status of firewall and enable or disable.# ufw status# ufw enable# ufw disable &#8230; <a href="https://desantolo.com/2021/03/linux-ipv6-command-cheatsheet/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p>This post is intended to be a quick note to self on linux IPv6 commands, for quick reference when needed.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>



<pre class="wp-block-code"><code># Find the route decision for a given address.
ip route get 2a00:1450:4001:820::200e

ip -6 route
route -A inet6 (apt-get install net-tools) # equivalent to netstat -rn -A inet6
netstat -A inet6 -rn
netstat -r
ip -6 route show table 51820
ip -6 neigh
ip -6 neigh show proxy

# DHCPv6 release / renew
dhclient -6 -r ens18
dhclient -6 ens18

# Flush IPv6 neighbors cache
ip -family inet6 neigh flush any

# Find the route decision for a given address.
ip route get 2a00:1450:4001:820::200e

# Request a router advertisement (apt-get install -y ndisc6)
rdisc6 eth0

# Perform a Neighbor Solicitation (arp IPv4 equivalent) (apt-get install -y ndisc6)
ndisc6 2001:db8::42 eth0

# ping multicast address to have all link-local hosts to respond.
ping ff02::1%eth0</code></pre>



<p>Good articles about IPv6:</p>
<ul>
<li><a href="https://www.mediawiki.org/wiki/Help:Range_blocks/IPv6">IPv6 range</a> blocks</li>
<li><a href="https://menandmice.com/blog/ipv6-reference-multicast">IPv6 unicast, anycast, multicast</a> &#8211; well known addresses.</li>
</ul>
<p>Troubleshooting tools:</p>
<ul>
<li><a href="https://tools.keycdn.com/ipv6-ping">IPv6 ping</a> from multiple locations.</li>
</ul>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<h2 class="wp-block-heading">Bonus section &#8216;ufw&#8217; firewall</h2>



<p>Check status of firewall and enable or disable.<br># ufw status<br># ufw enable<br># ufw disable</p>



<p>View firewall rules and number to delete a specific rule.<br># ufw status verbose<br># ufw status numbered</p>



<p>Delete a firewall rule (from number of last cmd)<br># ufw delete 12</p>



<p>Rules needed to allow IPv6 routing via wireguard to endpoint (no iptables forwarding would be needed on IPv6 as the other peer carries the public IP &#8211; they also should implement a firewall before using the below command!)<br># ufw route allow in on eth0 out on wghub to 2602:xxx:730b:xxx:cafe::12</p>



<p>IPv4 firewall and routing rule to open Plex Media Server port 32400 and internal IPv4 space of wireguard peer.<br># ufw allow in on eth0 out on wghub to 10.100.100.11 port 32400<br># ufw route allow in on eth0 out on wghub to 10.100.100.11 port 32400</p>



<p>Add rule and get logs for matches of that rule:<br># ufw allow log proto any from any to 192.168.1.x</p>



<p>View logs:<br># tail -f /var/log/ufw.log</p>



<h3 class="wp-block-heading">Extra bonus iptables NAT forwarding</h3>



<p>On VPS (public endpoint) forward IPv4 traffic on tcp/32400 to wireguard peer. (recall IPv6 doesn&#8217;t need a rule)<br># iptables -A PREROUTING -t nat -i eth0 -p tcp &#8211;dport 32400 -j DNAT &#8211;to 10.100.100.11:32400</p>



<h3 class="wp-block-heading">Test your port forwards</h3>



<p>For IPv6 I use:<br><a href="http://www.ipv6scanner.com/cgi-bin/main.py">http://www.ipv6scanner.com/cgi-bin/main.py </a></p>



<p>For IPv4:<br><a href="https://www.yougetsignal.com/tools/open-ports/">https://www.yougetsignal.com/tools/open-ports/</a><br></p>
</div>
</div>
</div>
</div>
</div></div>
</div>
</div>


]]></content:encoded>
					
					<wfw:commentRss>https://desantolo.com/2021/03/linux-ipv6-command-cheatsheet/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">596</post-id>	</item>
	</channel>
</rss>
