Fagzal blogja

Csatornák : MIND    USA - személyes  (31)   Perl 5  (3)   Random  (4)  
2007, Május 1., 1 óra

Reggel elképesztően kómásan kelés, indulás, Péter kirángatása az ágyból, mert õ visz minket a Bradley-re. Elbúcsúzunk Amerikától, igencsak nem szívesen - de reméljük csak átmenetileg. A "magyar valóság" nem hiányzik egyikünknek sem, már a gondolata is negatív. Eszembe jut, hogy mennyire lehúz azt a "szenvedés", amit otthon van... az emberek nyűglődése, a panaszkodás, pesszimizmus (tisztelet a kivételnek, mint mindig), Budapest zsúfoltsága, sorolhatnám hosszan. Ami pedig a legrosszabb: Taco Bell sincs Pesten! :)

LAX, búcsú. Valami szürnyű McDonald's-os reggeli, kávé, check-in, take-off. Most minden rendben megy: a JFK átszállás (mondjuk késés itt mindig van), ésatöbbi. Az álmosság miatt összemosódik az út, alig emlékszem rá későbbb...
A New York-ig gépen magyarok: "...teee, mi most jövünk Hawaii-ról, és tiii?" Na tessék, újgazdagék... Összenézünk Ingriddel: ó hogy mennyire ellenszenvesek ezek a magyarok :) BÁÁÁÁ! Legalább Pestig bírták volna ki....
Magyar idő szerint reggel 6 óra, valahol Írország felett járunk, mikor ezeket a sorokat írom. (...és másfél évvel később Berekfürdőn, mikor befejezem.) Rendezgetem a képeket... sajnos a bejegyzések felvitele elmaradt egy jó ideje, a hétvégén megpróbálom majd pótolni, ha minden igaz. (Nem lett igaz. :))

Megérkezünk, Tamás hazaszállít minket az XI.-be. Hát... ENNÉL azért még Vegas is jobb volt :) Amerikából jöttünk, mesterségünk címere... "Amerikába visszamenni akarók". Nincs valahol felvétel?

 

A bejegyzés közvetlen címe : http://fagzal.kepeslap.com/blog/b259
Hozzászólások száma:0
2007, Május 29., 23 óra

Ezt a "fejezetet" a Perl (Perl 5) programnyelvnek, pontosabban néhány tipikus, Perl programozás közben gyakorta felmerülő feladat "megoldásának" szentelném.
A bejegyzés folytatódik »

A bejegyzés közvetlen címe : http://fagzal.kepeslap.com/blog/b91
A bejegyzés nem kommentezhető

A feladat: egy adott képfile átméretezése úgy, hogy a létrejövő kép egy előre megadott méretű téglalapba beférjen, és ne torzuljon (tartsa meg a méretarányait). Lehetőleg a script minél több formátumot ismerjen.

Mellébeszélés helyett lássuk egyből a kódot!

Thumbnail Generator

use strict;      
use Image::Magick;   

# szelesseg, magassag definicio, file-ok megadasa
my ($width$height$infile$outfile) = (160,160'./kep.jpg'
   './ujkep.png');

# object letrehozasa, kep beolvasasa
my $im = Image::Magick->new;
my $read = $im->Read($infile);
$read && die($read);

# EREDETI szelesseg, magassag beolvasasa
my ($w$h) = $im->Get('width','height');
print "Beolvasva: $infile. Meret: $w x $h\n";

# Aranyok megallapitasa, uj meret kiszamitasa
my ($neww$newh);
if ($w/$h > $width/$height) {
   $neww = $width;
   $newh = int($h * ($neww/$w));
else {
   $newh = $height;
   $neww = int($w * ($newh/$h));
}
print "Az uj meret: $neww x $newh\n";

# Tenyleges atmeretezes, kimentes
$im->Resize('width' => $neww'height' => $newh);
$im->Write($outfile);
print "Kesz.\n";


Ez a kód meglehetősen "kiherélt", mindössze a minimális dolgokat tudja. A felhasznált képmanipuláló modul az ImageMagick, amely véleményem szerint az egyik legjobb képmanipuláló csomag (egy C library-ról van szó, amihez a Perl modul csak egy binding).
A képet beolvassuk, méretarányai szerint kiszámoljuk a thumbnail méretét, majd kicsinyítünk. Akkor is átméretezünk, ha "nem kell", vagyis ha a forráskép eleve kisebb, mint a megadott téglalap - házi feladat, hogy ez ne így legyen .

Ja, és igen: az ImageMagick igazából egyetlen utasítással is tud thumbnail-t készíteni, de ezzel most ne törődjünk
 

A bejegyzés közvetlen címe : http://fagzal.kepeslap.com/blog/b92
Hozzászólások száma:2
2007, Június 1., 14 óra

Gyakori feladat: van egy címlistánk, ugyanazt az e-mailt ki kell küldenünk mindegyik címre. Egy meglehetősen primitív megoldást adnék erre lentebb.

A program első paramétereként a címlistát várja (txt file, soremelésekkel lezárva, egy e-mail egy sor), másodiknak a kiküldendő e-mail file-ját. A kiküldendő file első sora a feladó e-mail címe, második a levél tárgya, harmadiktól maga a levél.

ISO-8859-2 kódkészletet feltételezünk mint a subject-re, mind a levél törzsére!

Primitiv hírlevél küldő
use strict;
use MIME::Lite;
use Slurp;
use Regexp::Common qw/Email::Address/;
use MIME::Words qw/encode_mimeword/;

# buffer nem
$|=1;

# elso parameter: e-maileket tartalmazo file
die("$ARGV[0] not found\n"unless (-f $ARGV[0]);
# masodik parameret: txt file, amit kikuldunk
die("$ARGV[1] not found\n"unless (-f $ARGV[1]);
# file tartalma: from, subject, body
my ($from,$subject$body) = 
   (slurp($ARGV[1]) =~ /(.*?)\n(.*?)\n(.*)$/s);

print "Subject: $subject\nFrom: $from\n";
# ISO-8859-2 -t feltetelezunk, ezert kodolnunk kell!
$subject = encode_mimeword($subject'Q''ISO-8859-2');

# emailek beolvasasa, soronkent szetbontasa, majd be a tombbe
my (@emails) = split(/\n/, slurp($ARGV[0]));

# kiirjuk az alapadatokat es varakozunk egy kicsit
print scalar @emails" darab e-mail cimre kuldjuk...\n";
foreach my $i (0..5) { print 5-$i"\r"sleep(1); }

# tenyleges levelkuldo ciklus
foreach my $line (@emails) {
   # e-mail cim ellenorzes, biztos ami biztos
        if ($line !~ /($RE{Email}{Address})/) {
                print "\nHibas cim: $line";
                next;
        }
        print "\nTo: $1";
   # mehet egy mail
        my $mail = MIME::Lite->new(
                'From'          => $from,
                'Subject'       => $subject,
                'To'            => $1,
                'Data'          => $body
        );
   $mail->attr('content-type.charset' => 'ISO-8859-2');
   $mail->send();
}
print "\nKesz.\n";


Az encode_mimeword-öt használjuk a subject megfelelő kodolására (ez nem tökéletes így, de erről majd valamikor máskor), levélküldésre a MIME::Lite-ot.

Ez a program így ahogy van működik, de használni "as-is" annyira nem ajánlom . Ha valaki ténylegesen üzembe szeretné helyezni, javaslom:
- bemeneti paraméterek jobb ellenőrzését, hibaüzenetekkel
- beolvasott file-ok (főleg az e-mail file) ellenőrzését, bolondbiztosabb feldolgozását
- szöveg kódolásának ellenőrzése
- teszt beépítése (kiküldés egy címre)
- tényleges mailküldő résznél hibaellenőrzés (legalább egy "eval" blokk)
- "nohup"-os, background-os futtatást
- stdout log-olását, hogy legyen valami nyomunk, ha küldés közben valamiért elhalálozik a script

A bolondbiztossá tétel egy ilyen feladatnál igen fontos: több ezer címre hibásan e-mailt küldeni meglehetős leégést eredményezet...
 

A bejegyzés közvetlen címe : http://fagzal.kepeslap.com/blog/b93
A bejegyzés nem kommentezhető
2007, Augusztus 10., 12 óra

Nemrégiben vettem autót, jó magyar szokás szerint devizahitelre. Persze tudtam - mint ahogy tudja mindenki - hogy az árfolyamkockázat nagy: a hitelt a választott devizában jegyzik, ha a forint romlik, az ember ráfizethet. Mindenesetre a forint alapú hitelekkel összehasonlítva még így is sokkal alacsonyabb részletek jöttek ki, tehát ennél maradtam.

Most jön a barbatrükk!

Az eredetileg megállapított kezdőrészletnél már az első alkalommal majd' 10%-kal többet kellett csengetnem. Nocsak, ennyit romlott volna a svájci frank?

Utánajártam hát a dolognak, végigrágtam magam a szerződésben szereplő gyökjeleken és szummákon - egy leasingszerződés megértéséhez felsőfokú jogi ÉS matematikai tanulmányok szükségeltetnek - és a következő "érdekességet" találtam.

A bank amikor a hitelt kiadja, devizavételi árfolyammal kalkulál, ehhez képest adja meg az első törlesztőrészletet. Majd mikor kiküldi az első csekket, ezt korrigálja az árfolyamváltozással - azonban ekkor már devizaeladási árral számol. Mindez azt jelenti, hogy már az első részlet több - még akkor is, ha nem volt árfolyamváltozás. Néhány forintos ingadozás esetén - annyi biztosan lesz, lásd lejjebb, hogy miért - ez azt jelenti, hogy mondjuk egy 84 hónapra felvett, 2.5M forint körüli devizahitelre még relatíve állando árfolyam esetén is összesen minimum 300,000 Ft-tal fizetünk többet, mint amit előzetesen kalkuláltunk: egy 5-6% körüli "kedvezményesnek" vagy "akciósnak" nevezett hitel esetén tehát kb. 600,000 Ft helyett 900,000 Ft lesz a hitel költsége.

Aki valamennyire foglalkozott már devizával, lehet elcsodálkozik: honnan jön ki ez a nagy különbség, ha a deviza spread (vételi és eladási ár közötti különbség) 1-2 forintnál nem szokott több lenni? A válasz egyszerű: a bank "direkt erre a célra" fenntart egy, a szerződésben is megnevezett árfolyamot, ahol a spread CHF esetén is legalább 5-6 Ft. Mindehhez hozzájárul, hogy a bank a szerződést "nem előttünk írja alá", tehát lehetősége van néhány napot ide-oda mozogni, és a rendelkezésére álló időszakban a legalacsonyabb devizaárfolyam idejére dátumozni a szerződést, így gyakorlatilag garantálva, hogy már az első részletnél ráfizessünk a hitelre még egy kis árfolyamváltozási "büntetést" is.

Na ennyit a THM-ről. Ha valakinek nem tetszik a dolog, akkor persze felmondhatja a szerződést, és kifizetheti egy összegben az autóját - tekintettel arra, hogy a teljes hitelszerződést az összes trükkös kondícióval csak az autó megvásárlása után kapja majd kézhez.

 

A bejegyzés közvetlen címe : http://fagzal.kepeslap.com/blog/b139
A bejegyzés nem kommentezhető
2007, Szeptember 27., 1 óra

Azt rebesgetik, hogy Orson Scott Card magyarul "Végjáték" cím alatt megjelent regényét (eredetileg: Ender's Game) megfilmesítik. A rendező Wolfgang Petersen (Trója, Kedves Ellenségem).

Az IMDB szerint a film a két párhuzamosan játszódó könyv (Ender's Game, Ender's Shadow) elegyítése lesz. Ez nem hangzik valami jól - mindenesetre biztató, hogy maga az író készíti a forgatókönyvet. A tervezett megjelenés 2008. Izgatottan várjuk, hiszen a regényciklussá terebélyesedett Ender's Game a sci-fi irodalom egyik legnagyobb klasszikusa, amely több Nebula -és Hugo díjat is magáénak tudhat, és amelyet csak olyan hasonló művekkel együtt emlegetnek, mint Isaac Asimov Alapítvány vagy Frank Herbert Dűne "sorozata".

 

A bejegyzés közvetlen címe : http://fagzal.kepeslap.com/blog/b149
Hozzászólások száma:0
2007, November 12., 23 óra

Az "E! kultúrát" sokan a végtelenül kiválló (tm) és hiánypótló Napirajzból ismerik, azonban ha minden igaz, a dolognak van egy régebbi eredete is. Kissé megkoptak már emlékeim, tehát bocs, ha tévedek, de a sztori, ha jól emlékszem, a következő volt:

Az Impulzus szerkesztőségében valahol így 96-99 környékén (legalábbis jobbára - életünket a félévek és évfolyamok kalapgörbévé alakították) annak rendje és módja szerint remek kis szubkultúra alakult ki. A számtalan faszság közül egy célünk a "bazmeg" kifejezés minél gazdaságosabb tömörítése volt. Így a "bazeg", "baeg", "vazeg" (ez IRC-es hagyomány), majd "vzeg"-en keresztül jutott el ha jól emlékszem a "ve"-ig. (Megfelelően kell hangsúlyozni, ez a kulcs! Lásd még: ÜÁZZ)

Ekkoriban futottam bele édesapám egy kazettájába, aki t.i. tanárember volt, ergo voltak neki ilyen "oktatást segítő" dolgai. Az egyikbe - véletlenül - belehallgattam: első osztályosoknak a hangokról és betűkről. Idézném az anyagot:

Női hang: Az "E" betű.
(boinggg)
Férfi hang: Mondjuk hangosan az E betűt!
(szünet, majd kórusban nő+férfi)
- E! E! E!

Ezt persze reprodukáltam jeles kollégáimnak. Hamar rádöbbentünk, hogy ez a "ve"-n is túlmutat, és hogy pszeudo-igénytelenségi mozgalmunk megtalálta a "mindenféle közlés abszolút minimálisra történő csökkentésének non-plus-ultrájáját". A dolog ragadt: Galaxy mester remekbe szabott (a.k.a. neoprimitív) rajzain át beragyogta fényességével az Impulzus lapjait, majdpedig bevonult baráti körünk, illetve villanyos, valamint infós kollégáink aktív szókincsébe.

Mondjátok ti is az E! betűt!

 

A bejegyzés közvetlen címe : http://fagzal.kepeslap.com/blog/b177
Hozzászólások száma:0

Aki esetleg nem vágná, mi is az a VPN, annak valószínűleg úgysincsen rá szüksége, és ne is olvassa tovább. Mindamellett röviden azért, a köz okulása végett:

A VPN (Virtual Private Network) segítségével hálózatokat lehet összekapcsolni, méghozzá biztonságos (titkosított) módon. A tényleges kapcsolat persze mindig két gép között jön létre, sőt az is lehet, hogy csak két gép a hálózat tagja, mindazonáltal ez ritka: a gyakoribb az, hogy egy/több gépet csatolunk be egy már meglévő hálózata.
Például: egy cég két irodájának a gépeit egyetlen hálózatban akarjuk látni. Vagy: a munkahelyi hálózatunkra csatlakozunk rá otthonról.
A VPN nem szerver-kliens jellegű kapcsolat: fizikai kapcsolatot "emulálunk", mintha mondjuk egy b*szott hosszú kábellel kötnénk be mondjuk az otthoni laptopunkat pl. egy egyetemi hálózatba, minek hatására a gépünk úgy viselkedik, mintha tényleg ott lenne az a kábel.

A VPN felépítése sajnos nem annyi, hogy elindítunk valami service-t aztán jólvan. A problémák:
- A VPN nem egy protokol, mint mondjuk a HTTP, hanem egy fogalom, architektúra: ennek megfelelően mindenképppen választanunk kell egy VPN szoftvert, amihez megfelelő szerver mellett megfelelő (értsd: minden csatlakozni kívánó gépen futó) kliens is tartozik.
- Az egyes VPN szoftverek tipikusan nem kompatibilisek egymással.
- Rendszerszinten a fogadó (szerver) oldalon a VPN beállítása nem elég: jellemzően egyéb trükköket is kell alkalmazni, pl. routing tábla módosítása, IP forward, stb.
- Egyáltalán nem biztos, hogy vannak statikus IP címeink (ez ugye főleg a szerver oldalon gond), ami bonyolítja a helyzetet.
- Mindenféle firewall-ok állhatnak utunkba.
- A szerver LAN-jában lévő service-eket bizonyos konfigurációban tájékoztatni kell arról, hogy megértsék a VPN által becsatolt virtuális hálózatot (ami alapból külön tartomány). Néha a LAN tartományt (pl. cím allokáció) is módosítani kell.

Két gépet összekötni VPN-nel, statikus IP-n viszonylag egyszerű - ennek megfelelően sok értelme sincs. Ígyhát egy bonyolultabb - egyébként viszont tipikus - konfigurációról lesz itt szó. Lássuk!


A körülmények:
- egy irodai hálózatba akarunk becsatlakozni, ahol már van egy lokális IP tartomány: legyen ez 192.168.1.x
- az irodába bejövő internet egy dinamikus IP-n ülő, belülre dinamikus IP-t DHCP-ző router-en ül
- ezen a router-en keresztül NAT segítségével látják a kinti hálót a gépek
- belül van egy Windows hálózat (Samba vagy nem, mindegy)
- van "az asztalon" egy Linux szerver, aminek szintén a router ad (kvázistatikus) IP-t, ami legyen mondjuk 192.168.1.10
- a Linux szerver Samba szerver is, csak hogy örüljünk

Ez egy meglehetősen tipikus konfiguráció: a legtöbb kis -és közepes munkahelyen valami ilyesmit találunk.

Amit el akarunk érni:
- "külső" gépekről (otthonról) a belső hálózatot Windows Networking-en keresztül elérni, minden szenvedés nélkül (tehát a kliensnek legyen egyszerű dolga, vagyis X.Y. hozzá nem értő munkatársunk egyszerűen tudja használni otthonról, Windows XP-ről vagy Vista-ról)

A feladathoz használt VPN szoftver az OpenVPN. Ez egy jól működő dolog, és mind Windows-on (Vista-n is), mind Linuxon remek támogatással rendelkezik. Ingyenes.
A VPN szerver egy Fedora Linux, esetünkben Fedora 8, de más verziók és más Linux disztribúciók is szinte ugyanígy használhatóak.


Mielőtt beledőlnénk a VPN-be, először is meg kell tenni a következőket:

1. Mivel a külső IP-nket dinamikusan kapjuk, egy DDNS-t kell létrehozni erre a címre. A router-ekben jellemzően be lehet állítani a dyndns.com-ot, a példa kedvéért legyen a külső dinamikus IP-nk címe az example.dyndns.com. Innentől ez mutat a router-ünk aktuális IP címére. Csináljuk ezt meg, próbáljuk ki! Nem árt, ha a 22-es portot forwardoljuk a routeren át a Linux gépre, így könnyen ellenőrizhető a dolog.

Ha megvan, akkor NEXT :)

2. A router-en az OpenVPN portját (1194) ki kell nyitni és a belső gépre irányítani. Ez lehet UDP vagy TCP - legyen most UDP. Innentől elérjük tetszőleges külső gépről a belső gépet.

3. Ki kell nyitni az 1194/UDP portot a Linux szerveren, már persze ha zárva lenne, és már ha egyáltalán használunk firewall-t, és az az IPTABLES :)) Ha igen, akkor valami ilyesmi kell a /etc/sysconfig/iptables-be:

-A INPUT -p udp -m udp --dport 1194 -j ACCEPT

ÉRTELEMSZERŰEN persze, itt nem mennék bele az Iptables configba mert soha nem érne véget ez a bejegyzés...

Ha ez megvan, akkor "a körülmények már adottak". Most lépjünk tovább - először a VPN szerver konfiggal.

Két lehetőségünk van: IP-routing és Ethernet-bridging. Pár szóban ezekről.

1. IP-routing-nál van egy belső tartományunk, és ebben van egy gép (a VPN szerver). A VPN ezen a gépen egy MÁSIK tartományt (subnet-ekről beszélek, persze) hoz létre, ide csatlakoznak a kliensek.
A dolog egyszerű és könnyen beállítható, nem kell hozzá csak az OpenVPN szerver meg a kliens. A baj az, hogy ez két KÜLÖNBÖZŐ hálózat, még ha egy gépen vannak is: a belső tartományunk nem fog "magától kilátszódni" a kliensnek, így pl. egy broadcast-olt packet a belső tartományból nem fog elérni a klienshez, ami mondjuk SMB esetén nem a legjobb...

2. Ethernet-bridge esetén a klienset a belső hálózatBA csatoljuk úgy, hogy egy IP-tartományt elkülönítünk a klienseknek. IP címünk a privát hálózatok miatt tipikusan van, viszont ez a fajta konfiguráció bonyolultabb: nem elég az OpenVPN konfigurálása, az oprendszert is rá kell venni, hogy a két interface-ünket - a meglevőt, illetve azt, ahol a VPN csatlakozik - bridge-elje össze mint egy fizikai bridge. Ez macerás, viszont ez az architektúra sokkal transzparensebb.

Az itt leírt példa bridge-inget használ.

Először is: még a VPN konfigurálása előtt csináljunk egy bridge-et! Erre a bridge-utils megfelelő (gyakorlatilag minden Linuxon van rá csomag, Fedora-n "yum install bridge-utils").
A bridge tulajdonképpen két interface között tud adatokat átadni. Esetünkben:
- van a fizikai hálókártyánk (mondjuk eth0)
- van (lesz) a virtuális interface-ünk a VPN jóvoltából (legyen a neve tap0)
- készítünk egy bridge-elt interface-t (mondjuk br0), amihez hozzáadjuk a fenti két interface-t, minek hatására egymásnak tudják adni a csomagokat
- a tap0 és az eth0 promoscious módban fog menni (mindent vesz), a br0 fog a régi eth0 interface-ünk "helyett" működni

Részletesebben itt lehet a bridging-ről olvasni.


Az interface elkészítéséhez az OpenVPN által ajánlott script jó is lesz:
#!/bin/bash

#################################
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
#################################

ifdown eth0
# Define Bridge Interface
br="br0"

# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"

# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
eth="eth0"
eth_ip="192.168.1.10"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.1.255"

for t in $tap; do
    openvpn --mktun --dev $t
done

brctl addbr $br
ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast
brctl addif $br $eth

for t in $tap; do
    brctl addif $br $t
done

for t in $tap; do
    ifconfig $t 0.0.0.0 promisc up
done

ifconfig $eth 0.0.0.0 promisc up


Tartozik hozzá egy leállító script is. Ezt ne feledjük mert baj lesz :) E:
#!/bin/bash

####################################
# Tear Down Ethernet bridge on Linux
####################################

# Define Bridge Interface
br="br0"

# Define list of TAP interfaces to be bridged together
tap="tap0"

ifconfig $br down
brctl delbr $br

for t in $tap; do
    openvpn --rmtun --dev $t
done


Ha ez megvan (elindítottuk a bridge-start -ot), megvan a brdige interface, egyúttal elvesztettük a hálózatunkat :) Don't worry, mindjárt lesz megint!

Engedjük meg a bridge elérését az Iptables-ben:
-A  -i tap0 -j ACCEPT
-A  -i br0 -j ACCEPT
-A FORWARD -i br0 -j ACCEPT


Kapcsoljuk be az IPForward-ot:
echo 1 > /proc/sys/net/ipv4/ip_forward


Most már csak a routingot kell bekapcsolni, mert a bridge még nem tudja, hova küldje a packet-eket. Felételezve, hogy a gateway címe a 192.168.1.1 :
route add default gw 192.168.1.1


Voila, ha minden igaz megint megy a net! :) Lássuk a VPN configot!


1. Az OpenVPN szerver beállítása. Első körben installáljuk talán fel :), ha még nincs:
yum install openvpn
Fedora esetében könnyen lehet, hogy eleve fel van rakva, azt hiszem ez a default. A /etc/openvpn könyvtárban fogjuk a config-okat hergelni.

Először is: kulcsokat kell generálni. Több fajta VPN config van erre vonatkozóan, mi egy igen egyszerűt fogunk használni: szerverkulcs, klienskulcs, minden kliensnek egyedi, plusz emellé egy jelszó. (A kulcsfile-okat a csatlakozni kívánó usereknek majd oda kell adni!)

A kulcsok generálásához az OpenVPN ad mindenféle scripteket. Ezek a /usr/share/openvpn/easy-rsa/2.0/ könyvtárban (vagy valahol arrafele) találhatóak. Mivel egy esetleges upgrade ezeket a file-okat fölülírja, másoljuk át őket magunknak:
cp -r /usr/share/openvpn/easy-rsa/2.0/ /etc/openvpn/easy-rsa

Lépjünk be ebbe a könyvtárba, nyissuk meg a "vars" nevü file-t, és írjuk át a KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, KEY_EMAIL bejegyzéseket a megfelelőre (hehe).
Adjuk ki a következő parancsokat:
./vars
source vars
./clean-all
./build-ca

Ennek faszán le kell futnia, miközben a ./keys könyvtárban létrejön a ca.crt és a ca.key file, vagyis megcsináltuk a Certificate Authority-t.

Most jön a kulcs a szerverhez:
./build-key-server server

Ez kér egy jelszót. Adjuk meg és ne felejtsük el!
Csomó új file létrejön a keys könyvtárban :)
Majd ez:
./build-dh

ami létrehozza a dh1024.pem file-t ami kell (mindegy, hogy miért, én sem tudom. :))

Ezzel megvannak a key file-jaink a SZERVERHEZ. Mielőtt továbblépnénk a tényleges konfigurációra, készítsünk legalább egy kliens kulcsot is! Ezt lehet jelszóval és jelszó nélkül. Maradjunk a jelszavas verziónál:
./build-key-pass client-1

A client-1 lesz az első kliensünk. Minden kliensnek egyedi név (file) kell!

Közbevetés: a .key file-oknak titkosnak kell lenniük (mondjuk root jog és csak olvasható). Ellenben a .crt file-okat nem kell (ennyire) védeni.


Na eddig egész jók vagyunk! Már csak egy server.conf kell a VPN szerver bekonfigurálásához! Egy ilyen egyszerű elég:
port 1194
proto udp
dev tap0
ca "/etc/openvpn/easy-rsa/keys/ca.crt"
cert "/etc/openvpn/easy-rsa/keys/server.crt"
key "/etc/openvpn/easy-rsa/keys/server.key"  # Titkos!
dh "/etc/openvpn/easy-rsa/keys/dh1024.pem"
server-bridge 192.168.1.10 255.255.255.0 192.168.1.200 192.168.1.254
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
max-clients 10
persist-key
persist-tun
status openvpn-status.log
verb 4


Közbevetés: a server-bridge segítségével a bejövő VPN klienseket "becsatoljuk" a belső IP tartományba, 200-tól 254-ig. Fontos, hogy a DHCP szerverünket (router) úgy állítsuk be, hogy ne osszon IP-t ebbe a tartományba!
A részletekről az OpenVPN-HowTo-ban tessék olvasni.

Elindíthatjuk a VPN szervert:
/etc/rc.d/init.d/openvpn start


Debug célokra egyébként inkább így:
openvpn /etc/openvpn/server.conf


Elvileg ennek mennie is kell. Ha valami gáz van, a /var/log/messages -ben (vagy az orrunk előtt, ha interaktívan indítottuk) elvileg látjuk, mi a baj. Javítsuk meg! :)

Megjegyzés: előfordul, hogy az openvpn indítás "FAILED" üzenetet ad és mégis elindul. Ez nem tudom miért van, de nem is érekel, mert megy :)

Adjuk ki az "ifconfig" parancsot, és elvileg valami ilyet látunk:
br0       Link encap:Ethernet  HWaddr 00:19:20:90:B4:22  
          inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:69486 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48783 errors:0 dropped:0 overruns:0 carrier:0

eth0      Link encap:Ethernet  HWaddr 00:19:20:90:B4:22  
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:69519 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48769 errors:0 dropped:0 overruns:0 carrier:0

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:6362 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6362 errors:0 dropped:0 overruns:0 carrier:0

tap0      Link encap:Ethernet  HWaddr 00:FF:30:82:85:C5  
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:9650 overruns:0 carrier:0


Bingó! Már "csak" a klienseket kell beállítani!

5. OpenVPN kliens beállítás - Linux

Installáljuk az OpenVPN-t a kliensre is. Ezután itt elég lesz csupán két dolog:
- átmásolni a ca.crt file-t és a saját kulcsunkat (client1.crt,client1.key) amit a szerveren generáltunk
- az OpenVPN kliens config file-t létrehozni, az openvpn-t indítani

A kliens konfig (/etc/openvpn/client.conf):
client
dev tap
proto udp
remote example.dyndns.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca "/etc/openvpn/easy-rsa/keys/ca.crt"
cert "/etc/openvpn/easy-rsa/keys/client1.crt"
key "/etc/openvpn/easy-rsa/keys/client1.key"
comp-lzo
verb4


Inítsuk el:
openvpn /etc/openvpn/client.conf


Elvileg már pingelhetjük a becsatolt kliensen át a távoli hálózat belső gépeit, és akár a Windows share-eket is elérjük!
 

A bejegyzés közvetlen címe : http://fagzal.kepeslap.com/blog/b237
Hozzászólások száma:0


Át a galériára!»

31. ...hazafelé
   2007, Május 1., 1h
32. Perl blog - ez miez?
   2007, Május 29., 23h
33. Első ujjgyakorlat: thumbnail-ek készítése
   2007, Május 31., 15h
34. Triviális hírlevél küldő
   2007, Június 1., 14h
35. A devizahitel szépségei
   2007, Augusztus 10., 12h
36. Végjáték
   2007, Szeptember 27., 1h
37. E!
   2007, November 12., 23h
38. VPN beállítása Linuxon (Fedora + OpenVPN)
   2008, Április 2., 11h
További bejegyzések
1.-   11.-   21.-   31.- 

Archivum
rss newsfeed icon

Több képeslapküldő!
Cím: A bugyuta ember
: 409
:
http://www.egyszervolt.hu