Redirection de port sur Linux sans iptables?

34

J'ai un serveur Linux VPS (virtuozzo) et je dois configurer la redirection de port, mais mon fournisseur d'hébergement n'autorise pas les modules du noyau iptables-nat, donc iptables -t nat- ne fonctionne pas.

Je cherche d'autres façons de le faire. Je sais que je peux transférer un port à l’aide d’ openssh , mais j’ai besoin de transférer plus de 20 ports différents, TCP et UDP, ce n’est donc pas une option.

Existe-t-il un logiciel pour Linux capable de faire du transfert de port?

troupe
la source
hein bonne question +1. Je ne suis pas au courant d'une solution, j'ai hâte de voir s'il y a quelque chose ici.
Le Shurrican
Et ensuite, qu'en est-il d'un programme qui vous permet de transférer des ports vers différentes destinations en fonction de l'IP source?
dpk
Évitez complètement le problème en n'utilisant jamais de VPS basés sur Virtuozzo / OpenVZ.
Michael Hampton
@MichaelHampton: Pas très constructif ...
Nicolas Raoul

Réponses:

47

Utilisez l'outil appelé "socat", c'est un excellent outil pour ce genre de choses et il est déjà intégré dans de nombreuses distributions Linux. Lire à ce sujet ici: http://www.dest-unreach.org/socat/doc/README

Exemple de redirection de port avec socat:

socat TCP4-LISTEN:80,fork TCP4:www.yourdomain.org:8080

Ceci redirige toutes les connexions TCP sur le port 80 vers le port 8080 TCP de www.votredomaine.org.

Fbo
la source
N'oubliez pas que https est la valeur par défaut sur le port 443 au lieu du port 80 :)
keiki
Socat est le seul outil qui a fonctionné pour moi sur une framboise pi uniquement ipv6
chotchki
Parfait, a résolu mon problème instantanément. Notez que vous devez vous assurer que le port entrant est ouvert dans iptables si vous en avez un.
jancha
13

Il existe un programme de ressources minuscules et léger appelé redirassez configurable.

apt-get install redir sur les distributions basées sur Debian.

Jonathan Ross
la source
J'ai déjà utilisé cet outil dans le passé et ça marche très bien ...
Alex
Je seconde cet outil. Il semble que ce ne soit pas un outil de transfert de paquet, mais le tunnel tcp. Cela changera l'adresse IP source vue par la cible. Cela fonctionne donc très bien lorsque vous devez rediriger un port vers un autre ordinateur dont la configuration de routage est différente.
Scegg
10

Qu'en est- il rinetd?
C'est un démon qui redirige les connexions TCP. Consultez la page de manuel pour savoir si cela répond à vos besoins: http://www.boutell.com/rinetd/

fab
la source
Cela semble intéressant, mais il se limite au TCP comme vous l’avez dit.
troex
UDP est maintenant supporté: github.com/samhocevar/rinetd
kev
6

xinetdprend en charge un attribut de redirection qui fera ce que vous voulez. Comme d'autres l'ont noté, un certain nombre de programmes traitent les redirections.

Utiliser xinetdou un autre programme utilisant la tcpwrappersbibliothèque vous permettra d’appliquer des restrictions d’accès si et quand cela deviendrait nécessaire.

BillThor
la source
4

xinet / inetd. Pour par exemple:

réorienter

Permet à un service TCP d'être redirigé vers un autre hôte. Lorsque xinetd reçoit une connexion TCP sur ce port, il crée un processus qui établit une connexion avec l'hôte et le numéro de port spécifié, puis transmet toutes les données entre les deux hôtes.

http://linux.die.net/man/5/xinetd.conf

poige
la source
Cela semble intéressant, mais il est limité à TCP comme vous l'avez dit
Doud
4

J'ai trouvé un petit utilitaire appelé portfwd http://portfwd.sourceforge.net/ qui fait exactement ce dont j'ai besoin (transmission TCP et UDP), la page d'accueil indique qu'elle a été mise à jour pour la dernière fois en 2002, mais la dernière version date de 2007 et fonctionne sur le noyau 2.6. .

troupe
la source
J'accepterai ma réponse car il semble que ce soit le seul logiciel qui supporte pleinement les protocoles TCP et UDP.
troex
3

SSH Effectue le transfert de port, dans la mesure où vous pouvez établir un tunnel dans une connexion SSL.

JeffG
la source
-3

Ok, voici la réponse simple qui devrait fonctionner, ce n’est pas sournois, mais la plupart des gens compliquent la réponse et confondent toutes les nouveautés des utilisateurs de Linux.

ufw autoriser 2xxx

2xxx = quel que soit votre numéro de port, tapez simplement cette commande dans votre terminal serveur et le port souhaité est ouvert.

denn
la source
Il ouvre simplement le port sur les interfaces faisant face à l'extérieur du serveur. Il ne redirige pas ni ne transfère le port d'une adresse IP à l'autre. IL OUVRE LE PORT.
AmirHossein