Fix input validation for NAT64 destination type
When the option to overide the prefix is enabled, the destination type
should remain enabled so that the POST request contains the value and
triggers the correct input validation.
Block non-global NAT64 addresses by default. Implement #16241
Add automatic rules to comply with RFC6052's requirement of dropping
packets that would be translated by NAT64 to non-global IPv4 addresses.
It is valid, and allowed in the WebGUI, to configure prefixes with certain
lengths other than /96. Generating automatic rules for all possible prefix
lengths would effectively require implementing translator logic in PHP as
well. To avoid this, the automatic rules use a predefined set of networks
which are only applicable to the well-known prefix. Hence the automatic
rules are only added when the well-known prefix is used.
This change also improves the input validation and configuration structure
related to NAT64. A configuration upgrade step has been added handle the
migration of old configuration and to fix any configuration that does not
comply with the new input validation.
Update find_interface_ip() to match the behavior of find_interface_ipv6(). Fix #16322
Using the file for the IP address can result in an incorrect or outdated
address even with $flush. Additionally using the address from the file is
hardly beneficial given that pfSense_get_ifaddrs() is called regardless.