A moins que ton routeur ait deux adresses IP publiques distinctes, ce n’est pas possible. Si le routeur n’a qu’une adresse publique vers laquelle les deux noms de domaine pointent, il n’a aucun moyen de savoir quel nom de domaine le client a demandé. Un routeur ne voit que des paquets IP avec des adresses IP, pas les noms de domaines.
La seule solution est alors d’affecter sur le routeur un port public différent pour chaque serveur. Mais cela implique qu’un des serveurs FTP sera accessible via un port non standard (autre que 21), et dans cette situation le risque de mauvais fonctionnement est grand : en gros les pare-feu à état et les routeurs NAT doivent faire un traitement spécial pour le protocole FTP (avec netfilter dans Linux c’est l’objet des modules ip_conntrack_ftp et ip_nat_ftp), mais généralement ce traitement n’est fait que pour les connexions sur le port 21 (c’est le cas par défaut avec ip_conntrack_ftp, mais on peut lui spécifier d’autres ports). Et je ne parle même pas des pare-feu qui n’autorisent pas la connexion vers le port non standard choisi.
Avec un port non standard le mode FTP actif n’aura quasiment aucune chance de fonctionner pour les clients situés derrière un pare-feu à état ou un routeur NAT sans configuration spécifique. Le mode FTP passif aura plus de chances si ton routeur n’est pas trop bête (s’il applique le traitement spécifique FTP aussi si le port destination après redirection est 21) et si le pare-feu côté client n’est pas trop strict (en gros laisse passer les connexions sortantes sur n’importe quel port).