The support for IPv6 in ProFTPD is fairly new, and still under development. As such, it's very possible that there are bugs related to IPv6 functionality. In particular, here are some things that may be affected: ServerType (IPv4/IPv6 inetd, xinetd) AllowForeignAddress PassivePorts MasqueradeAddress (IPv6) UseReverseDNS SocketBindTight Please report any IPv6-related problems with the above to the bug tracking system as soon as possible, so that we may fix it: http://bugs.proftpd.org To enable IPv6 functionality, you need to explicitly configure proftpd using the proper configure option: ./configure --enable-ipv6 ... The functionality of the following configuration directives has been changed slightly with the addition of IPv6 support: DefaultAddress MasqueradeAddress These directives can take both IP address and DNS names as parameters. If given IP addresses, either IPv4 or IPv6, they work as one expects. The case that is now different is when a DNS name is given as a parameter. It's possible for a DNS name to have multiple IP addresses, both A and AAAA records. Thus DefaultAddress and will resolve a DNS name to its address(es); if multiple addresses are found, they will be added automatically. ... on an IPv6-enabled host, would be treated as: ... NOTE: the MasqueradeAddress does _not_ resolve a DNS name to all possible addresses. ProFTPD can only masquerade as one address, and so, if given a DNS name, MasqueradeAddress will masquerade using the first IP address returned by the DNS lookup. Known issues: + system/platform dependencies (Linux version, BSD/KAME, etc) o example: on Darwin (MacOSX), one must two define two different vhosts, 0.0.0.0 and ::, in order to accept both IPv4 and IPv6 connections. However, on Solaris, binding to an IPv6 address will accept both IPv4 and IPv6 connections to that address. Note that this is only a problem if SocketBindTight is _not_ on, i.e. if wildcard sockets are used. o On BSD systems, the net.inet6.ip6.v6only sysctl affects how wildcard sockets are bound with respect to IPv6. o On Linux systems, the net.ipv6.bindv6only sysctl affects how wildcard sockets are bound with respect to IPv6. o Apache2 mentions the same problem here: http://httpd.apache.org/docs-2.0/bind.html#ipv6 o Broken HP-UX 11i getaddrinfo() implementation. To fix this, a patch from HP-UX is needed. The release notes for IPv6 on HP-UX 11i can be found here: http://docs.hp.com/hpux/onlinedocs/T1306-90004/T1306-90004.html