{{Header}} {{Title|title= IPv6 support in {{project_name_long}} }} {{#seo: |description=Enabling and using IPv6 in {{project_name_short}}. }}
curl
in {{project_name_workstation_short}} can access IPv6 sites without extra setup. Other tools may still need manual configuration or workarounds.
= Host Networking IPv4 versus IPv6 Connectivity Status =
Not sure if your Internet connection supports IPv6, IPv4, or both? Use the following websites to check.
Notes:
* Run tests on host: You must visit these websites on the host operating system (not inside {{project_name_short}}).
* Link disclaimer: [[Terms_of_Service#Links_To_Other_Web_Sites|These links]] are [[Terms_of_Service#Non-Endorsement|not endorsements]]. They are only examples. Many similar test websites exist.
* Tests overview:
** Normal Test: Checks if your connection supports both IPv4 and IPv6.
** IPv4 only Test: If this doesn't work, it may mean your network only supports IPv6, or something is misconfigured.
** IPv6 only Test: If this doesn't work, that’s usually okay.
* Example test websites:
** ip6.me
*** [https://ip6.me/ ip6.me: Normal Test]
*** [https://ip4.me/ ip6.me: IPv4 only Test]
*** [https://ip6only.me/ ip6.me: IPv6 only Test]
** [https://test-ipv6.com test-ipv6.com]: Provides a detailed test of IPv4 and IPv6 connectivity.
= Enabling IPv6 support in virtualizers =
{{mbox
| image = [[File:Ambox_warning_pn.svg.png|40px]]
| text =
Version-specific notice: These instructions are for {{project_name_short}} 18 or later only.
Trying this on {{project_name_short}} 17 won't work, and might break networking.
}}
{{mbox
| image = [[File:Ambox_warning_pn.svg.png|40px]]
| text = Platform specific notice. Not all virtualizers supported by {{project_name_short}} will allow {{project_name_gateway_short}} to configure IPv6 routing automatically. If the virtualizer does not properly support IPv6, {{project_name_gateway_short}} will only be able to communicate to the Tor network via IPv4. This will block connectivity for users on IPv6-only networks.
}}
The steps below explain how to enable IPv6 support in each virtualization platform supported by {{project_name_short}}.
== VirtualBox ==
* Versions before 7.1: Do not support IPv6 NAT. Only IPv4 connections work when using NAT.
** Workaround before 7.1: You could try switching {{project_name_gateway_short}} to a bridged network to allow IPv6. But this exposes it to your local network and increases risk. Not recommended.
* Versions 7.1 and later: IPv6 NAT works by default. No changes needed.
** Confirmed working: IPv6 has been successfully tested with VirtualBox 7.2.2.
== libvirt (KVM) ==
libvirt supports IPv6 NAT starting with version 6.5.0. https://libvirt.org/news.html#v6-5-0-2020-07-03
To check your installed libvirt version:
{{CodeSelect|code=
virsh --version
}}
However, by default, IPv6 autoconfiguration does **not** work in {{project_name_short}} 18. This is because {{project_name_short}} disables the use of dnsmasq
on the host for {{project_name_short}} VMs. This improves security by reducing the risk of attacks from VMs to the host. https://forums.whonix.org/t/whonix-kvm-dnsmasq-listen-port-on-host-operating-system-attack-surface-reduction/15973
But disabling dnsmasq
also prevents IPv6 autoconfiguration from working. dnsmasq
is the tool that sends the “router advertisement” signals needed to automatically set up IPv6 in {{project_name_gateway_short}}.
To fix this, you can re-enable dnsmasq
for {{project_name_short}}'s virtual networks by following these steps:
{{Box|text=
{{mbox
| image = [[File:Ambox_warning_pn.svg.png|40px]]
| text = These changes will make the host more vulnerable to attacks from compromised VMs or other devices on your local network. Carefully consider your threat model before following these instructions.
}}
'''1.''' Make sure dnsmasq-base
(or the equivalent package for your host operating system) is installed.
'''2.''' Launch "Virtual Machine Manager" (virt-manager
) on the host.
'''3.''' Click Edit
→ Preferences
.
'''4.''' Enable Enable XML editing
by checking the box.
'''5.''' Click Close
.
'''6.''' Click Edit
→ Connection Details
.
'''7.''' Go to the Virtual Networks
tab.
'''8.''' Select the {{project_name_short}}-External
network.
'''9.''' In the settings viewer on the right side of the connection details window, click the XML
tab.
'''10.''' Remove this line:
{{CodeSelect|code=
Apply
.
'''12.''' Click the Stop Network
button underneath the connection details window's left sidebar. (This button is the third button from the left, hover over it to see the name of the button.)
'''13.''' Click the Start Network
button underneath the connection details window's left sidebar. (This button is the second button from the left.)
'''14.''' Select the {{project_name_short}}-Internal
network.
'''15.''' Remove the same line again:
{{CodeSelect|code=
Apply
.
'''17.''' Stop this network too.
'''18.''' Start it again.
'''19.''' Fully shut down and restart both the {{project_name_gateway_short}} and {{project_name_workstation_short}} VMs.
'''20.''' Done.
IPv6 autoconfiguration should now work in libvirt.
}}
== Qubes OS ==
Qubes OS does support IPv6, but it is turned off by default. To turn it on, follow the guide in the [https://doc.qubes-os.org/en/latest/developer/system/networking.html#ipv6 Qubes OS networking documentation].
= Footnotes =
{{reflist|close=1}}
{{Footer}}
[[Category:Documentation]]