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 ?
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 ?
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 :
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 :
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 :
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.
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 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.
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
Duplicata : Android.stackexchange.com/q/89019/218526