Entries filed under Networking

IPv6 Privacy extensions Ubuntu 10.04

Posted on 15. Januar 2011 Comments

If not already happened, add the following to /etc/udev/rules.d/70-persistent-net.rules:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*",
RUN+="sysctl net.ipv6.conf.%k.use_tempaddr=2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*",
RUN+="sysctl net.ipv6.conf.%k.use_tempaddr=2"

Usually this happens when installing miredo or similar IPv6 tunneling software, but you might want to double-check it. Also, check if the eth* and wlan* fit your ethernet/wifi devices.

btw, unfortunately Android and I-Phone Devices don’t have this, which causes quite a bit privacy concerns, see heise.de on IPv6 on Smartphones for more information (German)

flattr this!

iodine – free wifi hotspots mit IPv4 ueber DNS und Dockstar

Posted on 5. Dezember 2010 Comments

Jeder kennt das Problem, das man am Gate am Flughafen sitzt oder im ICE und es gibt einen W-LAN Hotspot, nur leider muss man dafür zahlen…In Australien gab es an jeder Ecke Paid HotSpots(häufig Global Gossip), zu horrenden Preisen und mit einer unverschämt langsamen Verbindung.

Nun hab ich grade eine Lösung für solche bzw. die meisten solcher unangenehmen Anbieter gefunden: iodine

Dieses kleine Programm sendet alle Pakete über Port 53, also DNS, welches die meisten Firewalls durchlassen, testen kann man das mit folgendem Befehl oder mit dig:

$ ping repat.de
PING repat.de (212.12.54.159) 56(84) bytes of data.

Wenn sich also der Name in eine IP-Adresse auflöst, dann sollte das hier prinzipiell möglich sein.

Eine kleine Anleitung, da ich hier nicht alles aufschreiben kann, was gemacht wurde: Als erstes muss eine Subdomain eingerichtet und DNS richtig konfiguriert werden für die Domain, dazu braucht man vollen Zugriff. Es ist mit einer dyndns Adresse unseres Wissens nicht möglich, s. dazu das README .

Dann kann man auf der Dockstar, einem kleinen Homeserver, oder auch auf jedem beliegen Server, auf den man Root-Zugriff hat, den iodine-server starten :

iodined -P password 192.168.3.123 meine.dyndns.tld

Auf dem Client jetzt die /etc/default/iodine anpassen:

# Default settings for iodine. This file is sourced from
# /etc/init.d/iodined
START_IODINED="false"
IODINED_ARGS="192.168.3 tunnel.domain.tld"
IODINED_PASSWORD="Passwd"

Falls man die Dockstar benutzt, muss man nur noch Port 53 auf die Dockstar IP im Router forwarden und den Client starten:

sudo iodine -f tunnel.domain.tld

tunnel.domain.tld ist die subdomain, die von der Domain für meine dyndns Adresse eingerichtet ist.

Voila, kostenloses Internet überall:)

//update

Geschwindigkeitsoptimierer:

  • Bilder ausstellen
  • Einen User-Agent von mobilen Geräten/Smartphones benutzen(z.B. mit User Agent Switcher als Firefox-Plugin)
  • Opera Turbo aktivieren beim Opera Browser(Website wird von Opera Servern angefragt, komprimiert, dir zugesendet und dort wieder entpackt, also quasi ein Proxy)
  • lynx als textbasierten Browser

Es gibt auch noch eine ICMP Version: ICMPTX

flattr this!

Skype Alternative: XMPP/jabber mit jingle

Posted on 20. November 2010 Comments

Viele wissen nicht, dass der Sourcecode von Skype nicht öffentlich ist – im Gegenteil: es wird nicht gerade wenig Energie darauf verwendet, das Programm nicht reverse engineerbar zu gestalten. Niemand weiss also, was da eigentlich passiert.

Zum Glück gibt es (schon seit einiger Zeit) eine freie Alternative zu Instant Messaging Programmen: Jabber bzw. das Protokoll XMPP. Das wird übrigens auch von Google Talk, Facebook Chat, einigen Android Anwendungen, identi.ca und vielen mehr verwendet. Um Sprache zu übertragen braucht der Jabber Client zusätzlich noch die sog. jingle – Erweiterung.

gajim, jabbin und empathy unter Linux haben beide diese Funktionalität und es klappt auch wunderbar, das habe ich grade mit meinem eigenen dockstar jabber server ausprobiert, allerdings stürzte empathy noch ab, gajim funktionierte einwandfrei. Jetzt muss man nur noch seine Freunde davon überzeugen, sich einen Jabber Account zuzulegen, z.B. bei jabber.org oder jabber.ccc.de

flattr this!

Apache2, mod_security, mod_chroot und OpenID

Posted on 5. November 2010 Comments

So, das war eine lange Nacht…

Ein Debian Server mit OpenID auf der Dockstar sollte es werden, garnicht so einfach. Ich hatte mich für phpmyopenid, einer Installation des populären phpmyid entschieden, das Ganze läuft über apache2.

Den hatte ich hier schonmal so sporadisch am laufen, aber ich hatte mir nie wirklich Gedanken um Sicherheit gemacht, da ich den immer nur kurz an und dann gleich wieder ausgestellt hatte. Hier also ein paar Tricks zum Sichern eines Apaches(keine Garantie für irgendwelche Schäden bzw. Entschädigung für Hacks etc!)

Diese nette Anleitung von petefreitag.com: 20 ways to Secure your Apache Configuration

Das Modul mod_security, dafür gibt es folgendes Debian Paket: libapache-mod-security und mod-security-common

Das Modul mod_chroot, dafür gibt es ebenfalls ein Debian Paket: libapache2-mod-chroot und mod-chroot-common

Die müssen erstmal installiert werden. Am besten mal Google danach fragen, da muss man sich einfach reinlesen, und zwar nicht grade wenig;)

Dann kann man eigl dieser Anleitung auf howtoforge folgen.

Ich hab mich für 3.2 entschieden, da eh nur eine Instanz bei mir läuft. Den Link zu dem PID File brauchts aber trotzdem. einfach in /etc/apache2/sites-available/default von /var/www zu / tauschen.

Nun müssen die richtige Rechte gesetzt werden, da bin ich mir nicht ganz sicher. Damit phpmyopenid läuft muss, natürlich, php5 installiert sein.

Im Jail geht das nun aber eigl nicht, also hab ich mal den Ordner in /var/www kopiert, erstmal alle Rechte gegeben und dann so eingestellt, dass nur Eigentümer und Gruppe drauf zugreifen können. Apache läuft bei mir nicht mehr unter der Standartgruppe und der User hat auch keine shell sondern /dev/null.

#cp -r /var/lib/php5 /var/www/var/lib
#chmod -R 777 /var/www/var
#chmod -R o-rwx /var/www/var

Das müsste ja insofern sicher sein, als dass das Ding ja eh in ner Art Sandbox läuft oder? Vll kann das ja mal jmd kommentieren oder mir ‘ne Mail schicken. Selbst wenn jetzt der OpenID Server komprimitiert wird, ist der Server an sich ja sicher.

Damit man die Fehlermeldung noch umgeht hab ich in /etc/httpd.conf (wird von apache2.conf eingebunden) noch

ServerName alice.bob.org

geschrieben mit alice.bob.org als meinem dyndns Namen.

phpmyopenid war nicht wirklich schwierig:

  • mit wget runterladen
  • mit unzip entpacken
  • ordner nach /var/www verschieben
  • aus dem Versionsordner so entpacken: http://bob.alice.org/phpmyopenid
  • http://bob.alice.org/phpmyopenid/install.php
  • #rm /var/www/phpmyopenid/install.php

So das war’s hoffentlich, auf Rückmeldung bin ich immer gespannt:)

Anmeldungen sind natürlich witzlos ohne Verschlüsselung, deswegen wird das nächste Projekt wohl SSL sein, natürlich ein eigenes Zertifikat(s. Alternativlos Folge 5)

update:

Tipp: damit der Workload nicht so gross wird, einfach in der /etc/apache2/httpd.conf die Paramter StartServers und die folgenden ein bisschen runtersetzen, ausser man betreibt tatsächlich eine Homepage.

flattr this!

Jabber Server mit Debian Dockstar

Posted on 3. November 2010 Comments

Nach einigem Nachdenken, was ich nun(neben FTP/HTTP) mit dem Teil eigl anstellen will, kam mir die Idee eines eigenen Jabber Servers.
Im Ubuntu Wiki findet sich eine ziemlich gute Anleitung zu “ejabberd”, einem sowohl populären als auch einfachen Jabber-Server.

# apt-get install ejabberd
# dpkg-reconfigure ejabberd

Als Hostname habe ich da meinen schon vorhandenen DynDNS Namen genommen. Dann wurde ein Admin erstellt, Ports gemappt und es klapppt eigentlich auch schon. Evtl. bzw. je nach Wunsch kann/sollte man dann noch die Registrierung für neue User ausstellen.

Blöd nur, dass die DynDNS Adresse ja vom LAN aus nicht erreichbar ist. Ich habe da folgende Workarounds gefunden.

1. Kann man in den Einstellungen in den meisten Clienten den Server eingeben, bei dem man sich einloggen möchte, hier hab ich die lokale IP eingeben und bei Hostname trotzdem den DynDNS Namen(Screenshot)

2. Kann man in der Datei /etc/hosts einfach mit

IP DynDNS

also z.B.

192.168.1.3 homeserver.dyndns.org

eingeben und man wird automatisch weitergeleitet, das führt auch zu keinen Schwierigkeiten beim Zertifikat, Pidgin zumindest hat nochmal nachgefragt.

Vorteil an 1. Variante ist, dass man sich 2 Accounts erstellt, jenachdem wo man ist(nützlich bei Laptop) nimmt man eben einen anderen Account. Bei Desktop PCs ist es dann ziemlich egal was man nimmt, da geht 2. genauso gut, ich wollte nur beides erwähnen, weil mir die /etc/hosts als erstes einfiel.

Was natürlich auch noch geht, ist Proxys bzw. TOR nutzen und sich dann über fremde Server wieder zuhause einwählen um dann wieder in die weite Welt hinauszutelefonieren. Quark also;)

Vielleicht kommt ja in nächster Zeit noch was, meine nächste Idee wäre OpenID…mal sehen ob das klappt….z.B. für identi.ca

update:

Hab’s geschafft: OpenID auf meiner Dockstar

flattr this!

Diaspora on Dockstar with Debian Lenny

Posted on 13. Oktober 2010 Comments

I’ll write this in English because more people might want to read it;)

Diaspora, programmed by 4 young hackers in NYC, is “The privacy aware, personally controlled, do-it-all, open source social network”(joindiaspora.com). Some say it’s gonna be a facebook killer, some say it’s gonna fail for various reasons. Basically, the idea is to create your own server – seed – which “speaks” to other servers on the diaspora network, so a decentralized network instead a central server(farm) like facebook or several others. The main reason to do this is that your data stays in your own hands. Therefore everybody would have to install their own servers, which 99,9% of all internet users wouldn’t, simply because they wouldn’t know how.

Unfortunately they decided to write the whole thing in ruby(on rails), which I don’t know and most of the paid-hosters don’t support by default(unlike http/php/mysql/perl). As the database system they chose MongoDB, unusual as well.

My idea would have been, to install Diaspora on a mini server like the Sheeva Plug or Dockstar(3-5 Watt), with a debian/gentoo system on a USB Stick. It’s not to hard, there are a lot of tutorials on the internet. All the packages, like ruby/rake are supported. But would have? Yes, because obviously MongoDB doesn’t support ARM(Debian Lenny on a Dockstar with all dependencies installed):

In file included from db/../bson/bsoninlines.h:21,
from db/jsobj.h:43,
from db/jsobj.cpp:21:
db/../bson/util/atomic_int.h:96:4: error: #error "unsupported compiler or platform"
scons: *** [db/jsobj.o] Error 1
scons: building terminated because of errors.

So unless you want to keep your HomePC running 24/7(effect on environment? energy cost?), there’s no chance to host your own Diaspora seed at home. Therefore you have to pay a hoster to do so, and nearly nobodie’s gonna do that, because facebook is for free. I don’t think Diaspora will change their database system, so this goes out to all MongoDB developers: Please add support for ARM! According to this post on in a google group it can’t be too hard, but I really can’t tell:/ As I found out while googling I obviously wasn’t the only person who thought this might be a good idea:)

I’ll try to keep you uptodate, if anybody finds a solution, please post a comment:)

update: I just tried to use the same code for ARM as for i386 and – of course – got an error:

/tmp/ccEB7sgz.s: Assembler messages:
/tmp/ccEB7sgz.s:7236: Error: bad instruction `lock'
/tmp/ccEB7sgz.s:7237: Error: bad instruction `xadd r3,[r2,#0]'

Unfortunately I don’t know any ARM ASM, but maybe someone can translate?

update: In the code(/bson/util/atomic_int.h) it said

#elif defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
// this is in GCC >= 4.1

So I just added || defined(__arm__) because my dockstars gcc said:

# gcc -v
Using built-in specs.
Target: arm-linux-gnueabi
Configured with: ../src/configure -v --with-pkgversion='Debian 4.3.2-1.1'
 --with-bugurl=file:///usr/share/doc/gcc-4.3/README.Bugs --enable-languages=c,c++,fortran,
objc,obj-c++ --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib
 --without-included-gettext --enable-threads=posix --enable-nls
 --with-gxx-include-dir=/usr/include/c++/4.3 --program-suffix=-4.3 --enable-clocale=gnu
 --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --disable-libssp --disable-sjlj-exceptions
 --enable-checking=release --build=arm-linux-gnueabi --host=arm-linux-gnueabi --target=arm-linux-gnueabi
Thread model: posix
gcc version 4.3.2 (Debian 4.3.2-1.1) 

I thought this might work. Then it compiled for about 3 hours and I got this error:

db/jsobj.o: In function `mongo::AtomicUInt::operator++(int)':
/root/mongo/db/../bson/util/atomic_int.h:60: undefined reference to `__sync_fetch_and_add_4'
util/message.o: In function `mongo::AtomicUInt::operator++(int)':
/root/mongo/util/../util/../db/../bson/util/atomic_int.h:60: undefined reference to `__sync_fetch_and_add_4'
db/stats/counters.o: In function `mongo::AtomicUInt::operator++(int)':
/root/mongo/db/stats/../../bson/util/atomic_int.h:60: undefined reference to `__sync_fetch_and_add_4'
/root/mongo/db/stats/../../bson/util/atomic_int.h:29: undefined reference to `__sync_fetch_and_add_4'
/root/mongo/db/stats/../../bson/util/atomic_int.h:29: undefined reference to `__sync_fetch_and_add_4'
db/stats/counters.o:/root/mongo/db/stats/../../bson/util/atomic_int.h:29: more undefined references to `__sync_fetch_and_add_4' follow
s/chunk.o: In function `mongo::AtomicUInt::operator++()':
/root/mongo/s/../client/../util/../util/../db/../bson/util/atomic_int.h:57: undefined reference to `__sync_add_and_fetch_4'
/root/mongo/s/../client/../util/../util/../db/../bson/util/atomic_int.h:57: undefined reference to `__sync_add_and_fetch_4'
/root/mongo/s/../client/../util/../util/../db/../bson/util/atomic_int.h:57: undefined reference to `__sync_add_and_fetch_4'
collect2: ld returned 1 exit status
scons: *** [mongodump] Error 1
scons: building terminated because of errors.

Any ideas? Seems like gcc has to be >= 4.4.0. Might be a good idea to install squeeze instead of lenny but it’s nearly 5am and I can’t be bothered now;)

Update: at the MongoDB Bugtracker the user Eliot Horowitz stated:

“Unfortunately compiling is only a small portion of the issue.
The bigger problem is endianness – which is fixable, just a fair amount of work.”

I guess we’ll just have to wait-.-

Update: Great news! Looks like somebody finally did it:

Although they did not really write a tutorial… I can’t seem to find that many differences in the code but it’s definitly right, that ARM is bi-endian(didn’t know that until my professor told me this semester). Might work with the newser gcc version. Anyway, if I find some free time, I’ll test it.

 

Related:

 

flattr this!

mapstraceroute – graphical traceroute with google maps

Posted on 17. Mai 2010 Comments

German/Deutsch

Wird mal wieder Zeit für ein neues Projekt von mir. Ich hatte ja schonmal irgendwann über Gtrace/Geotrace/xtraceroute etc geschrieben, aber diese Programme sind alle schon knapp 10 Jahre alt. Teilweise funktionieren sie noch aber in Zeiten von google maps und APIs kam mir die Idee ein neues Programm zu schreiben, in Python. Ich hab wirklich einfach mal drauf losgeschrieben, ohne einen Plan. Der Code sieht nicht besonders schön aus(grade nicht für python), das weiss ich.

Das Programm bekommt also vom Programm traceroute die IP-Adressen, holt sich dann von hostip.info die entsprechenden Koordinaten und mithilfe des python wrappers für die google maps API pymaps wird dann eine HTML-Seite erstellt. Diese wird direkt im Anschluss über das python modul python-gtkmozembed angezeigt. Sie enthält allerdings bis jetzt nur Punkte. Demnächst werd ich mich nochmal damit beschäftigen, dass zwischen den Punkten dann in der richtigen Reihenfolge auch Linien gezogen werden. So sieht das Ganze bis jetzt aus.

English

Time for another one of my projects. I blogged about GTrace/Geotrace/xtraceroute a while ago, but these applications are nearly 10 years old. They partly work but in times of google maps and APIs my idea was to write a new app, this time in python. I really didn’t have any plans how to do it, I just started writing. It’s not very code(especially for python), I know.

My application gets the IP adresses from the (system) traceroute command, then receives the coordinates from hostip.info and with the python wrapper for the google maps API – pymaps – a HTML page is genereated. This HTML page if opened by the python module python-gtkmozembed. Until now there are only points, but if I’ve got some free time in the next couple of months, I’m trying to draw lines too. This is what it looks like until now.

Requirements:

How-To:

  1. Download
  2. unpack and cd in the folder
  3. run install.sh as root or with sudo
  4. try it out: mapstraceroute <host>

There’s heaps of things to do though(Thats why it’s only o.1a;)):

  • rewrite the code a bit more elegant and python-like;)
  • draw lines between the points
  • include own traceroute in python(?)

flattr this!

Orpheus Abspielprobleme

Posted on 10. Mai 2010 Comments

Kurz nachdem ich dachte, dass ich einen richtig coolen Mp3player für die commandline gefunden habe, hat orpheus rumgesponnen und nach einem fertig gespielten Lied alle anderen für ca. 1-2 Sekunden angespielt und ist dann weiter gesprungen bis zu Ende der Playlist.

Ich hab ein bisschen rumprobiert und mir nachher über

sudo apt-get install mpg321

ein alternatives Backend geholt. Was ich nun also probiert habe, ist dergleiche Befehl, nur mit mpg321 statt mpg123:

mpg321 -R -

spielt orpheus wie gewünscht alle Files der Playlist schön hintereinander ab, warum auch immer, aber es funktioniert:)

flattr this!

Cool things to do with ssh and Linux

Posted on 10. Mai 2010 Comments

Ich habe mich in den letzten paar Tagen mal mit SSH auseinandergesetzt und folgende “Projekte” sind entstanden:

1. Webcamübertragung

2. VNC, also Remote Desktop Steuerung

3. Steuerung von mp3playern/Musik generell

1. Wie schon im anderen Artikel beschrieben, nutzt man hier das /dev/videoX – Device, welches – im Normalfall – eine Webcam enthalten sollte. Drauf achten, dass es nicht z.B. TV-Karte ist. Einige Tips zum Einrichten der Webcam gibt es hier

Um nicht potentiell seinen Webcam Stream anderen zugänglich zu machen, kann man also einen SSH Tunnel nutzen. Dazu muss zum WebcamPC mit einem Client mit folgendem Befehl ein Tunnel erstellt werden:

ssh -L 9091:localhost:9091 user@host

Natürlich kann man hier jeden beliebigen Port nehmen. Wenn man schonmal über SSH verbunden ist, kann man hier auch gleich den VLC Stream starten:

vlc v4l2:// :v4l2-dev=/dev/video0 :v4l2-adev=/dev/dsp :v4l2-standard=0 :sout="#transcode{vcodec=mp4v,vb=640,scale=0.9,acodec=mpga,ab=128, channels=2}:duplicate{dst=std{access=http,mux=ts,dst=localhost:9091}}"

Dieser ganze Kram gibt einen VCL Stream mit dem V4L2Framework aus und zwar mit der Ausflösung 640 und einer grösse von 0.9. Guckt euch die VLC Seite zu Streaming an:

Jetzt braucht man nur noch einen geeigneten Client um das alles anzugucken…wie wärs mit VLC? Also:

vlc http://localhost:9091

Fertig ist der Stream:) Das hab ich mir natürlich nicht komplett alleine zusammengebastelt also danke an Ben von MoBlog.

Wenn es hier Probleme mit der Webcam gibt, guckt doch einfach mal einen Beitrag tiefer;)

2. Ok, selbes Spiel hier, nehmen wir mal den Port 5900 für VNC, also Tunnel erstellen:

ssh -L 5900:localhost:5900 user@host

Selbes Spiel, jetzt sind wir schonmal da, starten wir doch x0vncserver(evtl über -PasswordFile ein Passwort angeben, lässt sich mit vncserver anlegen). Dann nur noch mit einem VNC Client auf localhost:0 connecten und das wars schon. Alternativ kann man natürlich auch :1 oder :2 connecten, jenachdem welchen Server man startet, dazu gibt es eine gute Seite aus dem Ubuntu Wiki: http://wiki.ubuntuusers.de/VNC

3. Ok, dieser Teil hat etwas länger gedauert. Ich wollte also über SSH, z.B. über ein Android/Iphone-Handy oder über einen anderen Rechner einen vollwertigen MP3/OGG-Player haben. VLC geht natürlich wieder über eine Standard SSH Verbindung:

ssh user@host
vlc -I ncurses

Irgendwie war ich damit aber nicht so zufrieden, also hab ich mal weiter gegoogelt und habe mp3blaster und orpheus gefunden. Beide eigentlich ganz zufriedenstellend, nur ist bei mp3blaster die Funktion “Select Files” auf F1 gelegt und das ruft im gnome-terminal nunmal die Hilfe aus-.- Das lässt sich bestimmt umstellen, aber mit orpheus war ich eigentlich ganz zufrieden, also hab ich den genommen.

Alternative: audacious2 mit audtty, da gibt es nur ein kleines Problem mit d-bus. Man muss dann ein kleines Script ausführen und wenn ich über WOL den Rechner anmache, muss ich – soweit ich das verstanden habe – am eigentlichen Rechner sitzen, und das ist nunmal nicht der Fall und nervt. Ausserdem hat es bei mir nur einmal funktioniert. Klar, hier geht auch mplayer/mpd etc.

http://www.videolan.org/doc/streaming-howto/en/streaming-howto-en.html

flattr this!

/dev/video0: Permission denied

Posted on 9. Mai 2010 Comments

Für alle die das auch bekommen, wenn sie mit einem Programm und User Rechten auf die Webcam zugreifen möchten, auch nachdem man tausend Sachen versucht hat, von chown user /dev/video0 bis chmod 777 /dev/video0, es hat alles nichts genützt, weil der Fehler dort garnicht lag, sondern an einer ganz anderen Datei. Alternativ geht das alles mit sudo, also Root Rechten, aber das ist ja nicht wirklich das wahre und hilft in einigen Sachen(Webcam Streaming) auch nicht weiter. Abhilft schafft

$ sudo chown user.group /dev/shm/usb-*

Jetzt kann ich endlich beruhigt schlafen:)

flattr this!