Configuring Octopus Deploy for IPv6

Published on: 2 Nov 2015 by: Robert Erez

While previously it was technically possible to set up your Tentacle to use the IPv6 protocol through Halibut, this required manual configuration on the Tentacle and therefore knowledge of which specific protocol was being used between it and the server. In addition, only hostnames would work and specific IPv6 addresses could not be provided for target configuration. With changes introduced in 3.1.7, your Octopus Deploy instances can now enter the future and start using IPv6 with your eyes closed. If you were at risk of running out of internal IPv4 addresses for your IOT (Internet-Of-Tentacles) set up, then you need worry no more.

Tentacles on IPv4/IPv6 Dual Mode

By default both the Octopus Deploy Server and Tentacles will now listen to addresses using a new dual mode feature of sockets introduced in .Net 4.5. The Listening Tentacle (and Server when using Polling Mode) will listen to both IPv4 and IPv6 addresses at the same time however for simplicity the same port is used for both protocols. This means that you can set up your targets based on their address for either protocol and it will "just work". If you provide its FQDN (Fully Qualified Domain Name) in the Tentacle configuration, the address resolved at deployment time will still internally be determined by the networking stack. You shouldn't be too surprised to therefore sometimes see your IPv4 addresses represented in IPv6 notation such as [::ffff:127.0.0.1] in your logs.

Remember that when specifying an IPv6 address in a URI, the specifications require enclosing the address in square brackets. So if your Target's address is fe80::c0d3:531b:f0cf:f567 then the address for discovery would be [fe80::c0d3:531b:f0cf:f567] and the full Tentacle URL would be along the lines of https://[fe80::c0d3:531b:f0cf:f567]:10933/

Ipv6 Tentacle Discovery

You can also reference your Tentacle's IPv6 address directly in the browser to test for connectivity, just as you would with a normal IPv4 address or hostname.

IPv6 Tentacle Hello

If your Tentacle seems to be reponding with its IPv4 address but not IPv6, remember to also check that your network adapter has this feature enabled in its settings.

IPv6 Adapter Settings

Since the Halibut communications framework is used for both Polling and Listening tentacles, the IPv6 connectivity details also apply to the scenario where a Polling Tentacle is configured to connect to a specific Octopus Server. When setting up the Polling Tentacle, you can now specify an IPv6 address to connect to the Server with so long as it is surrounded by square brackets and the network is configured to allow IPv6 connections. That all being said, if you provide the hostname instead then again, the networking stack will determine for you which protocol is used. Ultimately the easiest thing to do is let your DNS do its job; use hostnames, touch nothing and the correct protocol will be used where necessary.

Bind Tentacle to IPv4 exclusively

If for some reason you wish to force the Tentacle to only listen on IPv4 addresses, this can be set by leveraging the in-built configure command.

Tentacle.exe configure --listenIpAddress 0.0.0.0

this configuration can be removed by invoking

Tentacle.exe configure --listenIpAddress any

Further Questions

If you are worried that your infrastructure doesn't support IPv6 then don't worry. Although by default Octopus will now communicate over either protocol, if your targets are configured using hostnames or IPv4 addresses they will quietly fall back to listening on just IPv4 without any extra configuration required. Our documentation page on Tentacle Troubleshooting also provides a few other helpful hints and resources to help you Talk to your Tentacle.