Tcho.
Il y a des trucs dans ce que tu dis vouloir faire qui ne peuvent pas être faîts
avec tes règles Iptables actuelles. Par exemple dans ton tout premier message tu donnes ces deux règles complémentaires au début :
iptables -P INPUT DROP
.......
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Et c'est en contradiction avec ta demande qui est si j'ai bien compris celle-ci :
ibubbl3 a écritJe veux faire deux choses :
(A) - accèder au RPI en SSH sur port 22 depuis mon réseau local
(B) - accèder au RPI en SSH sur port 4221 depuis internet.
Jai ajouté les lettres (A) et (B) entre parenthèses au dessus pour mieux m'expliquer par la suite. Pour mes exemples je vais prendre des adresses IP fictives pour "nommer" le matériel voulant joindre ton RPI (et aussi je vais donner
une adresse IP fictive attribuée à ton RPI), afin que tu comprennes pourquoi ce que tu veux faire avec tes règles actuelles Iptables t'es impossible.
Les adresses fictives pourraient être les suivantes :
192.168.0.12 :
Ton RPI
192.168.1.3 :
Ton PC local avec lequel tu veux acceder à ton RPI
84.153.24.09 : Un de tes PC voulant contacter ton RPI depuis Internet.
Quand tu veux faire ce que j'ai appelé la manipulation (A) cela t'est effectivement impossible car tu ne l'autorises pas
avec tes règles Iptables actuelles :
Car tu essaies de connecter l'adresse IP
192.168.1.3 à l'adresse IP :
192.168.0.12, et c'est impossible de faire cela avec les deux règles Iptables que tu donnes dans ton premier message (qui sont les suivantes) :
iptables -P INPUT DROP
.......
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Pourquoi maintenant (en détails):
_Parce que avec ta règle "iptables -P INPUT DROP"
tu refuses tout ce qui arrive de l'extérieur donc tu interdis bien sûr toutes connexions depuis ton
PC local vers ton port SSH, et aussi bien sûr
tu interdis par la même occasion toutes connexions depuis un de tes
PC Internet vers ton port SSH.
Car ton Iptables sur ton RPI les considère comme NEW (nouvelles connexions) car elles ne sont pas reconnues comme
venant d'être lancées depuis le RPI, mais venant bien de
l'extérieur du RPI, Iptables ne les laisse donc pas passer, car tu lui as dit de ne laisser passer (sur la chaîne INPUT) que les connexions RELATED et ESTABLISHED (autrement dit de ne laisser passser
que ce qui est initié depuis le RPI).
Tout le reste est donc bloqué,
donc tout ce qui vient de l'extérieur au RPI, (que ce soit
extérieur-en-local ou
extérieur-Internet) est bloqué avec ce type de règles Iptables, il faut les affiner (voir plus bas).
Tu as donc mis cela pour épauler ton DROP sur INPUT :
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Cette ligne de commande là ne comporte pas l'argument "NEW", et c'est le seul argument nécessaire à Iptables pour qu'il accepte une nouvelle connexion sur tes ports SSH venant donc soit de ton PC local, soit de ton PC Internet.
Cette ligne de commande juste au dessus accepte seulement
ce qui est initié depuis le RPI, tout ce qui vient depuis le dehors du RPI est DROPÉ ! Donc ton PC en local est dropé, et ton PC d'Internet est aussi dropé.
Et en faisant les deux lignes suivantes, tu t'es empêché toi même de te connecter donc à toi même, (mais on vera plus bas comment contourner cela) :
iptables -P INPUT DROP
.......
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
(En même temps en mettant l'argument "NEW" sur cette ligne de commande cela annulerai ta règle
DROP sur
INPUT....)
Mais tu as aussi paramétré Iptables avec ceci :
iptables -t nat -I PREROUTING -d 192.168.0.253 -p tcp --dport 4221 -j DNAT --to 10.0.0.1:22
Cela ne sert à rien pour Iptables car comme on vient de le voir au dessus, cette redirection NAT n'aboutira jamais car tu ne laisses rien entrer sur le RPI, donc pour Iptables il n'a rien à nater du tout...ni depuis ton local, ni depuis Internet... Car cela lui est interdit selon les règles que l'on vient de voir.
Je pense que ta solution pourra se trouver plus dans ce style de choses :
Tu laisses tes règles actuelles (donc les règles de ton premier message,
celles qui t'interdisent les choses venant de toi même qu'elles soient d'Internet ou Locales, celles-là tu les laisses donc), et tu fais ton possible pour que ton PC en local ait une adresse IP fixe, de là tu créeras une règle
sur ton Iptables-RPI autorisant seulement l'accès depuis cette machine à l'IP locale FIXE. Et pour le joindre depuis internet, il te faudra aussi une adresse IP fixe (par exemple depuis un proxy VPN que tu payes et qui a toujours la même adresse IP internet fixe), que tu indiqueras à iptables de la même manière que pour l'IP locale.
De cette façon tu gardes donc toutes tes règles Iptables initiales (que tu as indiqué dans ton tout premier message ici en créant cette discussion), et tu n'autoriseras que l'adresse IP locale Fixe que tu auras choisi, et que l'adresse IP Internet Fixe que tu auras choisi sur ton Iptables-RPI......
Pour moi c'est viable, à toute.