LXF128:DrBrown2

Материал из Linuxformat.

Перейти к: навигация, поиск
Рецепты доктора Брауна

Linux выручает

Шлюз NAT перезаписывает IP-адрес и порт источника в заголовках исходящих пакетов и IP-адрес и порт назначения в ответах.

Сделаем ПК с Linux беспроводным маршрутизатором.

Вот вам сценарий. Сотрудник учебного центра пообещал, что в классной комнате будет проводное интернет-соединение, но там оказалось только беспроводное, и старые компьютеры учебного центра его не поддерживают. Беда бы невелика, кабы в первое же утро студентам не нужно было загрузить несколько ключевых пакетов. Подавив первый приступ паники и икоты, я понял, что проблема решается, и употребил свой ноутбук как маршрутизатор между маленькой проводной сетью класса и беспроводным подключением к Интернету.

Поскольку на ноутбуке были и проводной, и беспроводной интерфейсы, и на нем стояла Ubuntu, настройка была проста. Сперва я активизировал беспроводной интерфейс и настроил его на использование DHCP. Затем сконфигурировал проводной интерфейс с фиксированным IP-адресом 192.168.0.254. Осталось лишь прошептать над компьютером несколько заклинаний. Первым из них было включение перенаправления IP-пакетов между проводным и беспроводным интерфейсами.

Это делается командой

sudo sysctl -w net.ipv4.ip_forward=1

Если вы хотите, чтобы эта настройка пережила перезагрузку, добавьте ее в /etc/sysctl.conf, т. е. впишите туда строку

net.ipv4.ip_forward=1

Еще надо было включить NAT между внутренней (проводной) и внешней (беспроводной) сетями. Я сделал это следующей командой:

sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0.0.0 .0/0 -j MASQUERADE

Она велит сетевому фильтру выполнять преобразование сетевых адресов для всех пакетов, приходящих из внутренней сети.

Затем я выделил каждому студенту по адресу из подсети 192.168.0.0/24 и попросил их настроить свои сетевые карты, указав в качестве шлюза по умолчанию 192.168.0.254. Наконец, я попросил их изменить файл /etc/resolv.conf, указав в нем адреса DNS-серверов. Я взял их из resolv.conf ноутбука; получены онибыли, разумеется, с DHCP-сервера беспроводной сети.

Итак, что такое NAT?

NAT – технология, которая позволяет шлюзу скрывать IP-адреса компьютеров внутренней сети. Для этого она искусно меняет IP-адрес и порт источника в заголовках исходящих пакетов и IP-адрес и порт назначения в заголовках входящих пакетов.

Вот как это обычно происходит:

  • Джеми на компьютере с IP-адресом 192.168.0.4 заходит на сайт TuxRadar по адресу 80.244.178.150. Его компьютер выбирает более-менее случайный номер порта (4567 на схеме), с которого будут отправляться пакеты.
  • Пакет приходит на маршрутизатор, настроенный на преобразование адресов. Он находит свободный порт (на схеме – 5678) и переписывает IP-адрес и порт источника таким образом, что кажется, будто пакет отправляется с внешнего интерфейса шлюза (на схеме – 177.1.2.3). Шлюз также делает запись в таблице NAT, связывая номер порта (5678) с исходным источником пакета. (Текущие NAT-соединения можно посмотреть в /proc/net/ip_conntrack или, в более съедобном виде, командой netstat-nat).
  • Web-сервер TuxRadar отвечает шлюзу.
  • Шлюз находит соответствующие данному NAT-соединению IP-адрес и порт получателя и записывает их в заголовок пакета перед его отправкой обратно во внутреннюю сеть.

У NAT есть ряд преимуществ. Во-первых, при этом множество компьютеров могут выйти в Интернет всего через один зарегистрированный IP-адрес. Обычно все внутренние компьютеры используют частные адрес ные пространства, например, из диапазона 192.168.0.0/16. Этот прием значительно сокра щает расходование адресного пространства IPv4. Во-вторых, укрепляется безопасность: ведь внутренние компьютеры попросту невидимы извне. С ними нельзя установить входящее соединение.

Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию