Τρίτη, 24 Νοεμβρίου 2009 10:33 μμ
I.T. ΑΝΗΣΥΧΙΕΣ
Το ιδιότροπο Remote Desktop Connection
Πως γίνεται να έχω RDP προς το sever από το Lan και όχι πάνω από WAN; Κάνω Ping το server και παίρνω απάντηση, τι συμβαίνει;
Πρώτα από όλα το ping είναι ICMP ενώ το RDP tcp port 3389. Άρα λειτουργία του πρώτου δεν συνεπάγεται και λειτουργία του 2ου.
Εδώ λοιπόν έχουμε την παρακάτω συνδεσμολογία.
Αριστερά είναι ο client στο κέντρο routers κλπ και δεξιά κάτω βρίσκεται ο server.
Σε περιπτώσεις σαν κι αυτή παίρνουμε network trace ταυτόχρονα στα δύο σημεία έτσι ώστε να φανεί αν υπάρχει κάποια διαφορά στα πακέτα που ανταλλάσσονται οπότε κάτι χάνεται-κόβεται ενδιάμεσα.
Client:
Εκ πρώτης όψεως τα πράγματα είναι περίεργα, ένα trace 10-15 πακέτα και τόσα “ωραία” χρώματα και μηνύματα. Προσέξτε στο frame 15 αναγρά φεται “TCP Previous Segment Lost” άρα φαίνεται πως κάτι δεν επιστρέφεται από το server. Το frame που ακολουθεί TCP Dup ACK 14# είναι άμεση αντίδραση του tcp όταν χάνονται πακέτα, έχασα το τάδε πακέτο παρακαλώ ξαναστείλτο. Το σύστημα από την άλλη μεριά με τη σειρά του πρέπει να ξαναστείλει αυτά που ζητούνται.
Με προφανή λοιπόν λόγο δυσλειτουργίας πάμε να δούμε τη μεριά του server.
Server:

Ωπ! κι από την άλλη μεριά τα ίδια χρώματα περίπου. Εδώ λοιπόν ο server λαμβάνει το TCP Dup ACK (frame 17) και κάνει αυτό που πρέπει Retransmission. Στέλνει δηλαδή αυτό που ζητήθηκε αλλά όμως τελικά η όλη διαδικασία αποτυγχάνει.
Το ερώτημα είναι γιατί; Αν κοιτάξετε λίγο προσεκτικά θα δείτε πως το frame 15 που έστειλε ο server δεν έφτασε ποτέ στον client να και ο λόγος του DUP Ack και των Retransmissions. Άρα λοιπόν ξέρουμε πως κάτι στέλνει ο server και δε φτάνει ποτέ απέναντι οπότε είναι προφανές πως οφείλεται στον ενδιάμεσο εξοπλισμό routers, firewalls κλπ.
Μη βιάζεστε όμως δεν τελειώσαμε ακόμα, παρατηρήστε στην 4η στήλη (Length) το πακέτο που χάνεται έχει μέγεθος 1434 bytes πολύ κοντά δηλαδή στο ethernet mtu. To mtu ορίζει το μέγιστο μέγεθος πακέτου που μπορεί να ταξιδέψει πάνω στο καλώδιο. Είναι προφανές λοιπόν κάποια συσκευή ενδιάμεσα έχει μικρότερο όριο mtu και κόβει αυτά τα πακέτα. Όπως φαίνεται και στο IP Header του 15 είναι ρυθμισμένο ώστε να αποτρέπει το fragmentation.

Εργαλεία για να βρεθούν τιμές όσον αφορά το mtu είναι το ping, δίνοντας ping –l <size> –f . Με την παράμετρο -l ορίζουμε το μέγεθος του icmp payload ενώ με το –f θέτουμε το flag “Do not fragment” στο IP Header αποτρέποντας το κόψιμο (fragmentation) του πακέτου μας. Δοκιμάζοντας λοιπόν με διάφορα μεγέθη θα πάρουμε απάντηση “Packet needs to be fragmented but DF set.” που σημαίνει πως φτάσαμε το όριο του mtu.
Άλλο εργαλείο που ελέγχει αυτοματοποιημένα είναι το mturoute.exe