Polska Planeta Debiana

Wpis zamieszczony o 00:06:35, 30 listopada 2007 - 16 komentarzy


Ubuntu ma swoją Planetę, czemu zatem Debian nie ma mieć polskiego odpowiednika Planet Debian?

Zatem - otwiera... tzn. startujemy! ;-) Hadret przeprowadził na swoim blogu ankietę, w której większość jego czytelników opowiedziała się za potrzebą powstania Planet Debian w naszym ojczystym języku. Troszkę pracy i oto jest:

Polska Planeta Debiana


Jesteś bloggerem? Piszesz o Debianie? Chcesz zwiększyć poczytność bloga (a któż nie chce ;-))? Napisz... Więcej szczegółów do znalezienia na stronie Polskiej Planety Debiana.

Ponadto, jeśli chcesz pomóc w tworzeniu serwisu, masz ciekawe pomysły do realizacji, piszesz artykuły bądź newsy ze świata Debiana, możesz dołączyć do naszej skromnej dwójki :-)
Pozostaje pytanie - czemu nikt się nie zajął portalem traktującym o systemie Debian GNU/Linux wcześniej?

Czytaj dalej : 16 komentarzy

Mała sieć domowa w oparciu o system Linux

Wpis zamieszczony o 17:57:35, 14 października 2007 - 58 komentarzy


Dzisiaj zajmiemy się tworzeniem małej, dość dobrze zabezpieczonej sieci domowej. Udostępnianie internetu zrealizujemy poprzez komputer-host z zainstalowanym systemem Linux (dowolnym, może być Ubuntu, Debian, Mandriva i inne). Pamiętajcie jednak, że Wasze środowisko może różnić się od środowiska zaprezentowanego w artykule – analizujcie treść a nie tylko przeklejajcie komendy do konsoli! Lecimy!

Załóżmy środowisko:

siec


Dla ułatwienia ustalmy hostname dla komputerów:


Oczywiście w sieci może być więcej komputerów – wystarczy do routera wsadzić większą ilość kart sieciowych. W przykładzie wykorzystałem 3 komputery z zainstalowanym systemem Debian GNU/Linux, nic jednak nie stoi na przeszkodzie aby był to jakikolwiek inny system operacyjny.

Dokładny opis naszej przykładowej sieci domowej:
Komputer1 (orion) ma 4 karty sieciowe na złączu PCI:

[22:00:05] night@orion:~$ lspci | grep -i ether
02:05.0 Ethernet controller: 3Com Corporation 3c940 10/100/1000Base-T [Marvell] (rev 12)
02:0b.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
02:0c.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8029(AS)
02:0d.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)


W kolejności są to interfejsy od eth0 do eth3, przy czym interfejs eth0 (gigabitowa karta 3com) jest wpięta do sieci internet dostając adres z klasy prywatnej 192.168.0.10.

<22:02:26> root@orion:/home/night# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0E:2E:90:A7:37
          inet addr:192.168.0.10  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20e:2eff:fe90:a737/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2274170 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2224882 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2140325129 (1.9 GiB)  TX bytes:1161463487 (1.0 GiB)
          Interrupt:21 Base address:0xd400

Konfiguracja kart sieciowych


Zaczynamy od konfiguracji pozostałych kart sieciowych. W tym celu wyedytujemy plik /etc/network/interfaces w poniższy sposób:

(...)
auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 10.0.0.1
netmask 255.255.255.0

auto eth2
iface eth2 inet static
address 10.0.1.1
netmask 255.255.255.0

auto eth3
iface eth3 inet static
address 10.0.2.1
netmask 255.255.255.0
(...)


I restart sieci:

# /etc/init.d/networking restart


To tyle w kwestii kart sieciowych. Teraz DHCP!

Konfiguracja serwera DHCP


Na początek szybka instalacja:

# apt-get install dhcp3-server


... i konfiguracja:

# rm /etc/dhcp3/dhcpd.conf; nano -w /etc/dhcp3/dhcpd.conf


W pliczku (który będzie pusty) wpisujemy dla każdej podsieci:

subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.3 10.0.0.254;
default-lease-time 6100;
option domain-name „nasza.domena”;
option domain-name-servers pierwszy.dns, drugi.dns;
option routers 10.0.0.1;
option subnet-mask 255.255.255.0;
option broadcast-address 10.0.0.255;

host scorpio { # komputer nr 1
      hardware ethernet adres.mac;
      fixed-address 10.0.0.2;
  }
}


Oczywiście zmieniamy domenę, dns’y na własne a adres.mac wypełniamy adresem MAC komputera nr 1 (scorpio). Pozwoli nam to przypisywać jeden i zawsze ten sam adres IP dla tej maszyny. Dla reszty podsieci deklarujemy podobnie:

subnet 10.0.1.0 netmask 255.255.255.0 {
range 10.0.1.3 10.0.1.254;
default-lease-time 6100;
option domain-name „nasza.domena”;
option domain-name-servers dns,pierwszy, dns.drugi;
option routers 10.0.1.1;
option subnet-mask 255.255.255.0;
option broadcast-address 10.0.1.255;


host scorpio { hardware ethernet adres.mac; fixed-address 10.0.1.2; } }


Analogicznie dla podsieci trzeciej zmiejając odpowiednio ustawienia IP w konfiguracji. Drobna zmiana w skrypcie startowym:

# nano -w /etc/default/dhcp3-server


gdzie definiujemy interfejsy na których działać ma serwer DHCP

INTERFACES="eth1 eth2 eth3"


... i restart demona

/etc/init.d/dhcp3-server restart


W tym momencie możemy sprawdzić, czy nasze stacje robocze otrzymały adres sieciowy (należy odświeżyć ustawienia IP na każdym z nich). Jeśli wszystko zrobiliśmy dobrze powinniśmy móc pingować każdy z naszych komputerów. Pozostało nam udostępnienie dla nich internetu.

Udostępnianie sieci


W tym celu stworzymy dodatkowy skrypt startowy:

# nano -w /etc/init.d/firewall


Do którego to wpiszemy następujące regułki iptables:

#linijka potrzebna do włączenia udostępniania internetu
echo 1 > /proc/sys/net/ipv4/ip_forward
#wyczyszczenie starych reguł z pamięci iptables
iptables -F
iptables -X
iptables -t nat -X
iptables -t nat -F
# ustawienie domyślnej polityki (o tym później)
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT
# Najważniejsze - udostępnienie sieci dla wybranych podsieci
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.0.2.0/24 -j MASQUERADE


Plik zapisujemy, nadajemy mu prawa wykonywalności:

# chmod +x /etc/init.d/firewall


dopisujemy do standardowych runleveli:

# update-rc.d firewall defaults 90


i odpalamy:

# /etc/init.d/firewall


W tym momencie mamy działający internet na wszystkich 3 komputerach. Voila! Trzy ostatnie linijki w skrypcie powinny stworzyć nam odpowiednią tablicę routingu:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth2
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth3
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0


Dzięki tym wpisom komputery w sieci domowej będą „widzieć się wzajemnie”. Możemy to sprawdzić pingując hosta scorpio z hosta omega, lub na odwrót. No i najważniejsze – możemy korzystać z internetu na wszystkich końcówkach podpiętych do sieci domowej :-).

Powiedzmy jednak, że to nas nie satysfakcjonuje. Chcemy mieć możliwość logowania się poprzez ssh do każdego z komputerów w sieci domowej. Musimy zatem zająć się forwardowaniem portów.

Przekierowanie portów


Aby przekierować wybrany port z hosta A na nasz router musimy na końcu naszego skryptu firewall dopisać:

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 800 -j DNAT --to 10.0.0.2:22


Co to robi? Forwarduje każde zapytanie przychodzące na port 800 karty sieciowej eth0 na adres 10.0.0.2, port 22 w sieci lokalnej. Zatem, jeśli odpytamy nasz router z sieci zewnętrznej w ten sposób:

$ ssh <user>@<host> -p 800


Dostaniemy de facto połączenie z komputerem z adresem 10.0.0.2 w sieci lokalnej. W naszym przykładzie będzie to scorpio. Dodajmy resztę hostów:

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 800 -j DNAT --to 10.0.0.2:22
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 801 -j DNAT --to 10.0.1.2:22
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 802 -j DNAT --to 10.0.1.2:22


I w ten sposób mamy możliwość zalogowania się na każdy z naszych komputerów w sieci domowej z zewnątrz.

Jutro opiszę sposób zabezpieczenia naszego routera przed najpopularniejszymi atakami z zewnątrz w przypadku gdy posiadamy publiczny adres IP. Enjoy!
W artykule mogły pojawić się błędy i nieścisłości. Będzie on zaktualizowany w przypadku wykryciu takowych.

Czytaj dalej : 58 komentarzy

Conky 1.4.7 dla Debiana (paczka deb)

Wpis zamieszczony o 13:23:55, 13 września 2007 - 16 komentarzy


Dwa tygodnie temu wydana została najnowsza wersja monitora systemowego Conky. Jak zwykle już – zbudowałem paczkę dla systemu Debian Sid. Paczka powinna zadziałać także w Debianie z gałęzi Testing. W tej wersji programiści dodali:



Aby ściągnąć paczkę kliknij TUTAJ


Jeśli czegoś zabraknie w powyższej paczce proszę o powiadomienie, zbuduje się nową z „dodatkowymi funkcjonalnościami”.

ENJOY!

Czytaj dalej : 16 komentarzy

Ubuntu 7.04 Professional wydane! (net-install)

Wpis zamieszczony o 22:50:42, 19 czerwca 2007 - 25 komentarzy


Przeglądając polskie forum Ubuntu zauważyłem, że bardzo dużo osób chciałoby zainstalować Ubuntu 7.04 pobierając minimalnie mały obraz iso z serwerów, a resztę instalacji przeprowadzić przez sieć. Poprzednio wydane, polskie 6.12 posiadało taką możliwość, tym razem płyty takowej nie ma. A w zasadzie - nie było do teraz :-).

Od dziś możecie pobierać Ubuntu 7.04 Professional!
Ubuntu 7.04 Professional - torrent - ŚCIĄGNIJ
Ubuntu 7.04 Professional - limitowane ftp - ŚCIĄGNIJ
Ubuntu 7.04 Professional - limitowane http - ŚCIĄGNIJ (zip)
Ubuntu 7.04 Professional - http dzięki uprzejmości Villemanna - SCIĄGNIJ
Moje serwery nie utrzymają tego długo... Dlatego polecam torrent :-).
Plik ma 8,65 MB. Jeśli uważacie, że nie opłaca się wypalanie takiego *.iso, zawsze możecie zgrać je na pendrive lub wypalić poprzez CD-RW.

Krótka instrukcja obsługi:
Naciśnięcie 'enter' w menu bootowania zainstaluje nam Ubuntu 7.04 Desktop pobierając wszystkie pakiety z sieci.
Wpisanie 'server' i naciśnięcie enter zainstaluje nam bazowy system, pobierając wszystkie pakiety z sieci.


W odróżnieniu od poprzedniego obrazu 6.12 Professional, 7.04 potrafi instalować tak środowisko graficzne jak i typowo konsolowe. Wszystkie pakiety pobiera z sieci, więc potrzebne jest działające Out Of The Box wsparcie dla sieci. Pod neostradą i innymi podobnymi tworami - instalacja się nie powiedzie!

Dodatkowo, dla użytkowników którzy z powodu posiadanego łącza nie mogą użyć płyty Professional, stworzyłem skrypt debootstrap instalujący całe podstawowe i minimalne środowisko konsolowe Ubuntu 7.04. Plik wrzucamy do /usr/lib/debootstrap/scripts/, parametrem do debootstrap jest standardowo nazwa dystrybucji (feisty).
ŚCIĄGNIJ skrypt do debootstrap



Dla zainteresowanych:
Pomysł na tak małą płytę net-install udało mi się wymyśleć w czasie instalacji poprzez pxeboot. Wysyłany jest wtedy tylko obraz jądra - resztę ciągnie z sieci. Wystarczyło wziąć AlternateCD i odpowiednio ją okroić. Instalator nie znajdując pakietów na CD odsyła w sieć. Ot, cała filozofia. A płytka netinstall jest mniejsza nawet od businesscard Debiana.

ps. torrent dostępny także na: linuxtracker
Dodatkowo kopią mnie na diggu i zapewne nie tylko tam... :-)

Logo Ubuntu, Ubuntu i Canonical to zarejestrowane znaki towarowe Canonical Ltd.
Płyta została stworzona zgodnie z zasadami markowania Canonical Ltd.

Czytaj dalej : 25 komentarzy

Exim4 + Mailman as Mailing List Manager on Debian

Wpis zamieszczony o 11:02:55, 13 maja 2007 - 8 komentarzy


So, let's say you are a Debian server administrator and you want to set up a mailing list for your users. You have already configured Exim4 as MTA and installed Mailman from offical repositories. With smile on face you are sending a message on {list}@{server} and...

 pipe to |/var/lib/mailman/mail/mailman post ...
    generated by .......
    local delivery failed

The following text was generated during the delivery attempt:

------ pipe to |/var/lib/mailman/mail/mailman post ...
       generated by ....------

Group mismatch error.  Mailman expected the mail
wrapper script to be executed as group "daemon", but
the system's mail server executed the mail script as
group "Debian-exim".  Try tweaking the mail server to run the
script as group "daemon", or re-run configure, 
providing the command line option `--with-mail-gid=Debian-exim'.

This is a well known problem with group permissions. Forums all over the world explain the problem but none of those have right clues to deal with it.

In short words - it is a bug in Debian package. Maintainer of mailman-2.1.9 somehow forgot to change default group of mailman from "deamon" to "Debian-exim" (which is required by Exim4 to recognize Mailman and deal with pipe of messages encoded in /etc/aliases). Also - I really do not know why packager set default path to /var/lib! The way to solve it is recompiling Mailman with option:
--with-mail-gid=Debian-exim
..but, wait a minute. The default path of Debian's mailman is not compatible with default path of source package. Changing the path with configure options is really bad idea.

Few minutes ago I finally got over it. Path of mailman source local installation is /usr/local/mailman, so we must manually override some starting scripts of mailman. Here's a solution. Right when we configure, make and make install our new Mailing List Manager we must create a init.d script for running it with correct permissions.

#!/bin/bash

echo "Starting mailman..."
su mailman -c 'python mailmanctl -s -q start' &
sleep 1
su mailman -c 'python /usr/local/mailman/bin/qrunner --runner=ArchRunner:0:1 -s' &
su mailman -c 'python /usr/local/mailman/bin/qrunner --runner=BounceRunner:0:1 -s' &
su mailman -c 'python /usr/local/mailman/bin/qrunner --runner=CommandRunner:0:1 -s' &
su mailman -c 'python /usr/local/mailman/bin/qrunner --runner=IncomingRunner:0:1 -s' &
su mailman -c 'python /usr/local/mailman/bin/qrunner --runner=NewsRunner:0:1 -s' &
su mailman -c 'python /usr/local/mailman/bin/qrunner --runner=OutgoingRunner:0:1 -s' &
su mailman -c 'python /usr/local/mailman/bin/qrunner --runner=VirginRunner:0:1 -s' &
su mailman -c 'python /usr/local/mailman/bin/qrunner --runner=RetryRunner:0:1 -s' &


Remember! Run "newlist" directly from /usr/local/mailman/bin to create lists (not command "newlist" from default path /usr/bin!) and don't forget to run "newaliases" after modifying /etc/aliases. Also, you have to configure your httpd.conf for cgi-bin scripts which is provider with mailman source package.

ScriptAlias /mailman/ /usr/local/mailman/cgi-bin/
<Directory /usr/local/mailman/cgi-bin/>
    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>
Alias /pipermail/ /usr/local/mailman/archives/public/
<Directory /usr/local/mailman/archives/public>
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
Alias /mmimages/ /usr/share/doc/mailman/images/
<Directory /usr/share/doc/mailman/images>
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

After that, restart apache and mailman (with your changed script!). Now your Web Control Panel is fully configured and set up. Add subscribers and enjoy it! :)

Other way to solve the problem is contact maintainer of package mailman or build our own package mailman-exim4-2.1.9. I will try to do both.

At last - please contact me if you encountered the same problem. I realize that this mini-solution is not a full HowTo. A bunch of links that helped me or point me at good way to look:
http://www.exim.org/howto/mailman.html"
http://tectonic.co.za/view.php?id=538
http://mail.python.org/pipermail/mailman-users/2004-January/033817.html
http://archives.free.net.ph/message/20070306.165258.c83599e1.en.html

Czytaj dalej : 8 komentarzy

LinkLift