Маловідомі подробиці роботи NAT, Криптографія, Security & Hack, статті

Використовуючи термінологію Cisco, в контексті NAT є чотири основних визначення для IP-адрес. Розглянемо їх на прикладі, показаному на малюнку нижче. На обох маршрутизаторах робиться NAT (network address translation).

Проблема тут виникає, коли клієнт намагається використовувати активний режим FTP. Сесія протікає при цьому такий спосіб. У деякий момент по керуючому з’єднанню серверу передається команда FTP-клієнта: PORT 192,16,0,101,4,211.

Подальший діалог виглядає приблизно так:


Server: 200 PORT command successful. Consider using PASV.
Client: RETR file.zip
Server: 150 Opening BINARY mode data connection for file.zip (1334109 bytes).

Найбільший інтерес тут представляє перша команда від клієнта, яка інформує сервер про те, що хост з адресою 192.168.0.101 відкрив для прийому з’єднання даних порт номер (4 * 256) + 211 = 1235. В відповідь на це сервер повинен встановити з’єднання даних зі свого порту номер 20 на вказаний порт хоста 192.168.0.101. Оскільки ця адреса є приватним, таке з’єднання не може бути встановлено. В результаті спостерігається знайомий багатьом системним адміністраторам ефект, коли клієнт начебто успішно підключається до FTP-серверу, але не може завантажувати з нього файли або навіть переглядати вміст поточного каталогу (це відбувається тому, що передача лістингу файлів з сервера на клієнт також здійснюється по з’єднанню даних).

ля боротьби з описаною проблемою може використовуватися перемикання сервера в так званий пасивний режим. Оскільки в цьому режимі ініціатором з’єднання даних виступає клієнт, проблема зникає. Саме тому в Microsoft Internet Explorer, як і консольний FTP-клієнт, вбудований в Windows, використовують за замовчуванням пасивний режим (вони автоматично вставляють перед командами RETR і NLST команду PASV, переключающую сервер у пасивний режим).

Другий випадок. Користувач, що знаходиться в локальній мережі за NAT, використовує FTP-клієнт для того, щоб отримати доступ до FTP-серверу, який також знаходиться за NAT. В цьому випадку, очевидно, не допоможе і пасивний режим, так як в команді PORT незалежно від того, клієнт або сервер її віддає, завжди буде вказаний приватний IP-адресу, і з’єднання даних ніколи не буде встановлено.

Для вирішення цієї проблеми в деяких реалізаціях NAT існує спеціальна функція – трансляція адрес на рівні додатків, звана також NAT ALG (Application Level Gateways). При задіяної функції ALG маршрутизатор відслідковує і модифікує дані рівня додатків деяких мережевих протоколів.

Так, у наведеному вище прикладі, якщо припустити, що публічний IP-адресу маршрутизатора з NAT 1.2.3.4 і що він зберігає номер порту джерела незмінним, команда PORT 192,16,0,101,4,211 була б змінена маршрутизатором на PORT 1,2,3,4,4,211. Завдяки цьому в обох зазначених вище випадках з’єднання даних буде успішно встановлено.

Функція ALG в маршрутизаторах Cisco дозволяє здійснювати трансляцію адрес рівня додатків не тільки для протоколу FTP, але також і для протоколів SIP, H.323, Skinny і деяких інших (завдяки цьому можна, наприклад, розміщувати в локальній мережі сервери DNS). Для більшої зручності функція ALG в маршрутизаторах Cisco включена за замовчуванням.

Аналогічну ALG функціональність в маршрутизаторах на основі ОС Linux забезпечують додаткові файли модулі і патчі до ядра (такі, як ip_masq_ftp, ip_masq_irc і т. п.).

Висновок


Розуміння принципів роботи різних реалізацій NAT може виявитися корисним при пошуку причини незадовільної роботи деяких додатків, що використовують транспортний протокол UDP. Так, наприклад, поєднання ALG і Symmetric або Port Restricted NAT і IP-телефонів, що використовують протокол установки соедіененія SIP, може часом давати найхимерніші результати (спорадичні відмови в реєстрації на сервері, одностороння чутність між абонентами і т. п.), причому це залежить не тільки від налаштувань IP-телефону, але і від налаштувань сервера. Інший приклад: компанія Microsoft повідомляє у своїй статті KB817778, що їх реалізація тунелю IPv6 over UDP не буде працювати через Symmetric NAT (адреса статті в Інтернеті: http://support.microsoft.com/kb/817778/EN-US). Таких прикладів можна знайти ще багато, і у всіх випадках розуміння відмінностей в реалізаціях NAT якщо й не допоможе негайно усунути проблему, то хоча б вкаже на можливі шляхи вирішення (наприклад, замінити firmware маршрутизатора на таке, де NAT реалізований у вигляді Full Cone, якщо, звичайно, воно існує, або замінити сам маршрутизатор).

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*