Serwer w sieci LAN, a wyjście na świat.
- W dzisiejszych czasach lokalna sieć osiedlowa nikogo już nie dziwi. Bardzo często w takich sieciach LAN
gracze stawiają własne serwery Quake]I[Arena, których niestety nie widać w globalnej sieci. Daczego tak się dzieje?
Ano dlatego, że nasz ruter, który zapewnia sieci LAN dostęp do iNET’u nie jest do końca skonfigurowany. - Większość dostawców iNET’u (ISP) przydziela nam (statycznie, lub dynamicznie) jeden rutowalny numerek IP :-(
Do naszego dostawcy możemy wysyłać po kablu wszystkie pakiety, ale on będzie tylko akceptował i przekazywał
dalej tylko te, które pochodzą z przydzielonego nam IP. Dlatego żeby podpiąć LAN do iNET’u potrzebny nam NAT. - NAT dzieli się na dwa rodzaje:
- SNAT (Source-NAT) - zachodzi, gdy zmieniamy adres źródłowy pakietów.
- DNAT (Destination-NAT) - zachodzi, gdy zmieniamy adres docelowy pakietów.
- Dzięki SNAT możemy wszystkim pakietom wygenerowanym przez naszą sieć zmienić adres źródłowy
na ten przydzielony nam przez ISP i dopiero później wysłać je do ISP, a on przekaże je dalej w świat.
W ten sposób zapewniamy sieci LAN dostęp do iNET’u. Niektórzy nazwyają to maskaradą,
ale tak naprawdę maskarada to tylko specyficzna forma SNAT. - Natomiast DNAT możemy wykorzystać, by nowe połączenia przychodzące do rutera ze świata,
rozdzielić odpowiednio na maszyny w sieci LAN. - Jak się zapewne domyślacie w niedużych osiedlowych sieciach LAN, bardzo często na ruterze skonfigurowany
jest tylko SNAT i to wystarcza by zapewnić użytkownikom dostęp do www/ftp/smtp/pop3/news/itd.,
ale niektórzy chcieliby oprócz tych dobrodziejstw, aby ich prywatny serwer było widać z iNET’u.
Więc koniec już tej teorii i przechodzimy do praktycznego przykładu :-) - W przykładzie wykorzystamy bardzo prosty ruter bez firewall’a postawiony na linuxie.
(distro: slackware 8.1, kernel: 2.4.x, iptables: 1.2.x)
Ponadto przyjmijmy, że do ISP jesteśmy podłączeni poprzez interfejs eth0 oraz mamy przydzielony IP np. 1.2.3.4
Do sieci LAN (adresy np. 192.168.0.[1-254]) nasz ruter jest wpięty poprzez interfejs eth1.
Z eth1 skojarzony mamy np. adres 192.168.0.1 i dla sieci LAN jest to tzw. gateway.
Mając te dane przystępujemy do konfiguracji. - Najpierw ustawiamy SNAT:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT
--to-source 1.2.3.4
A więc wszystko co przyszło do rutera z sieci LAN i chce się wydostać na zewnątrz przejdzie przez SNAT
i zostanie wysłane. Wracające pakiety poddane zostaną odwrotnej translacji i wrócą tam gdzie powinny.
Proste :-) prawda ? - Skoro mamy już internet, to teraz zróbmy coś, aby nasz serwer Quake]I[Arena było widać z internetu.
Powiedzmy, że ten serwer postawił kolega Jasio na swoim komputerku (192.168.0.50:27960),
a my chcemy żeby on był widoczny w sieci pod adresem 1.2.3.4:30000, więc ustawmy jeszcze DNAT:
iptables -t nat -A PREROUTING -p udp -i eth0 -d 1.2.3.4
--dport 30000 -j DNAT # ciag dalszy linii wyzej
--to-destination 192.168.0.50:27960
Powyższy zapis oznacza, że pakiety UDP (na takim protokole działa Q3) przychodzące ze świata do rutera
na port 30000, będą przesłane do komputera w sieci LAN o adresie 192.168.0.50 na port 27960. - I to już koniec. wszystko ma działać :-)
baseone | 2012-12-25 14:09:21
ni hasa :(
#764083
AL|EN | 2012-12-25 14:31:46
Poprawione na sztywno.
Odpowiedź na komentarz:#764083
#764085
^M^ | 2012-12-25 14:35:40
alien - nieaktualne przekierowania możesz mi wysyłać na jabbera, bo i tak regularnie dorzucam nowe, jeśli coś mi wpadnie w oko :) - mam oko na wszystkie 404
Odpowiedź na komentarz:#764085
#764086
vhs!redis | 2013-01-08 12:37:23
Witam, mam problem z serverkiem, mianowicie wylacza mi server, jeśli ktoś pogra na nim troszkę, i jest wiecej niz np. 3 osoby nie mam pojecia gdzie szukac bledu, w teorii to jaki error
[code]
OSP Tourney DM/CA/CTF v(1.03a)
02 Mar 03
www.OrangeSmoothie.org
rhea@OrangeSmoothie.org
Admin logging info saved to: "admin1.log"
ERROR: FS_HandleForFile: none free
----- Server Shutdown -----
Sending heartbeat to master.quake3arena.com
Sending heartbeat to master.quake3arena.com
==== ShutdownGame ====
ShutdownGame:
[/code]
#764393
Zaloguj się by dodać komentarz.