За тези които са запознати с това що е TTL, преминете направо към края на темата, където е обяснено Как да сменим TTL стойността на iPhone
Малко уточнение:
Това ръководство може да ви помогне ако получавате интернет пакетите от вашия доставчик с TTL=1!
Това ръководство ще ви помогне, ако вашия доставчик филтрира изходящите ви пакети по TTL<128(64)!
Какво е TTL?
- TTL е съкращение от Time To Live. Това е числена стойност която се съдържа в интернет пакетите. Нейната стойност по подразбиране (default TTL) е 128 за Windows и 64 за UNIX/BSD системите. TTL се намаля с 1-ца всеки път когато заявката от пакетите премине през някой сървър/компютър/рутер. Ако тази стойност стане 0, пакетите се отхвърлят автоматично от сървъра към който са препратени.
Пример: Отваяте страницата abv.bg. Това означава, че подавате заявка към сървъра на abv.Тази заявка тръгва от вашия компютър с TTL=128(64) стига до сървъра на вашия интернет доставчик и от там излиза с TTL=127, после минава през някакъ друг сървър и така докато стигне до сървъра на abv. След като стигне до там заявката от интернет пакети, примерно е с TTL=100. След това интернет пакетите които сте заявили (като сте искали да отворите страницата abv.bg) се връщат при вас като минават пак през много сървъри и пристигат, примерно с TTL=50. Чак след като пристигнат при вас, ви се отваря страницата abv.bg.
Ако някаде по "пътя" на пакетите тяхната стойност стигне до 0, то те въобще не пристигат при потребителя и съответно страницата не се зарежда.
Естествено това става за секунди и не се забелязва.
Какво е TTL филтър?
- Това е филтър, който:
1). променя стойността на TTL със стойност различна от 1, като може да я увеличава или намаля, т.е. от TTL=50 може да стане примерно 1 или 100 или някаква друга стойност.
2). отхвърля/забранява пакетите с определена/по-голяма/по-малка TTL стойност.
Като пример, ще ви запозная с моята ситуация:
Моя интернет доставчик филтрира изходните пакети от потребителите по default TTL<128(64), т.е ако пратиш заявка с TTL стойност по малка от 128(64), сървъра ги отхвърля.
Защо някои интернет доставчици слагат такива филтри?
- Защото неискат техните потребители да си слагат рутери и да си споделят интернета със съседа примерно.
Какви видове TTL филтри може да срещнете?
- Аз поне съм запознат с 2 вида:
1). TTL=1
2). ТТL<128(64)
Пояснение:
1). При TTL=1, вашия доставчик ви изпраща всички пакети със стойност TTL=1, което значи, че като си сложите рутер, той ги препраща на компютъра ви с TTL=0 и съответно вашия комп ги отхвърля автоматично.
2). При ТТL<128(64), ако си сложите рутер, когато подадете заявка, пакетите се пращат от компютъра ви с TTL=128, след това стигат до рутера и от там се изпращат с TTL=127. При тази ситуация сървъра на доставчика ви, вижда TTL<128 и отхвърля заявката.
Как да заобиколим такива филтри?
1.) TTL=1: Слагате си рутиращо устройство (рутер/компютър) на който можете да смените TTL на изходящите пакети със стойност различна от 1.
1.1.) Update: Под Windows има възможност чрез 2 програмки да смените TTL стойността на входящите пакети със стойност различна от 1, благодарение на което ще можете да заобиколите защитата на вашия доставчик и да си споделите интернета било то с iPhone-a или друго устройство.
2.) TTL<128(64): След като си сложите какъвто и да било рутер, трябва да си смените TTL стойността на изходящите пакети с 1 по-голяма от стойността по подразбиране (default TTL).
Пояснение: относно TTL<128(64)
При Windows от 128 трябва да промените стойността на 129.
При UNIX/BSD (Mac, Linux ....) от 64 трябва да се промени на 65.
Как да сменим TTL стойността на iPhone?
Ето го и момента в който ще ви обясня как става това.
I-начин:
1. Отваряте Mobile Terminal
2. Логвате се като root
3. Пишете следната команда: sysctl -b -w net.inet.ip.ttl=X
Където X е TTL стойността която искате да зададете. (в моята ситуация: 65)
Проблеми: След рестартиране на iPhone, ТТL стойността отново се връща на 64.
Предимство: Командата може да се използва само за тестване.
Решение: Ако искате TTL стойността да не се променя след рестартиране използвайте II-начин.
II-начин:
1. Отивате в /etc чрез любимия ви начин. (iFile, SSH, Mobile Terminal, ...)
2. Създавате нов файл с име sysctl.conf
3. Във файла пишете net.inet.ip.ttl=X
Където X е TTL стойността която искате да зададете. (в моята ситуация: 65)
4. Задавате характеристики на файла както следва:
Ownership:
Owner: root
Group: wheel
Access Permissions:
User: Read, Write
Group: Read
World: Read
Това може да стане много лесно през iFile.
Другия начин е през Mobile Terminal или SSH както следва:
chown root:wheel /etc/sysctl.conf
chmod 0644 /etc/sysctl.conf
За да разберете дали сте го направили правилно напишете: ls -la /etc
характеристиките пред файла трябва да са: -rw-r--r-- 1 root wheel
5. Рестартирайте iPhone-a.
III-начин
Ако някой го мързи да си прави файла, може да го дръпне от някой от линковете по-долу и да си го сложи директно на устройството в папка /etc:
http://dox.bg/files/dw?a=ba380426d0
http://mtmcoolbg.hit.bg/sysctl.zip
Бележки:
Съжалявам, че съм писал толкова много. Надявам се да съм бил полезен на някои.
I-начин и II-начин са тествани върху iPhone 3GS 3.1.2 - Работят!
Това ръководство би трябвало да работи и на iPodTouch. Не е тествано.
Това ръководство е тествано и работи върху Mac OS X 10.5! За 10.4 и 10.6 не е тествано.
Това ръководство по никакъв начин не влияе на вашата интернет скорост.
Споделяйте вашите мнения и впечатления относно нещата написани по-горе.
Ако някой има какво да допълни или да ме поправи с нещо, бъдете свободни в изказванията си!
Update:
Как да сменим TTL=1 стойността под Windows?
Чрез няколко прости стъпки, ще можете да промените TTL стойността на входящите IP пакети под Windows, така че тя да бъде различна от 1.
1. За целта ще са ви нужни 2 програмки:
- WinpkFilter
Източник
mirror 1
mirror 2
- ATTLFilter
Източник
mirror 1
mirror 2
2. Инсталирайте WinpkFilter
Важно!!!
За потребителите на 64-битов Windows Vista/7, за да работи тази програма е необходимо да изключите проверката за дигитални подписи на driver-ите.
Това може да стане, като рестартирате компютъра си и точно преди да boot-не Windows-a да натиснете F8 и да изберете опцията Disable Driver Signature Enforcement
Забележка:
За Windows Vista/7, стартирайте програмката като Administrator, чрез натискане на дясното копче върху файла, изберете Run As Administrator.

Ако по време на инсталацията ви излезе следното съобщение, изберете Install this driver software anyway.

3. Копирайте ATTLFilter.exe в:
- за Windows x86 (32-bit) C:\Program Files\WinpkFilter\bin\i386
- за Windows x64 (64-bit) C:\Program Files\WinpkFilter\bin\amd64
4. Стартирайте ATTLFilter.exe от съответната директория в която сте го копирали от предната стъпка.
5. От бутона Settings, можете да зададете стойностите на TTL филтъра, като в първото поле трябва да зададете цяло число, което ще се сравнява с TTL стойността на входящите пакети. Ако TTL стойността е по-малка или равна на зададената в първото поле, то TTL стойността ще бъде променена с тази която трябва да въведете във второто поле.
По подразбиране настройките са следните: Ако входящите пакети имат TTL по-малък или равен на 1, то тяхната TTL стойност ще бъде променена на 5.
Тези настройки са напълно достатъчни да се заобиколи TTL=1 защитата на вашия доставчик.
След като приключите с настройките, натиснете Save.
6. От списъка с мрежови устройства изберете това устройство, което е свързано директно с интернет.
След това натиснете бутона Enable.
Накрая, оставете програмката да работи и се радвайте на възможността да споделите интернета си с каквото устройство поискате.