|
|
|
tunyu: összekevered a szerveren a listener port fogalmát a kliensek oldalán jelen lévő kimeneti portokkal, illetve a szerver oldalon lévő bemeneti kommunikációs portokkal.
ja látom, már rájöttél. és azt is meg kell csinálni, hogy egy ip címről max X darab kapcsolat létezhessen párhuzamosan, ha csak nem akarod, hogy rommádosolják a szervert. vagy legalább a tűzfalban ezt be kell állítani.
|
|
|
A szerver program csak kifejezetten egy beállított porton történő csatlakozást fogad el, így a több portos támadás a program ellen elméletileg kizárt.A másik hogy a szerver először egy VPS lenne és ott megint csak egy portot szoktak engedélyezni tudtommal,de ha nem így van és bejutnak a VPS-re a szerver program továbbra is csak egy porton kommunikál. Max. adatlopás lehetséges vagy fizikai kár okozás.
A DDOS támadást megelőzni sehogy sem lehet,azt csak akkor lehet megakadályozni ha folyamatban van, IP-k szűrésével vagy komplett szerver restart.
Szrk.: Most esett le hogy érted a több portos támadást, hogy a kliens oldalon küldi több porton.Akkor a szerver oldalon lesz tiltva az IP néhány másodpercig sikertelen bejelentkezés esetén.IP-t olyan gyorsan nem tud váltani.
Persze nem állítom hogy törhetetlen a dolog,de perpillanat ennyit tudok tenni. Ha valaki hozzáértő be akar valahova nagyon törni azt úgy is eléri.De az adatok meg titkosítva vannak így sokat nem ér vele.Általában DDOS támadások vannak az ilyen MMO játékok ellen mert nagy többségük free, így nem érdemes adatot lopni.Mivel ezt én nem szándékozom teljesen ingyenesre csinálni, itt már fent áll az esélye az adatlopásnak is. Persze ha egyszer elkészül
Ezt a hozzászólást Tunyu módosította (2015.03.08 08:01 GMT+1 óra, ---)
|
|
|
Tunyu:
Ezzel a brute-force attack nincs kiiktatva. Senki nem zarja ki, hogy egy IP-cimrol parhuzamosan tobb portrol is probalkozzon a tamado. Tovabba, ha a kliens oldal nem kap idoben pozitiv visszajelzest a csatlakozas sikeressegerol, akkor a kliens is bonthatja a kapcsolatot es ugyanarrol a portrol is ujraprobalkozhat.
Es persze vannak egyeb tamadasi lehetosegek is. Peldaul az is elkepzelheto, hogy valaki csak le akarja terhelni a szervert a csatlakozasi keresekkel, hogy a szerver ne tudja elvegezni az egyeb teendoit. Ez megoldhato a backlog megfeleloen kicsi erteken tartasaval, de akkor meg jo esellyel a normalis kapcsolatokat sem fogja elfogadni. Nem neztem utana, szoval nem tudom, hogy ennek a problemanak a megoldasara van-e valami modszer.
A temanak eleg nagy irodalma van. Tippem szerint par evet el lehetne tolteni a megismeresevel.
|
|
|
Marcsello :
Végül is igazad van, ha nem akar belépni a játékba akkor úgy jelzi neki hogy a szerver online, ha viszont be akar lépni és hibás adattal, akkor bontom a kapcsolatot és a kliens már így is néhány másodperc múlva kapcsolódik újra, és ezzel a brute is ki van iktatva, mert ha 5 másodpercenként egy jelszóval tud próbálkozni az a jelenleg beállított minimális 6 karakternél is jó néhány év lehet.
Instalok :
Korábban így volt megoldva nekem is hogy az első csomag az azonosítás volt. De viszont mostanában eléggé elterjedt és én is így szeretném hogy legyen, hogy a kliens lássa a szerver állapotot és ne csak akkor döbbenjen rá hogy offline a szerver, ha megpróbál belépni a játékba.
|
|
|
Szerintem érdemes úgy megoldani, hogy a kliens első csomagja az azonosítás. Ha erre nem kap választ x időn belül, akkor a szerver offline. Ha meg kap választ, akkor abban vissza tudod küldeni, hogy sikeres vagy sikertelen a bejelentkezés. Amennyiben sikertelen, a szerver néhány mp-en belül dobja a klienssel a kapcsolatot.
|
|
|
szerintem (az alapján amit leírtál) jó az eddigi, csak dobd le akiknek nem sikerült bejelentkezni. szerintem.
|
|
|
Oké, köszi! Én is ilyesmitől tartottam.Lényegében azért hagytam csatlakozni, mert így egyszerűbb volt megoldanom a szerver státusz figyelést,de akkor átírom,csinálok egy teszt csatlakozást a státuszhoz.A brute azért elég gyorsan dolgozik, úgyhogy azt szerintem az idő függvényében ki lehet szűrni, pl. ha 1 másodpercen belül 2 vagy több bejelentkezési próbálkozás történik az már kicsit gyanús, majd erre is írok valamit.
|
|
|
Érdemes ledobálni a felesleges klienseket, minden nyitott kapcsolat támadási lehetőségeket rejt magában.
Persze én se vagyok expert de én ezt javallom
Sőt, ha egy címről sok sikertelen bejelentkezés érkezik azt IP-stűl tiltani kell (fél óra kb), lehet csak valaki balfasz, de lehet, hogy a brute-ot tolják
|
|
|
Visszatértem kicsit a hálózat fejlesztéshez, és ezzel kapcsolatban lenne egy kérdésem.Jelenleg úgy működik a kliens szerver kapcsolat hogy a kliens indításával automatikusan kapcsolódik a szerverhez, ha ez sikerül akkor jelzi hogy online ha nem akkor offline és x másodpercenként megkísérli az újra kapcsolódást.Ha sikeres a kapcsolat a kliens megadja a bejelentkezési adatokat, és ha létezik ilyen az adatbázisban akkor tovább engedi a játékba.De ha nem helyes akkor nem engedi tovább, viszont a szerverrel továbbra is kapcsolatban marad,de viszont csak ping megy így nagy sávszélességet nem foglal.
Az lenne a kérdésem hogy ez így mennyire támadható?
Tudtommal más programoknál a helyes bejelentkezési adat nélkül már a portnál letiltja a klienst, érdemesebb lenne nekem is így megoldanom!?
|
|
|
Jó cucc ez a Process Explorer, megnéztem, nincs child process. Mondjuk a Minecraft Javás szörnyeteg, szóval a fork valószínűleg ezért sem játszik náluk.
Akkor egyelőre rendbe hozom a kódot, aztán majd meglátom melyik megoldás lesz a nyerő.
|
|
|
Ja, meg jut is eszembe: a feladatkezelő kiírja a child processeket? Ha nem, akkor lehet, hogy fork()-oltak, és child processként fut a szerver.
|
|
|
Konkrétan nem tudom megmondani, hogy hogyan kellene megoldani, Személy szerint ha tehetem megoldanám egy külön threadban. De ha komolyabban akarnád elemezni javasolnám neked a Process Explorer nevű cuccot, a threadokat és a socketeket is meg tudod vele vizsgálni per process. És a Debuggolásnál is hasznos
|
|
|
Amennyire én tudom, valahogy így szokták csinálni. Meg én is így csinálnám, ahogy mondtad.
A szerver kódját ígyis-úgyis meg kell írni, szinte mindegy, hogy egy külön processként, vagy csak egy új threaden belül fut. Azon kívül meg minden ugyan az, csak localhostra csatlakozol.
|
|
|
Lehet, hogy ez inkább programozáselméleti kérdés, de mivel van egy erős hálózatos beütése, inkább ide írom.
Szóval tegyük fel, hogy egy Minecrafthoz hasonló játékot írok. Adja magát a felépítés, hogy egyjátékos és többjátékos módban is ugyanúgy egy szerver és egy kliens fusson egyszerre, mert ez jelentősen megkönnyíti a fejlesztést. Viszont nem tudom, hogy egyjátékos módban a szervert hogy lenne érdemes futtatni. Többjátékos mód esetén nyilván van valahol egy szerver, meg van a játékos, akinél fut a kliens, ez két külön folyamatot jelent. Ezt el lehetne játszani egyjátékos módban is, csak nem tudom, mennyivel nehezebb megvalósítani a kliens és a szerver folyamat közötti kommunikációt, mintha a szerver csak egy külön thread lenne.
A Minecraft, ha jól tudom csak külön threadet indít (legalábbis a feladatkezelőben egy folyamat fut csak). Én is efelé hajlok jelenleg, de így akkor két külön build kell, egy a teljesen önálló szervernek, meg egy annak a kliensnek, ami tulajdonképpen tartalmazza magában a komplett szervert is a single player miatt.
Vélemény?
|
|
|
original post (köszi Matzi!  )
Hm, és próbáltad már nem local hálón is tesztelni? Úgy értem haverokkal kipróbálni, stb. Illetve milyen gyakran küldesz adatokat? Lehet nálam az volt a baj, hogy túl sokat küldtem (évekkel ezelőtt volt talán, nem igazán emlékszek már  )
|
|
|
@pretender: érdekes, én most (Geri tanácsára) mezei Nonblocking TCP-t hasznéálok, a main loop-ban, de nekem egyáltalán nem blokkol, semennyit, ugyan akkora FPS volt amíg threadolva volt. igaz jelenleg csak winsock2-ôn tesztelgetem, még nem raktam fel sehova, szóval linux socketek-ôl még nem tudok nyilatkozni, de szerintem az se lehet külömb.
|
|
|
Visual Basicben írtam egy nagyon-nagyon szájbarágós chat tutorialt (Winsock), hogy működjön kell hozzá az mswinsck.ocx, rakjátok a system32-be. Van olyan hogy nem kapcsolódik, nem tudom miért. Akkor meg kell próbálni a másik oldalról.
Link:
http://users.atw.hu/eyegames/downloads/download.php?fname=./winsock.rar
(Módosította bmateusz 2005.08.31. 16:17-kor)
|
|
|
Valahol hallottam egy jobb megoldást. A driverbe ha belenyúlkálsz, elérheted az előbbi helyzetet, mikor ledob, de ha DHCP-vel osztod ki az IP-t, és mákod van, akkor összejön
[url="http://orangeteam.uw.hu"> O.b. team[/url]
|
|
|
Ma nekem is ugyanaz a probléma jött elő Win98 nál, ami Wolfee -nak. Nekem is kb 5-10 másodpercig maradt a kapcsolat majd utána bomlott. Kipróbáltam minden beállítást de sehogy sem sikerült megoldani. Ekkor gondoltam egyet, és átettem a másik gépemből a hálókártyát ebbe, és így meg működött. Szóval lehet, hogy az volt a baj, hogy a windsl nem szerette a hálókártyát.
Gondoltam ideírom, hátha valakinek még jól jöhet.
nagyy
|
|
|
Thx, így már értem, megérte leírnodEgyébként csak az én kis agyacskámnak volt bonyolult
[url="http://orangeteam.uw.hu"> O.b. team[/url]
|
|
|
Arra gondolok, hogy a szerver, és a kliens rész is ugyanabban a progiban van. Például a felhasználó a főmenüben kiválasztja, hogy szervert akar indítani, vagy csatlakozni akar egy szerverre (mint ahogy általában szokott lenni.  ) Ilyenkor, ha szervert indított, és később csatlakozott is rá, ugyanabból a progiból, akkor, mivel a kliens, és a szerver ugyanabban a progiban van, ehhez a klienshez az adatokat nem a hálózaton keresztül küldjük, hanem a programon belül "másoljuk át" a szervert kezelő modulból a klienst kezelő modulba. Így az adott gépen csak egy UDP socketet kell használni, amin keresztül keresztül a szerver kommunikál a többi klienssel, és megspóroljuk azt a socketet, amin keresztül a "helyi" kliens kommunikálna a szerverrel. (mivel itt csak egyszerű mésolás van)
Valami ilyesmit gondoltam, viszont ennek az a hátránya, hogy külön figyelni kell, hogy "távoli", vagy "helyi" klienshez küldjük az infót.
ui.: Bocs, ha komplikáltan fogalmazok néhány helyen, ez egy rossz szokásom, de próbálok róla leszokni.
nagyy
|
|
|
Hát ezt most már alig látom át, pedig lehet hogy nem is olyan bonyolult...
[url="http://orangeteam.uw.hu"> O.b. team[/url]
|
|
|
Egyelőre még nem jöttem rá, hogy hogyan kellene megoldani. Próbáltam ugy is, hogy külön portot használnak a szerverek, meg a kliensek, de a socketes probléma úgy is megmaradt. Néztem egy gamedev -es tutorialt, de ott is ugyanez volt, ha kétszer indítottam el.
Sztem egyelőre ugy fogom megoldani, hogy megnézem van -e szerver az adott hoston, és ha van, akkor a programon belül átadom az adatokat neki, ha meg nincs, akkor normálisan küldöm a hálóra. Igaz ez nem a legszebb megoldás, de legalább működik.
nagyy
|
|
|
Jah, valami ilyesmi rémlik nekem is, de én nem használom Neked működött?
[url="http://orangeteam.uw.hu"> O.b. team[/url]
|
|
|
Mostanában kezdtem el az UDP protokollt megismerni, de van egy komoly problémám. Adott egy szerver, és egy kliens progi. Mondjuk elindítom a szervert, és utána a klienst, majd megkezdem a kommunikációt a két fél közt. Ez addig rendben is van, amíg a két rész külön gépen van, de amint a kettő egy gépre kerül, az egész elromlik, mert a socket() függvény ugyanazt a socketet hozza létre a szerveren, és a kliensen is. Így viszont amikor küldök valamit a szervertől a klienshez, mivel ugyanaz a socketjük, a szerver kapja meg mindíg. Ez mitől lehet?
Ja, és a szervernél és a kliensnél is használom a bind() -et, mert azt vettem észre, hogy ha a kliensnél nincs, akkor
valami random portot használ, az meg nekem nem jó, mert később ha majd multicastelni szeretnék, akkor fontos, hogy a kliensek ugyanazt a portot használják.
nagyy
|
|
|
Beállítottam, de ugyanúgy megmaradt a probléma
Wolfee
Felfedezések akkor születnek, ha valaki nem tartja be a szabályokat
|
|
|
Ez akkor szokott lenni, ha a csatlakozás tulajdonságainál a "Kiszolgálótipusok" lapon rossz dolgok vannak bejelölve. Ahhoz hogy működjön a dolog ezeknek kellene lenni:
"Bejelentkezés a hálózatba"
"Szoftveres tömörítés engedélyezése"
"NetBEUI"
"IPX/SPX"
"TCP/IP"
nagyy
|
|
|
nnah
megcsináltam ezt a windsl-es hülyeséget, már sikerül csatlakoznom a netre, viszont állandó jelleggel bomlik a kapcsolat. az mitől lehet?
Wolfee
Felfedezések akkor születnek, ha valaki nem tartja be a szabályokat
|
|
|
Hali,
nekem anno mikor 98-am volt, fel kellett tenni egy WinDSL nevű programot, amit egy külön CD-n adtak. Emellett a TCP/IP protokollt, és egy "Telefonos hálózati vezérlőt" kellett még installálni. A WinDSL -t a telepítés után, még a hálózati kártyához kellett "csatolni". Ezután, a csatlakozáshoz a WinDSL modemet kellett kiválasztani, és egy tetszőleges hívószámot megadni.
ui.: Ha adtak cd-t, akkor szerintem azon is kellene lenni valami leírásnak, hogy mit hogyan kell.
nagyy
|
|
|
Sziasztok!
nekem egy olyan kérdésem lenne, h Win98 alatt hogyan lehet megoldani, ha a hálókártyára megy az internet kábelje? szal dsl vonalam van, nem modemmel, de a 98 mindig a modemet akarja megkeresni. valaki tud segíteni? nagyon fontos lenne! köszönöm előre is
Wolfee
Felfedezések akkor születnek, ha valaki nem tartja be a szabályokat
|
|
|
A Winsock FAQhoz a helyes [url=http://tangentsoft.net/wskfaq/>link.[/url]
|
|
|
A windows hálózati funkcióit a winsock apival érheted el. A DirectPlay-t a Microsoft már nem támogatja, ezért nem is érdemes használni.
[url=http://people.inf.elte.hu/triasz/socket/net/bgnet.html>Magyar tutorial[/url]
ez a tutorial a linuxos socketek programozását mutatja be, ami alapjaiban megegyezik a winsockos módszerrel, de winsock alatt jópár többlet funkció van pl. aszinkron i/o.
Angol tutorialok:
[url=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/windows_sockets_start_page_2.asp>MSDN referencia és tutorialok[/url]
Winsock FAQ[/url]
[url=http://www.hal-pc.org/~johnnie2/winsock.html>Winsock tutorial[/url]
C++ hálózati libraryk:
[url=http://www.rakkarsoft.com/>RakNet[/url], ez GPL licences, de a fejlesztőktől lehet kérni commercial licencet is
[url=http://www.hawksoft.com/hawknl/>HawkNL[/url], ez LGPL licences, amivel ugyancsak lehet eladásra szánt, zárt forrású játékot fejleszteni
|
|
|
Sok dolgot leszedtek, meg már tényleg csak nagyon kevés ingyenes kód maradt. Kár, de persze azért őket is meglehet érteni, azért régen sokkal többet jártam oda
____________________
/ ShAdeVampirE /
([url="http://shadevampire.uw.hu">ShAdeVampirE otthona a neten...[/url])
|
|
|
Elküldtem. Egyébként legutoljára mikor arra jártam, nem láttam már a network-ös tutorialokat, de az is lehet, hogy ez csak az új design miatt van.
nagyy
|
|
|
OK, az jó lenne. 1ébként azok már fizetősek, nem? Mert multkor néztem és már csak pár tutor free... Szal azt tényleg nagyon megköszönném, ha átküldenéd (shadevampire@gmail.com)
____________________
/ ShAdeVampirE /
([url="http://shadevampire.uw.hu">ShAdeVampirE otthona a neten...[/url])
|
|
|
Itt egy tutorial a témával kapcsolatban:
http://www.flipcode.com/network/
de szerintem a legjobbak a gametutorials.com -on lévő hálózati mintaprogramok, igaz azokat most nem találtam meg, de ha kell elküldöm.
nagyy
|
|
|
Ha a hálózati programozásba szeretnék egy kicsit belekóstolni, akkor hol kezdjem? C++ alatt gondoltam, és tényleg csak vmi alap dolog érdekelne, de nemigen találtam ezzel kapcsolatos cikkeket/ tutorokat.
____________________
/ ShAdeVampirE /
([url="http://shadevampire.uw.hu">ShAdeVampirE otthona a neten...[/url])
|
|
|
Érdekes nekem nem
[url="http://mark38.uw.hu"> Mark38 Games [/url]
|
|
|
Kereszt kötésű kábele színkódja: 1. narancsfehér-narancs-zöldfehér-kék-kékfehér-zöld-fehérbarna-barna
2. zöldfehér-zöld-narancsfehér-kék-kékfehér-narancs-fehérbarna-barna
Egyenes kábelnél mindkét végén a narancsfehéres kezdés van
06705356842
|
|
|
Amúgy nem is mindig kell nézegetni a színeket, a legtöbb keresztbekötésű kábelra rá van írva h "crosslink" v vmi ilyesmi. Amúgy én is sokat szoptam 1x egy ilyennel, egy hibás windows patch miatt
Toma
"Ez nem bug, hanem feature!"
|
|
|
Ma nekem is bajom volt az IP címekkel, és írni akartam ide, de aztán megoldódott, mert DHCP-vel kiosztotta
[url="http://mark38.uw.hu"> Mark38 Games [/url]
|
|
|
Most el fogok kérni még1 kábelt. Az elvileg fordított bekötésű. Aztán lehet jön a rúter.
Köszönöm mindenkinek a segítséget.
ST Programmer
|
|
|
De ha van ADSL-ed akkor vehetnél egy routert is, megkímélnéd magad (szerintem) én is így csináltam.
|
|
|
Kizárt, hogy máshol működött. Két gép között csak cross wired kábellel lehet hálózatot csinálni. Normál kábel switch/hub/modem és gép közé való.
|
|
|
Idézet tigrisss írta:
Hali!
Próbálj meg e szerint eljárni:
- Ellenőrizd, hogy a kábeled fordított bekötésű-e (egymásmellett a két dugó, megnézed: ha nem egyforma a színek sorrendje a két dugón, akkor jó)
- Az egyik gép ip címe legyen mondjuk 192.168.1.1, a másiké meg legyen 192.168.1.2 (ez csak egy példa, de ezzel ki is próbálhatod)
- Kábel bedug mindkét gépbe és jónak kell legyen.
- Próba: \
A kábel nem forított bekötésű, de 2 másik helyen ilyennel már működött. Ilyennel nem lehet megoldani?
ST Programmer
|
|
|
Hali!
Próbálj meg e szerint eljárni:
- Ellenőrizd, hogy a kábeled fordított bekötésű-e (egymásmellett a két dugó, megnézed: ha nem egyforma a színek sorrendje a két dugón, akkor jó)
- Az egyik gép ip címe legyen mondjuk 192.168.1.1, a másiké meg legyen 192.168.1.2 (ez csak egy példa, de ezzel ki is próbálhatod)
- Kábel bedug mindkét gépbe és jónak kell legyen.
- Próba: "ping 192.168.1.2" a parancssorba (az "1-es" gépen), ha kapsz választ, akkor minden ok.
Péter
|
|
|
A fő gondom az, hogy a hálózati csatlakozónál lévő LED sem világít, ha összekötöm a két gépet. Viszont, ha az ADSL-re kötöm őket, mind2 működik faszán. Érdemes addig szórakozni az IP címmel, amíg mind2 gép úgy veszi, hogy nincs bedugva hálóüati kábel?
A 2. kábelt azt haveroméktól kértem, akiknél ezzel volt megcsinálva a hálózat. Így nem vágom, mi lehet a gond. Mondom, én abszolút nem értek hozzá, így lehet valami nyilvánvalót nem veszek észre.
ST Programmer
|
|
|
IP címmel próbáltad elérni?
|
|
|
Tippelni tudok. Ilyen problémával én is találkoztam egy hálópartin, 2 kábellel próbálkoztam, másik gépben működött, enyémben nem. Biztosan az alaplapon utálta a hálókártyát (Genius GF100 TXR4), mert nem az enyém volt a gépemben. Az XP szerint meg minden rendben volt... Ja, és úgy tudom 2 fajta kábel van: az egyikkel switchbe lehet kötni, a másikkal direktbe.
Dolgozz keveset, nem érhet baleset!(Módosította VT 2005.06.25. 22:41-kor)
|
|
|
Legújabb project:
Szókirakó 3
Legutóbb frissített project:
Szókirakó 3
Friss kép a galériából:
|