Forum Linux.général iptables pour du proxy ?

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
8
mai
2013

Bonjour a tous

J'ai un poste qui se connecte a internet via un proxy sur lequel je n'ai aucun contrôle. Seul point positif, le port SSH est laisse libre, donc je m'en sers joyeusement pour me connecter via VNC sur mon NAS et compagnie avec le port forwarding openssh.
J'ai une autre application, qui elle se connecte en utilisant un port qui est filtre par ce proxy. Je pensais donc faire un tunnel SSH pour lire les paquets TCP sur mon NAS, récupérer la réponse et la transférer sur le poste. Mon NAS en tant que proxy en quelque sorte.

Contraintes :
- impossible de compiler sur le NAS, je n'ai pas encore de compilateur/sdk/rien
- Python et Perl sont installes et opérationnels, donc je pensais regarder du cote des reverse proxys en Python par exemple
Puis, après un petit détour via la documentation d'iptables, on dirait que cela pourrait faire le travail. Problème, les adresses distantes sont dynamiques.

Grosso modo, j'aimerais que tout ce qui arrive sur mon NAS par le port 40000 (par exemple) soit achemine a destination (port 443), et que la réponse soit redirigée via tunnel SSH jusqu’à mon client.
Est-ce que ce genre de choses est possible avec les iptables, ou alors est-ce que ça nécessite des manipulations plus poussées, voire l'installation d'un proxy ?

  • # Tunnel ssh

    Posté par  . Évalué à 3.

    Je ne suis pas sur d'avoir tout compris, mais il semblerai que tu as deja ce qu'il te faut : ssh -L/-R
    -L : tu demande a ssh d'écouter sur ta machine, et de tout renvoyer vers le nas, -R , c'est dans l'autre sen, tu peux demander au nas d'écouter sur un port et de tout renvoyer en local.
    Reste sinon - si ton appli le supporte - le proxy socks de sshd.

    • [^] # Re: Tunnel ssh

      Posté par  . Évalué à 0.

      Oui, c'est comme ça que je fais mon tunnel SSH. Par contre sur mon NAS, je n'ai rien qui tourne pour écouter sur le port xxxxx et envoyer les paquets a qui de droit. C'est pour ca que je supposais qu'il me fallait tout de même un proxy ou quelque chose du même genre.

      • [^] # Re: Tunnel ssh

        Posté par  . Évalué à 2.

        C'est là que je ne saisis pas bien le rapport avec "J'ai une autre application, qui elle se connecte en utilisant un port qui est filtre par ce proxy."

        Si tu veux que ton appli se connecte via ton NAS, il te faut créer un tunnel genre ssh -L 1234:ip.serveur-distant:port_filtré et connecter ton appli à localhost:1234 : tout se passera comme si ton appli est connectée sur serveur_distant:port_filtré, et ce sera transparent, les réponses émises par serveur_distant et arrivant sur ton NAS seront directement tunnelé vers ton appli.

        Si ton appli peux utiliser un proxy socks ou http (mais ça ça nécessite que ce soit prévu et codé dans ton appli), tu peux soit utiliser le proxy socks de sshd, soit installer un proxy http sur ton NAS (genre squid ou tinyproxy) et faire une ssh -L 1234:localhost:3128 et configurer ton appli pour utiliser comme proxy http://localhost:1234

        • [^] # Re: Tunnel ssh

          Posté par  . Évalué à 2.

          Et si ton appli doit se mettre en écoute sur un port et attendre des connections entrantes, tu peux utiliser conjointement -L et -R :
          ssh -L 1234:serveur_distant:3456 -R ip_NAS:40000:localhost:31415

          Ton appli se connecte sur localhost:1234 (et arrive donc sur serveur_distant:3456), et écoute sur localhost:31415 et reçoit tout se qui arrive sur ip_NAS:40000

  • # man iptables-extensions

    Posté par  . Évalué à 2.

    iptables -t nat -A OUTPUT -p tcp --dport 40000 -j REDIRECT

    optionnellement avec l'option --to-ports pour rediriger vers un port local différent de 40000 (ça sert si ton numéro de port est inférieur à 1024).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.