Translate

неділя, 4 вересня 2011 р.

Боротьба з КПІ-Телеком.


Деякі "розумні" провайдери можуть визначати клієнтів які знаходяться "за NAT-ом". Тобто припустимо ситуацію, що ви купили роутер правильно його налаштували, NAT-IP присвоївся, мало б усе працювати, але от біда, не працює. На преший погляд тупикова ситуація, але не все так безнадійно...

Певні провайдери можуть визначати наявність додаткового роутера у мережі, читаючи значення TTL (time to live) в мережевих пакетах, що ви відсилаєте. TTL- це так би мовити час життя пакету, коротше кажучи, його придумано для того, щоб пакети не блукали постійно в мережі і самознищувались. Проходячи через кожен роутер, його значення частіше за все падає на одиницю.

З іншої сторони, наприклад, iptables на роутері (гейтвеї) фільтрує трафік і знищує всі пакети з нестандартним TTL ( а частіше знищує пакети з певним TTL, типу з 128-1=127 (windows) чи 64-1=63 (*nix) ), таким чином визначаючи наявність вашого роутера. Далі представлено такий собі воркераунд . :)

Логічно припустити, що треба зробити так, щоб пакети відправлені з вашої клієнської машини на роутер були вже на один більшими, тобто TTL мав значення 65. (пакет приходить на роутер - значення падає до 64 - пакет відсилається на шлюз провайдера, і так як його значення дефолтне, направляється далі куди треба).

Міняємо значення ТТL на тачці. На Windows це робиться приблизно так http://winitpro.ru/index.php/2010/10/28/menyaem-znachenie-time-to-live-ttl-v-windows-server-2008vista7/ , значення, зрозуміло, має бути наприклад, 129. Якщо результату не досягнуто - спробуйте встановити 65.

На лінуксі все навіть простіше:

# echo 65 > /proc/sys/net/ipv4/ip_default_ttl

Додаємо команду в автозагрузку в /etc/rc.local чи як pre-up в загрузку мережі в /etc/network/interfaces.

Деякі відносно нормальні роутери вміють не змінювати TTL:


Але це, насправді, не дуже нормальна практика.

1 коментар:

  1. Так тож можна :)
    Можеш дописати в свою статтю про wifi - перевірений метод.

    ВідповістиВидалити