+++
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
