J'ai deux serveurs. Le programme du premier doit communiquer avec le second sur le port 2194.
Je sais que ça ne fonctionne pas, car quand je le fais:
root@server1 [~]# telnet myserver2.com 2194
Trying 123.123.123.98...
telnet: connect to address 123.123.123.98: Connection timed out
telnet: Unable to connect to remote Host: Connection timed out
server1# iptables -L -n
Chain INPUT (policy DROP)
...
...
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
...
Chain LOCALINPUT (1 references)
target prot opt source destination
...
Chain LOCALOUTPUT (1 references)
target prot opt source destination
...
Chain LOGDROPIN (1 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0
Chain LOGDROPOUT (1 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0
Pour autoriser les connexions sortantes de server1 à server2 sur TCP port 2194, utilisez ceci sur server1:
iptables -A OUTPUT -p tcp -d <server2ip> --dport 2194 -j ACCEPT
Pour autoriser les connexions entrantes de server1 à server2 sur TCP port 2194, utilisez ceci sur server2:
iptables -A INPUT -p tcp -s <server1ip> --dport 2194 -j ACCEPT
Quelques conseils
Le service que vous exécutez écoute-t-il uniquement sur localhost? Courir
netstat -ltn
Si vous voyez une ligne comme 0.0.0.0:2194
alors tu vas bien. Si tu vois 127.0.0.1:2194
alors vous écoutez uniquement sur les connexions locales (ou :::2194
et ::1:2194
respectivement pour les adresses IPv6, indiquées par tcp6
lignes).
Quelles sont les règles actuelles d'iptables?
iptables -L
La politique DROP/REJECT (si ce n'est pas le cas devrait-elle être, pour toutes les chaînes)? Existe-t-il une règle spécifique pour le port dont vous avez besoin?
S'il s'agit d'un problème de pare-feu, vous pouvez soit modifier la règle incriminée, soit ajouter une règle comme
iptables -A INPUT -p tcp --dport 2194 -j ACCEPT
devrait faire l'affaire (non testé)
=== EDIT ===
Pour tester le problème de réseau, un bon outil est tcpdump
. Exécutez-le sur les deux serveurs tout en essayant de vous connecter et voyez où vont les paquets. par exemple. sur le serveur 1, exécutez:
tcpdump -i eth0 -n Host server2.com
et sur le serveur 2, exécutez:
tcpdump -i eth0 -n Host server1.com
Essayez ensuite de vous connecter. Vous devriez voir tous les paquets TCP déversés à l'écran, depuis la source et la destination. Avec ces informations, vous devriez être en mesure de localiser le problème.