Alors, comment puis-je persuader Termius (version gratuite) de comprendre les noms d'hôtes du réseau local ?
En fait, vous devez persuader le système d'exploitation Android, et non une application spécifique. La résolution des noms d'hôtes est gérée par la bibliothèque C d'Android à laquelle les applications sont liées par des API au moment de la compilation.
Sur le PC, je peux simplement lancer la commande putty fred@servername
et je peux me connecter sans difficultés, comme on peut s'y attendre.
Vous n'avez pas mentionné quel routeur Wi-Fi vous utilisez et si vous avez un serveur DHCP/DNS fonctionnant sur le réseau local ou non. Mais pour résoudre les noms d'hôtes locaux sur Android, vous devez avoir un serveur DNS local en fonctionnement. Habituellement, le routeur Wi-Fi est le serveur DHCP/DNS.
Je ne trouve aucun paramètre correspondant à ce problème.
C'est la partie la plus difficile. Vous devez configurer votre téléphone pour qu'il utilise un serveur DNS local, mais Android n'offre pas de moyen simple de le faire.
Si j'ouvre une session SSH locale sur le téléphone lui-même et que je fais un ping servername
alors il semble qu'il s'attaque à une adresse IP Internet aléatoire ( 92.xxx.xxx.xxx
) et ne parvient pas à se connecter.
Cela indique que le téléphone Android envoie des requêtes DNS à Internet. Vous devez vous assurer que les requêtes DNS sont envoyées uniquement au serveur DNS local. Les serveurs DNS publics ne connaissent pas les noms d'hôtes que vous avez définis sur votre réseau privé. Android aime tellement Google que vous trouverez souvent des requêtes envoyées à 8.8.8.8
(peut être lorsque le routeur est annoncer le serveur DNS IPv6 ). Configurer IP fixe dans les paramètres Wi-Fi pour définir l'adresse IP du serveur DNS local comme premier (et de préférence unique) DNS. Ou si vous avez Root, vous pouvez utiliser le pare-feu intégré du noyau Android. netfilter
pour forcer un serveur de noms. Puisque le DNS utilise le port UDP 53
effectuer une traduction d'adresse de réseau de destination (DNAT) :
~# iptables -t nat -I OUTPUT -p udp --dport 53 -j DNAT --to 192.168.1.1:53
La solution non-root qui fonctionne à la fois pour le Wi-Fi et les données mobiles est d'utiliser une application VPN telle que Hôtes virtuels qui intercepte le trafic DNS et effectue des requêtes auprès du serveur DNS configuré en amont.
Cela devrait résoudre votre problème.
Pour plus de détails, veuillez consulter Comment envoyer un ping à un hôte du réseau local par son nom d'hôte ? .
En rapport : Comment fonctionne le DNS sur Android ?