Подключение к двум wifi сетям одновременно linux

Обновлено: 06.07.2024

Блог про Linux, Bash и другие информационные технологии

Установка необходимых пакетов

В первую очередь необходимо проверить, установлены ли пакет wpasupplicant и wireless-tools. Эти пакеты позволят вам подключаться к беспроводным сетям с WPA и WPA2 аутентификацией. В Debian и Ubuntu это делается командами

Если пакеты не установлены, то, возможно, поднять беспроводную сеть не получится, если у вас нет другого носителя. Пакеты устанавливаются следующей командой:

Кроме того, может понадобиться поставить микрокод (firmware) для устройства, установив соответствующий производителю пакет. Микрокод также называют прошивкой, но это не совсем правильно. Микрокод загружается в устройство перед началом работы с ним, а прошивка в устройстве находится постоянно. Для Intel это может быть, например, пакет firmware-iwlwifi из репозитория non-free. Микрокод часто лежит именно в этой ветке репозиториев. Либо это может быть пакет firmware-realtek, либо firmware-linux-free.

Проверка беспроводного контроллера

Перед тем, как пытаться подключаться, нужно убедиться, что система видит WiFi-контроллер и правильно его распознает, для просмотра списка устройств можно использовать команду lspci, в ее выводе должна быть строчка наподобие этой:

А в списке интерфейсов должен присутствовать соответствующий сетевой интерфейс, обычно это wlan0. Просмотреть список можно командой

Настройка WiFi из командной строки

Если устройство в системе найдено, можно переходить к настройке сети. Для начала просмотрим список доступных локальных сетей:

На экран будет выведен список доступных сетей в виде записей такого вида:

Создаем файл /etc/wpa_supplicant/wpa_supplicant.conf:

И затем даем команду

После этого, если адрес не получен автоматически, вызываем DHCP-клиент:

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

Если адрес указан верно, то вы сможете получить доступ к Интернету. Но обычно DHCP-клиент получает шлюз по умолчанию автоматически

Изменение конфигурационных файлов

Я хочу подключиться к двум сетям одновременно, используя Ethernet и встроенный WiFi, или к двум сетям WiFi, установив дополнительный адаптер WiFi.

Включить IP forwarding ( echo 1 > /proc/sys/net/ipv4/ip_forward ), чтобы устройства в одной сети могли напрямую подключаться к устройствам в другой сети; установите систему Linux в качестве шлюза (по умолчанию) на этих устройствах.

Что касается того, как настроить Linux для одновременного подключения к двум сетям: это зависит от вашего дистрибутива и того, какие инструменты вы используете. С Debian без networkmanager запуска вам нужно правильно настроить /etc/network/interfaces ; с Red Hat вам нужно настроить файлы в /etc/sysconfig/networking/ .

РЕДАКТИРОВАТЬ: отключить DHCP-сервер на маршрутизаторах WiFi, назначить интерфейсу локальной сети фиксированный IP-адрес в правильной сети, как я описал выше (один в 192.168.0.0/24, например, 192.168.0.2 и в 192.168.1.0/24, например, 192.168 .1.2). Присвойте каждому маршрутизатору свой беспроводной идентификатор (и, конечно, каждому свой пароль).

Дайте интерфейсам в Linux соответствующий адрес, но затем заканчивайте на .1. (Поскольку вы заказали новую систему для Linux, убедитесь, что она имеет два интерфейса, вам может потребоваться заказать дополнительную сетевую карту (NIC) для этого.) Подключите систему Linux к маршрутизаторам WiFi через порт LAN; не используйте порт WAN, т. е. маршрутизатор WiFi используется только как точка доступа, он ничего не маршрутизирует. Оставляем роутинг в Linux. (Не должно быть необходимости использовать, так iptables как по умолчанию все разрешено, и здесь нет необходимости в NAT. Однако может быть полезно использовать его iptables на более позднем этапе, чтобы ограничить разрешенный трафик.)

Установите DHCP-сервер в Linux и настройте его так, чтобы он раздавал адреса на обоих интерфейсах (есть много документации о том, как это сделать). Сконфигурируйте сервер DHCP, чтобы в качестве шлюза по умолчанию был задан IP-адрес системы Linux.

Этичный хакинг и тестирование на проникновение, информационная безопасность

Оглавление

Что такое dev и phy для команды iw

Программа airmon-ng для беспроводных адаптеров показывает такие данные как PHY и Interface.


Программа iw позволяет управлять сетевым адаптером обращаясь к нему либо как к устройству phy, либо как к интерфейсу dev. При этом набор команд разный.


PHY (аббревиатура от англ. Physical layer — физический уровень) — интегральная схема, предназначенная для выполнения функций физического уровня сетевой модели OSI.

Микросхемы PHY позволяют другим микросхемам канального уровня, называемым MAC, подключиться к физической среде передачи, такой как оптическое волокно или медный кабель.

То есть в Linux PHY — это номер, который устройству присвоил драйвер/фреймворк PHY для обращения к нему и настройки на канальном уровне.

Что касается dev (имя устройства, имя интерфейса), то это то условное имя присвоенное устройству системой. Имеются разные схемы наименования, поэтому в разных дистрибутивах Linux сетевые интерфейсы могут называться по-разному. При желании, имя сетевого интерфейса можно изменить.

Одновременное использование Wi-Fi адаптера в разных режимах

Казалось бы, ну и что? Через phy можно управлять настройками, значение которых без чтения специальной технической документации непонятно. Через имя интерфейса dev можно управлять более привычными настройками (перевести в режим монитора, переключиться на определённый канал и так далее).

Дело в том, что для беспроводных адаптеров сетевой интерфейс это не просто имя, идентифицирующее устройство. Интерфейсы бывают разных типов и для доступа к некоторым возможностям беспроводных адаптеров нужно добавлять интерфейсы. Более того, один Wi-Fi адаптер может иметь сразу несколько сетевых интерфейсов, выполняющих разные функции, например, комбинация интерфейсов в управляемом режиме и в режиме монитора, либо комбинация интерфейсов в управляемом режиме и в режиме Точки Доступа, при этом беспроводной адаптер будет одновременно выполнять сразу две функции! Причём разным интерфейсам одного Wi-Fi адаптера можно присвоить разные MAC адреса.

Смотрите также:

Выполните следующую команду для вывода полного списка возможностей всех ваших беспроводных интерфейсов:

Поищите следующие строки:

  • software interface modes (can always be added) — программные режимы интерфейсов (всегда могут быть добавлены)
  • valid interface combinations — возможные комбинации интерфейсов

Пример для первого Wi-Fi адаптера:

То есть вместо того, чтобы переводить интерфейс из управляемого режима в режим монитора или запускать на нём Точку Доступа, можно к уже имеющемуся добавить виртуальный интерфейс в режиме monitor или в режиме AP.

Можно добавить до четырёх AP интерфейсов.

Можно сделать аж до 8 интерфейсов AP, но все они могут использовать один канал.

Добавление интерфейса в режиме монитора

Предпочитаемый мной способ получить режим монитора — это перевести существующий беспроводной интерфейс из режима managed в monitor:

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

С помощью добавления нового интерфейса эту проблему удаётся решить.

Добавление интерфейса в режиме монитора выполняется следующим образом:

В качестве ИНТЕРФЕЙС укажите имя существующего интерфейса, а в качестве НОВЫЙ_ИНТЕРФЕЙС можно указать произвольное имя.

При желании, вы можете назначить новому интерфейсу произвольный MAC-адрес:

Посмотрим, какие беспроводные интерфейсы имеются в системе:

Видим, что Wi-Fi карта wlp0s20f0u1 подключена к сети с именем Jenechka.


Добавим к wlp0s20f0u1 интерфейс с именем wlanmon в режиме монитора и установим на нём MAC-адрес:

Вновь посмотрим на наши интерфейсы:


Обратите внимание, что появился новый интерфейс wlanmon.

Запустим airodump-ng используя только что созданный виртуальный интерфейс:

А в другом окне запустим пинг, чтобы убедиться, что подключение к сети по-прежнему доступно:

Обратите внимание, что не смотря на то, что Wi-Fi адаптеру нужно находиться на одном канале для связи с ТД, тем не менее, при этом интерфейс в режиме монитора переключается по каналам.

Причём уже после остановки записи экрана, airodump-ng даже сумела поймать рукопожатие.


Как удалить виртуальный интерфейс

Для удаления виртуального интерфейса используйте команду:

Типы виртуальных интерфейсов

Выше были показаны примеры команды в которых мы указывали имя сетевого интерфейса:

Также можно добавить виртуальный интерфейс по имени PHY:

Наверное, это может быть полезным, если вы удалили все имеющиеся интерфейсы (если такое возможно).

Доступные типы интерфейсов:

Флаги используются только для monitor интерфейсов, валидные флаги:

mesh_id используется только для режима mesh.

Как в iw добавить AP интерфейс

Вы могли заметить, что в приведённом выше списке валидных типов интерфейсов отсутствует AP. Данный интерфейс с типом AP будет создан автоматически при создании Точки Доступа.

Для простоты, воспользуемся программой create_ap (по ссылке показано, как её установить).

К примеру, на интерфейсе wlo1 я хочу создать ТД с именем HackWare и паролем 12345678, в качестве источника Интернета должен использоваться интерфейс wlp0s20f0u1, тогда команда следующая:


Я могу подключиться к этой ТД и пользоваться Интернетом:


На компьютере же был создан новый интерфейс типа AP с именем ap0:


Как как одну Wi-Fi карту использовать в качестве клиента и Точки Доступа

Показанный выше способ подразумевает, что у вас два сетевых интерфейса — причём обязательно один из них должен быть Wi-Fi адаптером, а второй может быть как Wi-Fi адаптером, так и проводным соединением.

Предположим, что у меня отсутствует проводное соединение и имеется только один адаптер, можно ли одну Wi-Fi карту одновременно использовать для подключения к Точке Доступа и как Точку Доступа? Да, можно. Один сетевой интерфейс может одновременно работать в качестве клиента и в качестве ТД, то есть выполнять роль усилителя сигнала (беспроводной повторитель).

Начнём с того, что остановим NetworkManager, иначе в моём случае у меня постоянно возникала ошибка «RTNETLINK answers: Device or resource busy»:

Если у вас NetworkManager убран из автозагрузки, то начать нужно с активации беспроводного интерфейса:

Теперь нам нужно создать два виртуальных интерфейса в режиме managed с разными MAC-адресами:


Один из этих интерфейсов будет выполнять роль станции, а другой роль ТД.

Поскольку мы отключили NetworkManager, то теперь нам нужно подключиться к удалённой ТД вручную.

Создаём конфигурационный файл:

Если вы хотите, чтобы процесс wpa_supplicant ушёл в фон, то добавьте опцию -B:

Подключение требует некоторого времени:

Запускаем службу DHCP для автоматического получения IP адреса:

Смотрим на состояние интерфейсов:


Видим, что интерфейс wlan0_sta подключён к ТД — именно это нам и нужно.

Очень важно — посмотрите, на каком канале работает ТД и клиент. Этот канал обязательно нужно указать в следующей команде, иначе ничего не получится. В данном случае они работают на 8 канале.

Наконец, запускаем ТД с именем HackWare и паролем 12345678 на 8 канале:

Всё получилось, и у нашего усилителя Wi-Fi сигнала даже есть подключённый клиент:


Команды для показа имён сетевых интерфейсов

Небольшая памятка по командам для получении информации о доступных в системе сетевых интерфейсах.

Показать только беспроводные интерфейсы:

Вывод беспроводных интерфейсов вместе с их PHY, информации о драйвере и чипсете:

Вывод некоторой аппаратной информации:

Имена и описание интерфейсов:

Вывод всего, что напоминает сетевые интерфейсы (вместе с виртуальными):

Следующим образом можно посмотреть имена интерфейсов и оборудование:


Так можно вывести имена интерфейсов кроме виртуальных:

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

Бывают случаи когда необходимо соединить компьютеры или раздать через компьютер интернет для телефона через Wifi.

Допустим соединяем 2 ноутбука оснащенные wifi картами.

На первом компьютере выполняем:

ifconfig wlan0 down
iwconfig wlan0 channel 6
iwconfig wlan0 mode ad-hoc
iwconfig wlan0 essid 'wifi'
iwconfig wlan0 key your_pass
ifconfig wlan0 192.168.1.1

На втором делаем тоже самое только изменив IP адрес:

ifconfig wlan0 down
iwconfig wlan0 channel 6
iwconfig wlan0 mode ad-hoc
iwconfig wlan0 essid 'wifi'
iwconfig wlan0 key your_pass
ifconfig wlan0 192.168.1.2

Все сеть готова 🙂 можете обмениваться файлами, ширить интернет, играть и т.д.

Так же этот пример применим если необходимо подключить iPhone к интернету, выполняем на компьютере заменяя ethX, IP_YOUR_LAN_CARD номером сетевой карты и IP адресом сетевухи через которую идет подключение к инету :

ifconfig wlan0 down
iwconfig wlan0 channel 6
iwconfig wlan0 mode ad-hoc
iwconfig wlan0 essid 'wifi'
iwconfig wlan0 key your_pass
ifconfig wlan0 192.168.1.1
iptables -A POSTROUTING -t nat -s 192.168.1.2 -o ethX -j SNAT --to-source IP_YOUR_LAN_CARD
echo 1 > /proc/sys/net/ipv4/ip_forward

Ловим телефоном сеть, устанавлием IP 192.168.1.2 Шлюз 192.168.1.1 и ДНС выданный вам провайдером. Интернет должен работать 😉

7 комментариев

а можно ли подобным образом заставить WiFi чип (не ноутбука, а некоего другого устройства) убедить работать в качестве точки доступа?
От чего зависит такая возможность?

в теории, да 🙂
скорее всего зависит от драйверов и софта.

sudo apt-get install iw вообще не надо это отдельная утилита которой в описании ты походу ни разу не воспользовался

не должно..
под рутом пробуешь?
Network Manager попробуй приостановить sudo /etc/init.d/network-manager stop

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Читайте также: