Раздача Wi-Fi на ноутбуке с использованием NetworkManager

06 дек. 2013

Интернет глубоко и прочно проник в нашу жизнь и сознание. Настолько, что вне доступа к нему трудно представить работу ставших обыденными для нас вещей, таких как планшет или смартфон. И всё хорошо, если бы не необходимость Wi-Fi сети, паутина которой ещё не полностью охватила наше жизненное пространство. А её отсутствие способно превратить столь дорогие нашему сердцу вещи в красивые безделушки. Но не всё потеряно, если под рукой имеется ноутбук с подключением к сети Интернет и Wi-Fi картой с режимом точки доступа.

Настройка Wi-Fi на ноутбуке

Все шаги по настройке проводились на ноутбуке Dell Vostro 3350 с установленной Gentoo, и в других случаях должны рассматриваться только как приближённое руководство. Следуя Gentoo Wiki, установим пакет sys-apps/pciutils и узнаем модель нашей Wi-Fi карты

# lspci | grep -i network
09:00.0 Network controller: Intel Corporation Centrino Wireless-N 1030 [Rainbow Peak] (rev 34)

Теперь настроим ядро Linux

[*] Networking support  --->
  [*]   Wireless  --->
    [*]   cfg80211 - wireless configuration API
    [*]   Generic IEEE 802.11 Networking Stack (mac80211)
    [*]   Enable LED triggers

Device Drivers  --->
  Generic Driver Options  --->
    [*] Userspace firmware loading support
    [*] Fallback user-helper invocation for firmware loading

  [*] Network device support  --->
    [*]   Wireless LAN  --->
      [*]   Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi)
      [*]     Intel Wireless WiFi DVM Firmware support

Такая настройка раздела «Device Drivers» характерна для карт Intel Wireless WiFi, многие из которых требуют догрузки микрокода из пространства пользователя.

В выборе нужной прошивки (firmware) нам снова поможет страница Gentoo Wiki (например, моей Wi-Fi карте подошла sys-firmware/iwl6030-ucode). Можно не вдаваться в детали и сразу ставить все прошивки для ядра Linux: sys-kernel/linux-firmware. Загрузка с новым ядром и проверка догрузки прошивки прошли на ура:

$ dmesg | grep firmware
[    5.420695] iwlwifi 0000:09:00.0: loaded firmware version 18.168.6.1 op_mode iwldvm

Теперь вывод ifconfig -a должен показать интерфейс Wi-Fi карты wlan0.

Точка доступа Wi-Fi усилиями NetworkManager

Проверим, поддерживает ли Wi-Fi карта режим точки доступа (Access Point), с помощью команды iw list, что доступна после установки net-wireless/iw. Среди «Supported interface modes» должна быть запись AP.

Традиционно точка доступа в Linux настраивалась через HostAP, и вот, не так давно такая возможность появилась в NetworkManager, в версии 0.9.8. Сам режим точки доступа, а также поддержка WPA/WPA2 шифрования, предоставлены WPA Supplicant. Выставим флаги установки:

net-wireless/wpa_supplicant     ap
net-misc/networkmanager         connection-sharing wifi

На данный момент у меня стоит KDE, где достаточно установить kde-misc/plasma-nm, добавить виджет «Network Management» и с его помощью создать новое соединение «Wireless (shared)».

http://dl.dropbox.com/u/35307988/www.vonavi.me/images/shared-wireless-connection-1.png

Выбираем защиту сети «WPA/WPA2 Personal» и вводим пароль (соединение не создаётся, пока пароль не имеет достаточной длины).

http://dl.dropbox.com/u/35307988/www.vonavi.me/images/shared-wireless-connection-2.png

И настраиваем IP-адреса:

http://dl.dropbox.com/u/35307988/www.vonavi.me/images/shared-wireless-connection-3.png

Wi-Fi точка доступа будет создаваться при подключении к данному соединению.

Настройка IPTables и NAT

Для раздачи трафика по Wi-Fi настроим IPTables. В простом случае достаточно поддержки следующих возможностей в ядре Linux:

[*] Networking support  --->
  Networking options  --->
    [*] TCP/IP networking
    [*]   IP: advanced router

    [*] Network packet filtering framework (Netfilter)  --->
      Core Netfilter Configuration  --->
        [*] Netfilter connection tracking support

      IP: Netfilter Configuration  --->
        [*] IPv4 connection tracking support (required for NAT)
        [*] IP tables support (required for filtering/masq/NAT)
        [*]   Packet filtering
        [*]   IPv4 NAT
        [*]     MASQUERADE target support

Затем откроем /etc/sysctl.conf и исправим строки

# Disables packet forwarding
net.ipv4.ip_forward = 0

на

# Enables packet forwarding
net.ipv4.ip_forward = 1

Новые настройки вступят в силу с перезапуском службы sysctl.

Подробное руководство по IPTables включает сценарий rc.flush-iptables, который сбрасывает все IP-таблицы. И начнём мы с его запуска, заменив значение переменной IPTABLES на правильный путь к утилите iptables. После чего вводим команду

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

и наслаждаемся доступом в Интернет через Wi-Fi. Для сохранения текущих таблиц достаточно перезапустить службу iptables

# /etc/init.d/iptables restart

И не забудьте добавить её в автозапуск

# rc-update add iptables default

Наверх

Наверх