|
The CPE (Customer Premise Equipment) or home router is beginning to see support for IPv6, but it is far from complete. In the past, I have written about OpenWrt, an open source software for home routers. The IPv6 features of OpenWrt will be the basis of my IPv6 wish list for every home router.
Small Office/Home Office (SOHO) networks tend to grow organically. Starting with a single ISP connected router, adding additional routers as ports fill up, or technology requirements expand. Additionally, technologies such as IPv6-only, Wireguard IPv6-enabled VPN, and separation of networks (i.e. DMZ/VLAN) for IoT devices must be accommodated.
Expanded SOHO Network
Fortunately, there has been some good work done by the IETF (Internet Engineering Task Force) to define minimum feature support of CPEs. Notably, Basic Requirements for IPv6 Customer Edge Routers RFC 7084. Transitional technologies offering IPv4 over IPv6 with MAP-T RFC 7597 and MAP-E RFC 7599. And the most recently minted Operational Security Considerations for IPv6 Networks RFC 9099
Rather than summarize this RFC, I have included the requirements section (4). This RFC is a basic set of requirements for CPE/Home routers supporting IPv6, including:
G-1: An IPv6 CE router is an IPv6 node according to the IPv6 Node
Requirements specification [RFC6434].
G-2: The IPv6 CE router MUST implement ICMPv6 according to
[RFC4443]. In particular, point-to-point links MUST be handled
as described in Section 3.1 of [RFC4443].
G-3: The IPv6 CE router MUST NOT forward any IPv6 traffic between
its LAN interface(s) and its WAN interface until the router has
successfully completed the IPv6 address and the delegated
prefix acquisition process.
G-4: By default, an IPv6 CE router that has no default router(s) on
its WAN interface MUST NOT advertise itself as an IPv6 default
router on its LAN interfaces. That is, the "Router Lifetime"
field is set to zero in all Router Advertisement messages it
originates [RFC4861].
G-5: By default, if the IPv6 CE router is an advertising router and
loses its IPv6 default router(s) and/or detects loss of
connectivity on the WAN interface, it MUST explicitly
invalidate itself as an IPv6 default router on each of its
advertising interfaces by immediately transmitting one or more
Router Advertisement messages with the "Router Lifetime" field
set to zero [RFC4861].
W-1: When the router is attached to the WAN interface link, it MUST
act as an IPv6 host for the purposes of stateless [RFC4862] or
stateful [RFC3315] interface address assignment.
W-2: The IPv6 CE router MUST generate a link-local address and
finish Duplicate Address Detection according to [RFC4862] prior
to sending any Router Solicitations on the interface. The
source address used in the subsequent Router Solicitation MUST
be the link-local address on the WAN interface.
W-3: Absent other routing information, the IPv6 CE router MUST use
Router Discovery as specified in [RFC4861] to discover a
default router(s) and install a default route(s) in its routing
table with the discovered router's address as the next hop.
W-4: The router MUST act as a requesting router for the purposes of
DHCPv6 prefix delegation ([RFC3633]).
W-5: The IPv6 CE router MUST use a persistent DHCP Unique Identifier
(DUID) for DHCPv6 messages. The DUID MUST NOT change between
network-interface resets or IPv6 CE router reboots.
W-6: The WAN interface of the CE router SHOULD support a Port
Control Protocol (PCP) client as specified in [RFC6887] for use
by applications on the CE router. The PCP client SHOULD follow
the procedure specified in Section 8.1 of [RFC6887] to discover
its PCP server. This document takes no position on whether
such functionality is enabled by default or mechanisms by which
users would configure the functionality. Handling PCP requests
from PCP clients in the LAN side of the CE router is out of
scope.
Link-layer requirements:
WLL-1: If the WAN interface supports Ethernet encapsulation, then
the IPv6 CE router MUST support IPv6 over Ethernet [RFC2464].
WLL-2: If the WAN interface supports PPP encapsulation, the IPv6 CE
router MUST support IPv6 over PPP [RFC5072].
WLL-3: If the WAN interface supports PPP encapsulation, in a dual-
stack environment with IPCP and IPV6CP running over one PPP
logical channel, the Network Control Protocols (NCPs) MUST be
treated as independent of each other and start and terminate
independently.
Address assignment requirements:
WAA-1: The IPv6 CE router MUST support Stateless Address
Autoconfiguration (SLAAC) [RFC4862].
WAA-2: The IPv6 CE router MUST follow the recommendations in
Section 4 of [RFC5942], and in particular the handling of
the L flag in the Router Advertisement Prefix Information
option.
WAA-3: The IPv6 CE router MUST support DHCPv6 [RFC3315] client
behavior.
WAA-4: The IPv6 CE router MUST be able to support the following
DHCPv6 options: Identity Association for Non-temporary
Address (IA_NA), Reconfigure Accept [RFC3315], and
DNS_SERVERS [RFC3646]. The IPv6 CE router SHOULD be able to
support the DNS Search List (DNSSL) option as specified in
[RFC3646].
WAA-5: The IPv6 CE router SHOULD implement the Network Time
Protocol (NTP) as specified in [RFC5905] to provide a time
reference common to the service provider for other
protocols, such as DHCPv6, to use. If the CE router
implements NTP, it requests the NTP Server DHCPv6 option
[RFC5908] and uses the received list of servers as primary
time reference, unless explicitly configured otherwise. LAN
side support of NTP is out of scope for this document.
WAA-6: If the IPv6 CE router receives a Router Advertisement
message (described in [RFC4861]) with the M flag set to 1,
the IPv6 CE router MUST do DHCPv6 address assignment
(request an IA_NA option).
WAA-7: If the IPv6 CE router does not acquire a global IPv6
address(es) from either SLAAC or DHCPv6, then it MUST create
a global IPv6 address(es) from its delegated prefix(es) and
configure those on one of its internal virtual network
interfaces, unless configured to require a global IPv6
address on the WAN interface.
WAA-8: The CE router MUST support the SOL_MAX_RT option [RFC7083]
and request the SOL_MAX_RT option in an Option Request
Option (ORO).
WAA-9: As a router, the IPv6 CE router MUST follow the weak host
(Weak End System) model [RFC1122]. When originating packets
from an interface, it will use a source address from another
one of its interfaces if the outgoing interface does not
have an address of suitable scope.
WAA-10: The IPv6 CE router SHOULD implement the Information Refresh
Time option and associated client behavior as specified in
[RFC4242].
Prefix delegation requirements:
WPD-1: The IPv6 CE router MUST support DHCPv6 prefix delegation
requesting router behavior as specified in [RFC3633]
(Identity Association for Prefix Delegation (IA_PD) option).
WPD-2: The IPv6 CE router MAY indicate as a hint to the delegating
router the size of the prefix it requires. If so, it MUST
ask for a prefix large enough to assign one /64 for each of
its interfaces, rounded up to the nearest nibble, and SHOULD
be configurable to ask for more.
WPD-3: The IPv6 CE router MUST be prepared to accept a delegated
prefix size different from what is given in the hint. If the
delegated prefix is too small to address all of its
interfaces, the IPv6 CE router SHOULD log a system management
error. [RFC6177] covers the recommendations for service
providers for prefix allocation sizes.
WPD-4: By default, the IPv6 CE router MUST initiate DHCPv6 prefix
delegation when either the M or O flags are set to 1 in a
received Router Advertisement (RA) message. Behavior of the
CE router to use DHCPv6 prefix delegation when the CE router
has not received any RA or received an RA with the M and the
O bits set to zero is out of scope for this document.
WPD-5: Any packet received by the CE router with a destination
address in the prefix(es) delegated to the CE router but not
in the set of prefixes assigned by the CE router to the LAN
must be dropped. In other words, the next hop for the
prefix(es) delegated to the CE router should be the null
destination. This is necessary to prevent forwarding loops
when some addresses covered by the aggregate are not
reachable [RFC4632].
ULA-1: The IPv6 CE router SHOULD be capable of generating a ULA
prefix [RFC4193].
ULA-2: An IPv6 CE router with a ULA prefix MUST maintain this prefix
consistently across reboots.
ULA-3: The value of the ULA prefix SHOULD be configurable.
ULA-4: By default, the IPv6 CE router MUST act as a site border
router according to Section 4.3 of [RFC4193] and filter
packets with local IPv6 source or destination addresses
accordingly.
ULA-5: An IPv6 CE router MUST NOT advertise itself as a default
router with a Router Lifetime greater than zero whenever all
of its configured and delegated prefixes are ULA prefixes.
LAN requirements:
L-1: The IPv6 CE router MUST support router behavior according to
Neighbor Discovery for IPv6 [RFC4861].
L-2: The IPv6 CE router MUST assign a separate /64 from its
delegated prefix(es) (and ULA prefix if configured to provide
ULA addressing) for each of its LAN interfaces.
L-3: An IPv6 CE router MUST advertise itself as a router for the
delegated prefix(es) (and ULA prefix if configured to provide
ULA addressing) using the "Route Information Option" specified
in Section 2.3 of [RFC4191]. This advertisement is
independent of having or not having IPv6 connectivity on the
WAN interface.
L-4: An IPv6 CE router MUST NOT advertise itself as a default
router with a Router Lifetime [RFC4861] greater than zero if
it has no prefixes configured or delegated to it.
L-5: The IPv6 CE router MUST make each LAN interface an advertising
interface according to [RFC4861].
L-6: In Router Advertisement messages ([RFC4861]), the Prefix
Information option's A and L flags MUST be set to 1 by
default.
L-7: The A and L flags' ([RFC4861]) settings SHOULD be user
configurable.
L-8: The IPv6 CE router MUST support a DHCPv6 server capable of
IPv6 address assignment according to [RFC3315] OR a stateless
DHCPv6 server according to [RFC3736] on its LAN interfaces.
L-9: Unless the IPv6 CE router is configured to support the DHCPv6
IA_NA option, it SHOULD set the M flag to zero and the O flag
to 1 in its Router Advertisement messages [RFC4861].
L-10: The IPv6 CE router MUST support providing DNS information in
the DHCPv6 DNS_SERVERS and DOMAIN_LIST options [RFC3646].
L-11: The IPv6 CE router MUST support providing DNS information in
the Router Advertisement Recursive DNS Server (RDNSS) and DNS
Search List options. Both options are specified in [RFC6106].
L-12: The IPv6 CE router SHOULD make available a subset of DHCPv6
options (as listed in Section 5.3 of [RFC3736]) received from
the DHCPv6 client on its WAN interface to its LAN-side DHCPv6
server.
L-13: If the delegated prefix changes, i.e., the current prefix is
replaced with a new prefix without any overlapping time
period, then the IPv6 CE router MUST immediately advertise the
old prefix with a Preferred Lifetime of zero and a Valid
Lifetime of either a) zero or b) the lower of the current
Valid Lifetime and two hours (which must be decremented in
real time) in a Router Advertisement message as described in
Section 5.5.3, (e) of [RFC4862].
L-14: The IPv6 CE router MUST send an ICMPv6 Destination Unreachable
message, code 5 (Source address failed ingress/egress policy)
for packets forwarded to it that use an address from a prefix
that has been invalidated.
6rd requirements:
6RD-1: The IPv6 CE router MUST support 6rd configuration via the 6rd
DHCPv4 Option 212. If the CE router has obtained an IPv4
network address through some other means such as PPP, it
SHOULD use the DHCPINFORM request message [RFC2131] to
request the 6rd DHCPv4 Option. The IPv6 CE router MAY use
other mechanisms to configure 6rd parameters. Such
mechanisms are outside the scope of this document.
6RD-2: If the IPv6 CE router is capable of automated configuration
of IPv4 through IPCP (i.e., over a PPP connection), it MUST
support user-entered configuration of 6rd.
6RD-3: If the CE router supports configuration mechanisms other than
the 6rd DHCPv4 Option 212 (user-entered, TR-069 [TR-069],
etc.), the CE router MUST support 6rd in "hub and spoke"
mode. 6rd in "hub and spoke" requires all IPv6 traffic to go
to the 6rd Border Relay. In effect, this requirement removes
the "direct connect to 6rd" route defined in Section 7.1.1 of
[RFC5969].
6RD-4: A CE router MUST allow 6rd and native IPv6 WAN interfaces to
be active alone as well as simultaneously in order to support
coexistence of the two technologies during an incremental
migration period such as a migration from 6rd to native IPv6.
6RD-5: Each packet sent on a 6rd or native WAN interface MUST be
directed such that its source IP address is derived from the
delegated prefix associated with the particular interface
from which the packet is being sent (Section 4.3 of
[RFC3704]).
6RD-6: The CE router MUST allow different as well as identical
delegated prefixes to be configured via each (6rd or native)
WAN interface.
6RD-7: In the event that forwarding rules produce a tie between 6rd
and native IPv6, by default, the IPv6 CE router MUST prefer
native IPv6.
DS-Lite WAN requirements:
DLW-1: The CE router MUST support configuration of DS-Lite via the
DS-Lite DHCPv6 option [RFC6334]. The IPv6 CE router MAY use
other mechanisms to configure DS-Lite parameters. Such
mechanisms are outside the scope of this document.
DLW-2: The IPv6 CE router MUST NOT perform IPv4 Network Address
Translation (NAT) on IPv4 traffic encapsulated using DS-Lite.
DLW-3: If the IPv6 CE router is configured with an IPv4 address on
its WAN interface, then the IPv6 CE router SHOULD disable the
DS-Lite Basic Bridging BroadBand (B4) element.
S-1: The IPv6 CE router SHOULD support [RFC6092]. In particular,
the IPv6 CE router SHOULD support functionality sufficient for
implementing the set of recommendations in [RFC6092],
Section 4. This document takes no position on whether such
functionality is enabled by default or mechanisms by which
users would configure it.
S-2: The IPv6 CE router SHOULD support ingress filtering in
accordance with BCP 38 [RFC2827]. Note that this requirement
was downgraded from a MUST from RFC 6204 due to the difficulty
of implementation in the CE router and the feature's redundancy
with upstream router ingress filtering.
S-3: If the IPv6 CE router firewall is configured to filter incoming
tunneled data, the firewall SHOULD provide the capability to
filter decapsulated packets from a tunnel.
Mapping of Address and Port (MAP) is a standards-based approach MAP-ing by encapsulation (MAP-E) or by translation of the IPv4 address into an IPv6 address (MAP-T). Fortunately the most current release of OpenWrt (21.02.1) supports MAP-T & MAP-E.
With almost all devices being IPv6 enabled by default and with many endpoints having IPv6 connectivity to the Internet, it is critical to also harden those devices against attacks over IPv6.
The same techniques used to protect devices against attacks over IPv4 should be used for IPv6 and should include but are not limited to:
Additionally to the excellent RFC's, I'd like to see the following also supported.
The SOHO router must be able to act as a stand alone gateway to the IPv6 Internet, or in concert with other IPv6-enabled routers. It must be ready to support IPv6-only, including IPv6-only management of the device, and a transition technology (such as NAT64). Lastly, the SOHO router must be ready to grow as the SOHO network itself becomes a complex network, with the concept that the person deploying the SOHO network is not a networking expert. Features such as auto-addressing, and auto name service (DNS) are key to the "deploy and go" mindset.
30 March 2021
Updated 2 September 2021
Updated 9 November 2021 - added MAP
Update 7 December 2021 - removed HomeNet
Updated 20 December 2021 - added mDNS Proxy