[résolu] [iptables] forward pour VNC

forward pour VNC [résolu] [iptables] - Linux et OS Alternatifs

Marsh Posté le 05-04-2005 à 19:23:16    

Bonjour,
 
je désire utiliser VNC sur le port 5800 (avec un navigateur et Java) depuis l'extérieur vers mon ordi qui se trouve dans un réseau local, derrière un serveur. J'essaie donc d'atteindre mon ordi en passant par le serveur : http://1.2.3.4:5800/ .
 
Pour que le serveur transmette les paquets vers mon ordi, je lui ai donné, entre autres, ces règles iptables :
 

# on accepte de transmettre les connexions du net vers le LAN (si deja etablies)
iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
 
# nouvelles connexions net->LAN sur ports prédéfinis
iptables -A FORWARD -i eth1 -o eth0 -m state --state NEW -p tcp --dport 5800 -j ACCEPT
 
*nat
# acces VNC depuis l'universite : on définit quoi forwarder
iptables -t nat -A PREROUTING -p tcp --dport 5800 -i eth1 -j DNAT --to-destination 10.0.0.3:5800


 
Pourtant, cela ne fonctionne pas. Le navigateur me dit "Connexion refusée lors de la tentative de contact de 1.2.3.4:5800".
 
Info :
IP publique du serveur (mdk10) : 1.2.3.4
IP privée de mon ordi : 10.0.0.3
UltraVNC est bien configuré pcq l'accès direct depuis un autre PC du réseau local fonctionne ( http://10.0.0.3:5800/ ).

 
edit : résolu


Message édité par nagadoudi le 07-04-2005 à 22:13:03
Reply

Marsh Posté le 05-04-2005 à 19:23:16   

Reply

Marsh Posté le 05-04-2005 à 20:57:34    

Tu n'as pas d'autres règles de DROP perdus dans ton script ?
Tu autorises bien le forwarding ?
 
Si oui, postes le résultat de la sortie d'un sniffer que tu auras lancé sur ton firewall :
# tethereal -i any host 1.2.3.4 and host 10.0.0.3
 
Si trop de connections viennent te parasiter la sortie, affines la un peu :
par exemple pour virer les traces SSH
# tethereal -i any host 1.2.3.4 and host 10.0.0.3 and not port 22
 
Ensuite lances ta connection VNC, normalement tu devrais voir ce qui te bloque.
Pour une connection réussie, passant par les 2 interfaces, tu devrais voir tous tes paquets en double.

Reply

Marsh Posté le 06-04-2005 à 11:22:21    

Il manque une règle SNAT pour les paquets sortants de VNC.

Reply

Marsh Posté le 07-04-2005 à 16:25:07    

Citation :

Tu n'as pas d'autres règles de DROP perdus dans ton script ?


Par défaut, je fais pointer les chaines de la table filter par defaut sur DROP. Mais par après, je les autorise une à une.
 

Citation :

Tu autorises bien le forwarding ?


Oui, avec ces règles :
iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state NEW -p tcp --dport 5800 -j ACCEPT
Les tables mangle et nat sont par défaut sur accept.
 

Citation :

Il manque une règle SNAT pour les paquets sortants de VNC.


Comment procéder ? SNAT modifie les paquets pour indiquer une nouvelle IP source : dans quel sens l'utiliser ?
 
Je vais tenter avec le sniffer... :(


Message édité par nagadoudi le 07-04-2005 à 16:29:27
Reply

Marsh Posté le 07-04-2005 à 17:13:42    

Petite expérience : depuis la station 10.0.0.6, je lance une requête HTTP vers le serveur 10.0.0.1:5800. Normalement, iptables devrait rediriger les paquets vers 10.0.0.3 de façon transparente, mais cela ne marche pas.
 
Voici le résultat du sniffer :

# tethereal -i eth0 not port 22
 
Capturing on eth0
  0.000000     10.0.0.6 -> Broadcast    ARP Who has 10.0.0.3?  Tell 10.0.0.6
 
 
  0.000000 216.239.59.99 -> 10.0.0.3     TCP http > 3619 [FIN, ACK] Seq=0 Ack=0 Win=8190 Len=0
  0.001736     10.0.0.3 -> 216.239.59.99 TCP 3619 > http [ACK] Seq=0 Ack=1 Win=64952 Len=0
  2.723826     10.0.0.6 -> Broadcast    ARP Who has 10.0.0.1?  Tell 10.0.0.6
  2.723926     10.0.0.1 -> 10.0.0.6     ARP 10.0.0.1 is at 00:04:ac:e3:fa:55
  2.724805     10.0.0.6 -> 10.0.0.1     TCP 3866 > 5800 [SYN] Seq=0 Ack=0 Win=64240 Len=0 MSS=1460
  2.725017     10.0.0.1 -> 10.0.0.6     TCP [TCP ZeroWindow] 5800 > 3866 [RST, ACK] Seq=0 Ack=0 Win=0 Len=0
  3.133940     10.0.0.6 -> 10.0.0.1     TCP 3866 > 5800 [SYN] Seq=0 Ack=0 Win=64240 Len=0 MSS=1460
  3.134092     10.0.0.1 -> 10.0.0.6     TCP [TCP ZeroWindow] 5800 > 3866 [RST, ACK] Seq=0 Ack=1 Win=0 Len=0
  3.636915     10.0.0.6 -> 10.0.0.1     TCP 3866 > 5800 [SYN] Seq=0 Ack=0 Win=64240 Len=0 MSS=1460
  3.637076     10.0.0.1 -> 10.0.0.6     TCP [TCP ZeroWindow] 5800 > 3866 [RST, ACK] Seq=0 Ack=1 Win=0 Len=0
  6.826898     10.0.0.3 -> 216.239.59.99 TCP 3619 > http [FIN, ACK] Seq=0 Ack=1 Win=64952 Len=0
  6.942066 216.239.59.99 -> 10.0.0.3     TCP http > 3619 [ACK] Seq=1 Ack=1 Win=8190 Len=0
  7.724146     10.0.0.1 -> 10.0.0.6     ARP Who has 10.0.0.6?  Tell 10.0.0.1
  7.724776     10.0.0.6 -> 10.0.0.1     ARP 10.0.0.6 is at 00:e0:18:f1:8e:83


 
Je ne sais pas analyser les résultats. Quelqu'un peut-il m'aider et me dire pourquoi le forwarding des paquets ne se fait pas ?
 
edit: l'IP 216.239.59.99 correspond à Google. Ne me demandez pas qu'est-ce qu'elle vient faire là.


Message édité par nagadoudi le 07-04-2005 à 17:17:22
Reply

Marsh Posté le 07-04-2005 à 17:22:33    

iptables -t nat -A PREROUTING -p tcp --dport 5800 -i eth1 -j DNAT --to-destination 10.0.0.3:5800
 
Question: est ce que les interfaces sont correctes dans tes regles. Si tu as mis -i eth1 dans ta regle et que tu attaques le FW sur l'interfaces eth0 (ou autre)... ca marchera pas


Message édité par l0ky le 07-04-2005 à 17:23:14
Reply

Marsh Posté le 07-04-2005 à 22:12:35    

Il fallait remplacer

iptables -A FORWARD -i eth1 -o eth0 -m state --state NEW -p tcp --dport 5800 -j ACCEPT


par

iptables -A FORWARD -i eth1 -o eth0 -m state --state NEW,RELATED,ESTABLISHED -p tcp -j ACCEPT


 
A ce stade, on affiche la page de connexion sur le poste client. Pour se connecter, il faut aussi forwarder sur le port 5900 (config par défaut de VNC serveur : port principal=5900, port http=5800) :

iptables -t nat -A PREROUTING -p tcp --dport 5900 -i eth1 -j DNAT --to-destination 10.0.0.3:5900


 
Merci à tous pour votre aide. :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed