Rengetek a következő kérdés : Hogyan tudom megosztani a netet? miaz hogy permissoin denies,NAT,forward,maszkolások,iptables stb... A problémákban pedig lelkesen segítenek a tagok egymáson ami nagyon jó,viszont konkrét wiki jellegű leírást (mint pl a grub2-ről [tisztelet az írónak]) nem találtam ezért megpróbálok készíteni eggyet. De előbb egy kis bio:
-
3 éve ubuntu 3 éve nyugalom 3 éve stabil,ingyenes gép.Magamat a "Vodafone "digitális kánaám" E220-as fürdőszobai szappan tartóval kezdett internetezni" csoportba sorolnám azóta valami KXXX van, DE ami ebből a lényeg hogy router drága lenne (annyira azért már manapság már nem) a háztartásban 2 PC van és sok wifi képes mobil.Nem volt kérdés ezt meg kell osztani.Mert persze hogy mindenki egyszerre akar netezni és hát jöttek a hosszú fórum olvasások,megjegyezném igen jó eredményekkel :)
sudo apt-get install dnsmasq
gépeljük be a jelszót madj enter (attól hogy nem látszik még beírja :D)
meg fogja kérdezni azt is hogy biztosak vagyunk-e a telepítésbe de hát persze (Y/n)
Ha valami olyan baja van hogy nem találja akkor nézzünk körül a szoftver források körül,valószínűleg nincs olyan repo amibe benne lenne de erre kicsi az esély.
Kicsit részletezném a program beállítását:
Aki most ismerkedik annak tudni kell hogy a linux és úgy az ubuntu is a programok töbségének beállításait mindíg egy .conf config fájlban tárolja ami általában az /etc könyvtár alatt található
megyiben a dsnmasq települt szerkesszük meg azt a konfig fájlt ahogy nekünk jó
terminálba:
gksu gedit /etc/dsnmasq.conf
( a gedit a szöveg szerkesztőnk ide akár mi más is jöhet ha nem kedveljük a gedit-et)
A fájt megnyitva elég sok példát találunk benne ki kommentezve (a sor elején # jel) aki tud angolul annak most jó dolga van ugyan is elég érthető az ismertetés.
Mielőtt bele kezdenénk a szerkesztésbe el kell dönteni szeretnénk-e DHCP szervert a hálózatunkra vagy nem.
Szerény véleményem szerint LAN-ra nem kell DE Wlan-ra viszont kell.
Aki nem akar DHCP servert az nem írjon a dnsmasq file-ba!!!
(A DHCP server aki nem ismerné anyit csinál ha egy host be akar jönni a hálónka megkönnyítve a dolgot autómatikusan oszt neki címet és mindent mi jó. Így nem kell az ip cím,netmaszk,átjáró,dns szervereket mind beállítani.Othoni LAN-ra a gyorsaság miatt meg a gépek száma miatt nem ajánloma DHCP-t Wlan-ra meg azért ajánlom mert a telón macerás beállítani főleg androidon mert akkor mindenhová azt használná fel eltart 10-15 ms-be mire bejön a hálóba az eszköz de hát ezt fel kell áldozni a kényelem oltárán)
Szóval akkor ott tartunk hogy LAN-on nincs dhcp Wlan-on meg van
Akkor a konfig fájl
A szövegfájl legelejére szújuk ezt be(/etc/dnsmasq):
interface=wlan0
dhcp-range=192.168.2.101,192.168.2.110,72h
interface=eth0
interface: amin halgatózik jelen esetben ez wlan0 (általában wifi) és eth0 (azaz egyzserű kábeles háló)
A leírás elején melítettük meg ifconfig parancsot ahol láttuk a saját interfészkeinket ezeket (eth0,wlan0) ki kell cserélnünk arra mit mi ott látunk,nagy valószínúséggel ugyan az de ez nem biztos.
dhcp-range: Amilyen címtartományom belül szertnénk kiosztani a csatlakozni vágyóknak a címeket
-
további paraméterek természetesen megadhatók de itt most erre nem bonyolítunk rá plusszba
anyit még érdemes tudni hogy így az érkező gépek a
255.255.255.0-ás netmaszkal
a saját ip címünket kapjánk mint átjáró jelen esetben nálam 192.168.2.100
és a dns kiszolgáló is ugyan így 192.168.2.100
sudo /etc/init.d/dnsmasq {start|stop|restart|force-reload|status}
PL: megállítani
sudo /etc/init.d/dnsmasq stop
Ha valamilyen változtatást végzünk a config (dnsmasq.conf) a fájlon akkor azok csak a progi újraindítása után fognak érvénybe lépni
azaz:
sudo /etc/init.d/dnsmasq force-reload
és így tovább
Tegyünk fel hogy fut,beállítottunk mindent
DHCP Wlanon static ip meg LANon
Akkor lássuk a LANra néző kártyánk ip beállításait
itt két út van mind2 ismertetve lessz
1. Egerészve (by Fóti Marvell :D)
A jobb felső sarokban a hálózat kezelő vagy a rendszer/beállítások/Hálózati kapcsolatok programot vegyünk elő.
szépen meg is jelenik alap értelmezésben a vezetékes fülön álva itt látunk olyat hogy auto ethX hozzunk létre egy új hozzáférési pontot a hozzáadás gombal ot ugorjunk az ipv4 beállításokra
majd módszernek válaszzuk a kézi menüpontot
katt a hozzáadás gombra
És itt adjuk meg kedvelt privát ip-nket pl: 192.168.0.1 hálózati maszk 255.255.255.0 átjáró 0 mert ugye azok mi vagyunk :)
mentsünk
Ezzel fel van konfigurálva a hálózati adapterünk.
2. lehetőség parancsolva
tudni kell hogy ez a módszer nem tartós addig van életben míg a gép nem áll le vagy valami le nem állítja az interface-t.
Keressünk meg ismét a terminálunkat és illesszük be:
sudo ifconfig eth0 192.168.0.1 netmask 255.255.255.0
természetesen az eth0-át cseréljük le (ha kell) a sajátunkra
Tehát akkor interface-ek beállítva dhcp (ha kell) beállítva dns maszkolás beállítva.
Jöhet a forwardink vagyis a hálózati gépektől érkező forgalom átírányítása a net felé.már persze ha oda akarnak menni :)
erre az iptables programot használjuk ami alap program az ubiban
ezt terminálon keresztül értetjük el:
{syntaxhighlighter SPEC}
sudo iptables -A FORWARD -o ppp0 -i eth0 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
{/syntaxhighlighter}
ez a három parancs biztosítja az átírányítást. természetesen az if-eket ki kell cserélni (ppp0 wlan0)
ugye a -o az internetre néz jelen esetben ez a modem és a -i eth0 pedig a belső hálózatunkra.
na és itt esek gondolkodóba hogy vajon kell-e még valami
-
lenne még egy ilyen hogy sudo echo 1 > /proc/sys/net/ipv4/ip_forward
ami beleír egy 1-et az alábi fájlba,csak nem tudom hogy ezt az iptables megteszi-e helyettünk vagy sem,de kiderítem.
sudo ifconfig wlan0 down
sudo iwconfig wlan0 mode ad-hoc
sudo ifconfig wlan0 192.168.2.100 netmask 255.255.255.0
sudo ifconfig wlan0 up
sudo iwconfig wlan0 essid H
mint látható nálam ez adhoc módban futkározik ez az android nem szereti csak ha cyanogen romunk van ami hála a cm csapatnak van a pengémre:)
A beállítások egyértelműek tetszés szerint szabható az ip cím és az ssid
Ez a kis kódrészletet érdemes egy fájlba menteni majd futtathatóvá tenni(lentebb kitérek rá hogyan) majd ha ismét szügségünk van erre a beállításra csak lefuttatjuk a scriptet és készis.
Ha szeretnénk a wifi-n netezőket is meglepni az internet elérésével akkor kicsit módosítani kell az előző ip tables beállításokat:
sudo iptables -A FORWARD -o ppp0 -i wlan0 -s 192.168.2.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
És ezzel befejeztük a server gépünk beállításait
akkor az eddigi háló:
NET ---> [ppp0] |(pub.ip) ---SERVER --- (192.168.0.1) -------------| [eth1] kliens(192.168.0.2)
------- --->[ethX] |(pub.ip)---SERVER ---(dhcp 192.168.100.X)- | [wlan0] mobil,PC, megamibevanwifi
nincs más hátra mint beállítani a klienst LAN címét ugyanis a dhcp helyettünk dolgozik wlan-on
szóval nyomás a kliens:
Elővesszük a hálózati kapcsolatok programont és pont mint a szervernél beállítjuk az ip címünket ami pl most legyen 192.168.0.2 mask: 24 (255.255.255.0)
és innen változik:
-
átjáró: a server ip címe jelen esetlen 192.168.0.1
dns kiszolgálók: ugyan csak a server ip : 192.168.0.1
ping 192.168.0.2 *vagy amit beállítottunk ip címet :)
ha van jel akkor örülünk ha nincs akor is mert ez egy nagyon hosszú fejezet volt :P
Ha nincs esetleg egy próba:
sudo arp -a
ha van valami ott ip mag mac akkor egy tűzfal miatt nincs pingünk (echo ripli)
#a cikk fojtatódik automatizálással és még több hiba ellenőrzéssel nemsokára :)
Amennyiben az internet megosztás működik újabb probléma lehet ha esetleg a kapcsoltunk megszakad időközönként ami részemről elég sokszor előfordul és ilyenkor sajnos az iptables szabályaink is megszünnek ugyan is az aktuális interfész "megszűnik" arra az időre amígy újra nem csatlakozik
Ennek orvoslására használjuk majd a hálózat kezelő interfész felhúzási szabályát ami nem meglepő módon egy "conf" file.Szóval arról lessz szó hogy mikor újra csatlakozunk a saját kis konfiguráló script beírja az iptables forward szabályokat.
És rajta terminál:
{syntaxhighlighter SPEC}
gksu gedit /etc/network/interfaces
{/syntaxhighlighter}
Nálam ez most így néz ki:
auto lo
iface lo inet loopback
auto ppp0
iface ppp0 inet ppp
post-up wifirules
auto ppp0: itt a ppp0-t helyettesíts be a saját interface-dre
iface ppp0 inet ppp : itt az érdekes az inet ppp nálam ez a point-to-pointot jelent ez a betárcsázó mód itt általában inet dhcp áll azaz a szolgáltató szerverétől kapjuk a címünket
post-up: ez az ami nekünk most fontos ugyan is ez a script (wifirules) amit lefut ha az interface újra csatlakozik
Erről a scriptről anyitt kell tudni hogy az /etc/network/interface/if-up.d/ könyvtárban legyen.
Jelen esetben nálam ugye a /etc/network/interface/if-up.d/wifirules ami lefut
Dokumentum az /etc/network/interfacesről : http://www.cyberciti.biz/faq/setting-up-an-network-interfaces-file/
A wifirules script pedig ennyit tartalmaz,itt kénytelen vagyunk egy kis bash programozást is tanulni.
A lényege annyi ha a wlan0 interface él és a 192.168.2.100-as a címe akkor adja hozzá az iptables szabályokat
Hogy miért? Ha a wifi felhúzzuk ez előzőkben leírt kódrésszel,aztán megszakad a net attól a wifi még működik csak a gépünk nem továbbítja a csomagokat a helyére,azért ha a újra lesz net kapcsolat,akkor hozzáadjuk a szabályokat,és már mehet is a szörfölés wlan-on is.
Szóval a wifirules fájl:
{syntaxhighlighter SPEC}
#!/bin/bash
ip addr show dev wlan0 | fgrep -q 'inet 192.168.2.100'
if [ $? -eq 0 ]; then
sudo iptables -A FORWARD -o ppp0 -i wlan0 -s 192.168.2.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
fi
ip addr show dev eth2 | fgrep -q 'inet 192.168.0.3'
if [ $? -eq 0 ]; then
sudo iptables -A FORWARD -o ppp0 -i eth2 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
fi
{/syntaxhighlighter}
Ha szügségünk van hasonlóra mentsük ki ezt a kis kódot egy fájlba,majd jobb gomb a filre-ra,jogosultság fül és ott pipáljuk be a fájl futattása programként,azaz tegyük végrehajthatóvá :)
Ha minden jól ment akkor amenyiben fel van konfigolva a wlanunk és lessz net kapcsolat is hozzá adódnak a szabályok a script által és mehet a móka :)