Πρώτο commit
Αυτό το commit περιλαμβάνεται σε:
commit
8ec8e9bee2
451 αρχεία άλλαξαν με 46736 προσθήκες και 0 διαγραφές
18
content/articles/33/01_editorial.md
Κανονικό αρχείο
18
content/articles/33/01_editorial.md
Κανονικό αρχείο
|
@ -0,0 +1,18 @@
|
|||
+++
|
||||
title = 'Editorial'
|
||||
date = '2003-07-01T00:00:00Z'
|
||||
description = ''
|
||||
author = 'Ιατρού Μιχάλης iatrou ατ hellug.gr(mailto:iatrou%20%C3%A1%C3%B4%20hellug.gr)'
|
||||
issue = ['Magaz 33']
|
||||
issue_weight = 1
|
||||
+++
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
*Καλωσορίσατε στο καλοκαιρινό Magaz.*
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Το τεύχος αυτό είναι ένα \"δώρο\" σε όλους εκείνους που, ηθελημένα ή όχι, αψηφούν τις υψηλές θερμοκρασίες (και όχι μόνο) και μένουν μακριά από τις παραλίες,
|
||||
κοντά στα \"μηχανάκια\" τους.
|
||||
|
||||
Καλή διασκέδαση και καλό καλοκαίρι.
|
534
content/articles/33/02_iptun.md
Κανονικό αρχείο
534
content/articles/33/02_iptun.md
Κανονικό αρχείο
|
@ -0,0 +1,534 @@
|
|||
+++
|
||||
title = 'IP/Ethernet Tunnel Using Linux'
|
||||
date = '2003-06-01T00:00:00Z'
|
||||
description = ''
|
||||
author = 'Τοπογλίδης Κων/νος'
|
||||
issue = ['Magaz 33']
|
||||
issue_weight = 2
|
||||
+++
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
*IP tunnels με απλά λόγια.*
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**1. Εισαγωγή**
|
||||
---------------------------------------
|
||||
|
||||
- [1.1 Τι είναι όμως αυτά τα IP/Ethernet Tunnels;](#ss1.1)
|
||||
- [1.2 Γιατί όμως είναι χρήσιμα; Τι εφαρμογές έχουν;](#ss1.2)
|
||||
|
||||
**2. Τα εργαλεία**
|
||||
------------------------------------------
|
||||
|
||||
**3. Tunnel με το SSH**
|
||||
-----------------------------------------------
|
||||
|
||||
- [3.1 Socks 4 proxy](#ss3.1)
|
||||
- [3.2 Port Forwarding](#ss3.2)
|
||||
- [3.3 Και αν δεν μπορούμε να κάνουμε ssh;](#ss3.3)
|
||||
|
||||
**4. Vtun - Virtual tunnel**
|
||||
----------------------------------------------------
|
||||
|
||||
- [4.1 Εγκατάσταση](#ss4.1)
|
||||
- [4.2 Τι θα χρειαστούμε](#ss4.2)
|
||||
- [4.3 Εγκατάσταση](#ss4.3)
|
||||
- [4.4 Ρύθμιση του server](#ss4.4)
|
||||
- [4.5 Ρύθμιση του client](#ss4.5)
|
||||
- [4.6 Και τώρα;](#ss4.6)
|
||||
- [4.7 Και αν είμαστε πίσω από proxy;](#ss4.7)
|
||||
|
||||
**5. FreeS/WAN**
|
||||
----------------------------------------
|
||||
|
||||
**6. Επίλογος**
|
||||
---------------------------------------
|
||||
|
||||
|
||||
### [1. Εισαγωγή]{#s1}
|
||||
|
||||
Όλοι μας, λίγο πολύ έχουμε ακούσει κάτι για τα IP tunnels και ίσως να έχουμε ακούσει περισσότερα τώρα που υπάρχει και έξαρση με τις wireless συσκευές.
|
||||
|
||||
### [1.1 Τι είναι όμως αυτά τα IP/Ethernet Tunnels;]{#ss1.1}
|
||||
|
||||
Τα IP Tunnels είναι, με απλά λόγια, μια σύνδεση 2 υπολογιστών μέσω κάποιου ευρύτερου (όχι απαραίτητα) δικτύου όπως το intenet. Όμως διαφέρει από τις υπόλοιπες
|
||||
συνδέσεις γιατί η σύνδεση που δημιουργείται μεταξύ των δύο υπολογιστών έχει κάποιες ιδιότητες. Για παράδειγμα, μπορεί να είναι encrypted ή και να σχηματίζουν
|
||||
ένα τοπικό δίκτυο μεταξύ τους.
|
||||
|
||||
### [1.2 Γιατί όμως είναι χρήσιμα; Τι εφαρμογές έχουν;]{#ss1.2}
|
||||
|
||||
Η κυριότερη εφαρμογή - ίσως και ο λόγος που δημιουργήθηκαν - είναι η απομακρυσμένη και ασφαλής σύνδεση ενός υπολογιστή σε ένα εταιρικό τοπικό δίκτυο για να μην
|
||||
υποκλαπούν δεδομένα και η απομακρυσμένη και ασφαλής σύνδεση δύο τοπικών δικτύων, για τον ίδιο λόγο. Οπότε μπορεί κανείς να δει την χρησιμότητα τους στα wireless
|
||||
δίκτυα. Άλλο όνομα για τα IP Tunnels είναι το VPN (δηλαδή Virtual Private Network). Όμως, μπορούν να χρησιμοποιηθούν και για να \"προσπεράσει\" κάποιος έναν
|
||||
πολύ \"αυστηρό\" proxy server.
|
||||
|
||||
|
||||
### [2. Τα εργαλεία]{#s2}
|
||||
|
||||
Υπάρχουν αρκετοί τρόποι για να κάνει κάποιος ένα Tunnel. Υπάρχουν αρκετές διανομές που είναι παρακλάδια μικρών διανομών όπως: Wolverine Firewall and VPN Server,
|
||||
Astaro Security Linux που δεν είναι όμως από την άδεια χρήσης GPL. Υπάρχουν και λύσεις όπως της Cisco και άλλων εταιριών, που πωλούν ένα συγκεκριμένο μηχάνημα
|
||||
και συνήθως κοστίζει αρκετά χρήματα ακόμα και για μεσαίες επιχειρήσεις.
|
||||
|
||||
Φυσικά όμως, υπάρχουν και αρκετά project τα οποία είναι Free/Open Source κάτω από την GPL άδεια χρήσης. Το άρθρο θα καλύψει μερικά από αυτά όπως: tunnels με το
|
||||
ssh, το vtun, και λιγότερο το FreeS/WAN. Φυσικά υπάρχουν και άλλα projects όπως το OpenVPN, το vpnd, το tinc, το SLAN, το CIPE, το Htun και άλλα.
|
||||
|
||||
|
||||
### [3. Tunnel με το SSH]{#s3}
|
||||
|
||||
Το ssh είναι από τα πιο γνωστά πλέον προγράμματα. Είναι για όλους σχεδόν ένα από τα πιο χρήσιμα εργαλεία για remote access. Το αγαπημένο μας ssh μπορεί να κάνει
|
||||
και κάποιες άλλες δουλειές, όπως να κάνει port forwarding ή να γίνει socks 4 proxy, διοχετεύοντας όλο το traffic από το τοπικό μηχάνημα στο απομακρυσμένο.
|
||||
|
||||
### [3.1 Socks 4 proxy]{#ss3.1}
|
||||
|
||||
Για να γίνει το ssh ένας μικρός τοπικός socks 4 proxy το μόνο που έχετε να κάνετε είναι:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
ssh -D 1080 my.linux.server.gr
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Τώρα όσο είμαστε συνδεδεμένοι στο απομακρυσμένο μηχάνημα my.linux.server.gr θα παρατηρήσουμε και την port 1080 στο μηχάνημά μας να ακούει για συνδέσεις. Το
|
||||
option -D ορίζει πως το τοπικό μηχάνημα θα εξυπηρετεί συνδέσεις στην port 1080. Άρα, αν ρυθμίσουμε τον φυλλομετρητή μας να χρησιμοποιεί proxy ή τον αγαπημένο
|
||||
μας IRC client να χρησιμοποιεί την port 1080 σαν proxy θα παρατηρήσουμε πως όλες πλέον οι συνδέσεις μας περνούν μέσα από το secure shell που έχουμε.
|
||||
|
||||
### [3.2 Port Forwarding]{#ss3.2}
|
||||
|
||||
Ένα άλλο option που έχει το ssh είναι να κάνει port forwarding από και προς το απομακρυσμένο μηχάνημα. Εδώ υπάρχουν δύο περιπτώσεις.
|
||||
|
||||
#### Να κάνει κάποιος forward μία port από το τοπικό μηχάνημα μέσω του ssh.
|
||||
|
||||
Για να γίνει αυτό το μόνο που πρέπει να κάνουμε είναι :
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
ssh -L 1080:uk.irc.gr:6667 my.linux.server.gr
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
όπου στην προκειμένη περίπτωση, ανοίγει μια port στο τοπικό μηχάνημα και στο παράδειγμά μας η port 1080 και ότι σύνδεση γίνει εκεί μεταφέρεται αμέσως μέσω του
|
||||
ssh και κάνει σύνδεση στο server uk.irc.gr στην port 6667. Με το συγκεκριμένο παράδειγμα μπορούμε να ανοίξουμε τον αγαπημένο μας IRC Client και να δώσουμε σαν
|
||||
server το local μηχάνημα και port την 1080
|
||||
|
||||
/server 127.0.0.1 1080
|
||||
|
||||
και να συνδεθούμε στο GRNet και συγκεκριμένα στον server uk.irc.gr. Ομοίως, μπορούμε να κάνουμε το ίδιο και για ένα web site ή ένα ftp server. Προσωπικά βρήκα
|
||||
πολύ χρήσιμο το option αυτό όταν ο διαχειριστής του proxy της εταιρίας σου επιτρέπει να κάνεις ssh άλλα δεν επιτρέπει τις port για να κάνει κανείς IRC.
|
||||
|
||||
#### Να κάνει κάποιος forward μία port από το απομακρυσμένο μηχάνημα στο τοπικό μηχάνημα ή σε κάποιο άλλο στο τοπικό δίκτυο.
|
||||
|
||||
Αυτό θα ήτανε ιδιαίτερα χρήσιμο αν θέλουμε να συνδεθεί κάποιος προσωρινά στο μηχάνημα μας ή σε κάποιο μηχάνημα στο τοπικό μας δίκτυο. Με την εντολή:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
ssh -R 5100:192.168.0.3:80 my.linux.server.gr
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
ανοίγουμε την port 5100 στο μηχάνημα my.linux.server.gr και του ορίζουμε πως θα ανακατευθύνει ότι συνδέσεις γίνονται εκεί μέσω του ssh στο μηχάνημα 192.168.0.3
|
||||
και στην port 80 (που είναι οι web υπηρεσίες συνήθως). Έν ολίγοις αν στο μηχάνημα μας 192.168.0.3 έχουμε κάποιο web server όποιος χρήστης πάει να δει το site
|
||||
http://my.linux.server.gr:5100/ στην πραγματικότητα θα δει τον web server μας.
|
||||
|
||||
Σημείωση: Για να ανοίξουμε ports μικρότερα από την port 1024 θα πρέπει να έχουμε root access στα αντίστοιχα μηχανήματα, δηλαδή στο 3.2.2 πρέπει να έχουμε root
|
||||
access στο απομακρυσμένο μηχάνημα και στην ενότητα 3.2.1 θα πρέπει να έχουμε root access στο μηχάνημα το οποίο βρισκόμαστε.
|
||||
|
||||
### [3.3 Και αν δεν μπορούμε να κάνουμε ssh;]{#ss3.3}
|
||||
|
||||
Σε πολλές περιπτώσεις όμως, για πολλούς και διάφορους λόγους, κάποιος \"κακός\" διαχειριστής δεν μας αφήνει να έχουμε πρόσβαση με secure shell (ssh), και
|
||||
περνάει όλη την κίνηση του δικτύου προς το Internet από κάποιο proxy. Ευτυχώς όμως υπάρχουν εργαλεία που μας επιτρέπουν να μπορέσουμε να \"προσπεράσουμε\" τον
|
||||
proxy. Τέτοια εργαλεία είναι: το proxytunnel, το corkscrew, το desproxy, το Http Proxy και άλλα. Ύστερα από αρκετές δοκιμές εμένα μου άρεσε περισσότερο και μου
|
||||
δούλεψε αρκετά έως πολύ εύκολα το proxytunnel που δεν χρειάζεται καν root access, μπορείς να το έχεις στο home directory και υποστηρίζει και proxy
|
||||
authentication.
|
||||
|
||||
#### Εγκατάσταση - ρύθμιση
|
||||
|
||||
Μπορείτε να κατεβάσετε το πρόγραμμα από το http://proxytunnel.sf.net/ και να το εγκαταστήσετε πολύ εύκολα, είτε να κατεβάσετε binaries. Ίσως η ρύθμισή του να
|
||||
φανεί λιγάκι περίεργη αλλά είναι αρκετά εύκολη. Τα μόνα που έχετε να κάνετε είναι:
|
||||
|
||||
- Να δημιουργήσετε τον κατάλογο /.ssh στο home directory σας (mkdir /.ssh)
|
||||
|
||||
- Να δημιουργήσετε το αρχείο config (touch /.ssh/config)
|
||||
|
||||
- Να επεξεργασθείτε το αρχείο config με τον αγαπημένο σας επεξεργαστή κειμένου (πχ. vi, vim, mcedit, pico, joe ή όποιον προτιμάτε)
|
||||
|
||||
- και τέλος να προσθέσετε την γραμμή
|
||||
|
||||
Host foobar
|
||||
|
||||
ProtocolKeepAlives 30
|
||||
|
||||
ProxyCommand /path/to/proxytunnel -g proxy.customer.com
|
||||
-G 8080 -u user -s password -d my.linux.server.gr -D
|
||||
443
|
||||
|
||||
Όπου:
|
||||
|
||||
\* proxy.customer.com είναι ο proxy server (μπορεί να χρησιμοποιηθεί και η IP του server)
|
||||
|
||||
\* 8080 είναι η port του proxy
|
||||
|
||||
\* user είναι το username που χρησιμοποιείτε για τον proxy
|
||||
|
||||
\* password είναι το password για τον proxy
|
||||
|
||||
\* my.linux.server.gr είναι το μηχάνημα στο οποίο θέλετε να συνδεθείτε
|
||||
|
||||
\* και 443 είναι η port στο μηχάνημα αυτό (η port για το ssh συνήθως είναι η 22, αλλά μπορούμε να \"σηκώσουμε\" ssh server σε όποια port θέλουμε. Εδώ
|
||||
χρησιμοποιώ την 443 γιατί σε αυτήν την port επιτρέπει ο proxy secure connections, επειδή η 443 είναι η port για https)
|
||||
|
||||
Είναι πλέον έτοιμο το proxytunnel να το χρησιμοποιήσετε. Για να το χρησιμοποιήσουμε απλά γράφουμε:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
ssh foobar
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
και το πρόγραμμα κάνει τα υπόλοιπα. Αν όλα πάνε καλά και είναι σωστές οι ρυθμίσεις θα συνδεθεί στο my.linux.server.gr χωρίς κανένα πρόβλημα.
|
||||
|
||||
|
||||
### [4. Vtun - Virtual tunnel]{#s4}
|
||||
|
||||
Το vtun είναι ένα πάρα πολύ καλό εύχρηστο και μικρό εργαλείο για την δημιουργία IP tunnel πάνω από ένα ήδη υπάρχον δίκτυο. Υποστηρίζει συμπίεση, κρυπτογράφηση
|
||||
ακόμα και περιορισμό κίνησης (compression, encryption and traffic shaping).
|
||||
|
||||
### [4.1 Εγκατάσταση]{#ss4.1}
|
||||
|
||||
Μπορείτε να κατεβάσετε το vtun από το site http://vtun.sf.net/ . Υπάρχει και σαν binary πακέτα, όπως επίσης υπάρχουν και πακέτα για FreeBSD, OpenBSD και
|
||||
Solaris.
|
||||
|
||||
Το πρόγραμμα χρησιμοποιείται και σαν server αλλά και σαν client, ανάλογα την ρύθμιση.
|
||||
|
||||
### [4.2 Τι θα χρειαστούμε]{#ss4.2}
|
||||
|
||||
Τα λιγότερα πράγματα που θα χρειαστείτε για να γίνει compile είναι:
|
||||
|
||||
\* Good C compiler (gcc, egcs, etc)
|
||||
|
||||
\* Lexical Analyzer (flex, lex)
|
||||
|
||||
\* YACC (yacc, bison, byacc)
|
||||
|
||||
\* Universal TUN/TAP driver http://vtun.sourceforge.net/tun
|
||||
|
||||
\* OpenSSL encryption library http://www.openssl.org
|
||||
|
||||
και optional τα:
|
||||
|
||||
\* Zlib compression library
|
||||
|
||||
\* LZO compression library http://www.oberhumer.com/opensource/lzo
|
||||
|
||||
Κατά ένα μεγάλο ποσοστό αυτό που θα χρειαστείτε και δεν θα υπάρχει ήδη στην διανομή σας είναι το TUN/TAP Driver, που θα πρέπει να κατεβάσετε και να
|
||||
εγκαταστήσετε.
|
||||
|
||||
### [4.3 Εγκατάσταση]{#ss4.3}
|
||||
|
||||
Εφ\' όσον έχουμε όλα τα παραπάνω απλά κάνουμε unzip/untar το αρχείο
|
||||
|
||||
tar xzvf vtun-2.6.tar.gz
|
||||
|
||||
cd vtun
|
||||
|
||||
./configure
|
||||
|
||||
make
|
||||
|
||||
και τέλος σαν root για να το εγκαταστήσετε
|
||||
|
||||
make install
|
||||
|
||||
Την ίδια ακριβώς διαδικασία πρέπει να γίνει και στο μηχάνημα με το οποίο θέλουμε να κάνουμε το IP/Ethernet Tunnel.
|
||||
|
||||
### [4.4 Ρύθμιση του server]{#ss4.4}
|
||||
|
||||
Όταν εγκαταστήσουμε πλήρως και στα δύο μηχανήματα το vtun θα παρατηρήσουμε πως στον κατάλογο /etc υπάρχει το αρχείο vtund.conf, που έχει ήδη κάποια παραδείγματα
|
||||
από ρυθμίσεις. Εμείς θα το ρυθμίσουμε από την αρχή. Πρώτα πρέπει να ορίσουμε τα γενικά options:
|
||||
|
||||
options {
|
||||
|
||||
port 5000; # Listen on this port.
|
||||
|
||||
# Syslog facility
|
||||
|
||||
syslog daemon;
|
||||
|
||||
# Path to various programs
|
||||
|
||||
ppp /usr/sbin/pppd;
|
||||
|
||||
ifconfig /sbin/ifconfig;
|
||||
|
||||
route /sbin/route;
|
||||
|
||||
firewall /sbin/ipchains;
|
||||
|
||||
ip /sbin/ip;
|
||||
|
||||
}
|
||||
|
||||
# Default session options
|
||||
|
||||
default {
|
||||
|
||||
compress no; # Compression is off by default
|
||||
|
||||
speed 0; # By default maximum speed, NO shaping
|
||||
|
||||
}
|
||||
|
||||
Όπου στην αρχή δηλώνουμε ότι ο vtun server \"ακούει\" στην port 5000 μετά ότι θα χρησιμοποιήσει τον syslog για τα logs και μετά οι τοποθεσίες που βρίσκεται κάθε
|
||||
πρόγραμμα, όπως ο pppd δαίμονας και άλλα προγράμματα που ίσως θα χρειαστούμε και τέλος ορίζουμε τα default options των συνδέσεών μας, για το αν θα έχει ή όχι
|
||||
κρυπτογράφηση ή αν θα έχει όριο στο bandwidth.
|
||||
|
||||
Η βασική ρύθμιση για ένα Ethernet Tunnel είναι:
|
||||
|
||||
Πρέπει να ορίσουμε ένα όνομα για να αναφερόμαστε στη συγκεκριμένη ρύθμιση μιας και μπορούμε να έχουμε παραπάνω από μία.
|
||||
|
||||
alekos {
|
||||
|
||||
Μέτα ορίζουμε το password στον server μας
|
||||
|
||||
passwd magaz; # Password
|
||||
|
||||
Μετά τι τύπος tunnel θα είναι. Εδώ μπορούμε να ορίσουμε είτε ether, είτε tun, είτε tty ή pipe
|
||||
|
||||
type ether; # Ethernet tunnel
|
||||
|
||||
Ποια συσκευή θα χρησιμοποιήσει (αν δεν κάνετε και 2ο tunnel αφήστε το option ως έχει).
|
||||
|
||||
device tap0; # Device tap0
|
||||
|
||||
Ποιο πρωτόκολλο θα χρησιμοποιήσει. Αυτό παίζει ρόλο αν είσαστε πίσω από proxy ή όχι. Προτιμήστε το udp αν δεν είσαστε πίσω από proxy, αλλιώς θα πρέπει να
|
||||
χρησιμοποιήσετε το tcp.
|
||||
|
||||
proto tcp; # UDP protocol
|
||||
|
||||
Αν θέλουμε συμπίεση και σε τι επίπεδο (παίρνει περισσότερη επεξεργαστική ισχύ, αλλά μπορεί να δώσει περισσότερο bandwidth)
|
||||
|
||||
# compress lzo:5; # LZO compression level 1
|
||||
|
||||
Αν θέλουμε να είναι το tunnel μας κρυπτογραφημένο (καταναλώνει αρκετό bandwidth). Καλό είναι να το έχουμε ενεργοποιημένο, εκτός αν το περνάμε μέσω ssh tunnel,
|
||||
όπου είναι περιττό.
|
||||
|
||||
encrypt no; # Encryption
|
||||
|
||||
Αν θέλουμε να κρατάει log files στο syslog.
|
||||
|
||||
stat yes; # Log connection statistic
|
||||
|
||||
Αν θέλουμε να προσπαθεί να κρατάει την σύνδεση ενεργή αν δεν την χρησιμοποιήσουμε για κάποια ώρα. Χρήσιμο αν κάνουμε tunnels μέσω dial-up συνδέσεων ή
|
||||
dial-on-demand συνδέσεων.
|
||||
|
||||
keepalive yes; # Keep connection alive
|
||||
|
||||
Εδώ ορίζουμε τι θέλουμε να κάνει όταν ανοίξει η σύνδεση μεταξύ server και client.
|
||||
|
||||
up { # Connection is Up
|
||||
|
||||
Να δώσει μία IP στο μηχάνημα (ορίζω την 192.168.0.1 μιας και είναι ο server)
|
||||
|
||||
# Assign IP address
|
||||
ifconfig "%% 192.168.0.1 netmask 255.255.255.0";
|
||||
|
||||
Δίνουμε και μία δρομολόγηση (routing) για να ξέρει που πάνε τα IP πακέτα
|
||||
|
||||
# Add route to net
|
||||
route "add -net 192.168.0.0 netmask 255.255.255.0 gw
|
||||
192.168.0.1";
|
||||
|
||||
Ενεργοποιούμε το firewall μας για masquerading (αν για παράδειγμα συνδεόμαστε στον server για να έχουμε internet access)
|
||||
|
||||
# Enable masquerading for net 10.2.0.0.0/24
|
||||
# firewall "-A forward -s 192.168.0.0/24 -d 0.0.0.0/0
|
||||
-j MASQ";
|
||||
|
||||
};
|
||||
|
||||
και τέλος τι κάνουμε όταν κλείνει η σύνδεση
|
||||
|
||||
down { # Connection is Down
|
||||
|
||||
Κλείνουμε την συσκευή
|
||||
|
||||
# Shutdown tap device.
|
||||
ifconfig "%% down";
|
||||
|
||||
και απενεργοποιούμε το firewall μας
|
||||
|
||||
# Disable masquerading for net 10.2.0.0.0/24
|
||||
# firewall "-D forward -s 192.168.0.0/24 -d 0.0.0.0/0
|
||||
-j MASQ";
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
### [4.5 Ρύθμιση του client]{#ss4.5}
|
||||
|
||||
Πάμε στο μηχάνημα που θα είναι ο client στο tunnel μας. Πάλι στον κατάλογο /etc θα βρούμε το αρχείο vtund.conf . Οι ρυθμίσεις που θα μπουν εδώ θα πρέπει να
|
||||
είναι αντίστοιχες με τον server αλλά όχι ίδιες. Οπότε:
|
||||
|
||||
options {
|
||||
|
||||
port 5000; # Connect to this port.
|
||||
|
||||
timeout 60; # General timeout
|
||||
|
||||
# Path to various programs
|
||||
|
||||
ppp /usr/sbin/pppd;
|
||||
|
||||
ifconfig /sbin/ifconfig;
|
||||
|
||||
route /sbin/route;
|
||||
|
||||
firewall /sbin/ipchains;
|
||||
|
||||
ip /sbin/ip;
|
||||
|
||||
}
|
||||
|
||||
Όπως και πριν, το πρώτο option αναφέρεται στο port που θα συνδεθεί στον server, το timeout για να κλείσει την σύνδεση και τέλος τα διάφορα προγράμματα.
|
||||
|
||||
Και οι ρυθμίσεις που θα πρέπει να κάνουμε για την αντίστοιχη σύνδεση στον server. Οι ρυθμίσεις είναι στο ίδιο μοτίβο:
|
||||
|
||||
Το όνομα της ρύθμισης για να αναφερόμαστε σ\' αυτήν
|
||||
|
||||
alekos {
|
||||
|
||||
Το password που έχουμε ορίσει στον server
|
||||
|
||||
passwd magaz; # Password
|
||||
|
||||
Τι τύπος tunnel θα είναι πρέπει να είναι ίδιο με τον server
|
||||
|
||||
type ether; # Ethernet tunnel
|
||||
|
||||
Ποια συσκευή να χρησιμοποιήσει, αφήστε το default εκτός και αν θέλετε να κάνετε πάνω από ένα tunnel
|
||||
|
||||
device tap0; # Device tap0
|
||||
|
||||
Τι θα κάνει όταν γίνει η σύνδεση
|
||||
|
||||
up { # Connection is Up
|
||||
|
||||
Πρέπει να ορίσουμε μία IP αλλά φυσικά όχι ίδια με τον server εδώ ορίζουμε την IP 192.168.0.2
|
||||
|
||||
# Assign IP address and netmask.
|
||||
ifconfig "%% 192.168.0.2 netmask 255.255.255.0";
|
||||
|
||||
Ορίζουμε και την δρομολόγηση (routing) για τα IP πακέτα
|
||||
|
||||
route "add default gw 192.168.0.1";
|
||||
|
||||
};
|
||||
|
||||
Τι να κάνουμε όταν κλείσει η σύνδεση
|
||||
|
||||
down { # Connection is Down
|
||||
|
||||
Να κλείσει την συσκευή.
|
||||
|
||||
# Shutdown tap device
|
||||
ifconfig "%% down";
|
||||
};
|
||||
}
|
||||
|
||||
Και στον client θα μπορούσαμε να ανοίγουμε και να κλείνουμε κάποιο firewall αν θέλαμε να περάσουμε μέσω του tunnel κίνηση (traffic) μεταξύ δύο τοπικών δικτύων.
|
||||
Περισσότερα παραδείγματα θα βρείτε και στο site του vtun αλλά και στα configuration files (στο /etc/vtund.conf) που καλύπτουν σχεδόν κάθε περίπτωση IP/Ethernet
|
||||
tunnel.
|
||||
|
||||
### [4.6 Και τώρα;]{#ss4.6}
|
||||
|
||||
Αφού ρυθμίσαμε και τον vtun server μας αλλά και τον client, ήρθε η ώρα να ενεργοποιήσουμε το tunnel που ρυθμίσαμε.
|
||||
|
||||
Από τον server σαν root λοιπόν, δίνουμε την εντολή:
|
||||
|
||||
vtund -s alekos
|
||||
|
||||
Όπου -s είναι το option για τρέξει τον server και να περιμένει για συνδέσεις, και alekos είναι το όνομα της ρύθμισης που κάναμε στο server. Τώρα ο server μας
|
||||
λειτουργεί και περιμένει να συνδεθούμε.
|
||||
|
||||
Οπότε, πάμε στο client και πάλι σαν root δίνουμε την εντολή:
|
||||
|
||||
vtund alekos my.linux.server.gr
|
||||
|
||||
Αν όλα έχουν πάει καλά και οι ρυθμίσεις μας είναι σωστές μπορούμε να δούμε αν έχει πραγματοποιηθεί το IP tunnel μας με την εντολή:
|
||||
|
||||
/sbin/ifconfig
|
||||
|
||||
Όπου θα δούμε κάτι σαν:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
tap0 Link encap:Ethernet HWaddr 00:FF:AE:E8:EC:85
|
||||
|
||||
inet addr:192.168.0.2 Bcast:192.168.0.255
|
||||
Mask:255.255.255.0
|
||||
|
||||
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
|
||||
|
||||
RX packets:432204 errors:0 dropped:0 overruns:0 frame:0
|
||||
|
||||
TX packets:151242 errors:0 dropped:0 overruns:0
|
||||
carrier:0 collisions:0 txqueuelen:100
|
||||
|
||||
RX bytes:612105831 (583.7 Mb) TX bytes:9998554 (9.5 Mb)
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Επιτυχώς λοιπόν έχουμε φτιάξει το πρώτο μας IP Tunnel!
|
||||
|
||||
### [4.7 Και αν είμαστε πίσω από proxy;]{#ss4.7}
|
||||
|
||||
Φυσικά υπάρχει η περίπτωση να είμαστε πίσω από κάποιον proxy που δεν μας επιτρέπει να κάνουμε IP Tunnels. Η γνώση και οι δοκιμές που περιέχονται σε αυτό το
|
||||
άρθρο αποκτήθηκαν στην προσπάθεια να \"προσπεράσουμε\" κάποιον proxy server που δεν μας επέτρεπε να κάνουμε σχεδόν τίποτα. Η λύση λοιπόν είναι η εξής:
|
||||
|
||||
Κάνουμε όλα τα configurations και όλες τις ρυθμίσεις μας για το tunnel με το vtun. Επίσης ρυθμίζουμε το proxytunnel όπως περιγράφετε στο πρώτο μέρος και πρώτα
|
||||
κάνουμε ένα ssh tunnel κάνοντας forward το port 5000 από το τοπικό μας μηχάνημα στο server. Παράδειγμα:
|
||||
|
||||
Έστω πως το proxytunnel δουλεύει κανονικά για να κάνουμε και IP Tunnel δίνουμε:
|
||||
|
||||
ssh -L 5000:127.0.0.1:5000 foobar
|
||||
<verb>
|
||||
Οπότε και ανοίγουμε μία σύνδεση με το μηχάνημα που
|
||||
θέλουμε να κάνουμε IP Tunnel οπότε δίνουμε την εντολή:
|
||||
<verb>
|
||||
vtund alekos 127.0.0.1
|
||||
|
||||
και το tunnel σας λειτουργεί.
|
||||
|
||||
|
||||
### [5. FreeS/WAN]{#s5}
|
||||
|
||||
Το FreeS/WAN είναι ένα πρόγραμμα που υλοποιεί το IPSec πρωτόκολλο. Το IPSec δεν είναι τίποτα άλλο παρά Security for the Internet Protocol, δηλαδή είναι η
|
||||
επέκταση ασφαλείας του απλού IP πρωτοκόλλου. Εν ολίγοις είναι ένα τυποποιημένο πρωτόκολλο που θα είναι μέρος της έκδοσης του Internet Protocol v6 (IPv6). Αυτό
|
||||
σημαίνει πως το IPSec είναι συμβατό και με άλλες εμπορικές εφαρμογές, όπως τα VPN clients της Cisco και τα hardware firewalls (PIX) της Cisco. Με το IPSec
|
||||
μπορούμε να δημιουργήσουμε VPN (Virtual Private Network), που είναι ακριβώς ίδιο με στην γενική ιδέα με το vtun αλλά τα tunnels που δημιουργούνται είναι
|
||||
κρυπρογραφημένα και εξακριβωμένα (encrypted and authenticated). Που σημαίνει πως κάθε πακέτο που ανταλλάσσεται μεταξύ των δύο μηχανημάτων, ελέγχεται πρώτα για
|
||||
να διαπιστωθεί αν είναι εξακριβωμένος (authenticated) ο αποστολέας και το πακέτο μετά μεταδίδεται μέσω του κρυπτογραφημένου tunnel ώστε να μην υποκλαπεί. Ένα
|
||||
μεγάλο μειονέκτημα που έχει το FreeS/WAN όμως είναι ότι είναι αρκετά περίπλοκο στην εγκατάστασή του, μίας και απαιτεί μερικές αλλαγές στην ρύθμιση του πυρήνα.
|
||||
Το δύσκολο κομμάτι δεν είναι στο να τα εγκαταστήσει τα επιπλέον κομμάτια, αλλά να γίνουν compile σωστά. Το άρθρο αυτό δεν θα αναφερθεί παραπάνω στο FreeS/WAN
|
||||
ακόμα. Όποιο θα θέλανε να το δοκιμάσουν μπορούνε να βρούνε αρκετά πακέτα σε binary μορφή και οδηγίες από το site του FreeS/WAN, http://www.freeswan.org . Τέλος
|
||||
να αναφέρω πως υπάρχουν μερικές διανομές που περιλαμβάνουν το FreeS/WAN στα CD τους. Τέτοιες διανομές όπως:
|
||||
|
||||
\* SuSE Linux
|
||||
|
||||
\* Conectiva
|
||||
|
||||
\* Mandrake
|
||||
|
||||
\* Version 3.0 of Debian will include FreeS/WAN. \"unstable\" and \"test\" versions already have it
|
||||
|
||||
\* the Polish(ed) Linux Distribution
|
||||
|
||||
\* Best Linux
|
||||
|
||||
|
||||
### [6. Επίλογος]{#s6}
|
||||
|
||||
Η δημιουργία και η υλοποίηση ενός IP Tunnel δεν είναι κάτι δύσκολο, ούτε κάτι το οποίο απαιτεί \"ειδικές\" γνώσεις και είναι αρκετά χρήσιμο σε πολλές
|
||||
περιπτώσεις. Ανάλογα και την περίπτωση το κάθε πρόγραμμα έχει τα αρνητικά και τα θετικά του στοιχεία. Το καλό όμως, είναι πως υπάρχουν αρκετά Free/Open Source
|
320
content/articles/33/03_qos1.md
Κανονικό αρχείο
320
content/articles/33/03_qos1.md
Κανονικό αρχείο
|
@ -0,0 +1,320 @@
|
|||
+++
|
||||
title = 'Τιθασεύοντας την κίνηση του δικτύου σας, Μέρος 1ο'
|
||||
date = '2003-06-01T00:00:00Z'
|
||||
description = ''
|
||||
author = 'Στοΐλης Ιωάννης giannis@stoilis.gr'
|
||||
issue = ['Magaz 33']
|
||||
issue_weight = 3
|
||||
+++
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
*Δυστυχώς, το Ίντερνετ στην Ελλάδα είναι είδος πολυτελείας. Για εταιρείες που το χρειάζονται απαραίτητα, είναι ένας οικονομικός βραχνάς. Η σειρά των άρθρων που
|
||||
θα ακολουθήσει, αποσκοπεί στο να ρυθμίσετε, με την χρήση ενός Linux server, με τον καλύτερο δυνατό την χρήση της γραμμή σας.*
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**1. Πρόλογος**
|
||||
--------------------------------------
|
||||
|
||||
- [1.1 Το πρόβλημα](#ss1.1)
|
||||
- [1.2 Η λύση](#ss1.2)
|
||||
- [1.3 Τι θα ακολουθήσει;](#ss1.3)
|
||||
- [1.4 Τι ΔΕΝ θα ακολουθήσει;](#ss1.4)
|
||||
- [1.5 \"Δεν μου δουλεύει όσο καλά λες ότι λειτουργεί\"](#ss1.5)
|
||||
- [1.6 Επικοινωνία](#ss1.6)
|
||||
|
||||
**2. Το δίκτυο**
|
||||
---------------------------------------
|
||||
|
||||
- [2.1 Σχηματική παράσταση του δικτύου.](#ss2.1)
|
||||
- [2.2 Ανάλυση του δικτύου](#ss2.2)
|
||||
- [2.3 Κοινές παραλλαγές του δικτύου](#ss2.3)
|
||||
|
||||
**3. Proxy server**
|
||||
------------------------------------------
|
||||
|
||||
- [3.1 Τι είναι ο proxy server;](#ss3.1)
|
||||
- [3.2 Σε τι μηχάνημα;](#ss3.2)
|
||||
- [3.3 Τι είναι το latency;](#ss3.3)
|
||||
- [3.4 Ποιον proxy server;](#ss3.4)
|
||||
|
||||
**4. Διαδικασία**
|
||||
----------------------------------------
|
||||
|
||||
- [4.1 Download του squid](#ss4.1)
|
||||
- [4.2 Μεταγλώττιση](#ss4.2)
|
||||
- [4.3 Ρύθμιση του squid](#ss4.3)
|
||||
- [4.4 Η πρώτη δοκιμή](#ss4.4)
|
||||
|
||||
**5. ΠΡΑΓΜΑΤΙΚΗ ρύθμιση του squid**
|
||||
----------------------------------------------------------
|
||||
|
||||
**6. Επίλογος**
|
||||
--------------------------------------
|
||||
|
||||
- [6.1 Ανασκόπηση](#ss6.1)
|
||||
- [6.2 Τι θα ακολουθήσει;](#ss6.2)
|
||||
|
||||
|
||||
### [1. Πρόλογος]{#s1}
|
||||
|
||||
### [1.1 Το πρόβλημα]{#ss1.1}
|
||||
|
||||
Η ιστορία αυτής της σειράς άρθρων, ξεκινά από τα παράπονα μιας εταιρείας πριν από περίπου δύο χρόνια. Παραπονιόντουσαν για αργή ταχύτητα σύνδεσης με το
|
||||
Ίντερνετ, παρόλο που είχαν μισθωμένη γραμμή 256kbit. Όταν πήγα να ερευνήσω το θέμα, με έκπληξη βρήκα ένα δίκτυο με περίπου 100 υπολογιστές να βγαίνουν απευθείας
|
||||
στο Ίντερνετ με NAT, χωρίς proxy. Η λύση ήταν προφανής.
|
||||
|
||||
### [1.2 Η λύση]{#ss1.2}
|
||||
|
||||
Μέσα σε λίγες μέρες, έστησα έναν Linux proxy server και η κατάσταση βελτιώθηκε αισθητά. Με τον καιρό, αυξήθηκαν οι απαιτήσεις και δεν είχα παρά να αξιοποιήσω
|
||||
τον Linux server στο μέγιστο. Χρησιμοποίησα squid access pools, active directory authentication integration, QoS με tc και παραγωγή στατιστικών για σχεδόν
|
||||
οτιδήποτε είναι δυνατόν να μετρηθεί. Μετά από ένα χρόνο, το όλο εγχείρημα έχει φτάσει σε ένα ώριμο στάδιο, οπότε θεώρησα χρήσιμο να καταγράψω όλες τις κινήσεις
|
||||
μου, μέσω του [magaz](http://magaz.hellug.gr), ώστε να βοηθήσω όσους περισσότερο μπορώ.
|
||||
|
||||
### [1.3 Τι θα ακολουθήσει;]{#ss1.3}
|
||||
|
||||
Βασικά, αυτό που θα ακολουθήσει είναι \"Τι μπορούμε να κάνουμε με ένα proxy server\". Δεν είναι πρωτότυπο σαν άρθρο, υπάρχουν παρόμοιοι οδηγοί παντού στο
|
||||
Ίντερνετ, στα αγγλικά. Ελπίζω όμως να παρέχω στον Έλληνα αναγνώστη την δυνατότητα να τα βρει όλα μαζεμένα σε μια γωνιά του Ίντερνετ, αλλά επίσης φιλοδοξώ και να
|
||||
εξηγήσω τον τρόπο σκέψης που θα πρέπει να έχει ένας διαχειριστή που ξέρει μεν τι να κάνει, αλλά δεν ξέρει το πως.
|
||||
|
||||
### [1.4 Τι ΔΕΝ θα ακολουθήσει;]{#ss1.4}
|
||||
|
||||
Αυτή η σειρά των άρθρων δεν πρόκειται σε καμία περίπτωση να καλύψει τον κάθε τρόπο που μπορεί να γίνει μια οποιαδήποτε εργασία. Υπάρχουν πραγματικά αμέτρητοι
|
||||
τρόποι και αμέτρητοι συνδυασμοί προγραμμάτων, ρυθμίσεων και τοπολογίας δικτύου, για να επιτύχετε αυτό που θέλετε. Εγώ θα παραθέσω αυτά που έκανα, και τα
|
||||
αποτελέσματά τους. Είναι σίγουρο ότι μπορούν να γίνουν με διαφορετικό τρόπο, ευκολότερα ή δυσκολότερα.\
|
||||
Επίσης, το άρθρο αυτό παίρνει ως δεδομένο ότι έχετε καλή γνώση του δικτύου σας, όπως επίσης και καλή γνώση διαχείρισης του Linux.
|
||||
|
||||
### [1.5 \"Δεν μου δουλεύει όσο καλά λες ότι λειτουργεί\"]{#ss1.5}
|
||||
|
||||
Δυστυχώς, αυτό είναι το μόνο σίγουρο. Το όλο εγχείρημα είναι αρκετά περίπλοκο και χρειάζεται αρκετό παιχνίδι και χρόνο εκ μέρους σας, για να φτάσει στο καλύτερο
|
||||
δυνατό αποτέλεσμα. Ο λόγος που θα εξηγήσω τόσο λεπτομερώς τι έκανα και γιατί, είναι και για να σας δείξει πως μπορείτε να πειραματιστείτε μόνοι σας.
|
||||
|
||||
<giannis@stoilis.gr>.
|
||||
|
||||
|
||||
### [2. Το δίκτυο]{#s2}
|
||||
|
||||
### [2.1 Σχηματική παράσταση του δικτύου.]{#ss2.1}
|
||||
|
||||

|
||||
|
||||
Το παραπάνω σχεδιάγραμμα αντιπροσωπεύει ένα τυπικό δίκτυο, πάνω στο οποίο θα εφαρμόσω όλες τις τεχνικές.
|
||||
|
||||
### [2.2 Ανάλυση του δικτύου]{#ss2.2}
|
||||
|
||||
PC1, PC2, PC3 και PC4: Αυτοί είναι κάποιοι σταθμοί εργασίας του δικτύου μας. Οι μετρήσεις μας θα γίνουν από αυτούς. Στο δικό μου δίκτυο είναι περίπου 120 οι
|
||||
υπολογιστές.\
|
||||
WEB SERVER: Είναι ένας server με πραγματική διεύθυνση στο Internet, που σερβίρει τις σελίδες της εταιρείας.\
|
||||
MAIL SERVER: Είναι άλλος ένας server με πραγματική διεύθυνση στο Internet, που ασχολείται με όλα τα εισερχόμενα και εξερχόμενα e-mails της εταιρείας.\
|
||||
ΕΞΩΤΕΡΙΚΟΣ ROUTER: Μια δικτυακή συσκευή που συνδέει το εσωτερικό μας δίκτυο με το Internet μέσω μιας μισθωμένης γραμμής. Κάνει NAT και εκτελεί και χρέη
|
||||
firewall. Στο δίκτυο μου είναι ένας Cisco router.\
|
||||
INTERNET: Στο δικό μου δίκτυο, η γραμμή σύνδεσης με το Internet είναι 256kbit. Βασικά, δεν έχει καμία σημασία αν έχετε μικρότερη ή μεγαλύτερη ταχύτητα από
|
||||
αυτήν. Η ανάγκη των τεχνικών που αναφέρω εφαρμόζονται καλύτερα ανάλογα με το πόσοι υπολογιστές θα μοιραστούν την ταχύτητα. Όσοι περισσότεροι υπολογιστές, τόσο
|
||||
μεγαλύτερη η ανάγκη για εξοικονόμηση bandwidth, είτε πρόκειται για σύνδεση 33.6kbit, είτε για 1mbit.\
|
||||
PROXY SERVER: Ο proxy server του δικτύου μας, με τον οποίο θα ασχοληθούμε. Προσέξτε ότι έχει δύο κάρτες δικτύου, μία για κάθε δίκτυο που συνδέεται.
|
||||
|
||||
### [2.3 Κοινές παραλλαγές του δικτύου]{#ss2.3}
|
||||
|
||||
Η πιο κοινή διαφορά του δικτύου αυτού με άλλα μικρότερα, είναι ο router. Πολλά δίκτυα έχουν ήδη έναν Linux server που κάνει το dialup στο Internet με ISDN. Δεν
|
||||
έχει καμία απολύτως σημασία σε αυτά τα άρθρα, έχει όμως σημασία το θέμα της ασφάλειας, επειδή ο Linux server είναι αυτός που θα κάνει το NAT και το firewall. Η
|
||||
εγκατάσταση αυτών δεν αφορά αυτό το άρθρο, θεωρώ ότι υπάρχουν ήδη.
|
||||
|
||||
|
||||
### [3. Proxy server]{#s3}
|
||||
|
||||
### [3.1 Τι είναι ο proxy server;]{#ss3.1}
|
||||
|
||||
Proxy server ονομάζουμε οποιοδήποτε πρόγραμμα ή υπολογιστή λειτουργεί ως ενδιάμεσος για οποιαδήποτε σύνδεση δικτύου θέλουμε να κάνουμε. Ας πούμε για παράδειγμα
|
||||
ότι και οι τέσσερις υπολογιστές θέλουν να συνδεθούν στην σελίδα <http://www.hellug.gr/>. Χωρίς proxy, η σελίδα αυτή θα ζητηθεί από το Ίντερνετ 4 φορές. Αν
|
||||
χρησιμοποιούμε proxy, η σελίδα θα ζητηθεί μια φορά, και ο proxy θα αναλάβει να κρατήσει ένα αντίγραφο στην μνήμη ή τον δίσκο του. Μετέπειτα, όποιος ζητάει την
|
||||
συγκεκριμένη σελίδα, o proxy δεν χρειάζεται να την ξαναζητήσει από το internet, εξοικονομώντας έτσι bandwidth για άλλες δουλειές.
|
||||
|
||||
### [3.2 Σε τι μηχάνημα;]{#ss3.2}
|
||||
|
||||
Όσοι έχουν ασχοληθεί με διαχείριση Linux και Windows 2000, γνωρίζουν από πρώτο χέρι, ότι το Linux είναι πιο ελαφρύ λειτουργικό σύστημα από τα Windows. Για αυτό,
|
||||
υπάρχει μια τάση να εγκαθιστούμε το Linux σε απαρχαιωμένο hardware, για λόγους οικονομίας. Η αλήθεια είναι ότι δουλεύει, και δουλεύει καλά. Υπάρχει όμως ένα
|
||||
μειονέκτημα που πρέπει να λάβετε υπόψιν. Το latency.
|
||||
|
||||
### [3.3 Τι είναι το latency;]{#ss3.3}
|
||||
|
||||
Αφότου χρησιμοποιήσετε ένα proxy server σε ένα δίκτυο μαζί με τεχνικές QoS που θα αναλύσω σε επόμενα άρθρα, να γνωρίζετε ότι αυτομάτως θα χαθεί η \"σπιρτάδα\"
|
||||
του Internet. Οι συνδέσεις σε άλλους server αντί να γίνονται αστραπιαία, μπορεί να γίνονται πλέον σε ένα δευτερόλεπτο. Οι σελίδες του Internet θα αρχίσουν να
|
||||
κατεβαίνουν με μεγαλύτερη αρχική καθυστέρηση αρκετών millisecond, αλλά σε τελική ταχύτητα θα είναι σίγουρα πιο γρήγορες από το να μην χρησιμοποιείτε καθόλου
|
||||
proxy server.
|
||||
|
||||
Στην περίπτωση του QoS, αν δεν είναι καλο-ρυθμισμένο, αυτό το φαινόμενο μπορεί να ενταθεί σε μεγάλο βαθμό, διότι, ανάλογα με τους κανόνες που θα εφαρμόσουμε,
|
||||
δίνουμε στον proxy server το δικαίωμα να σταματά κάθε πακέτο που περνά από μέσα του, να το κοιτάει, να συμβουλεύεται του κανόνες που θα του έχετε βάλει, να
|
||||
κατηγοριοποιεί το πακέτο ανάλογα με την σπουδαιότητά του, και μετά να επεξεργάζεται όλα τα πακέτα που έχει στην ουρά, αρχίζοντας από τα σημαντικότερα.
|
||||
|
||||
Στην περίπτωση του squid, όταν ζητάμε μια σελίδα, πρώτα ελέγχει την βάση του στην μνήμη αν έχει αυτή την σελίδα. Αν την έχει, θα πρέπει να ψάξει τον δίσκο του,
|
||||
ανάμεσα σε χιλιάδες άλλες. Μετά, θα πρέπει να διαπιστώσει αν το αντίγραφο που έχει είναι ξεπερασμένο. Σε αυτή την περίπτωση, θα πρέπει να κάνει νέο αντίγραφο.
|
||||
Αν διαπιστώσει ότι δεν έχει χώρο, πρέπει βρει ποια είναι η σελίδα που έχει πιο πολύ καιρό να ζητηθεί, να την σβήσει και μετά να αφήσει εκεί ένα νέο αντίγραφο
|
||||
της σελίδας που θέλει, στέλνοντας (ΕΠΙΤΕΛΟΥΣ!!!) την σελίδα σε αυτόν που την ζήτησε.
|
||||
|
||||
Η όλη διαδικασία, μπορεί να διαρκέσει μερικές φορές ακόμα και μερικά δευτερόλεπτα, στην χειρότερη περίπτωση. Αυτό το φαινόμενο όμως, είναι δυνατό να
|
||||
ελαχιστοποιηθεί με ένα καλό και γρήγορο μηχάνημα, με γρήγορους δίσκους, και αρκετή μνήμη. Η χρήση RAID0 είναι συνηθισμένη, σε περιπτώσεις που θέλουμε να έχουμε
|
||||
το καλύτερο δυνατό αποτέλεσμα. Επίσης, είναι καλό να μην τρέχει τίποτα άλλο, ώστε να μην τον απασχολούμε με περιττές εργασίες.
|
||||
|
||||
Τέλος, προτείνω το μηχάνημα να είναι εξοπλισμένο με δύο καλές και επώνυμες κάρτες δικτύου. Η διαφορά τιμής μιας καλής κάρτας δικτύου από μια παλιά ή και ανώνυμη
|
||||
είναι γελοία.
|
||||
|
||||
### [3.4 Ποιον proxy server;]{#ss3.4}
|
||||
|
||||
Υπάρχει πραγματικά μεγάλη πληθώρα proxy server στο Ίντερνετ, με τον καθένα από αυτούς να υποστηρίζει περισσότερα ή λιγότερα πρωτόκολλα και δυνατότητες. Μετά από
|
||||
έρευνα, κατέληξα στον [squid](http://www.squid-cache.org/). Είναι ο πιο διαδεδομένος, είναι GPLed, υπάρχει εδώ και πολλά χρόνια, είναι σταθερός, υποστηρίζεται
|
||||
από πληθώρα εφαρμογών και υποστηρίζει τις περισσότερες λειτουργίες από αυτές που μας ενδιαφέρουν.
|
||||
|
||||
|
||||
### [4. Διαδικασία]{#s4}
|
||||
|
||||
### [4.1 Download του squid]{#ss4.1}
|
||||
|
||||
Μπορείτε να κατεβάσετε τον squid από εδώ <http://www.squid-cache.org/Versions/> την τελευταία stable έκδοση.
|
||||
|
||||
**Σημείωση: ΠΡΕΠΕΙ να το κατεβάσετε και να το κάνετε compile, διότι μια δυνατότητα που θα χρησιμοποιήσουμε (delay pools) είναι απενεργοποιημένη από default στα
|
||||
διάφορα pre-compiled binaries που περιλαμβάνονται ήδη στις διάφορες διανομές.**
|
||||
|
||||
### [4.2 Μεταγλώττιση]{#ss4.2}
|
||||
|
||||
Αφού το κατεβάσετε και το αποσυμπιέσετε σε ένα προσωρινό φάκελο, κάντε compile με τις εξής εντολές:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
./configure --enable-delay-pools
|
||||
make
|
||||
make install
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
### [4.3 Ρύθμιση του squid]{#ss4.3}
|
||||
|
||||
Ας σιγουρευτούμε καταρχήν ότι δουλεύει. Ξεκινήστε τον, με την εντολή:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
/usr/local/squid/bin/squid -z
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Η παραπάνω εντολή δημιουργεί την cache του. Χρειάζεται να χρησιμοποιηθεί μόνο την πρώτη φορά που θα τρέξετε το squid ή αν για οποιοδήποτε λόγο θέλετε να
|
||||
μηδενίσετε την υπάρχουσα cache.
|
||||
|
||||
Τώρα μπορούμε να τον τρέξουμε κανονικά με την εντολή:
|
||||
|
||||
/usr/local/squid/bin/squid
|
||||
|
||||
### [4.4 Η πρώτη δοκιμή]{#ss4.4}
|
||||
|
||||
Ρυθμίστε τον browser από κάποιον υπολογιστή μέσα στο δίκτυο να χρησιμοποιεί ως proxy την IP διεύθυνση του proxy, με την πόρτα 3128. Δοκιμάστε να επισκεφτείτε
|
||||
οποιαδήποτε σελίδα. Αν δείτε το μήνυμα \"Access Denied\", τότε είστε σε καλό δρόμο. Το μήνυμα αυτό σημαίνει ότι ο squid δεν είναι ρυθμισμένος να απαντάει σε
|
||||
ερωτήματα από IP που δεν γνωρίζει. Για λόγους ασφαλείας, αυτό είναι καλό. Ας το ρυθμίσουμε και αυτό. Βάλτε τις παρακάτω παραμέτρους στο αρχείο ρυθμίσεων του
|
||||
squid(/usr/local/squid/etc/squid.conf):
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
acl localnet src_ip 10.0.0.0/8
|
||||
http_access allow localnet
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**Σημαντικό: Ψάξτε το αρχείο και βάλτε την πρώτη ρύθμιση μαζί με τις ήδη υπάρχουσες. Δεν θα δημιουργηθεί πρόβλημα αν δεν το κάνετε, αλλά αν πάτε κάποτε να
|
||||
κάνετε αλλαγές, θα χάσετε τον μπούσουλα.\
|
||||
Την δεύτερη ρύθμιση ΠΡΕΠΕΙ να την βάλετε ΠΡΙΝ από την υπάρχουσα παράμετρο: \"http\_access deny all\". Αν δεν το κάνετε, δεν θα μετρήσει καθόλου.**
|
||||
|
||||
Κάντε reload το squid, με την εντολή:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
/usr/local/squid/bin/squid -k reconfigure
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Με αυτή την εντολή, λέμε στο squid να ξαναδιαβάσει το αρχείο ρυθμίσεών του.
|
||||
|
||||
Δοκιμάστε πάλι να δείτε κάποια από την σελίδα του browser σας. Αν όλα πάνε καλά, είστε έτοιμοι για παρακάτω.
|
||||
|
||||
|
||||
### [5. ΠΡΑΓΜΑΤΙΚΗ ρύθμιση του squid]{#s5}
|
||||
|
||||
Αν θέλουμε απλά να παίξει, είναι εύκολο. Αν θέλουμε όμως να παίξει καλά, θα πρέπει να ρυθμίσουμε πολλά πράγματα. Κάθε παράμετρος εξηγείται σαφέστατα μέσα στο
|
||||
αρχείο ρυθμίσεων. Δεν έχετε παρά να διαβάσετε τα σχόλια που προηγούνται κάθε παραμέτρου και να κάνετε δοκιμές. Επίσης, στην σελίδα του squid μπορείτε να βρείτε
|
||||
το πλήρες manual του. Δυστυχώς όμως, μερικά πράγματα είναι θέματα εμπειρίας. Παρακάτω θα κοιτάξουμε μερικές από τις πιο σημαντικές ρυθμίσεις που μπορούμε να
|
||||
κάνουμε.
|
||||
|
||||
**http\_port IP:PORT**\
|
||||
Όπου IP, βάζουμε την εσωτερική διεύθυνση του proxy server. Όπου PORT, βάζουμε την πόρτα όπου θα δέχεται αιτήσεις. Π.χ: **http\_port 10.0.0.1:3128**. Μπορείτε να
|
||||
παραλείψετε την δήλωση του IP και έτσι ο squid θα ακούει σε όλες τις διευθύνσεις του server. Για λόγους ασφαλείας, δεν προτείνεται.
|
||||
|
||||
**icp\_port**\
|
||||
Ρύθμιση της πόρτας που ακούει το squid για επικοινωνία με άλλους proxy servers. To 0 το απενεργοποιεί. Απενεργοποιήστε το για να ελαφρύνετε το σύστημα.
|
||||
|
||||
**cache\_dir**\
|
||||
Αυτή η παράμετρος ρυθμίζει το που θα αποθηκεύεται η cache του proxy. Π.χ: **cache\_dir ufs /usr/local/squid/cache 1000 16 256**\
|
||||
ufs: Τύπος της cache. \"ufs\" είναι το πιο stable, αφήστε το έτσι, καλύτερα.\
|
||||
/usr/local/squid/cache: Φάκελος που βρίσκεται η cache. Το καλύτερο είναι να βρίσκεται σε διαφορετικό δίσκο. Αν όχι, βάλτε το τουλάχιστον σε διαφορετική
|
||||
κατάτμηση. Αν πάλι δεν μπορείτε, αφήστε το όπως είναι.\
|
||||
1000: Μέγεθος της cache, σε Megabytes. Αυτή η τιμή είναι καθαρά θέμα εμπειρίας. Κάθε administrator έχει την προσωπική του άποψη για το πόσο πρέπει να είναι. Εγώ
|
||||
το υπολογίζω με τον εξής εμπειρικό τύπο: **συνολικό bandwidth ΕΠΙ αναμενόμενος χρόνος χρήσης ανά ημέρα**. Π.χ., αν το bandwidth μου είναι 256kbit ανά
|
||||
δευτερόλεπτο, και η αναμενόμενη χρήση της γραμμής γίνεται για 8 ώρες την ημέρα, τότε έχουμε 921 Mbytes για αυτή την cache, για αυτή τη χρήση.\
|
||||
**ΣΗΜΕΙΩΣΗ: Αν για οποιοδήποτε λόγο αλλάξετε αυτήν την τιμή, π.χ. να την κάνετε μικρότερη για οικονομία χώρου, ΔΕΝ ΧΡΕΙΑΖΕΤΑΙ ΝΑ ΣΒΗΣΕΤΕ ΤΙΠΟΤΑ ΑΠΟ ΤΗΝ CACHE ΜΕ
|
||||
ΤΟ ΧΕΡΙ (ναι, το έχω δει και αυτό). Σιγά σιγά μόνο του το squid θα την προσαρμόσει στα μέτρα που του ορίσατε.**\
|
||||
Οι υπόλοιπες παράμετροι ρυθμίζουν κάποια πράγματα για την cache, με τα οποία δεν θεωρώ σημαντικό να ασχοληθούμε. Μην τα αλλάξετε, εκτός αν ξέρετε τι κάνετε.
|
||||
|
||||
**ftp\_user squid\@server.com**\
|
||||
Αυτή η παράμετρος δηλώνει το e-mail που θα δίνει το squid στους ftp servers που συνδέεται με anonymous login. Δεν έχει καμία σημασία τι θα βάλετε εδώ, αρκεί να
|
||||
μοιάζει με πραγματική e-mail διεύθυνση. Η προεπιλογή του squid δεν παίζει με μερικούς ftp server που κοιτάζουν αν η e-mail διεύθυνση αυτή μοιάζει πραγματική.
|
||||
Πλέον αυτό το πρόβλημα δεν φαίνεται να υπάρχει, αλλά καλύτερα να φυλάμε τα ρούχα μας.
|
||||
|
||||
**shutdown\_lifetime 5 seconds**\
|
||||
Είναι το περιθώριο που θα δώσουμε στις σελίδες που ήδη κατεβαίνουν, να τελειώσουν, αφότου δώσουμε εντολή τερματισμού στο squid. Καταντά ενοχλητικό, κατά την
|
||||
γνώμη μου, να περιμένεις πάνω από μερικά δευτερόλεπτα, ακόμα και αν αυτό σημαίνει ότι θα διακόψουμε κάποιους χρήστες. Ένα shutdown, γίνεται για σημαντικό λόγο
|
||||
μόνο και είναι πιο σημαντικό να τελειώσει το συντομότερο δυνατόν. Βάλτε ότι πιστεύετε.
|
||||
|
||||
**acl ACLNAME TYPE PARAMETERS**\
|
||||
Οι access lists είναι αυτές που δίνουν στο squid την δυνατότητα να κατηγοριοποιεί είτε τις αιτήσεις που δέχεται, είτε τις σελίδες που τραβάει. Θα τις
|
||||
χρειαστείτε αρκετές φορές στην διάρκεια των άρθρων αυτών. Η συνταξή τους είναι αρκετά απλή. Ας πάρουμε τις ρυθμίσεις που βάλαμε πριν, για να αφήσουμε το squid
|
||||
να δεχτεί τις αιτήσεις μας, για την πρώτη μας δοκιμή:\
|
||||
**acl localnet src\_ip 10.0.0.0/8**\
|
||||
**acl all src\_ip 0.0.0.0/0**\
|
||||
**http\_access allow localnet**\
|
||||
**http\_access deny all** Οι access lists χωρίζονται σε δύο κατηγορίες. Η πρώτη κατηγορία περιλαμβάνει το \"τι θα πιάνει\". Η δεύτερη κατηγορία, δηλώνει το \"τι
|
||||
θα κάνει αυτό που πιάνει\".\
|
||||
H πρώτη γραμμή δηλώνει ότι υπάρχει μια ομάδα υπολογιστών που ονομάζεται all. Στην αυτήν την ομάδα συμπεριλαμβάνεται οποιαδήποτε IP.\
|
||||
Η δεύτερη γραμμή δηλώνει ότι υπάρχει μια ομάδα υπολογιστών που ονομάζεται \"localnet\". Σε αυτήν την ομάδα ανήκουν όλοι όσοι είναι στο subnet 10.0.0.0/8. Οι δύο
|
||||
τελευταίες γραμμές, κάνουν το εξής: Λένε ότι επιτρέπεται να έχουν πρόσβαση σε σελίδες όσοι ανήκουν στο γκρουπ \"localnet\", δηλαδή όλοι οι υπολογιστές στο
|
||||
δίκτυό μας. Η επόμενη γραμμή απαγορεύει την πρόσβαση σε οποιονδήποτε υπολογιστή.\
|
||||
Ο έλεγχος αυτών των παραμέτρων από το squid γίνεται από πάνω προς τα κάτω, και δεν κοιτάει παρακάτω αν βρει μια που ταιριάζει στο αίτημα που δέχτηκε. Οπότε, αν
|
||||
ένας υπολογιστής του δικτύου μας ζητήσει μια σελίδα, θα \"πιαστεί\" από τον πρώτο κανόνα, θα γίνει δεκτό το αίτημα του και δεν θα προχωρήσει παραπέρα.\
|
||||
Αν όμως κάποιος υπολογιστής που δεν είναι στο δίκτυό μας ζητήσει μια σελίδα από το squid, τότε δεν θα πιαστεί παρά μόνο από τον τελευταίο μας κανόνα. Άρα, θα
|
||||
απορριφθεί.\
|
||||
Οι access lists παρέχουν μεγάλη δύναμη ελέγχου στο squid και επίσης μπορούν να σας προκαλέσουν αρκετά προβλήματα αν δεν τις ρυθμίσετε σωστά.\
|
||||
Υπάρχουν πραγματικά πάρα πολλοί τρόποι για να ρυθμίσετε ποίος δεν θα βλέπει τι. Το squid έχει access lists για να απαγορεύει σελίδες ανάλογα με το όνομα του
|
||||
υπολογιστή που τις ζήτησε, ανάλογα από που τις ζήτησε, ή ακόμα και αν έχει συγκεκριμένες λέξεις μέσα στο url. Π.χ, θα μπορούσαμε να απαγορεύσουμε σελίδες που
|
||||
έχουν την λέξη \"porn\" μέσα στο URL τους. Για περισσότερες πληροφορίες, δείτε τις εξηγήσεις μέσα στο αρχείο ρυθμίσεων του squid, ακριβώς εκεί που αρχίζει η
|
||||
πρώτη access list.
|
||||
|
||||
**cache\_mgr webmaster**\
|
||||
Δηλώνει το e-mail του υπεύθυνου αυτού του proxy server. Θα εμφανίζεται σε κάθε σελίδα του squid που δηλώνει ότι υπάρχει κάποιο πρόβλημα. Βάλτε εδώ την διεύθυνσή
|
||||
σας. Π.χ. netadmin\@server.com.
|
||||
|
||||
**forwarded\_for off**\
|
||||
Αυτή η παράμετρος ρυθμίζει το αν θα συμπεριλαμβάνει το squid την διεύθυνση του client που ζήτησε την σελίδα, στον server από τον οποίο θα την ζητήσει.
|
||||
Απενεργοποιήστε το καλύτερα.
|
||||
|
||||
|
||||
### [6. Επίλογος]{#s6}
|
||||
|
||||
### [6.1 Ανασκόπηση]{#ss6.1}
|
||||
|
||||
Είπαμε βασικά πράγματα, όπως το τι είναι ένας proxy server και που χρειάζεται. Είπαμε για τις επιπτώσεις που θα έχει το δίκτυό μας, καλές και κακές.\
|
||||
Είπαμε πόσο εύκολο είναι να τον εγκαταστήσουμε, και πόσο δύσκολο είναι να ρυθμίσουμε τα πάντα όπως πρέπει για να δουλεύει τέλεια. Είπαμε ότι αν δεν παίξετε λίγο
|
||||
με τις ρυθμίσεις, τότε πιθανότατα δεν θα παίξει με το μέγιστο των δυνατοτήτων του.
|
||||
|
||||
### [6.2 Τι θα ακολουθήσει;]{#ss6.2}
|
||||
|
||||
Στο επόμενο άρθρο θα ασχοληθούμε με πιο ενδιαφέροντα πράγματα, όπως το τι προγράμματα μπορούμε να χρησιμοποιήσουμε για να φτιάξουμε στατιστικά που θα μας
|
||||
δείχνουν πόσο αποδοτικά λειτουργεί ο proxy server μας, αναφορές για το που πηγαίνουν οι χρήστες μας, περιορισμός ταχύτητας ανά χρήστη, έλεγχος πρόσβασης στον
|
||||
proxy με την βοήθεια Windows NT domain ή Windows 2000 active directory, εξαναγκασμός χρήσης του proxy σε ένα δίκτυο, ακόμα και αν δεν το έχουν δηλώσει οι
|
||||
χρήστες τους στον browser τους μέσω του transparent proxy.\
|
||||
Επίσης, θα δημοσιεύσω και μερικές access lists που θα περιορίζουν σημαντικά τα διαφημιστικά banner σε Ελλάδα και εξωτερικό, όπως επίσης και σελίδες με
|
431
content/articles/33/04_mobile.md
Κανονικό αρχείο
431
content/articles/33/04_mobile.md
Κανονικό αρχείο
|
@ -0,0 +1,431 @@
|
|||
+++
|
||||
title = 'Επικοινωνία κινητού - υπολογιστή στο Linux'
|
||||
date = '2003-06-01T00:00:00Z'
|
||||
description = ''
|
||||
author = 'Σιδηρόπουλος Αθανάσιος'
|
||||
issue = ['Magaz 33']
|
||||
issue_weight = 4
|
||||
+++
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**1. Εισαγωγή.**
|
||||
-----------------------------------------
|
||||
|
||||
**2. Εν αρχή είναι η σύνδεση.**
|
||||
--------------------------------------------------------
|
||||
|
||||
**3. Επικοινωνία κινητού - υπολογιστή.**
|
||||
-----------------------------------------------------------------
|
||||
|
||||
- [3.1 Η ζωή με το kandy.](#ss3.1)
|
||||
- [3.2 Η ζωή με το gsmlib.](#ss3.2)
|
||||
|
||||
**4. Επίλογος**
|
||||
----------------------------------------
|
||||
|
||||
|
||||
### [1. Εισαγωγή.]{#s1}
|
||||
|
||||
Όλοι ξέρουμε ότι το Linux είναι ένα καταπληκτικό λειτουργικό σύστημα που εξελίσσεται ραγδαία, καταφέρνοντας πρώτο αυτό που κανένα UNIX δεν έχει καταφέρει: να
|
||||
γίνει προσιτό και να καλύψει τις ανάγκες του απλού χρήστη. Σε αυτό συνέβαλαν τα γραφικά περιβάλλοντα KDE και GNOME και μια πλειάδα εφαρμογών από επεξεργαστές
|
||||
κειμένου, λογιστικά φύλλα, προγράμματα παρουσιάσεων και ένα σωρό άλλα που κάνουν την ζωή μας με τον υπολογιστή ευκολότερη κάθε μέρα, ειδικά γι αυτούς που δεν
|
||||
είναι συνηθισμένοι στην γραμμή εντολών.
|
||||
|
||||
Μπορούμε να γράψουμε τα κείμενά μας σε επεξεργαστές WYSIWYG, να ετοιμάσουμε τις παρουσιάσεις για την δουλειά μας να υπολογίσουμε χίλια δυο πράγματα σε ένα
|
||||
λογιστικό φύλο να δούμε τις φωτογραφίες μας και να ακούσουμε τα mp3 μας με την ίδια ευκολία ή ακόμα και περισσότερη κάποιες φορές από ότι άλλοι άνθρωποι μπορούν
|
||||
να κάνουν χρησιμοποιώντας τα windows.
|
||||
|
||||
Όμως, καλά όλα αυτά, Αλλά\...
|
||||
|
||||
Αν θέλω να δημιουργήσω ένα αρχείο στον υπολογιστή μου με τα sms που μου έστειλε η κοπέλα μου; Αν θέλω να δημιουργήσω ένα άλλο αρχείο με τα sms κάποιων φίλων
|
||||
μου; Θα κάθομαι και θα πληκτρολογώ ότι μου έχουν στείλει στον υπολογιστή μου; Και αν θέλω να απαντήσω ταυτόχρονα αυτά τα sms; Μήπως μετά πρέπει να παιδευτώ με
|
||||
το πληκτρολόγιο του κινητού μου για να γράψω την απάντηση; Και αν θέλω να αλλάξω όλα τα νούμερα που έχω στο κινητό μου επειδή πάλη άλλαξε ο τρόπος κλίσης; (πχ.
|
||||
από 093 έγινε 693). Η ακόμα χειρότερα να συγχρονίσω τον τηλεφωνικό κατάλογο του κινητού με τα περιεχόμενα ενός αντίστοιχου που διατηρώ στον υπολογιστή. Σε αυτό
|
||||
το άρθρο θα δούμε πως μπορούν να γίνουν όλα τα παραπάνω, χωρίς να χαλάσουμε το uptime του Linux.
|
||||
|
||||
Ναι, το Linux έχει την δυνατότητα να κάνει και αυτά τα κόλπα και ίσως και καλύτερα από ότι τα windows. Ανάλογα βέβαια και με την \"ποιότητα\" της σχετικής
|
||||
εφαρμογής που μας παρέχετε. Αν και είναι ακόμα αρκετά νωρίς και δεν είναι αρκετά εξελιγμένα τα αντίστοιχα GUI και μη προγράμματα η ωρίμανση και σε αυτό το
|
||||
σημείο δεν είναι τόσο μακριά.
|
||||
|
||||
Άλλα αρκετά με τα εισαγωγικά. Ας πάμε στο ζουμί.
|
||||
|
||||
|
||||
### [2. Εν αρχή είναι η σύνδεση.]{#s2}
|
||||
|
||||
Το πρώτο πράγμα που πρέπει να καταφέρουμε για να κάνουμε όλα αυτά τα ωραία κολπάκια είναι να επιτύχουμε σύνδεση μεταξύ του προσωπικού μας υπολογιστή και του
|
||||
κινητού. Αυτή μπορεί να είναι ενσύρματη (RS 232, σειριακή θύρα) είτε ασύρματη (μέσω υπέρυθρων).
|
||||
|
||||
Να σημειώσουμε εδώ μια αρκετά σημαντική λεπτομέρεια. Η όλη διαδικασία δεν διαφέρει και πολύ από την σύνδεση υπολογιστή με modem. Τα περισσότερα, αν όχι όλα,
|
||||
σημερινά κινητά άλλωστε ενσωματώνουν modem και απαντούν σε AT εντολές. Απλώς, έχουν μερικές ακόμη AT εντολές για να διαχειριστούν τον τηλεφωνικό κατάλογο τα sms
|
||||
και άλλα.
|
||||
|
||||
Στην δική μου περίπτωση έπρεπε να ακολουθήσω τον μακρύ και δύσκολο δρόμο των υπερύθρων καθότι δεν διέθετα καλώδιο που να συνδέει το κινητό μου με τον
|
||||
υπολογιστή. Και ευτυχώς ο φορητός μου διέθετε υπέρυθρες (γιατί δεν διαθέτει σειριακή) γιατί δεν ήθελα να ασχοληθώ με το ψάξιμο ενός δέκτη υπερύθρων για τον
|
||||
σταθερό μου υπολογιστή.
|
||||
|
||||
Ας δούμε πως γίνεται.
|
||||
|
||||
Καταρχάς, πρέπει να πούμε στο Linux ότι υπάρχει θύρα υπερύθρων ώστε να \"ακούει\" και εκεί, όπως κάνει με τη σειριακή. Επειδή η διανομή μου (SuSE 7.2 τότε) έχει
|
||||
ετοιμάσει τα απαραίτητα για να φορτωθούν τα modules που είναι απαραίτητα για να αναγνωριστεί η υπέρυθρη θύρα, το μόνο που χρειάστηκα να κάνω είναι ένα rcirda
|
||||
start. Μετά έπρεπε να βάλω το κινητό μου να βλέπει το \"ματάκι\" των υπερύθρων στο φορητό και να ενεργοποιήσω την θύρα του κινητού από το menu. Εκτελώντας από
|
||||
πριν το irdump σε ένα xterm έβλεπα αμέσως να εμφανίζεται το κινητό μου. Η σύνδεση είχε επιτευχθεί. Έμενε να αξιοποιηθεί πλέον από το απαραίτητο λογισμικό.
|
||||
|
||||
Αν δεν μου τα είχε έτοιμα όλα η διανομή μου, θα έπρεπε να έτρωγα κάποιες ώρες (?) διαβάζοντας το σχετικό how to για να βρω ποια είναι τα απαραίτητα modules
|
||||
(αυτά που αντιστοιχούν στο hardware που διαθέτω) του πυρήνα που έπρεπε να φορτώσω (irtty & irda τουλάχιστον στην δικιά μου περίπτωση) και να ασχοληθώ με εντολές
|
||||
όπως η irattach για να \"συνδέσω\" την θύρα με ένα οδηγό συσκευής. Όχι πολύ δύσκολα πράγματα δηλαδή.
|
||||
|
||||
|
||||
### [3. Επικοινωνία κινητού - υπολογιστή.]{#s3}
|
||||
|
||||
Προγράμματα τα οποία να μπορούν να επικοινωνούν με το κινητό τηλέφωνο για να κάνουν την δουλειά που θέλουμε στο Linux γνωρίζω (έχω χρησιμοποιήσει / δοκιμάσει)
|
||||
δύο.
|
||||
|
||||
Το ένα είναι μέρος του KDE, συγκεκριμένα του πακέτου pim και ονομάζεται kandy. Δυστυχώς είναι ακόμα αρκετά ανώριμο και μόλις πρόσφατα φαίνεται να το ξαναπιάσανε
|
||||
για να το εξελίξουν περαιτέρω. Ακόμα κι έτσι όμως, είναι πανεύκολο στην χρήση και θα χαρώ πολύ να το δω να βελτιώνεται. Αποτελείται από δύο καρτέλες. Η μία
|
||||
είναι η καρτέλα από όπου μπορείς να ελέγξεις τις διάφορες λειτουργίες που σου παρέχει το πρόγραμμα (μεταφορά τηλεφωνικού καταλόγου από το κινητό καθώς και
|
||||
συγχρονισμός με τα στοιχεία που υπάρχουν στο pim). Η δεύτερη σου δίνει πλήρη πρόσβαση στις λειτουργίες του κινητού μέσω των εντολών AT και σου δίνει την
|
||||
δυνατότητα για προγραμματισμό (εν μέρει) του προγράμματος για να ταιριάξει απόλυτα στις συγκεκριμένες ανάγκες του κινητού σου. Βασικός σκοπός του προγράμματος
|
||||
είναι να διαχειριστεί τον τηλεφωνικό κατάλογο του κινητού τηλεφώνου, μη δίνοντας καμιά σημασία στα μηνύματα sms.
|
||||
|
||||
Το άλλο είναι βασικά μία συλλογή από προγράμματά που μπορεί να διαχειριστεί πλήρως τον τηλεφωνικό κατάλογο του τηλεφώνου καθώς και τα μηνύματα sms που υπάρχουν
|
||||
στην κάρτα sim. Το \"πρόβλημα\" του είναι ότι δεν έχει GUI. Για τους λάτρεις του είδους αυτό δεν είναι πρόβλημα αλλά για τον μέσο χρήστη ίσως να είναι. Ελπίζω
|
||||
σύντομα να αναπτυχθεί κάποιο front-end και γι αυτό.
|
||||
|
||||
Το πακέτο αυτό λέγεται gsmlib. Μπορεί κανείς να την βρει στην διεύθυνση www.phx.de/fs/gsmlib/index.html. Την στιγμή που γράφονταν το παρόν άρθρο η έκδοση ήταν
|
||||
1.10. θα ασχοληθούμε κυρίως με αυτή την συλλογή καθότι είναι αρκετά ώριμη και λειτουργική και θα κάνουμε μια μικρή μόνο αναφορά στο kandy.
|
||||
|
||||
### [3.1 Η ζωή με το kandy.]{#ss3.1}
|
||||
|
||||
Το kandy είναι όπως είπαμε μέρος του πακέτου pim του KDE. Η τρέχουσα έκδοση είναι η 0.3 και έχει αρκετό δρόμο μπροστά του. Βασική του λειτουργία είναι η
|
||||
διαχείριση του τηλεφωνικού καταλόγου του κινητού μας. Μπορεί να διαβάσει τα περιεχόμενα του (με πολύ δυσκολία και προσπάθεια σε πολλά κινητά) ή τουλάχιστον ένα
|
||||
μέρος αυτού και να περάσει τα δεδομένα αυτά στο pim. Η επικονωνία με τον χρήστη επιτυγχάνεται χάρη σε δύο καρτέλες. Η κύρια καρτέλα (mobile GUI) αποτελείται από
|
||||
δύο καταλόγους με τα τηλέφωνα που υπάρχουν, στο KDE address book ο ένας και στο κατάλογο του κινητού τηλεφώνου ο δεύτερος. Κάτω από κάθε ένα υπάρχουν τα κουμπιά
|
||||
που θα πατήσει κανείς για να διαβάσει τα νούμερα από το κινητό τηλέφωνο ή το KDE address book καθώς και για να γράψει τα τηλέφωνά πίσω όπως τα βλέπει εκείνη την
|
||||
στιγμή. Στα δεξιά μπορεί κανείς να δει πληροφορίες για το κινητό του τηλέφωνο, όπως το μοντέλο και την έκδοσή του καθώς και το ποσοστό φόρτισης της μπαταρίας.\
|
||||
Την δεύτερη καρτέλα μπορεί κανείς να την δει επιλέγοντας show -\> terminal από τα μενού. Από εδώ έχει πρόσβαση στο κινητό του τηλέφωνο σε \"χαμηλό\" επίπεδο.
|
||||
Μπορεί να δώσει εντολές απευθείας στο κινητό του καθώς και να διορθώσει τις ήδη υπάρχουσες για να καλύψουν τις συγκεκριμένες ιδιαιτερότητες του κινητού του
|
||||
τηλέφωνο.
|
||||
|
||||
### [3.2 Η ζωή με το gsmlib.]{#ss3.2}
|
||||
|
||||
Το gsmlib είναι μία βιβλιοθήκη που συνοδεύεται από ένα σετ προγραμμάτων για γραμμή εντολής. Αυτά είναι:
|
||||
|
||||
- gsmpb: Πρόγραμμα διαχείρισης καταλόγου.
|
||||
- gsmsctl: Διαχείριση κινητού τηλεφώνου. (ποικίλες δυνατότητες)
|
||||
- gsmsmsd: Δαίμονας διαχείρισης μηνυμάτων sms.
|
||||
- gsmsiectl: Δεν γνωρίζω δεν απαντώ. Μάλλον για low-level \"δουλειές\".
|
||||
- gsmsendsms: Αποστολή sms σε άλλα κινητά.
|
||||
- gsmsiexfer: Ούτε για αυτό γνωρίζω τίποτα.
|
||||
- gsmsmsstore: Πρόγραμμα διαχείρισης sms.
|
||||
|
||||
Με αυτά τα απλά προγραμματάκια είναι δυνατόν κάποιος να διαχειριστεί με πολύ μεγάλη ευκολία τον τηλεφωνικό του κατάλογο καθώς και τα μηνύματα sms που έχει
|
||||
αποθηκευμένα στο κινητό του. Ας δούμε πως.
|
||||
|
||||
#### Τηλεφωνικός κατάλογος κινητού τηλεφώνου.
|
||||
|
||||
Ας ξεκινήσουμε με τον τηλεφωνικό κατάλογο. Γι αυτόν τον σκοπό θα χρησιμοποιήσουμε το gsmpb. Το συγκεκριμένο πρόγραμμα μπορεί να διαβάσει τον κατάλογο του
|
||||
κινητού μας αλλά και να γράψει σε αυτόν. Για να διαβάσει τον τηλεφωνικό κατάλογο και να τον αποθηκεύσουμε σε ένα αρχείο στον δίσκο μας δίνουμε την ακόλουθη
|
||||
εντολή.
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
gsmpb -b 19200 -c -d katalogos.txt -i -p MT -s /dev/ircomm0
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Ας δούμε όμως τι σημαίνει αυτό το μακρινάρι.
|
||||
|
||||
**-b 19200** είναι η ταχύτητα με την οποία θα γίνει η επικοινωνία μεταξύ υπολογιστή και κινητού. Δεν είναι απαραίτητο να δοθεί Η προεπιλεγμένη τιμή αν δεν δοθεί
|
||||
είναι 38400bps.
|
||||
|
||||
**-c** Για να πραγματοποιηθεί η αντιγραφή των περιεχομένων της \"πηγής\" στον \"προορισμό\" που ορίσαμε.
|
||||
|
||||
**-d katalogos.txt** Το αρχείο προορισμού του τηλεφωνικού καταλόγου. Στην συγκεκριμένη περίπτωση είναι το katalogos.txt
|
||||
|
||||
**-i** Για να υπάρχει αύξων αριθμός εγγραφής (ένδειξη θέσης) στο αρχείο που θα δημιουργήσουμε. Αν θέλουμε να γνωρίζουμε ποία ακριβώς θέση στον τηλεφωνικό
|
||||
κατάλογο έχει το κάθε τηλέφωνο. Αν δεν βάλουμε το -i τότε το αρχείο θα έχει την μορφή \[όνομα \| νούμερο\]. Αν το βάλουμε θα προστεθεί και ο αύξων αριθμός
|
||||
εγγραφής στην αρχή του κάθε τηλεφώνου. Ο διαχωριστής τον πεδίων είναι το \|.
|
||||
|
||||
**-p MT** Εδώ είναι το ενδιαφέρον μέρος. Καταρχάς όλα τα σημερινά κινητά τηλέφωνα έχουν και δικό τους εσωτερικό τηλεφωνικό κατάλογο και δεν μας αφήνουν στον
|
||||
περιορισμένο σε αριθμό εγγραφών κατάλογο της κάρτας sim. Τώρα εμείς μπορεί να θέλουμε είτε τον κατάλογό της κάρτας sim, είτε του κινητού τηλεφώνου, είτε και
|
||||
τους δύο μαζί. Για να διευκρινίσουμε τι θέλουμε, δίνουμε έναν κωδικό δύο γραμμάτων. Έτσι αν θέλουμε τον κατάλογο της κάρτας sim θα δώσουμε -p SM. Αν πάλι
|
||||
θέλουμε του κινητού τηλεφώνου μόνο δίνουμε -p ME. Στην περίπτωση που δώσουμε -p MT θα πάρουμε τον κατάλογο και του τηλεφώνου (πρώτα) και της κάρτας sim (αμέσως
|
||||
μετά και ξεκινώντας από τον επόμενο αύξοντα αριθμό εγγραφής αν έχουμε δώσει -i)
|
||||
|
||||
**-s** dev/ircomm0/ Μα φυσικά η \"πηγή\" του τηλεφωνικού μας καταλόγου. Η θύρα πού είναι συνδεδεμένο το κινητό μας τηλέφωνο. Στην συγκεκριμένη περίπτωση στην
|
||||
πρώτη θύρα υπερύθρων.
|
||||
|
||||
Για να κάνουμε την αντίθετη εργασία, να γράψουμε τα περιεχόμενα ενός αρχείου με ονόματα και τηλέφωνα που πιθανόν να το έχουμε διορθώσει από τον υπολογιστή μας
|
||||
στο κινητό τηλέφωνο απλώς πρέπει να βάλουμε στην θέση του προορισμού την θύρα που συνδέεται το κινητό και στη θέση της πηγής το αρχείο που θέλουμε να
|
||||
μεταφέρουμε. Τόσο απλά.
|
||||
|
||||
Ας δούμε όμως μερικές άλλες παραμέτρους που είναι δυνατόν να χρησιμοποιήσουμε με το gsmpb.
|
||||
|
||||
**-I \<init string\>**\
|
||||
**\--init \<init string\>**\
|
||||
Με αυτό μπορούμε να δώσουμε κάποιες εντολές αρχικοποίησης του κινητού μας. Το ποίες θα είναι αυτές, δεν το ξέρω. Ανάλογα τι γνωρίζετε ότι χρειάζεται το κινητό
|
||||
σας τηλέφωνο αλλά δεν πρόκειται να το πάρει από το πρόγραμμα υπό κανονικές συνθήκες. Μάλλον δεν θα χρειαστείτε αυτή την παράμετρο, αν δεν θέλετε να κάνετε κάτι
|
||||
\"περίεργο\".
|
||||
|
||||
**-V**\
|
||||
**\--verbose**\
|
||||
Για να σας δείχνει τι κάνει τόση ώρα που του παίρνει για να τελειώσει την μεταφορά :-)
|
||||
|
||||
**-v**\
|
||||
**\--version**\
|
||||
Ε, τα γνωστά. Τυπώνει την έκδοση του προγράμματος.
|
||||
|
||||
**-X**\
|
||||
**\--xonoff**\
|
||||
Για να χρησιμοποιηθεί η μέθοδος XON/XOFF κατά την \"συνομιλία\" μεταξύ υπολογιστή / κινητού. Αν αντιμετωπίζετε δυσκολίες με την συνήθη μέθοδο χρησιμοποιήστε
|
||||
αυτήν. Αν όχι, καλύτερα με την hardware μέθοδο που είναι η προεπιλογή.
|
||||
|
||||
**-y**\
|
||||
**\--sychronize**\
|
||||
Αυτή η επιλογή κάνει συγχρονισμό μεταξύ των περιεχομένων \"πηγής\" και \"προορισμού\". Έτσι, αν μια εγγραφή δεν υπάρχει στον \"προορισμό\" θα προστεθεί. Αν μια
|
||||
εγγραφή βρεθεί στην \"πηγή\" με όνομά που υπάρχει και στον \"προορισμό\", η εγγραφή στον \"προορισμό\" θα αλλαχθεί σύμφωνα με την εγγραφή της \"πηγής\". Εάν
|
||||
όμως βρεθούν περισσότερες εγγραφές απλά θα προστεθεί μία ακόμα. Επίσης εγγραφές που δεν υπάρχουν στην πηγή θα διαγραφούν.
|
||||
|
||||
**-t \<character set\>**\
|
||||
**\--charset \<character set\>**\
|
||||
Εδώ υπάρχει πολύ ζουμί.\
|
||||
Μπορεί κανείς να επιλέξει μία από τις διαθέσιμες στο κινητό του κωδικοσελίδες. Τα δεδομένα που θα μεταφερθούν θα είναι σε αυτήν την κωδικοσελίδα. Έτσι μπορεί
|
||||
κανείς, με αρκετή προσπάθεια, να καταφέρει να μεταφέρει τα ονόματα του τηλεφωνικού καταλόγου με ελληνικά όπως τα έχει γραμμένα στο τηλέφωνό του. Όμως δυστυχώς η
|
||||
προεπιλεγμένη GSM alphabet ΔΕΝ υποστηρίζει τα ελληνικά. Άρα\... πειράματα και προσπάθειες πολλές χρειάζονται, μέχρι να γίνει κάτι τέτοιο εφικτό.
|
||||
|
||||
#### Αποστολή λήψη μηνυμάτων sms.
|
||||
|
||||
Ως εδώ είδαμε έναν τρόπο για να διαχειριστούμε τον τηλεφωνικό κατάλογο του κινητού μας τηλεφώνου. Ας δούμε τώρα με ποία προγράμματα θα μεταφέρουμε τα μηνύματα
|
||||
sms που έχουμε αποθηκευμένα στο κινητό μας.
|
||||
|
||||
Ας ξεκινήσουμε με το gsmsendsms, με το οποίο μπορεί κανείς να στείλει μηνύματα sms σε άλλα κινητά τηλέφωνα. Αυτό γίνεται με την παρακάτω εντολή:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
gsmsendsms -b 19200 -d /dev/ircomm0 <αριθμός τηλεφώνου> <μήνυμα>
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Θα παρατηρήσατε πιστεύω ότι το -b και -d είναι ίδια με το το προηγούμενο παράδειγμα. Αυτό συμβαίνει γιατί είναι μερικές από τις κοινές, μεταξύ των προγραμμάτων
|
||||
του πακέτου, παραμέτρους. Δεδομένου ότι υπάρχει πιθανότητα να μας καλύπτουν οι προεπιλεγμένες τιμές για αυτές τις παραμέτρους, το μόνο που χρειάζονταν να
|
||||
δώσουμε είναι ο αριθμός του κινητού στο οποίο θέλουμε να στείλουμε το μήνυμα και το ίδιο, φυσικά, το μήνυμα.
|
||||
|
||||
Να σημειωθεί ότι η παράμετρος -d έχει σαν προεπιλογή προορισμού την θέση /dev/mobilephone οπότε ένα link με το πραγματικό device που χρησιμοποιείτε για την
|
||||
επικοινωνία με το κινητό τηλέφωνο είναι απαραίτητη.
|
||||
|
||||
Πρέπει να προσέξουμε ιδιαίτερα ένα σημείο. Το χρησιμοποιούμενο αλφάβητο και σε αυτήν την περίπτωση είναι το GSM alphabet (από την μεριά του κινητού) και το
|
||||
latin 1 (από την μεριά του υπολογιστή). Το πρόγραμμα θεωρεί ότι το μήνυμά μας είναι γραμμένο με βάση την κωδικoσελίδα latin 1. Αν το μήνυμά μας περιέχει
|
||||
χαρακτήρες που δεν υπάρχουν στην κωδικoσελίδα latin 1 σε αυτό θα αντικατασταθούν από τον GSM delta χαρακτήρα (GSM code 16).
|
||||
|
||||
Υπάρχουν βέβαια και πολλές άλλες παράμετροι με τις οποίες θα μπορούσαμε να παίξουμε κι εδώ για να κάνουμε κάτι πιο περίπλοκο. Αυτές είναι:
|
||||
|
||||
**-c \<ταυτότητα μηνύματος\>**\
|
||||
**\--concatenate \<ταυτότητα μηνύματος\>**
|
||||
|
||||
Με αυτήν την παράμετρο μπορούμε να στείλουμε μηνύματα που είναι πολύ μεγαλύτερα από τα συνηθισμένα (160 χαρακτήρες). Το μήνυμά μας χωρίζεται σε μικρότερα με την
|
||||
ίδια \"ταυτότητα\" και αύξοντα αριθμό μηνύματος. Αν το κινητό που λαμβάνει το μήνυμα μπορεί να χειριστεί αυτού του είδους τα μηνύματα θα το εμφανίσει σαν ενιαίο
|
||||
μήνυμα. Ειδάλλως, θα το λάβει ως ξεχωριστά μηνύματα.
|
||||
|
||||
**-C \<διεύθυνση υπηρεσίας\>**\
|
||||
**\--sca \<διεύθυνση υπηρεσίας\>**
|
||||
|
||||
Ο αριθμός του κέντρου αποστολής sms μέσω του οποίου θέλουμε να αποσταλούν τα sms μας.
|
||||
|
||||
**-r**\
|
||||
**\--requeststat**
|
||||
|
||||
Ζητάει αναφορά για το μήνυμα που στείλαμε από το δίκτυο.
|
||||
|
||||
**-t**\
|
||||
**\--test**
|
||||
|
||||
Για να δούμε πώς θα φτάσει το μήνυμα μας στον προορισμό του. Μην ξεχνάτε ότι το πρόγραμμα δέχεται σαν κωδικοσελίδα του μηνύματος την latin 1 και την μετατρέπει
|
||||
σε GSM alphabet για να την στείλει στο κινητό τηλέφωνο. Αν δώσουμε αυτή την παράμετρο στο πρόγραμμά τότε δεν θα στείλει το μήνυμα αλλά θα το μεταφράσει πάλι σε
|
||||
latin 1 και θα μας δείξει το πώς θα φαινόταν. Οτιδήποτε είναι εκτός των χρησιμοποιούμενων κωδικοσελίδων μετατρέπεται σε ASCII code 172.
|
||||
|
||||
Αφού μάθαμε να στέλνουμε sms ώρα να μάθουμε να τα αποθηκεύουμε κιόλας στον υπολογιστή μας. Αυτό μπορεί να το κάνει το πρόγραμμα gsmsmstore. Βεβαίως μπορεί να
|
||||
κάνει και την αντίστροφη εργασία. Δηλαδή να αποθηκεύσουμε μηνύματα sms στην κάρτα sim του κινητού μας αν το επιθυμούμε. Αυτό γίνεται με την παρακάτω εντολή:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
gsmsmstore -b 19200 -c -d arxeio.sms -s /dev/ircomm0
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Ας δούμε τι κάνει καθετί:
|
||||
|
||||
Το **-b** φυσικά είναι ίδιο όπως και στα δύο προηγούμενα παραδείγματα.
|
||||
|
||||
**-c** σημαίνει αντέγραψε τα περιεχόμενα της πηγής στον προορισμό. Αν στο τέλος της εντολής δίναμε αριθμούς θα έπαιρνε μόνο τα μηνύματα που αντιστοιχούν σε
|
||||
αυτές τις θέσεις. Αν, για παράδειγμα, θέλουμε μόνο το 5ο και το 7ο sms από το κινητό μας τηλέφωνο, δεν έχουμε παρά να προσθέσουμε ένα 5 7 στο τέλος.
|
||||
|
||||
**-d arxeio.sms** Ο προορισμός μας. Το αρχείο με τα sms που θέλουμε.
|
||||
|
||||
**-s** dev/ircomm0/ Είναι η \"πηγή\" μας. To device που αντιστοιχεί στη θύρα που έχουμε συνδεδεμένο το κινητό μας τηλέφωνο.
|
||||
|
||||
Ας δούμε τώρα μερικές ακόμα παραμέτρους που μπορούμε να χρησιμοποιήσουμε.
|
||||
|
||||
**-C \<διεύθυνση υπηρεσίας\>**\
|
||||
**\--sca \<διεύθυνση υπηρεσίας\>**\
|
||||
Τα είπαμε πριν αυτά έτσι δεν είναι;
|
||||
|
||||
**-k**\
|
||||
**\--backup**
|
||||
|
||||
Παρόμοιο με το -c με μία διαφορά. Προσθέτει μόνο ότι δεν υπάρχει ήδη στον προορισμό. Με το -c αντιγράφονται όλα τα περιεχόμενα της πηγής στον προορισμό. Κι εδώ,
|
||||
αν δώσουμε αριθμούς μηνυμάτων θα λάβει υπόψιν του μόνο τις ανάλογες θυρίδες μηνυμάτων.
|
||||
|
||||
**-l**\
|
||||
**\--list**
|
||||
|
||||
Επειδή τα μηνύματα στο αρχείο είναι σε μη αναγνώσιμη μορφή, με αυτήν την παράμετρο βλέπουμε στην οθόνη μας σε αναγνώσιμη αυτήν την φορά μορφή και όχι
|
||||
κωδικοποιημένα.
|
||||
|
||||
**-x**\
|
||||
**\--delete**
|
||||
|
||||
Για να διαγράψουμε τα μηνύματα που θέλουμε από τον προορισμό.
|
||||
|
||||
#### Μηνύματα sms με άλλον τρόπο.
|
||||
|
||||
Ας δούμε και έναν άλλο τρόπο να διαχειριστούμε τα μηνύματα sms που λαμβάνουμε. Θα χρησιμοποιήσουμε το gsmsmsd. Τον δαίμονα διαχείρισης sms του πακέτου. Ο πιο
|
||||
απλός τρόπος λειτουργίας του είναι να περιμένει να έρθει ένα sms στο κινητό μας και να το τυπώσει στην στάνταρ έξοδο. Για να το πετύχουμε αυτό δεν χρειαζόμαστε
|
||||
να δώσουμε καμιά απολύτως παράμετρο εκτός ίσως από την επιθυμητή ταχύτητα επικοινωνίας καθώς και την συσκευή που αντιστοιχεί στο κινητό μας αν αυτή δεν την
|
||||
έχουμε κάνει ήδη link στο /dev/mobilephone που είναι η προεπιλογή όπως έχουμε δει για όλα τα προγράμματα του πακέτου. Όμως, αν ας πούμε θέλουμε να λαμβάνουμε
|
||||
email με τα sms που μας στέλνουνε στο κινητό μας; Τότε;
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
gsmsmsd -d /dev/ircomm0 -b 19200 -a "mail xrisths1"
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Πολλοί από εσάς θα βρείτε πολύ πιο χρήσιμες δουλειές για το gsmsmsd, όπως διαχείριση του server εξ\' αποστάσεως μέσω απλών εντολών στο κινητό τηλέφωνο που έχετε
|
||||
μονίμως συνδεδεμένο επάνω του. Αφήστε την φαντασία σας να οργιάσει. Χρήσιμη σε μία τέτοια περίπτωση θα φανεί και η δυνατότητα του gsmsmsd να στέλνει μηνύματα
|
||||
sms και όχι μόνο να λαμβάνει. Όχι ότι δεν θα ήταν δυνατόν κάτι τέτοιο με τα δύο προηγούμενα προγράμματα. Απλώς εδώ γίνεται αυτοματοποιημένα από ένα μόνο
|
||||
πρόγραμμα.
|
||||
|
||||
Για να δουλέψει όμως το πρόγραμμα είναι απαραίτητο να υπάρχει τουλάχιστον μία κενή θέση αποθήκευσης sms στο κινητό.\
|
||||
Ας δούμε εν συντομία τώρα τι άλλες παραμέτρους μπορούμε να δώσουμε στο gsmsmsd.
|
||||
|
||||
**-c \<ταυτότητα\>**\
|
||||
**\--concatenate \<ταυτότητα\>**
|
||||
|
||||
Όπως και στο gsmsendsms έτσι κι εδώ με την χρήση αυτού του αριθμού ταυτότητας μπορούμε να στείλουμε μεγάλου μεγέθους sms κομμένα σε πολλά μικρότερα τα οποία αν
|
||||
το υποστηρίζει το κινητό του παραλήπτη θα ανασυσταθούν σε ένα ενιαίο sms μεγάλου μεγέθους.
|
||||
|
||||
**-D**\
|
||||
**\--direct**
|
||||
|
||||
Ενεργοποιεί την απευθείας δρομολόγηση των μηνυμάτων. Επειδή όμως δεν υποστηρίζεται από πολλά κινητά η προεπιλογή είναι να αποθηκεύονται πρώτα τα sms και μετά να
|
||||
διεκπεραιώνονται.
|
||||
|
||||
**-f**\
|
||||
**\--flush**
|
||||
|
||||
Διαβάζει και σβήνει τα περιεχόμενα της θυρίδας αποθήκευσης που δίνουμε με την παράμετρο -store. Τα περιεχόμενα ακολουθούν κανονικά τον δρόμο που θα ακολουθούσε
|
||||
κάθε νεοεισερχόμενο μήνυμα. Δηλαδή τυπώνονται ή περνούνε στην εντολή που έχουμε δώσει να εκτελείται με την παράμετρο -a (\--action).
|
||||
|
||||
**-r**\
|
||||
**-requeststat**\
|
||||
Αιτείται αναφοράς κατάστασης από το δίκτυο για το sms που αποστέλλει.
|
||||
|
||||
**-s \<κατάλογος\>**\
|
||||
**\--spool \<κατάλογος\>**
|
||||
|
||||
Εδώ είμαστε σε μια αρκετά σημαντική παράμετρο που μπορεί να φανεί ιδιαίτερα χρήσιμη σε μερικούς. Εδώ ορίζουμε έναν κατάλογο που ελέγχεται κάθε 5 δευτερόλεπτα
|
||||
και που θα τοποθετήσουμε αρχεία με τα sms που θέλουμε να στείλουμε. Η μορφή των αρχείων αυτών είναι απλή. Περιέχουν τον αριθμό που θέλουμε να στείλουμε το sms
|
||||
και αμέσως μετά το μήνυμα. Δηλαδή 6931234567 Sas omhlei o aftomatos thlefoniths toy ypologisth sas.
|
||||
|
||||
**-t \<Όνομα θυρίδας\>**\
|
||||
**\--store \<όνομα θυρίδας\>**
|
||||
|
||||
Εδώ ορίζουμε που θα κοιτάει το πρόγραμμα για εισερχόμενα μηνύματα. Το σύνηθες είναι να κοιτάει στην κάρτα sim (SM).
|
||||
|
||||
#### Έλεγχος λειτουργιών κινητού τηλεφώνου.
|
||||
|
||||
Τέλος θα δούμε πως μπορούμε να παίξουμε με τις λειτουργίες του κινητού μας τηλεφώνου. Για τον σκοπό αυτό θα χρησιμοποιήσουμε το gsmctl. Με το gsmctl μπορούμε
|
||||
τόσο να δούμε όσο και να ορίσουμε πολλές και διάφορες παραμέτρους του κινητού μας τηλεφώνου. Καλό είναι όμως πρώτον να μελετήσουμε πάρα πολύ καλά το manual του
|
||||
gsmctl γιατί δεν είναι καθόλου δύσκολο να προξενίσουμε αρκετά μεγάλο πρόβλημα στην λειτουργία του κινητού μας τηλεφώνου. Αν δεν είμαστε σίγουροι για το τι
|
||||
κάνουμε καλό είναι να το αφήσουμε.
|
||||
|
||||
Να σημειώσουμε ότι πολλές από τις λειτουργίες που είναι δυνατόν να διαχειριστούμε με το gsmctl ενδέχεται να μην υποστηρίζονται από το κινητό μας τηλέφωνο. Σε
|
||||
αυτήν την περίπτωση παίρνουμε ένα ωραιότατο μήνυμα λάθους και διακόπτεται η προσπάθεια.
|
||||
|
||||
Η σύνταξη της σχετικής εντολής είναι (ανάλογα και με το αν θέλουμε να δούμε η να αλλάξουμε κάτι):
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
gsmctl -d /dev/ircomm0 -b 19200 <πληροφορία που θέλουμε>
|
||||
gsmctl -d /dev/ircomm0 -b 19200 -o <παράμετρος που πειράζουμε>
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Με την πρώτη μορφή ρωτάμε το κινητό μας για διάφορες πληροφορίες που μπορεί να μας δώσει. Αυτές είναι:
|
||||
|
||||
**ALL** Όλες οι δυνατές πληροφορίες που μπορεί να μας δώσει.
|
||||
|
||||
**BATT** Κατάσταση μπαταρίας και επίπεδο φόρτισης.
|
||||
|
||||
**BITERR** Δίνει μία ένδειξη για τον ρυθμό λαθών που παρουσιάζει το σήμα.
|
||||
|
||||
**CLIP** Δείχνει αν είναι ενεργή ή όχι η αποστολή αριθμού κλίσης από το δίκτυο.
|
||||
|
||||
**CSET** Τρέχουσα και διαθέσιμες κωδικοσελίδες.
|
||||
|
||||
**CURROP** Δείχνει ποιος είναι ο τρέχον παροχέας δικτύου.
|
||||
|
||||
**FLCAP** Δίνει έναν συνδυασμό δύο γραμμάτων που δείχνει κάποιες από τις δυνατές φραγές που μπορούμε να ενεργοποιήσουμε. Αυτές μπορεί να είναι από το κλείδωμα
|
||||
πληκτρολογίου (CS) και της sim (SC) μέχρι φραγή εισερχομένων και εξερχομένων κλίσεων.
|
||||
|
||||
**FLSTAT** Δείχνει τις ενεργοποιημένες φραγές (δες παραπάνω FLCAP).
|
||||
|
||||
**FORW** Πληροφορίες για τις προωθήσεις κλίσεων που είναι ενεργές.
|
||||
|
||||
**OP** Πληροφορίες για τους διαθέσιμους παροχείς δικτύου.
|
||||
|
||||
**PIN** Πληροφορίες για τον αριθμό PIN (αν απαιτείται η εισαγωγή του π.χ. κατά το άνοιγμα του κινητού).
|
||||
|
||||
**PW** Δείχνει της προστατευμένες με password φραγές.
|
||||
|
||||
**SCA** Δίνει το κέντρο διακίνησης sms.
|
||||
|
||||
**SIG** Μας δίνει έναν αριθμό που αντιστοιχεί με την ένταση λήψης σήματος από το κινητό με βήματα των 2 dBm.
|
||||
|
||||
Με την δεύτερη μορφή μπορούμε να επηρεάσουμε τον τρόπο που λειτουργεί το κινητό μας τηλέφωνο. Το μόνο που έχουμε να κάνουμε είναι να πούμε τι και πώς επιθυμούμε
|
||||
να επηρεάσουμε. Βέβαια, ό,τι πάμε να κάνουμε εδώ θα πρέπει να γίνει με πολύ προσοχή γιατί δεν αποκλείεται να κλειδώσουμε την συσκευή μας καθιστώντας τη άχρηστη.
|
||||
Ας δούμε εν συντομία τη μπορούμε να επηρεάσουμε.
|
||||
|
||||
**-o dial \<νούμερο\>**
|
||||
|
||||
Κάνει κλίση προς το νούμερο που ορίζουμε και περιμένει να πατήσουμε το \<CR\> για να τερματίσουμε την σύνδεση.
|
||||
|
||||
**-o forw \<κατάσταση\> \<λόγος\> \<νούμερο\> \[τάξη υπηρεσίας\] \[χρόνος\]**
|
||||
|
||||
Εδώ μπορούμε να ορίσουμε το που θα προωθούνται οι κλίσεις που δεχόμαστε (\<νούμερο\>) όταν ικανοποιούνται τα κριτήρια που ορίζουμε (\<λόγος\>). Επίσης μπορούμε
|
||||
να διαγράψουμε κάποια ενεργή προώθηση κλίσεων (\<κατάσταση\> = erase). Επίσης μπορούμε να ορίσουμε (σε κάποιες περιπτώσεις) μετά από πόση ώρα θα γίνει η
|
||||
προώθηση κλίσεως.
|
||||
|
||||
**-o pin \<νούμερο\>**
|
||||
|
||||
Ρυθμίζει τον αριθμό pin της κάρτας sim.
|
||||
|
||||
**-o setsca \<νούμερο\>**
|
||||
|
||||
Ορίζει τον αριθμό του κέντρου διαχείρισης μηνυμάτων.
|
||||
|
||||
|
||||
### [4. Επίλογος]{#s4}
|
||||
|
||||
Μην περιμένετε όλα αυτά τα θαυμαστά πράγματα να δουλέψουν απρόσκοπτα σε όλα τα κινητά της αγοράς. Για παράδειγμα, δεν μπόρεσα να κάνω το gsmsmsd να δουλέψει με
|
||||
το motorola timeport 250 που έχω καθώς και πολλές από τις πληροφορίες που δίνει το gsmctl έδιναν ένα θαυμάσιο μήνυμα λάθους. Παρόλα αυτά όμως με λίγο
|
||||
πειραματισμό δεν αποκλείεται να καταφέρετε να κάνετε τα θαυμαστά πράγματα που υπόσχεται το άρθρο. Λίγος παραπάνω κόπος ίσως είναι αρκετός να σας δώσει την
|
||||
δυνατότητα να διαχειριστείτε τον τηλεφωνικό σας κατάλογο ακόμα και στα ελληνικά καθώς και να διαχειριστείτε εξ\' αποστάσεως τον υπολογιστή σας με μόνο μέσο το
|
||||
κινητό σας τηλέφωνο.
|
||||
|
||||
Όσο εξελίσσονται και ωριμάζουν σιγά-σιγά τα σχετικά προγράμματα (ίσως και με την δική σας συνεισφορά) η ευχρηστία τους θα γίνεται όλο και λιγότερη. Ελπίζω το
|
||||
παρόν άρθρο να ήταν αρκετά ενδιαφέρον δίνοντας σας ερεθίσματα για πολλές εξαιρετικά ενδιαφέρουσες εφαρμογές.
|
||||
|
1280
content/articles/33/05_rce2.md
Κανονικό αρχείο
1280
content/articles/33/05_rce2.md
Κανονικό αρχείο
Το diff αρχείου καταστέλλεται επειδή είναι πολύ μεγάλο
Φόρτωση διαφορών
Φόρτωση…
Προσθήκη πίνακα
Προσθήκη υπερσυνδέσμου
Παράθεση σε νέο ζήτημα