You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Experimental support for IPv6. Node RPC and node-to-node interface hosts may now be specified as IPv6 literals in bracketed form (e.g. `[::1]:8000`), and addresses are consistently parsed, bound, connected (with fallback across mixed IPv4/IPv6 resolved addresses), serialised, and embedded in redirect URLs for IPv6 (#7671).
15
+
12
16
### Fixed
13
17
14
18
- Forwarded commands are no longer processed until the node is part of the network, matching the existing behaviour for other node-to-node messages. Previously a forwarded command could be executed while the node was in an earlier startup state, which could lead to undefined behaviour for some commands (#7936).
Copy file name to clipboardExpand all lines: doc/host_config_schema/host_config.json
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -20,7 +20,7 @@
20
20
"description": "The published node address advertised to other nodes. This must be different on each node"
21
21
}
22
22
},
23
-
"description": "Addresses (host:port) to listen on for incoming node-to-node connections (e.g. internal consensus messages)",
23
+
"description": "Addresses (host:port) to listen on for incoming node-to-node connections (e.g. internal consensus messages). IPv6 literals must be bracketed, e.g. ``[::1]:8081``",
24
24
"required": ["bind_address"],
25
25
"additionalProperties": false
26
26
},
@@ -293,7 +293,7 @@
293
293
"properties": {
294
294
"target_rpc_address": {
295
295
"type": "string",
296
-
"description": "Address (host:port) of a node of the existing service to join"
296
+
"description": "Address (host:port) of a node of the existing service to join. IPv6 literals must be bracketed, e.g. ``[2001:db8::1]:8080``"
Copy file name to clipboardExpand all lines: doc/operations/configuration.rst
+42Lines changed: 42 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,6 +21,48 @@ The configuration for each CCF node must be contained in a single JSON configura
21
21
.. include:: generated_config.rst
22
22
23
23
24
+
IPv6 Addresses
25
+
--------------
26
+
27
+
.. note:: IPv6 support is currently **experimental**.
28
+
29
+
Every address field accepts an IPv4 address, an IPv6 address, or a fully qualified domain name. IPv6 literals must be written in bracketed form, ``[host]:port``, so that the colons in the address are not mistaken for the host/port separator. This applies to all address fields, including:
30
+
31
+
- ``network.node_to_node_interface.bind_address`` and ``published_address``
32
+
- ``network.rpc_interfaces.[name].bind_address`` and ``published_address``
33
+
- ``command.join.target_rpc_address``
34
+
35
+
For example, to bind a node's interfaces to the IPv6 loopback address ``::1`` and publish an address on a different IPv6 host:
When a node is identified by an IPv6 literal, the matching ``node_certificate.subject_alt_names`` entry uses the ``iPAddress:`` prefix with the **unbracketed** address, for example ``"iPAddress:2001:db8::1"``.
62
+
63
+
.. note:: ``published_address`` defaults to ``bind_address`` when omitted, and is the address embedded in redirect URLs returned to clients. Brackets are added automatically where required, so a published IPv6 address appears in a redirect as ``https://[2001:db8::1]:12345/...``.
Copy file name to clipboardExpand all lines: doc/operations/start_network.rst
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,7 +23,7 @@ To create a new CCF network, the first node of the network should be started wit
23
23
24
24
The unique identifier of a CCF node is the hex-encoded string of the SHA-256 digest of the public key contained in its identity certificate (e.g. ``50211327a77fc16dd2fba8fae5fffac3df909fceeb307cf804a4125ae2679007``). This unique identifier should be used by operators and members to refer to this node with CCF (for example, when :ref:`governance/common_member_operations:Trusting a New Node`).
25
25
26
-
CCF nodes can be started by using IP Addresses (both IPv4 and IPv6 are supported) or by specifying a fully qualified domain name. If an FQDN is used then a ``dNSName`` subject alternative name should be specified as part of the ``node_certificate.subject_alt_names`` configuration entry. Once a DNS has been setup it will be possible to connect to the node over TLS by using the node's domain name.
26
+
CCF nodes can be started by using IP Addresses (both IPv4 and IPv6 are supported; see :ref:`operations/configuration:IPv6 Addresses` for the bracketed ``[host]:port`` form required for IPv6 literals) or by specifying a fully qualified domain name. If an FQDN is used then a ``dNSName`` subject alternative name should be specified as part of the ``node_certificate.subject_alt_names`` configuration entry. Once a DNS has been setup it will be possible to connect to the node over TLS by using the node's domain name.
27
27
28
28
When starting up, the node generates its own key pair and outputs the unendorsed certificate associated with its public key at the location specified by the ``node_certificate_file`` configuration entry. The certificate of the freshly-created CCF network is also output at the location specified by the ``service_certificate_file`` configuration entry.
0 commit comments