12 votes

Comment se connecter à Android via SSH sur une IP publique 3G/4G ?

J'ai un appareil Android et je veux me connecter via 3G/4G mais la connexion est refusée.

Une idée de comment faire ?

1 votes

Êtes-vous sûr que votre appareil a une adresse IP publique ? Le nombre de MNO fournissant une adresse IPv4 publique par appareil est très très faible et souvent limité à certains contrats commerciaux ou IoT. Il est donc fort probable que votre appareil se trouve derrière une passerelle NAT - les connexions entrantes ne sont donc pas possibles.

1 votes

Oui, il est derrière NAT et j'espérais s'il y avait un moyen de le faire via un tunnel de réserve. Merci Robert.

0 votes

19voto

Irfan Latif Points 16863

Si vous disposez d'un serveur SSH opérationnel sur votre appareil Android, vous pouvez vous y connecter sur un réseau local/privé sans aucun problème (après une configuration d'authentification correcte, bien sûr). Il en va de même pour le réseau public (internet) si votre téléphone a une véritable adresse IP publique (je ne pense pas que cela se produise sur terre). Cependant, lorsque vous devez traverser des réseaux, c'est-à-dire passer par des passerelles et des routeurs, une traduction d'adresse de réseau est impliquée. Vous ne pourrez pas accéder à votre appareil depuis Internet si votre serveur SSH ne peut pas être exposé à une adresse IP publique.


QU'EST-CE QUE NAT ET PAT ?
En termes simples, le NAT consiste à traduire l'adresse IP source d'une adresse privée en une adresse publique - routable, comme on l'appelle - lorsqu'un paquet IP quitte le routeur, afin que ce paquet puisse être renvoyé avec une adresse IP identifiable. L'inverse se produit lorsque la réponse pour le même paquet est reçue en retour au routeur. Cela signifie qu'il faut faire correspondre l'adresse IP privée de chaque hôte (téléphone, PC, etc.) du réseau local à une adresse IP publique unique. Mais dans les cas habituels, nous n'avons qu'une seule IP publique attribuée par le FAI. C'est alors que la traduction d'adresse de port entre en action. PAT traduit chaque adresse IP locale en une même adresse IP publique mais avec un port unique.

QU'EST-CE QUE LE CGNAT ?
Pour répondre au problème de Pénurie d'adresses IP Les fournisseurs d'accès à Internet effectuent également du NAT, appelé Carrier Grade NAT. Cela signifie que l'adresse IP qui vous est attribuée par le FAI n'est pas une adresse IP publique mais privée. C'est une situation courante avec les données mobiles, c'est-à-dire sur 3G/4G, mais moins courante avec les connexions DSL.
Si l'IP assignée à votre téléphone par le FAI (vous pouvez vérifier par ip address | grep inet ) est différente de celle présentée ici vous êtes derrière un CGNAT. De même, pour le routeur Wi-Fi, l'adresse IP apparaissant dans les paramètres de connexion PPP doit correspondre à l'IP publique.

ADRESSE IP DYNAMIQUE :
Afin d'utiliser au maximum le pool d'adresses IP disponible, les FAI attribuent généralement des adresses IP dynamiques, même en l'absence de CGNAT. Ainsi, l'adresse IP publique continue de changer sur une base quotidienne, hebdomadaire, mensuelle ou aléatoire, en fonction de la politique du FAI.


IPv6 est le prochain protocole qui n'aura pas besoin de NAT et chaque hôte de réseau sur terre pourra avoir une adresse IP unique.


SOLUTION :
Venons-en maintenant à votre question :

  • S'il n'y a pas de CGNAT, nous pouvons résoudre le problème du NAT du routeur DSL/3G/4G en configurant Transfert de port . Mais cette L'option ne fonctionne pas si :

    • Il y a plus d'un hôte sur le réseau local qui écoute sur le même port (22 dans le cas de ssh).
    • Les pare-feu des FAI ne vous permettent pas de recevoir des connexions entrantes.
    • Le FAI vous bloque l'accès à la section de transfert de port de votre routeur ou un routeur 3G/4G n'a pas de paramètres de transfert de port du tout.
  • Le problème de l'IP dynamique peut être contourné en souscrivant à un service DDNS. Ce service vous attribue un nom de domaine qui se résout toujours en votre IP publique actuelle. DynuDNS est un service gratuit qui fonctionne parfaitement pour moi. Vous devrez installer leur logiciel sur votre téléphone ou votre PC pour les tenir au courant de votre IP publique.

  • En ce qui concerne le CGNAT :

    • Vous pouvez opter pour l'achat d'une adresse IP publique statique si votre fournisseur d'accès Internet propose ce service, mais le prix n'est pas "favorable à l'audience" dans la plupart des cas.
    • Inscrivez-vous à un service qui vous permet configurer le Port Forwarding sur le VPN public . Il existe des solutions gratuites (pour un seul transfert de port) telles que portmap.io aussi bien si vous n'avez pas peur que votre trafic soit reniflé :) Une autre solution spécialisée est ngrok qui utilise des tunnels HTTP, TLS et TCP.
    • Configurez un tunnel SSH (plus lent) ou VPN (plus rapide) entre votre téléphone et un serveur personnel.
      • Pour une sécurité et une confidentialité optimales, installez un serveur personnel. Vous pouvez utiliser votre connexion à large bande (si elle a une IP publique) à cette fin ou demander à un ami de vous offrir ce service.
      • Achetez une solution de cloud VPS fiable comme AWS pour héberger votre serveur SSH/VPN personnel. Configuration est un peu technique mais les guides ( 1 , 2 ) sont disponibles.

Si vous choisissez la dernière option (configurer un serveur SSH ou VPN personnel avec une adresse IP publique/statique/dédiée), suivez les étapes ci-dessous pour transférer un port spécifique du serveur SSH/VPN vers votre téléphone :

  • SSH :

    Avec une configuration de serveur SSH, vous pouvez créer Reverse Port Forwarding tunnel depuis votre téléphone. Notez que vous ne pouvez pas transférer le port 22 du serveur distant (SSH par défaut) vers le port 22 de votre téléphone si vous vous connectez au serveur sur le même port.

    Assurez-vous que GatewayPorts yes y AllowTcpForwarding yes sont fixés dans sshd_config sur le serveur, afin que sshd autorise la redirection de port et accepte les connexions depuis le public. Maintenant, sur votre téléphone, créez un tunnel inverse :

    ~$ ssh -NTR 2222:localhost:22 <server_user>@<server_ip>

    Vous pouvez faire ssh tunnel persistant en utilisant autossh ou une application comme ConnectBot si vous voulez.

    Pour d'autres options, voir cette réponse .

  • VPN :

    Depuis votre téléphone, connectez-vous au serveur VPN à l'aide d'une application VPN. Lorsque vous êtes sur un réseau privé virtuel (VPN), le serveur et le téléphone font partie d'un réseau local. iptables DNAT pour transférer le port spécifique vers l'IP de votre téléphone :

    ~# iptables -t nat -I PREROUTING -p tcp --dport 2222 -j DNAT --to <phone_ip>:22

    L'IP Forwarding est également requis sur le serveur, qui a probablement déjà été mis en place lors de la configuration du serveur VPN :

    ~# echo 1 >/proc/sys/net/ipv4/ip_forward
    ~# iptables -I FORWARD -d <phone_ip> -j ACCEPT
    ~# iptables -I FORWARD -s <phone_ip> -j ACCEPT

Maintenant vous pouvez ssh de n'importe quel hôte sur Internet vers votre téléphone :

~$ ssh <phone_user>@<server_ip> -p 2222

Vous serez connecté à votre téléphone après l'authentification.


J'ai expliqué ici l'exemple de SSH. De la même manière, vous pouvez exécuter n'importe quel autre serveur sur votre téléphone et transférer son port du serveur SSH/VPN (avec IP publique) vers votre téléphone (sans IP publique) afin que votre serveur devienne accessible depuis Internet.


RELATION :

0 votes

Juste un ajout à la section "VPN" : Seul le téléphone sur lequel tourne le serveur doit utiliser une connexion VPN si le VPN utilisé fournit une IP publique au téléphone (souvent appelée IP statique ou dédiée). Dans ce cas, le client peut utiliser l'IP publique offerte par le VPN et accéder au service ssh offert. Il existe des fournisseurs de VPN publics offrant un tel service.

1 votes

@Robert désolé, je n'ai pas compris le message. Pouvez-vous développer ?

1 votes

Vous n'avez pas besoin de deux connexions VPN. Vous avez écrit qu'elles doivent être situées dans le même réseau local . Mais il n'est pas nécessaire qu'il s'agisse d'un réseau local, l'Internet lui-même convient également. Si le dispositif de service est situé avec une IP publique sur Internet, le second dispositif n'a pas besoin d'une connexion VPN.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X