És lőn router – lépésről lépésre

A router az a kis lapos izébizé, amin van sok led és villognak serényen, ha internetezik az ember a közelében.

image001Ha ezen a szinten vagy kérlek Most zárd be az ablakot. Vagy görgess tovább és olvasgass másik bejegyzést.

De tényleg.

Mindegy, én szóltam.

 

Szóval. Közvélekedés, hogy ezek a kis szappanosdobozok célszerszámok, beteszik egy halom gép elé, azt’ csodálkoznak, amikor a kis dög lefagy és vehetnek telefonos távkapcsolót/automatikus relékapcsolót/méregdrága routert/árvíztűrő tükörfúrógépet a probléma kiküszöböléséhez / stabil működtetéséhez.

 

Ha nincs kedved elverni 20-25 ezer ft-ot egy már talán jó routerért és akad otthon néhány apróság akkor az alábbi recept neked íródott. A leírás nem tartalmazza a wlan beállításokat. Én erre a célra meghagytam a régi szappanosdobozomat.

Hozzávalók

Végy

  • 1 db legalább 1G ecc rammal működő szervergépet
  • 2 db (lehetőleg már akkor gigabites) hálózati kártyát (későbbiekben interfész)
  • 1 db igényeidnek megfelelő (lehetőleg gigabites) switchet
  • Néhány csipet cat6-os hálózati kábelt (gigabit yeah)

 

Nulladik lépés – rakd össze a gépet

Az én esetemben a microserverben már volt egy gigabites hálókártya, így csak plusz egy tplink pci express csatolós gigás kártyával kellett bővítenem. Fontos ezekre a csatolókra úgy tekinteni, hogy ezek nem csak sima aljzatok, ezek interfészek, ahhoz, hogy internethez csatlakozz és valahogy eloszd több gép között is elég két interfész. Egyik interfész lesz a WAN a másik a LAN csatoló.

Ha a gép elindul telepíts egy ubuntu szervert. Futhat az oprendszer egy pendrive-ról is, de ez potenciális hibaforrás, maradj vinyónál, vagy ssd-nél.

Ha fent van az alaprendszer derítsd ki, hogy melyik interfész melyik csatoló a linux rendszerben. Debianon világ életben eth0, eth1 volt, minap mikor ezzel foglalkoztam meglepődtem, egyedi neveket szeret osztogatni az ubi.

ifconfig -a

paranccsal tudod csekkolni, hogy a gép látja-e mindkét hálókártyát. Ne tévesszen meg, lesz egy “lo” nevű is, ez egy loopback interface, a rendszer működéséhez szükséges, nem fizikai hálókártya.

Ha nem látsz két hálózati csatolót akkor gondban vagy – telepítened kell a hardverhez szükséges firmware-t.

Ebben az esetben:

lspci

Keress hálókártyára utaló sort, árulkodó jelek: RTL, Realtek, Broadcom, Gigabit ethernet, stb. Ebben a sorban kell szerepelnie egy típusnak is, például nálam:

03:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5723 Gigabit Ethernet PCIe (rev 10)

Itt keress rá google-n hátha megkérdezte már valaki, hogy hogyan kell telepíteni 🙂

Máskülönben rá lehet keresni a típusra az ubuntu repository-ban, emígyen:

apt-get update

apt-get upgrade

apt-cache search típusnév

 

Ha dobott legalább egy sort akkor olvasd el miről szól és ha úgy látod, hogy az valóban egy firmware akkor a kötőjel előtti megnevezéssel telepítsd a firmware-t (apt-get install csomagnév). Ezután jöhet egy reboot.

Első lépés – csatlakozz az internetre

Általában az angol nyelvű tutorialok a belső hálózat forwarding és dhcp beállítással szokták kezdeni, de szerintem fontos, hogy internet csatlakozással kezdjünk, mert a pppoe csatlakozású internet külön interfésznek fog látszani.

Az internetcsatlakozással ez a thread foglalkozik, érdemes ebből szemezgetni, ha az én leírásomból nem menne a dolog.

A két hálózati interfészből válaszd ki, hogy melyiket szeretnéd WAN interfésznek kinevezni.

pppoeconf

Itt be fogja kérni az internetkapcsolathoz szükséges adatokat, root jelszót az elején, meg még néhány (haszontalan) kérdést, mindegyikre mehet yes.

Ezután

pon dsl-provider

paranccsal csatlakozik a gép az internetre, ha be van dugva jó helyre a kábel és jól adtad meg az adatokat.

 

Második lépés – lokális hálózat

Itt lefixáljuk, hogy melyik a WAN  és a LAN interfész, majd a LAN interfészre DNS szervert akasztunk. Ezen leírás alapján mesélek.

nano /etc/network/interfaces

Ebben szerkessz az alábbiak szerint, nálam em1 a WAN interfész, p2p1 a LAN interfész:

auto lo

iface lo inet loopback

 

#WAN interfész – én kikommenteltem, hogy bootoláskor ne várjon dhcp szerverre

#auto em1

#iface em1 inet dhcp

#

#LAN interface

allow-hotplug p2p1

iface p2p1 inet static

address 192.168.0..1

netmask 255.255.255.0

network 192.168.0.0

broadcast 192.168.0.255

Nálam még ilyet bepakolt a pppoeconf, benne hagyni érdemes:

auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig em1 up # line maintained by pppoeconf
provider dsl-provider

Most pedig telepítsünk DHCP szervert – ez fog IP címet osztani a LAN interfészre lógó cuccoknak.

apt-get install dnsmasq

mv /etc/dnsmasq.conf /etc/dnsmasq.conf.old

nano /etc/dnsmasq.conf

Megnyílik editor üres tartalommal ebbe mehet:

interface=p2p1
listen-address=127.0.0.1
domain=valamilyen.domain.hu
dhcp-range=192.168.0.100,192.168.0.254,12h

Interface a LAN interfész, a domain egy tetszőleges (esetleg szerverre mutató) domain, dhcp-range pedig vesszővel elválasztva egy IP tartomány, amiből osztogatni fog a gépeknek.

Ezután engedélyezzük az ipv4 forwardingot

nano /etc/sysctl.conf

Keresd meg az alábbi sort és vedd ki előle a kommentet:

net.ipv4.ip_forward=1

Most tűzfalat konfigurálunk. A célunk eléréséhez az alábbi szükséges:

ifconfig paranccsal nézd meg van-e élő pppoe vonal, ezeknek általában ppp0 a címe, ha nem akkor helyettesítsd be a sajátodat, majd

nano /etc/iptables.rules

Szúrd be az alábbit:

*nat
-A POSTROUTING -o ppp0 -j MASQUERADE
COMMIT

További route-olási szabályhoz látogasd meg a fenti általam belinkelt weboldalt.

Végezetül aktiváld a tűzfalszabályokat.

iptables-restore < /etc/iptables.rules

Ezután a LAN interfészre kösd a switch-et, majd arra a gépeket. Ekkor a gépeknek ip címet kell kapniuk és internetre kell lássanak.

 

Ezután következik egy kis mókolás. Mert újraindításkor homokszem kerül a gépezetbe.

nano /root/router.sh

Paranccsal nyiss egy editort és vésd bele a következőket

#!/bin/bash
pon dsl-provider;
iptables-restore < /etc/iptables.rules;

Adjunk futtathatósági jogot a fenti script-re:

chmod +x /root/router.sh

Majd telepítsünk webmin-t…:

cd /tmp

wget http://heanet.dl.sourceforge.net/project/webadmin/webmin/1.780/webmin_1.780_all.deb

dpkg -i webmin_1.780_all.deb

apt-get -f install

Ha megvagyunk akkor a LAN-ra dugva https://192.168.0.1:10000/ címre ugorjunk, adatriasztási izébizén lépjünk tovább, jelentkezzünk be root felhasználónkkal. Ezután baloldalt System lenyit majd “Scheduled Cron Jobs”. Fent “Create a new scheduled cron job”.

Itt az űrlapon kitölteni:

Execute…: root

Active? Yes

Command: /root/router.sh

Minden mást úgyhagy, lent create gomb. Ez egy igen szépen elnagyolt megoldás, a scriptünkkel a szerver minden percben csatlakozni akar majd az internetre.

Erre az elmebeteg megoldásra azért van szükség, mert…:

  • A gép bekapcsolásakor hajlamos nem kapcsolódni automatikusan pppoe internethez
  • Mivel nem kapcsolódik nincs ppp0 interfész
  • Mivel nincs ppp0 interfész így az iptables-be tett route-olás nem történik meg
  • Ha megszakad a vonal bármi miatt 1 percen belül újrakonfigurálja magát

 

Ééés íme kész a stabil házi routerünk.

Wifiről az elején is írtam – nem teszek említést. Egy N-es szabványú normális 3 antennás kártya nem olcsó mulatság, én a switch egyik lábára akasztottam a régi routert wifi broadcastolás miatt, mobilhoz, tablethez, apró böngészgetéshez bőven elegendő.

 

Mire jó ez az egész?

  • Alacsonyabb ping-em van (torrent mellett)
  • Megspóroltam egy normális gigabites router árát
  • Úgy konfigolom ahogy akarom
  • A storage szerverem jelen esetben a router szerverem, a legnagyobb adatforgalmat ő viszi el, így a belső hálózat nincs terhelés alatt
  • Just for fun 😀

 

Remélem tanulságos volt, hiba, észrevételt kommentekben várom!

Ezért érdemes sshfs-t -C kapcsolóval használni

1445465012_Database-CloudVan ugye az a protokoll – remélem ismerős -, hogy “sftp”. Tegyük fel, hogy van egy linuxos adattároló szervered és egy linuxos géped. Közvetlen fel tudod csatolni sshfs-el a távoli gép valamely mappáját, ha van rajta unix felhasználói fiókod és hozzáférésed.
Namost az sshfs-nek van egy -C, mint compression kapcsolója, ami a két gép közötti átviteli sebesség növelésében játszhat szerepet, mivel a két gép közötti adatfolyamot képes tömöríteni. Ehhez persze némi processzor kell mindkét oldalon, de egy HP microservernek sem konnyan meg a dolog (nálam az érintett adattároló gép).
Tehát ha linuxot használsz az alábbi paranccsal felcsatolhatod a távoli gép könyvtárát a helyi gépedre:

 sshfs -o allow_other,default_permissions -o IdentityFile=/helyi_szerver/publikus_kulcs winben@szerverem.hu:/tavoli_szerver/csatolasi_pont /helyi_szerver/csatolasi_pont -C -o reconnect;

 

Mi az eset akkor, ha Windows használok?

Igen, sokan vagyunk így, kipróbálhatunk egy csomó sshfs-t megvalósító alkalmazást. Ilyen a fizetős expandrive, vagy az ingyenes win-sshfs.

Részemről egyik sem nyerte el a tetszésemet többek között azért, mert instabilak voltak, suttyomban a program files-ba cache-eltek és nem is a valós állapotot mutatták sokszor…és legfőbb problémám volt, hogy láthatólag egyik sem szolgált a tömörítős megoldással, ami miatt (vagy még mellett) dög lassú volt az adatátvitel.

Nos, ha van egy kis memóriád fölösen a gépben akkor van egy szuper jó hírem – a probléma baromi jól orvosolható.

  1. Készíts egy linuxos virtuális gépet localhoston, ami NATolva csatlakozik a hálózatra, tehát a te géped oszt neki IP címet.
  2. Ha megvan a telepítés csatold fel a távoli mappát a virtuális géped egy helyi mappájába.
  3. Ezután telepíts sambát a virtuális gépre és oszd meg a felcsatolt mappa tartalmát.
  4. Tallózd be Windows Intézőben a sambán megosztott tartalmat és örülj. Az adatátvitel gördülékeny lesz és megfelelő tartalom esetében gyors.

Ha olyan kontentről van szó, ami jól tömöríthető akkor sokszoros sebességet érhetsz el “logikailag”, mint egyébként “fizikailag”, tehát a fizikai vonalon.

 

Bizonyításként hadd mutassam a feladatkezelőmet:

aa99259e10b2a668d37f45b32ea9d906

Itt éppen egy lemezképfájlt másoltam. A képen az látható, hogy a Total Commander 176 Mb/s-al tölti felfelé az adatot, a VMware NAT Service pedig a virtuális gépet jelképezi és látszik, hogy 47,5 Mb/s a “fizikai” adatfolyam. Tudni kell azt is, hogy a mérés idején a laptopom céges wifi routerre volt csatlakozva vezetéknélküli hálózaton és nem egy irodában lévő másik gépre, hanem az otthoni szerveremre tolta át az adatot – ennek köszönhető, hogy csak ~50 Mbit környékén történt az adatátvitel. A másolás idején 50-70% között volt a 1.5 GHz-es HP microserverem cpu terheltsége (mivel kétmagos így 200%-ból), és 0,93-as volt a 15 perces átlag load.

 

Akik kicsi internetsebességgel rendelkeznek (100 Mbit alatt) és távoli szerverre dolgoznak bőven megfelel és tűrhetően is működik az ExpanDrive. Ha viszont helyi 100 megás hálón (vagy azzal egyenértékű neten) szeretnénk Windows-on sshfs kapcsolódást érdemesebb efféle perverzióhoz folyamodnunk.

mysql backup jól’

Bizonyára akik több oldalt kiszolgáló szervert üzemeltetnek használnak valamilyen jobb/rosszabb megoldást adatbázis napi/heti biztonsági mentésére.

Nos, az én hegesztésem alább található.
Amiben érdekesebb, hogy a mysqldump nem egy file-ba kakilja bele az adatbázis szerver összes adatbázisát, hanem külön szedi őket és külön tárolja sql file-okba – így valamelyik oldalnál egy DB fail utáni helyreállítás talán kevesebb huzavonával fog zajlani.


mkdir $(date +%Y_%m_%d)
for line in $(mysql -u backup -AN -e “show databases”);
do
mysqldump -u backup $line > $(date +%Y_%m_%d)/$line.sql ;
done

ispCP omega fájlfeltöltés error 500

Nemrégiben volt egy kis gond az ispCP omegámmal, tolnom kellett rajta egy rendszerfrissítést. Ez esetben nem áll vissza minden alaphelyzetbe, csak javítja a config file-okat, amiket esetleg véletlenül elbarmoltunk volna, stb.

Nos, hogy ezt megcsináltam, nem tudtam, hogy a konfig fájlokat is frissíti, így később nem értettem, hogy miért dob 500-as hibát 50-100 kb feletti file-ok feltöltésekor.

aztán belenéztem a /etc/apache2/mods-enabled/fcgid_ispcp.conf-ba és nem voltak meg azok a módosítások, amiket én annó megejtettem. Tehát a hiba javítása:

 

pico /etc/apache2/mods-enabled/fcgid_ispcp.conf
Add hozzá ezt a végéhez:
   FcgidConnectTimeout 60
   MaxRequestLen 134217728

Ez történik minden éjfélkor

f68540a73d98744e97a45a7c0bdf02b3

Nézek egy kis munin statisztikát a szerómon és lesek, hogy mi ez a vissza-vissza térő fűrészfog-nyom. Aztán kapcsoltam – igen, éjfélkor indulnak a backupok a gépen (mysql, file).

Most direktben kivártam puttyon bejelentkezve htop-al a helyzet alakulását:

5e0f03f28444c8c2cae92caf10eb3fa2

16-os load. Nemsemmi.

Amúgy máskor, napközben, terheltebb időszakban nincs gond:

60e2250a77c661a4c265a309d7469cdb