From Fedora Project Wiki

Configuration

IPv4 and IPv6 connectivity

Applications may behave differently based on connectivity checks. Those can be performed using the following per protocol characteristics.

  • Existence of any IP address (including 127.0.0.1 or ::1
  • Existence of non-loopback IP address (including IPv6 link-local addresses)
  • Existence of a global IP address
  • Existence of a default route (or route for the target we want to reach)

Example: To test application behavior on a host connected via IPv6-only network you should make sure you only have the loopback IPv4 address and that you have a global IPv6 address and a default IPv6 gateway as that what you would normally call an IPv6-only setup. Similarly for IPv4-only setup you would make sure that there are only IPv6 loopback and link-local addresses and that there is a global IPv4 address and a default IPv4 gateway. But there are still many corner cases that may trigger unexpected issues.

Target DNS records

You need to carefully choose a target hostname for dual-stack networking tests.

Examples of scenarios:

  • Hostname with a single A record or a single AAAA record
  • Hostname with one A record and one AAAA record
  • Hostname with multiple records per family, some of which are obsolete and inacceessible

Other DNS records typically point to names, not addresses and thus are protocol agnostic but it may still be useful to test e.g. SRV records so that the SRV code path is correct as well.

IPv4 and IPv6 recursive DNS servers

This is entirely orthogonal to IPv4 and IPv6 DNS records and doesn't cause many issues.

IPv4 and IPv6 authoritative DNS servers

This is a rather special case important for domain operators. A bad configuration can make otherwise working IPv6 hosts inaccessible from IPv6-only networks with their own recursive servers.

Client software test cases

IPv4 to IPv4

This test is useful to verify basic IPv4 networking functionality.

Connectivity:

  • IPv4 connectivity: Public or masqueraded address
  • IPv6 connectivity: No

Target DNS:

  • A record: Yes
  • AAAA record: No

Expected result:

  • Client requests A record and receives an answer
  • Client connects to IPv4 address
  • No delays

IPv4 to dual-stack

Connectivity:

  • IPv4 connectivity: Public or masqueraded address
  • IPv6 connectivity: No

Target DNS:

  • A record: Yes
  • AAAA record: Yes

Expected result:

  • Client requests A record and receives an answer
  • Client connects to IPv4 address
  • No delays

IPv4 to IPv6

Connectivity:

  • IPv4 connectivity: Public or masqueraded address
  • IPv6 connectivity: No

Target DNS:

  • A record: No
  • AAAA record: Yes

Expected result:

  • Client requests A record and receives NODATA error
  • Client reports an error
  • No delays