| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 
 | <!doctype LINUXDOC system>
<linuxdoc>
<!-- LinuxDoc file was created by LyX 1.0 (C) 1995-1999 by <sebi> Mon Apr 17 04:12:10 2000
-->
<article>
<titlepag>
<title>Gecomprimeerde TCP/IP-Sessies met op SSH lijkende tools
</title>
<author><name>Sebastian Schreiber <Schreib@SySS.de><newline>
Vertaald door: Ellen Bokhorst bokkie@nl.linux.org
</name>
</author>
<date>2.2.2000
</date>
</titlepag>
<sect>
<heading>Introductie</heading>
<p>
In het verleden, gebruikten we gecomprimeerde bestanden om diskruimte
te besparen. Tegenwoordig is diskruimte goedkoop - maar is bandbreedte beperkt.
Door het comprimeren van gegevensstromen bereik je twee doelen:
</p>
<p>1) Je bespaart op bandbreedte/transfered volume 
(dat is belangrijk als je voor
verkeer moet betalen of als je netwerk is geladen).
</p>
<p>2) Versnellen van low-bandwith connecties (Modem, GSM, ISDN).
</p>
<p>In deze HowTo wordt uitgelegd hoe je op zowel bandbreedte als
verbindingstijd kan beparen door gebruik te maken van tools
als SSH1, SSH2, OpenSSH of LSH.
</p>
</sect>
<sect><heading>Comprimeren van HTTP/FTP,...</heading>
<p>
Mijn kantoor is verbonden met een 64KBit ISDN lijn naar het internet, 
dus de maximum transportsnelheid is ongeveer
7K/s. Je kunt de connectie versnellen door het te comprimeren:
als ik bestanden download, toont Netscape een transportsnelheid tot aan 40K/s
(Logbestanden zijn comprimeerbaar tot een factor 15). SSH is een tool welke
hoofdzakelijk is ontworpen om veilige verbindingen tot stand te brengen over
onbeveiligde netwerken.
Bovendien is het met SSH mogelijk connecties te comprimeren en behoort
port forwarding tot de mogelijkheden (zoals rinetd of redir).
Dus is het de juiste tool voor het comprimeren van iedere eenvoudige
TCP/IP-connectie. "Eenvoudig" betekent dat er slechts één 
TCP-connectie geopend is.
FTP-connecties of een connectie tussen
between M$-Outlook en MS-Exchange zijn niet eenvoudig aangezien er
verscheidene verbindingen tot stand worden gebracht.
SSH gebruikt het LempleZiv (LZ77) compressie algoritme - dus je
zal dezelfde hoge compressie-verhouding bereiken als met winzip/pkzip.
Om alle HTTP-connecties vanaf mijn intranet naar het internet te comprimeren,
hoef ik op mijn dial-in computer slechts één opdracht 
uit te voeren:
</p>
<p><tt>ssh -l <login ID> <hostname> -C -L8080:<proxy_at_ISP>:80
-f sleep 10000</tt> 
</p>
<p><<tt>hostname</tt>> = host bij mijn ISP. SSH-toegang is vereist.
</p>
<p><<tt>login ID</tt>> = mijn login-ID op <<tt>hostname</tt>>
</p>
<p><tt><proxy_at_ISP> =</tt>de web proxy van mijn ISP
</p>
<p>Mijn browser is zodanig geconfigureerd dat het <tt>localhost:8080</tt>
als proxy gebruikt. Mijn laptop is verbonden met dezelfde socket.
De verbinding wordt gecomprimeerd en door SSH naar de echte proxy doorgestuurd.
De infrastructuur ziet er ongeveer zo uit:
</p>
<p>
<verb>                  64KBit ISDN
Mijn PC------------------------------Een PC (Unix/Linux/Win-NT) bij mijn ISP
SSH-Client         gecomprimeerd     SSH-Server, Poort 22
Poort 8080                           |
|                                    |
|                                    |
|                                    |
|10MBit Ethernet                     |100MBit
|niet gecomprimeerd                  |niet gecomprimeerd
|                                    |
|                                    |
Mijn tweede PC                       ISP's WWW-proxy
met Netscape,...                     Poort 80
(Laptop)
</verb>
</p>
</sect>
<sect><heading>Email comprimeren</heading>
<sect1><heading>Inkomende Emails (POP3, IMAP4)</heading>
<p>De meeste mensen halen hun email vanaf de mailserver op via POP3. POP3 is
een protocol met vele nadelen:
</p>
<p>
<enum>
<item>POP3 transporteert het wachtwoord in gewone tekst. 
(Er zijn SSL-implementaties van POP/IMAP en een challenge/response
authenticatie, gedefinieerd in RFC-2095/2195).
</item>
<item>POP3 veroorzaakt veel protocol overhead: 
ten eerste verzoekt de client om een bericht, dan stuurt de server het bericht
op. Daarna verzoekt de client het getransporteerde artikel te verwijderen.
De server bevestigt de verwijdering. Daarna is de server pas klaar voor de
volgende transactie. Dus voor iedere email zijn 4 transacties nodig.
</item>
<item>Alhoewel email hoog comprimeerbaar (factor=3.5) is, transporteert
POP3 de mail ongecomprimeerd.
(factor=3.5).
</item>
</enum></p>
<p>Je zou POP3 kunnen comprimeren door localhost:110 via een gecomprimeerde
connectie naar je ISP's POP3-socket door te sturen. Daarna moet je je
mail-client vertellen een verbinding te maken met localhost:110 om mail te
downloaden. Dat beveiligt en versnelt de connectie -- maar de downloadtijd
ondergaat nog steeds de aan POP3 inherente protocol overhead.
</p>
<p> 
</p>
<p>Het heeft zin POP3 door een wat efficiënter protocol te vervangen.
De gedachte hierachter is de gehele mailbox in één keer
te downloaden zonder het genereren van de protocol overhead.
Bovendien heeft het zin de connecties te comprimeren. De juiste tool welke
beide mogelijkheden biedt is SCP. Je kunt je mailbestand als volgt
downloaden:
</p>
<p> 
</p>
<p><tt>scp -C -l loginId:/var/spool/mail/loginid /tmp/newmail</tt>
</p>
<p> 
</p>
<p>Maar er is een probleem: wat gebeurt er als een nieuwe email arriveert
op de server tijdens het downloaden van je mailbox?
De nieuwe mail zou verloren gaan. Daarom heeft het meer zin de volgende
opdrachten te gebruiken:
</p>
<p><tt>ssh -l loginid mailserver -f mv /var/spool/mail/loginid /tmp/loginid_fetchme
</tt>
</p>
<p><tt>scp -C -l loginid:/tmp/my_new_mail /tmp/loginid_fetchme</tt>
</p>
<p>Een verplaatsing (mv) is een elementaire bewerking, dus je geraakt niet
in moeilijkheden als je tijdens de uitvoering van de opdrachten nieuwe mail
ontvangt. Maar als de directory's /tmp/ en /var/spool/mail op de mailserver
niet op dezelfde disk staan, krijg je wellicht problemen.
Een oplossing hiervoor is een lockbestand op de server aan te maken voordat
je de mv uitvoert:
<tt>touch /var/spool/mail/loginid.lock</tt>. Je zou het erna moeten 
verwijderen. Een betere oplossing is het bestand loginid naar dezelfde
directory te verplaatsen:
</p>
<p><tt>ssh -l loginid mailserver -f mv /var/spool/mail/loginid /var/spool/mail/loginid_fetchme
</tt>
</p>
<p>Daarna kun je formail gebruiken in plaats van procmail om /tmp/newmail
naar de juiste foler(s) te filteren:
<tt>formail -s procmail < /tmp/newmail</tt>
</p>
</sect1>
<sect1><heading>Uitgaande Email (SMTP)</heading>
<p>Je stuurt email over gecomprimeerde en versleutelde SSH-connecties om te:
to:
</p>
<p>
<itemize>
<item>Besparen op netwerkverkeer
</item>
<item>De connectie te beveiligen (Dit heeft geen zin als de mail later via
niet te vertrouwen netwerken wordt getransporteerd).
</item>
<item>De authenticiteit van de zender te bevestigen.
Veel mailservers weigeren het heruitzende van mail om misbruik te voorkomen.
Als je email over een SSH-connectie zendt, denkt de remote mailserver
(b.v. sendmail of MS-exchange) lokaal een verbinding te hebben.
</item>
</itemize></p>
<p>Als je SSH-toegang op de mailserver hebt, heb je de volgende opdracht
nodig:
</p>
<p><tt>ssh -C -l loginid mailserver -L2525:mailserver:25</tt>
</p>
<p>Als je geen SSH-toegang tot de mailserver hebt, maar tot een server die
het toestaat dat je je mailserver als relay gebruikt, is de opdracht:
</p>
<p><tt>ssh -C -l loginid other_server -L2525:mailserver:25</tt>
</p>
<p>Daarna kun je je mailclient (of mailserver: zie "smarthost") zodanig
configureren dat het mail naar de localhost poot 2525 stuurt.
</p>
</sect1>
</sect>
<sect>
<heading>Gedachten over de performance.</heading>
<p>Uiteraard neemt de compressie/encryptie CPU-tijd. Het bleek dat een
oude Pentium-133 ongeveer 1GB/uur kon versleutelen en comprimeren -- dat is
heel wat. Als je SSH met de optie &dquot;--with-none&dquot; compileert, kun
je SSH laten weten geen encryptie te gebruiken.
Dat bespaart wat van de performance. Hier is een vergelijking tussen
verscheidene download methoden
(tijdens de test, werd een ongecomprimeerd 6MB-bestand getransporteerd vanaf
een 133MHz-Pentium-1 naar een 233MHz Pentium2 laptop over een
10MBit ethernet zonder andere load).
</p>
<p>
<verb>
+---------------+------+-----------+-----------+----------------------+
|               |  FTP |versleuteld| gecompri- | gecomprimeerd &  |
|               |      |           | meerd     |    versleuteld       |
+---------------+------+-----------+-----------+----------------------+
+---------------+------+-----------+-----------+----------------------+
|Verstreken tijd| 7.6s |   26s     |    9s     |          23s         |
+---------------+------+-----------+-----------+----------------------+
|Doorvoer       |790K/s|  232K/s   |  320K/s   |        264K/s        |
+---------------+------+-----------+-----------+----------------------+
|Compressie     |      |           |           |                      |
|Factor         |  1   |    1      |    3.8    |          3.8         |
+---------------+------+-----------+-----------+----------------------+
</verb></p>
</sect>
<sect><heading>Groeten</heading>
<p>Met dank aan Harald Knig <koenig@tat.physik.uni-tuebingen.de>, wie
rcp gebruikte om complete mailboxen te downloaden. De laatste versie van deze
howto is beschikbaar op <tt>http://www.syss.de/howto.</tt>
</p>
</sect>
</article>
</linuxdoc>
 |