ProFTPD has support for IPv6 connections enabled by default. To disable IPv6 functionality at build time, use the proper configure option, e.g.:
configure
$ ./configure --disable-ipv6 ...
UseIPv6
proftpd.conf
# Disable IPv6 support UseIPv6 off
DefaultAddress
MasqueradeAddress
<VirtualHost>
It is possible for a DNS name to have multiple IP addresses, both A (IPv4) and AAAA (IPv6) records. Thus DefaultAddress and <VirtualHost> will resolve a DNS name to its addresses; if multiple addresses are found, they will be added automatically.
A
AAAA
<VirtualHost localhost> ... </VirtualHost>
<VirtualHost 127.0.0.1 ::1> ... </VirtualHost>
Known Issues
Wildcard Sockets Various Unix platforms handle wildcard sockets differently with regard to IPv6 address. For example, on Mac OSX, one must configure a virtual host to listen for both the IPv4 and IPv6 wildcard addresses in order to accept both IPv4 and IPv6 connections:
# Listen for all IPv4 AND all IPv6 connections <VirtualHost 0.0.0.0 ::> ... </VirtualHost>
However, on Solaris, binding to an IPv6 address will accept both IPv4 and IPv6 connections to that address automatically. On BSD systems, the behavior is affected by the net.inet6.ip6.v6only sysctl setting; on Linux, it is the net.ipv6.bindv6only sysctl setting.
net.inet6.ip6.v6only
sysctl
net.ipv6.bindv6only
Note that the above are issues only if SocketBindTight is not enabled, i.e. if wildcard sockets are used.
SocketBindTight
Broken Implementations HP-UX 11i has a broken getaddrinfo(2) implementation. To fix this, a patch from HP-UX is needed. See these release notes for IPv6 on HP-UX 11i. Alternatively, you can use ProFTPD's fallback implementation by building ProFTPD with the --builtin-getaddrinfo compile option.
getaddrinfo(2)
--builtin-getaddrinfo
Badly Parsed DNS names Certain DNS names may be handled improperly when IPv6 support is enabled, e.g.:
Allow from .ee
getaddrinfo '.ee' error: Name or service not known Fatal: Allow: bad ACL definition: '.ee': Success on line 13 of '/path/to/proftpd.conf'
The range of characters which can appear in an IP address string is:
0123456789ABCDEFabcdef.:
One way of working around this issue is to explicitly put glob characters in the string, so that the ACL parser can determine more easily that it is a DNS glob, e.g.:
Allow from *.ee