Computer Meine Musik Gallerie Links Home

"Computer"

 

Delegate

- delegate-
Die eierlegende Wollmilchsau

 

  Ein kleines Vorwort  
  Delegate wurde im Jahre März 1994 als kleiner Proxy für das fast vergessende Internet Protokoll Gopher von Yutaka Sato aus Japan entwickelt. Inzwischen ist er eine ausgewachsene Application der Proxys für fast alle Protokolle zur Verfügung stellen kann.

* HTTP, FTP, POP, Telnet, Gopher, LDAP, Socks als ungebundene Proxys

* NNTP, SMTP, Wais, X Window, LPR, ICP als gebundene Proxys

Delegate kann als Protokoll Gateway für HTTP zu HTTPS, NNTP zu HTTPS oder FTP zu HTTP eingesetzt werden. Außerdem Cache er nicht nur HTTP, auch als FTP Cache kann er eingesetzt werden. Ein besonderes Feature ist das Tunneling von SSH zwischen zwei delegates. So das z.B. ein webbasierenes SSH getunnelt werden kann. Er kann Resolver Controll, das heißt er weiss wo er eine Namensauflösung zu suchen hat und er kann auch Routing, so das z.B. ssl Verbindungen nicht über unbekannte Routen gehen können. Ausserdem kann er als einfacherer Server für HTTP, FTP (read only), NNTP und DNS *missbraucht* werden. Es gibt noch viele andere Möglichkeiten die delegate kann, erwähnenswert wären da unter anderem ACCESS CONTROL, DATA CONVERSION, CONNECTION SHARING als Beispiele.

Über die gesamten Möglichkeiten informiert man sich am besten hier --> http://www.delegate.org/delegate/features
oder über die unterstützenden Standards hr -->
http://www.delegate.org/delegate/RFC.html
 
 
  delegate kompilieren und installieren  
  Nach dem man sich die Resourcen von http://www.delegate.org/delegate/ gedownloadet hat, entpackt man sich das Paket in einem Verzeichniss. Dann wechselt man in das entstandene Verzeichniss delegate-xxx und dann gleich weiter ins Verzeichniss /src. Hier muss im Makefile der Name des zukünftigen Administrators und das Password in Zeile 28 und 29 eingetragen werden. Was mir aufgefallen ist, hier bitte keine Sonderzeichen benutzen. Setzt man hier kein Password, kann der Deamon dann später von jedem gestartet werden. Nicht vergessen das Password nach dem erfolgreichen Kompilieren wieder rauszulöschen.

Danach wechselt man wieder ins Hauptverzeichniss von delegate und kompiliert das Ganze mit dem Kommando make.

Da delegate außer einem C- Compiler und die dazugehörigen Bibliotheken keine Abhängigkeiten hat und er statisch kompiliert wird, kann er auch auf einem anderem System vom selben Type kompiliert werden. Das finde ich wichtig zu erwähnen, da es ja auf einem Application Gateway keinen Compiler geben sollte.

Jetzt wird man nur noch nach der Email- Adresse des Admins gefragt, an diese Adresse gehen dann die Fehler - und Sicherheitsmeldungen.

Nach erfolgreichem kompilieren befindet sich jetzt in Verzeichniss src/ eine ca. 1,3 Mb große File mit Namen delegatd. Das ist unserer Proxy. Mehr nicht ;) Jetzt noch kopieren der File delegated nach /sbin auf den Application Rechner. Default läuft der Daemon als nobody/nogroup. Mehr dazu im nächsten Abschnitt, den mit kompilieren und installieren sind wir jetzt fertig.
 
 
  delegate einsetzten  
  Die Beispielbeschreibung bezieht sich hier auf die Grundlagen für einen http und einem ftp Proxy. Diese kann man im Grunde genommen auch für alle anderen Proxyarten benutzen. Über die weiteren Optionen zu den Proxy's solltet ihr das Manual von delegate lesen. Das beherrschen von IP - Netzwerken und seinen Protokollen ist Grundlage.

Der Rechner hat zwei Interface ,eins mit einer öffentlichen IP und eins mit der IP 192.168.1.2. an diesem hängt ein Klasse C Netz. Als Beispiel gibt es die darin die Rechner 192.168.1.10, 192.168.1.20 und 192.168.1.30. Der bevorzugter DNS Server hat die IP 217.9.42.98.

Um einen Http Proxy an den Start zu bekommen, muss man jetzt eigentlich nur noch folgendes in der Konsole eingeben:

delegated -P192.168.1.2:3128 SERVER=http RELIABLE=192.168.1.0/24 RES_NS=217.9.42.98 ADMINPASS=xxx

und entern.
Und schon läuft am Interface mit der IP 192.168.1.2 am Port 3128 ein normaler Cache HTTP Proxy, der Anfragen aus dem Netz 192.168.1.0/24 entgegen nimmt und die nötige Namensauflösung am DNS Server mit der IP 217.9.42.98 vornimmt. Alle nötigen Unterverzeichnisse werden beim ersten Aufruf des Deamon selbständig angelegt. Diese befinden sich im Home- Verzeichniss des Users, also /var/lib/nobody/delegate.

Mit einem delegated -P192.168.1.5:3128 -Fkill kann man den Proxy wieder abschalten. Ist doch ein Kinderspiel oder ?

Jetzt starten wir noch einen zweiten Proxy, einen ftp Proxy. Dies erfolgt nach dem selben Schema, nur das der Port und das Protokoll anders sein sollte.

delegated -P192.168.1.2:3131 SERVER=ftp RELIABLE=192.168.1.0/24 RES_NS=217.9.42.98 ADMINPASS=xxx

Um den ftp Proxy zum Cachen zu überreden muss man dies explizit anstellen. Dies macht man mit dem Schalter :

CACHE=do, dann noch am besten das Cache Verzeichniss angeben: CACHEDIR=/var/lib/nobody/delegate/cache zum Beispiel und schon werden die herunter geladenen Files gespeichert.

ein ps -ax | grep delegate zeigt uns folgendes:

xxx ? S 0:00 /sbin/delegated -{000}[RPM=0.00(0.0 0.0 0.0),IDLE=286s]-P192.168.1.5:3128 -- --
xxx ? S 0:00 /sbin/delegated -{000}[RPM=0.00(0.0 0.0 0.0),IDLE=271s]-P192.168.1.5:3131 -- --

Zwei Unabhängige Proxys, einer an Port 3128 und einer an Port 3131, diese modulare Prinzip hat den Vorteil, das wenn einer ausfällt, der andere davon nicht betroffen ist.

Im Home Verzeichniss /var/lib/nobody/delegate gibt es jetzt ein Verzeichniss cache, in diesem ein Verzeichniss http, dass das Cache Verzeichniss für den http Proxy ist. Hier werden alphabetisch nach URLs Verzeichnisse erzeugt, in denen dann die Files der Seiten zwischen gespeichert werden.

Das selbe passiert auch wenn wir jetzt über den ftp-Proxy etwas downloaden.

Damit diese Proxy's verwendet werden, muss entweder im entsprechenden Clienten der jeweilige Port angegeben werden oder jeweils transparente Proxy's eingerichtet werden. Man kann kann aber auch die Proxy's an die speziellen Ports binden. Wie um Beispiel einen FTP Proxy an Port 21 -->

delegated -P192.168.1.0:21 SERVER=ftp ...
 
 
  Was man noch so alles machen kann  
  Man kann die ganzen Schalter auch in ein Conf- File schreiben. Der Aufruf sieht dann so aus:

delegated +=http://server/path/of/parameters.txt

In dieser File stehen dann nur die einzelnen Schalter und Optionen. Ich allerdings benutze ein normales Shellscript dafür, in dem dann alle zu startenen Proxy's und die jeweils notwendigen Parameter stehen.
Hier noch ein paar speziellen Schaltern und Optionen von delegated.

nur eine bestimmte URL erreichen -->
PERMIT="*:*.reachable.domain:*"
eine bestimmte URL ausschliessen -->
PERMIT="*:!*.bad.domain:*"
beides in einer Zeile -->
PERMIT="*:*:10.10.10.2/32,192.168.100.0/255.255.255.0,*.my.domain,!bad.my.domain"
damit andere Protokolle über einen bestimmte Proxy gelassen werden -->
REMITTABLE="http,https/{443,563},gopher,ftp,wais"
Spezielle Header und Tags von html Sites Filtern -->
HTTPCONF=kill-qhead:Referer (qhead == Question in Header) oder
HTTPCONF=kill-rhead:Set-Cookie (rhead == Read in Header) oder
HTTPCONF=kill-tag:SCRIPT,APPLET
nur bestimmte User von bestimmten Rechnern zulassen -->
AUTH="admin:*:user@192.168.1.10
Cache Files per Cron sichern -->
EXPIRE=1d CRON="0 * * * * -expire 2d"
- Allgemeines forwarding zu einem anderen Proxy -->
PROXY="proxyHost:8080:*"
- forwarding und bestimmte Adressen ausschliessen ->
PROXY="proxyHost:8080:!*.meine.domaene,!*.bad.domain"
über den delegatd nur eine bestimmte URL aufrufen (an die URL binden) -->
-P80 SERVER=http://httpserver/
Ein HTTP- Proxy als Gateway für News Clienten benutzen -->
SERVER=http MOUNT="/news1/* nntp://ns1/*" MOUNT="/news2/* nntp://ns2/* "usw.
delegate unter einem anderen User/Group starten
OWNER="user/group"
delegate als http / ftp Server benutzen -->
-P80 SERVER=http MOUNT="/* /usr/local/www/*" REMITTABLE=file oder
-P21 SERVER=ftp MOUNT="/* /path/of/root/*" RELAY=no
RELAY=no bedeutet hier dann, dass er als Server arbeitet, also nicht als Proxy.
Auch hier kann man ein REMITTABLE einsetzten, damit nur bestimmte Filetypen gedownloadet werden können.
Beispiel: REMITTABLE="+,zip"
 
 
  Zum Schluss noch  
  Ich hoffe das diese kleine Einführung in einen der besten Proxy Server, den einen oder anderen die Scheu vor diesem nimmt. Ich bin hier nur auf die, meiner Meinung nach, wichtigsten und zum Betrieb eines http/ftp Server notwendigstes Schalter und Optionen eingegangen. Auf der Seite von delegate gibt es wie schon erwähnt, noch ?hundert? weiter Möglichkeiten wie man delegat einsetzten kann. Wie zum Beispiel das Tunneln von verschiedenen Protokollen zwischen zwei delegates per ssl, was ja fast einem VPN gleichkommt. Ein Projekt mit dem ich mich persönlich gerade befasse.

Also viel Spass beim probieren und falls es Fragen gibt
hier die Adresse der Mailinglist von delegate --> http://www.delegate.org/delegate/ml/delegate-en.html