Can I use an IPv6 address on the frontend?
Short answer
Yes. The IPv6 address is first added to an interface under Network → Interfaces with the correct prefix length (e.g. /64), and then selected from the Frontend IP list of the vService; the same vService can carry IPv4 and IPv6 rows together. To reach IPv6 clients, an IPv6 Default Gateway must be defined in the relevant route table. If an IPv6 VIP will be used in a cluster setup, an IPv6 Interface IP pair is selected for VIP Communication (v6) on the interface.
Problem: Why Can't IPv6 Be Selected Directly?
The Frontend IP field of the vService lists only the IPs defined on the device; if there is no IPv6 address on the device, there is nothing to select. For the IPv6 address to work, adding the address alone is not enough: the prefix length must be correct, an IPv6 route (default gateway) to the networks where the clients are must be defined, and in a cluster, an IPv6 communication pair must be selected so that the VIP can move between the two devices.
Solution
Adding the IPv6 Address to the Interface and Selecting It on the vService
- How it works The vService also listens on the IPv6 address as it does on IPv4; in a dual-stack configuration, two rows are added to the same vService.
- Where it is openedNetwork → Interfaces → Add IP; vService → Frontend IP
- RequirementIPv6 Default Gateway in the route table; VIP Communication (v6) in a cluster
- vService type HTTP, L7 TCP, Network
Step-by-Step Configuration
On the Network → Interfaces screen, the interface to which the IPv6 address will be added is right-clicked and Add IP is selected.
It is checked that the correct interface is selected in the IP Interface field. The IPv6 address (e.g. 2001:db8::10) is written to the IP table, and the prefix length (e.g. 64) is entered in the CIDR field; the field comes as 24 by default and does not change automatically for IPv6. In a cluster setup, Ip Type stays Interface IP, and the IPv6 addresses of this device and of the peer device are written separately in the row.
The Add IP button is clicked.
On the Network → Route Tables screen, the pencil icon in the Default Gateway column of the table where the IPv6 address is located is clicked. If an IPv6 Default Gateway is already defined in the table, steps 4–6 are skipped.
The address of the gateway is written to the Default Gateway(IPv6) field (e.g. 2001:db8::1).
The Set Default Gateway button is clicked.
This is done only in a cluster setup. The interface is selected and the edit form is opened with the Edit Interface button in the preview panel; in the VIP Communication (v6) field, the IPv6 Interface IP pair added in step 3 is selected, and the form is saved with the Edit Interface button at the bottom of the form. The IPv4 communication pair does not enable the IPv6 VIP.
This is done only in a cluster setup. The interface is right-clicked again and Add IP is selected; Ip Type = VIP is selected, the IPv6 address to be shared, Master/slave and the CIDR are entered, and the form is saved with Add IP.
On the Load Balancer → Load Balancer vService List screen, the vService is opened; a new row is added to the Frontend table with the (+) icon, and the IPv6 address (the VIP in a cluster) is selected from the Frontend IP list; the port and the protocol are set the same as in the IPv4 row.
The Save button is clicked.
Verification
curl -6 -v https://www.example.com/ · or curl -v "http://[2001:db8::10]/"Connected to … (2001:db8::10) · the response of the vServiceCommon Mistakes
- Leaving the CIDR at 24. It is a wrong prefix for IPv6; the subnet and the routing are calculated incorrectly.
- Not defining an IPv6 default gateway. The address is added and the vService listens, but since there is no return route to the clients, the connection is not established.
- Relying on the IPv4 communication pair in a cluster. For the IPv6 VIP, VIP Communication (v6) is selected separately.
- Forgetting the AAAA record in DNS. If the domain does not resolve to the IPv6 address, clients continue to connect with IPv4.
How it is done in the documentation
Related questions
- Why can't I type the Frontend IP manually; what should I do to use an IP that is not in the list (e.g. IPv6) on a vService?
- Which IP address can I use for a vService; what is the difference between an Interface IP and a VIP?
- Is HTTP/3 (QUIC) supported; how is it enabled and which conditions does it depend on?
