- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF128:DrBrown2
Материал из Linuxformat.
- Рецепты доктора Брауна
Linux выручает
- Сделаем ПК с 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. Во-вторых, укрепляется безопасность: ведь внутренние компьютеры попросту невидимы извне. С ними нельзя установить входящее соединение.