Rediriger le trafic du port TCP vers un autre port afin que l'application Java sache quel port a été utilisé
J'exécute une application serveur Java (Bungeecord si quelqu'un le sait) pour laquelle je code des plugins. Le serveur Bungeecord s'exécute sur le port A mais il faut pouvoir se connecter au serveur sur les ports A et B. Donc, si on se connecte au port A, tout devrait fonctionner comme prévu. Mais si l'on se connecte à B l'entrée de B doit être envoyée au port et la sortie d'une connexion sur B doit être envoyé par le port B.
Le problème est que mon plugin Java pour Bungeecord doit savoir si le client connecté sur A ou B.
Je ne peux pas simplement créer deux instances ServerSocket
(une pour le port A et une pour le port B) car cela nécessiterait un modding de Bungeecord (qui n'est pas mon projet). Le faire serait très fastidieux.
Est-il possible de résoudre ce problème sous linux (debian) et avec Java ou dois-je créer ma propre application proxy légère qui fournit des informations pour le plugin Java si une connexion spécifique est connectée ofer A ou B?
1 answers
À partir de la couche TCP, une application ne fournit que des informations sur le port sur lequel elle reçoit réellement la connexion, et ce serait le port A dans votre cas. Vous pouvez utiliser un outil comme netcat
comme une sorte d ' "entonnoir" afin que les connexions au port A et au port B se retrouvent toujours au port A, mais la couche TCP ne contiendra aucune information à ce sujet.
Si vous devez séparer plusieurs types de connexion qui sont tous reçus sur le même port dans l'application serveur, vous disposez des éléments suivants options:
- Intégrer des informations sur le type de connexion à la couche application.
- Distinguer les connexions par le portsource , c'est-à-dire le port du côté client. (Vous pourriez ou ne pourriez pas être en mesure d'utiliser
netcat
, alors. Vous pouvez toujours utiliser réécriture/traduction d'adresses de port, si.)