Attól függően, milyen rendszermag-verziót futtatsz a MASQ szerveren, az emberek nem értenek egyet a valódi problémában. A következő két állításban vannak igazságok, kapcsolódnak egymáshoz, és mindegyik szekértábor felhasználói vitatkoznak rajta mind a mai napig.
A modern 2.4.x rendszereken a legtöbb felhasználó a távoli helyek adminisztrátorait okolja (tipikusan az SSL-t használókat), vagy a MASQ szerver kifelé menő, az ISP által üzemeltetett routerét. A fő gondolat az, hogy mivel ezek a gépek kiszűrik vagy nem megfelelően válaszolják meg az ICMP (specifikusan 3-as kódú, 4-es típusú "Fragment needed") csomagok NÉHÁNY vagy ÖSSZES FORMÁJÁT a biztonságra irányuló eszement paranoiájuk miatt.
Mit jelent mindez? Alapvetően, mondjuk a géped az Internetre 1492 bájtos MTU-val (Maximum Transmission Unit - a maximális csomagméret, amit a géped továbbítani tud) kapcsolódik, ami tipikus a PPPoE felhasználóknál. Ugyanakkor a távoli WWW/FTP szerver 1500 bájtos MTU-val kapcsolódik az Internetre. A TCP/IP úgy működik, hogy amikor egy TCP kapcsolat alakul ki a HTTP / FTP forgalmazáshoz, a távoli gép megpróbálja ellenőrizni, hogy az 1500 bájtos csomag elér-e a gépedhez a kiinduló "SYN" csomagon keresztül.
Mivel a csomag túl nagy a kapcsolat számára, a kifelé menő routered (amit az ISP-d üzemeltet) egy ICMP 3:4 (fragmentáció szükséges) csomagot küld vissza a távoli WWW/FTP szervernek. Ebben a csomagban benne van az ajánlott kisebb mértékű MTU méret is. A probléma az, hogy vagy a helyi kimenő routered, néhány közbenső router vagy a távoli szerverek, lehetnek rosszul beállítva, vagy lehet előttük egy olyan tűzfal ami BLOKKOLJA ezeket az ICMP csomagokat.
A másik RITKÁN ELŐFORDULÓ lehetőség egy vitatható programhiba a 2.0 / 2.2 rendszermagkódban. Néhány felhasználó rámutat arra a tényre, hogy az IPMASQ-nak problémái lehetnek azokkal a csomagokkal, amelyeknél a DF vagy "Don't Fragment" bit be van állítva. Alapjában véve, mikor a MASQ gép bármilyen, 1500-nál kisebb értékű MTU-val lép kapcsolatba az internettel, néhány csomag beállított DF bittel rendelkezhet. Bár az MTU 1500-ra való beállítása a Linux-gépen látszólag megoldja a problémát, a hiba még ott van. Hihetőleg az történik, hogy a MASQ-kód nem rendesen írja vissza a visszatérő ICMP-csomagokat az ICMP 3 Sub 4 kóddal a kezdeményező, maszkolott gép felé. Emiatt a csomagok elvesznek.
Mindezek ellenére ne aggódj. Létezik néhány tökéletesen jó megoldás ennek a csúnya MTU problémának a megoldására:
Engedélyezzük a PMTU clamping (PMTU "leszorítás") opciót a PPPoE-ben
Ez a megoldás főleg azoknak szól, akik a modern 2.4.x és 2.2.x rendszermagokat használják, és PPPoE DSL vagy kábelmodemet használnak az Internetre kapcsolódáshoz. Ez a megoldás lehetővé teszi, hogy a változtatásokat CSAK a MASQ szerveren hajtsd végre, és nem az összes belső kliensen.
A PMTU clamping engedélyezése IPTABLES-szel
Ez a megoldás csak a modern 2.4.x rendszermagokat használóknak szól, akik BÁRMELY típusú Internet-kapcsolattal rendelkeznek. Ez a megoldás lehetővé teszi, hogy a változtatásokat CSAK a MASQ szerveren hajtsuk végre, és nem az összes belső kliensen.
Változtasd meg a MASQ szerver Internet kapcsolatának MTU-ját
Ez a megoldás működik bármely rendszermag-verzióra, de NEM megoldás, ha PPPoE kapcslatunk van DSL/kábelmodem felhasználóként.
Megjegyzendő, hogy néhány felhasználó ellenzi ezt a módszert, mert ronthatja néhány lappangási, várakozási időn alapuló program működését, mint a Telnet vagy az Internetes játékok, de a romlás mértéke nem túl nagy. Másrészről viszont a legtöbb HTTP és FTP forgalom FELGYORSULHAT!
Változtasd meg az MTU-t az összes belső, maszkolott kliens gépen
Ez a megoldás igényli a legtöbb munkát, mivel kisebb változtatásokat kell végezni az ÖSSZES belső gépen. Alapvetően, úgy kell megváltoztatni a belső gépek MTU-ját, hogy illeszkedjen a MASQ szerver Internet-kapcsolatának MTU-jához. Szerencsére ez a megoldás általában "golyóálló", míg a többi említett megoldás, ritkán bár, de nem működik.
Azoknak, akiknek PPPoE klienseik vannak a DSL/kábelmodemhez, vagy PPP-t (betárcsázást) használnak, az Internet csatolójuk NEM "eth0" (például), hanem általában "ppp0". Ezen felül, az Internet kapcsolat MTU-ja nem 1500, hanem 1492 bájt. Az 1492 bájt így adódik ki: az Ethernet kapcsolat mérete (1518 bájt) - Ethernet MAC fejrész (18 bájt) = 1500 bájt, majd vonjuk ki a PPPoE fejlécet (8 bájt) == 1492 bájt MTU. Ez a fejrész nem egy nagy dolog, de néha az ISP vagy a távoli szerver buta dolgokat csinál, és megzavarja a PPPoE vagy nem-1500 bájtos MTU-val rendelkező gépeket.
Erről a témáról több információ is található a weben. Specifikusan itt a téma egy nagyon jó bemutatása: mss-talk presentation (PDF). Itt van a teljes írott és más hasznos információ.
Az mind az RP, mind a PPoE klienseknél a "clamping" opció engedélyezéséhez, add hozzá a következő sorokat az /etc/ppp/pppoe.conf fájlhoz:
# Ha átjáróként üzemelő géped van, válassz "1412"-es értéket. # Ez biztonságos bármilyen beállításhoz, de kicsivel több CPU-teljesítményt igényel. # CLAMPMSS=1412 |
Amint fentebb említetted a PPPoE felhasználóknál, néhány ISP és WWW szerver kiszűri a kritikus ICMP csomagokat, mint az MTU útvonalfelderítés (Path Discovery). Emiatt sok felhasználó úgy találja, hogy a legtöbb Internetkiszolgáló működik, de mások nem vagy nagyon lassan. Szerencsére, a legutóbbi IPTABLES-hez hozzáadták a "PMTU clamping" támogatást, ami segíthet. Ha IPTABLES-t használsz, és belefutottál ebbe a dologba, próbáld meg a következő sor hozzáadását a rc.firewall-iptables szabályok végéhez. Megjegyzendő, hogy az IPCHAINS-ben nincs ilyen opció.
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu |
Ha ez a sor hibát okoz, amikor újra lefuttatod a rc.firewall-iptables* szabályokat, akkor fel kell fejlesztened az IPTABLES verziódat arra, ami már tartalmazza a "TCPMSS" modult.
Ez a megoldás csak a BETÁRCSÁZÓ felhasználókra vonatkozik, mivel a PPPoE használói nem tudják NÖVELNI az MTU-t, mivel a PPPoE fejléc túlméretezett lenne.
Ennek a megoldásnak a használatához tudnod kell mennyi a jelenlegi MTU-ja az internet kapcsolatnak. Ehhez futtasd a "/bin/ifconfig" parancsot a MASQ szerveren. Most keresd meg a hálózati kapcsolatra vonatkozó fejezetet, és keresd meg benne az MTU-t. Ezt 1500-ra KELL állítani. Általában az Ethernet kapcsolatok alapesetben 1500-ra állítják be, de a soros / betárcsázó PPP kapcsolatoknál az alapérték 576.
Egy szabványos Ethernet kapcsolat MTU-jának (ami a DSL, kábelmodem stb. kapcsolathoz vezet) megváltoztatásához, szerkesztened kell a disztribúciódnak megfelelő hálózatindító szkripteket. Lásd a TrinityOS - Section 16 dokumentumot a hálózati finomhangolásokhoz.
Az MTU-val kapcsolatos dolgok PPP-n (nem PPoE) való megváltoztatásához szerkeszd az /etc/ppp/options fájlt, és a teteje felé adj hozzá két különálló sort:
mtu 1500 mru 1500 |
Mentsd a változásokat, és indítsd újra a PPP-t. A fentiekhez hasonlóan ellenőrizd, hogy a PPP-kapcsolat a megfelelő MTU és MRU értékekkel rendelkezik-e.
CUA felhasználók: végül, bár ez nem általános probléma, néhány 2.0.x rendszermagot használó talált egy megoldást a következő problémára. PPP felhasználóként ellenőrizd, melyik portra csatlakozik a PPPd. Ez egy /dev/cua* vagy egy /dev/ttyS* port? Ennek /dev/ttyS*-nak KELL lennie, mivel a /dev/cua* eszközrendszer elavult, és bizonyos dolgokat különös módon tehet tönkre.
Ha átállítod az ÖSSZES belső kliensgépet arra, hogy ugyanakkora MTU-t használjon, mint a kimenő Internet kapcsolatod MTU-ja (például 1492-t a PPPoE felhasználóknál), mindennek jól kell működnie, és ez a módszer néha a LEGHATÉKONYABB megoldás. Ez magában foglalja az ÖSSZES fent említett megoldást. Viszont rengeteg munkával járhat, ha sok belső géped van, sőt lehetetlen is lehet, ha nincs adminisztrációs jogod minden gépre.
A megvalósításhoz kövesd ezeket a lépéseket a megfelelő operációs rendszereknél.
A következő példák az MTU 1492-re való beállítását mutatják be a tipikus PPPoE-kapcsolatokhoz, néhány DSL- és kábelmodem-felhasználónak. Ajánlott a lehetséges LEGNAGYOBB érték használata minden kapcsolatnál, amely 128 Kb/s vagy gyorsabb. Megjegyzendő, hogy néhány PPPoE ISP igényelheti az MTU 1460-ra való állítását a megfelelő kapcsolódáshoz, a további csomagméret-növekedés miatt az ő belső hálózatán belül.
Az egyetlen valós ok a kisebb MTU használatára a kisebb lappangási idő, ami viszont az átvitel rovására megy. Bővebb részletekért lásd: http://www.ecst.csuchico.edu/~dranch/PPP/ppp-performance.html#mtu
Ha tudod, hogyan kell hasonló változtatásokat végezni más operációs rendszereken, mint az OS/2, MacOS stb., írj levelet: David Ranch -nek, hogy ezek is bekerülhessenek a HOGYANba.
------------------------------------------
1. Az MTU bellítása változhat disztribúcióról disztribúcióra.
Redhat: A különböző "ifconfig" bejegyzéseket kell szerkesztened a
/sbin/ifup parancsfájlban.
Slackware: A különböző "ifconfig" bejegyzéseket kell szerkesztened a
az /etc/rc.d/rc1.inet fájlban.
2. Itt egy jó, minden disztribnél működő példa: szerkeszd az /etc/rc.d/rc.local
fájlt és tedd a VÉGÉRE a következő sorokat:
echo "Changing the MTU of ETH0"
/sbin/ifconfig eth0 mtu 1492
Írd át az "eth0" szöveget annak az eszköznek a nevére, ami a kimenő
fő kapcsolat az internettel.
3. A haladó szintű beállításokhoz, mint a "TCP Receive Window" és hasonlók,
részletes példákért arról, hogyan szerkeszd a megfelelő hálózati parancsfájlokat
az adott Linux-terjesztésnél, lásd a
http://www.ecst.csuchico.edu/~dranch/LINUX/index-linux.html#trinityos
16. fejezetét.
------------------------------------------ |
------------------------------------------
1. BÁRMILYEN változtatás a Regisztrációs Adatbázisban kockázatos dolog, de egy
biztonsági másolattal kevésbé veszélyes. Csak SAJÁT FELELŐSSÉGEDRE cselekedj.
2. A Start-->Run(Futtatás) menüpontját választva indítsd el a RegEdit programot.
3. A Registry-->Export Registry File-->Save segítségével mentsd a
regisztrációs adatbázist egy biztonságos helyre.
4. Keressük meg az alábbi kulcsot:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Inter
faces\<ID for Adapter>
Minden ID-adapternek alapértelmezett kulcsa van a DNS, IP-cím, alapértelmezett
átjáró, hálózati maszk számára. Keresd meg azt, amelyik a hálózati kártyádhoz
tartozik.
5. Hozd létre a következő bejegyzést:
type=DWORD
name="MTU" (NE írd be az idézőjeleket.)
value=1492 (Decimális) (NE írd be a "(Decimális)" szöveget.)
http://support.microsoft.com/support/kb/articles/Q120/6/42.asp?LN=EN-US&SD=gn&FR=0
*** Ha tudod, hogyan kell az MSS, TCP-ablakméret és a TTL-paramétereket
*** megváltoztatni az NT 2000-ben, küldj e-mailt a dranch@trinnet.net címre,
*** hogy benne lehessen ebben a leírásban.
5. Indítsd újra a gépet a változások érvényre juttatásához.
------------------------------------------ |
------------------------------------------
1. BÁRMILYEN változtatás a Regisztrációs Adatbázisban kockázatos dolog, de egy
biztonsági másolattal kevésbé veszélyes. Csak SAJÁT FELELŐSSÉGEDRE cselekedj.
2. A Start-->Run(Futtatás) menüpontját választva indítsd el a RegEdit programot.
3. A Registry-->Export Registry File-->Save segítségével mentsük a
regisztrációs adatbázist egy biztonságos helyre.
4. Hozz létre el a következő kulcsokat a regisztrációs fákban, válasszunk a két lehetséges
fa közül. A különböző bejegyzések a különféle hálózati eszközök számára vannak,
például a betárcsázó (PPP), Ethernet-kártyák, PPTP VPN-ek stb.
http://support.microsoft.com/support/kb/articles/Q102/9/73.asp?LN=EN-US&SD=gn&FR=0
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Parameters\Tcpip]
és
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<Adapter-name>\Parameters\Tcpip]
Cseréljük ki az "<Adapter-Name>" szöveget a megfelelő kimeneti LAN-eszköz nevével.
type=DWORD
name="MTU" (NE írd be az idézőjeleket)
value=1492 (Decimal) (NE írd be a "(Decimal)" szöveget)
*** Ha tudod, hogyan kell az MSS, TCP-ablakméret és a TTL-paramétereket
*** megváltoztatni az NT 4.x-ben, küldj e-mailt a dranch@trinnet.net címre,
*** hogy benne lehessen ebben a leírásban.
5. Indítsd újra a gépet a változások érvényre juttatásához.
------------------------------------------ |
------------------------------------------
1. BÁRMILYEN változtatás a Regisztrációs Adatbázisban kockázatos dolog, de egy
biztonsági másolattal kevésbé veszélyes. Csak SAJÁT FELELŐSSÉGÜNKRE cselekedjünk.
2. A Start-->Run(Futtatás) menüpontját választva indítsd el a RegEdit programot.
3. Mielőtt folytatnád, készíts biztonsági másolatot a regisztrációs adatbázisról.
Ehhez másold a \WINDOWS könyvtárból a "user.dat" és "system.dat" fájlokat
egy biztonságos helyre. Meg kell említeni, az előbb említett
"Regedit: Registry-->Export Registry File-->Save a copy of your registry"
módszer esetén visszaállításnál a program csak a ÖSSZEFÉSÜLI a dolgokat,
és NEM helyettesíti az akuális adatbázist a mentéssel.
4. Keresd végig az összes Regisztrációs Adatbázisbeli fát, amely "n"-re végződik
(pl. 0007) és van egy "IPAddress" nevű bejegyzése, ami tartalmazza a hálózati
kártyád IP-címét. Ez alatt a kulcs alatt add hozzá a következőt:
A http://support.microsoft.com/support/kb/articles/q158/4/74.asp oldal alapján:
[Hkey_Local_Machine\System\CurrentControlset\Services\Class\NetTrans\000n]
type=STRING
name="MaxMTU" (NE írd be az idézőjeleket.)
value=1492 (Decimális) (NE írd be a "(Decimális)" szöveget.)
5. Szintén megváltoztathatod a "TCP Receive Window" értékét, ami néha ALAPOSAN
megnöveli a hálózat sebességét. Ha azt veszed észre, hogy az adatátvitel
éppenséggel csökkent, állítsd vissza az eredeti értékeket, és indítsd újra
a rendszert.
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP]
type=STRING
name="DefaultRcvWindow" (NE írd be az idézőjeleket.)
value=32768 (Decimal) (NE írd be a "(Decimális)" szöveget.)
type=STRING
name="DefaultTTL" (NE írd be az idézőjeleket.)
value=128 (Decimal) (NE írd be a "(Decimális)" szöveget.)
6. Indítsd újra a gépet a változások érvényre juttatásához.
------------------------------------------ |
------------------------------------------
1. BÁRMILYEN változtatás a Regisztrációs Adatbázisban kockázatos dolog, de egy
biztonsági másolattal kevésbé veszélyes. Csak SAJÁT FELELŐSSÉGEDRE cselekedj.
2. A Start-->Run(Futtatás) menüpontját választva indítsd el a RegEdit programot.
3. Mielőtt folytatnád, készíts biztonsági másolatot a regisztrációs adatbázisról.
Ehhez másold a \WINDOWS könyvtárból a "user.dat" és "system.dat" fájlokat
biztonságos helyre. Meg kell említeni, az előbb említett
"Regedit: Registry-->Export Registry File-->Save a copy of your registry"
módszer esetén visszaállításnál a program csak a ÖSSZEFÉSÜLI a dolgokat,
és NEM helyettesíti az akuális adatbázist a mentéssel.
4. Keresd végig az összes Regisztrációs Adatbázisbeli fát, amely "n"-re végződik
(pl. 0007) és van egy "IPAddress" nevű bejegyzése, ami tartalmazza a hálózati
kártyád IP-címét. Ez alatt a kulcs alatt add hozzá a következőt:
A http://support.microsoft.com/support/kb/articles/q158/4/74.asp alapján:
[Hkey_Local_Machine\System\CurrentControlset\Services\Class\NetTrans\000n]
type=DWORD
name="DefaultRcvWindow" (NE írd be az idézőjeleket.)
value=32768 (Decimal) (NE írd be a "(Decimális)" szöveget.)
type=DWORD
name="DefaultTTL" (NE írd be az idézőjeleket.)
value=128 (Decimal) (NE írd be a "(Decimális)" szöveget.)
5. Szintén megváltoztathatod a "TCP Receive Window" értékét, ami néha ALAPOSAN
megnöveli a hálózat sebességét. Ha azt veszed észre, hogy az adatátvitel
éppenséggel csökkent, állítsd vissza az eredeti értékeket, és indítsd újra
a rendszert.
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP]
type=DWORD
name="DefaultRcvWindow" (NE írd be az idézőjeleket.)
value=32768 (Decimal) (NE írd be a "(Decimális)" szöveget.)
type=DWORD
name="DefaultTTL" (NE írd be az idézőjeleket.)
value=128 (Decimal) (NE írd be a "(Decimális)" szöveget.)
6. Indítsd újra a gépet a változások érvényre juttatásához.
------------------------------------------ |
| Előző | Tartalomjegyzék | Következő |
| ( Furcsa viselkedés ) - Amikor az internet kapcsolatom először elindul, semmi sem működik. Ha újra próbálom, minden jól megy. Miért van ez? | Fel | ( FTP ) - Az maszkolott FTP-ügyfelek nem működnek. |