Створення точки доступу Wi-Fi на одному інтерфейсі в Linux


14

Я намагаюся створити точку доступу WiFi або точку доступу на своєму ноутбуці Linux. Я використовую Opensuse Kde 12.3.

Я дізнався програмне забезпечення, hostapdяке дозволяє створювати точку доступу, але для цього потрібні два інтерфейси. Один підключений до Інтернету, а інший, для якого потрібно створити точку доступу ( тут навчальний посібник ). Проблема у мене полягає в тому, що у мене немає підключення до Ethernet. wlanІнтерфейс використовується для підключення до Інтернету.

Чи є спосіб створити точку доступу в тому ж інтерфейсі, який підключений до Інтернету (як програмне забезпечення connectify робить у Windows)? Я думав створити віртуальний інтерфейс (як той, який airmon-ngстворюється для моніторингу wifi) та використовувати його як другий інтерфейс. Чи можливо це?

ОНОВЛЕННЯ

Ось що я міг зробити до цього часу:

1) Створіть 2 інтерфейси (один як станція, а другий як точка доступу)

  iw phy phy0 interface add mySta type station
  iw phy phy0 interface add myAcc type __ap

2) Дайте їм окремий ідентифікатор Mac

ifconfig myAcc hw ether A4:17:FE:6E:00:53
ifconfig myAcc 192.168.27.1 up

3) запустіть hostapd в інтерфейсі myAcc

4) запустіть dnsmasq, щоб надати ip-адресу підключеним пристроям

Все це працює. Пристрої можуть підключитися до цієї мережі та отримати Ip-адресу. Наступним кроком є ​​надання маскування ip

iptables --table nat --append POSTROUTING --out-interface mySta -j MASQUERADE
iptables --append FORWARD --in-interface myAcc -j ACCEPT

Але інтерфейс mySta зараз не підключається до Інтернету. Він може отримати Essid, але не може отримати ip-адресу.

Команда dhclient mySta не показує жодного повідомлення і через деякий час видає помилку:

ls: cannot access /var/run/netconfig//mySta/: No such file or directory

Чи може хтось зрозуміти, як отримати ip-адресу?


Ви пробували з модулем "Підтримка чистої драйвера" (драйвер ядра) як модуль. Я не можу вам більше допомогти, тому що не знаю openSUSE. Але я можу бачити, що є помилки, повідомлені від версії 11 і новішої версії, коли вона створена за допомогою Yast. Тож будьте обережні.
Дібло Дк

Звичайно, я можу вам допомогти, якщо це можна зробити тими ж способами (конфігурація ядра, налаштування мережі), як у Gentoo, Debian або Ubuntu.
Дібло Дк

Будь-яка допомога буде вдячна. Я не використовую інструменти Yast як такі. Конфігурації були з підручника по Ubuntu. Файлова система та конфігурації майже однакові.
adityap174

Яка версія вашого ядра?
Дібло Дк

Ядро: x86_64 Linux 3.7.10-1.16-desktop
adityap174

Відповіді:


9

Для всіх, хто стикався з цією проблемою, проблема була в mac-адресі. Я запустив інтерфейс точки доступу, надав йому mac-адресу. Потім після запуску hostapd додав інтерфейс станції, надав йому інший mac-адресу та підключив її до мережі та надав ip-адресу станції як шлюз клієнтів за замовчуванням через dnsmasq.

Зараз все працює належним чином.

Як вказував Diblo Dk, ви можете використовувати віртуальний та фіктивний інтерфейси, але hostapd не працював з ними. Я не знаю чому.

Ось такі кроки:

  1. вимкнути сервіс мережевого менеджера, оскільки він заважає віртуальним інтерфейсам
  2. зменшити wlan0, використовуючи ifconfig wlan0 вниз
  3. створити інтерфейс точки доступу за допомогою команди iw (тип __ap), призначити йому інший mac та ip адресу
  4. увімкніть hostapd у цьому інтерфейсі доступу
  5. використовувати dnsmasq для призначення клієнтів, що підключаються за цим інтерфейсом, ip адреси та надання шлюзу за замовчуванням як ip інтерфейсу станції, який потрібно створити
  6. увімкніть dnsmasq в інтерфейсі доступу. Тепер клієнт зможе підключитися до точки доступу та отримати ip адреси.
  7. створити новий інтерфейс (станція типу), призначити йому окрему mac-адресу та підключити її до мережі, призначивши essid та використовуючи dhclient для отримання ip-адреси.
  8. при необхідності виконайте ip маскування за допомогою команди iptables

якщо сказати прямо, WTF hostapd :)
Diblo Dk

Чи можете ви оновити свою відповідь точними кроками, які ви зробили. Це, безумовно, відповідь, яку я хотів би зберегти.
Дібло Дк

оновлено :) Хочете більше деталей?
adityap174

Класний спосіб подолати проблему :)
Diblo Dk

Який dongle / чіпсет ви використовували?
Елвін

2

Налаштування фіктивної мережі

1 Відкрийте консоль

su -

2 Подивіться, чи є у вас підставний драйвер

modprobe -l | grep /net/dummy.ko

(!) Якщо у вас немає фіктивного драйвера, перейдіть до " Створити модуль ядра ".

3 Завантажте фіктивний драйвер

modprobe dummy

(!) Не додайте його до запуску, якщо він не працює.

4 Тестуйте манекен0, встановивши його

ifconfig dummy0 10.246.75.1 netmask 255.255.255.0 broadcast 10.246.75.255 up

ifconfig

Це дасть вам аналогічний вихід.

dummy0  Link encap:Ethernet  HWaddr 00:2D:32:3E:39:3B
        inet addr:10.246.75.1  Bcast:10.246.75.255  Mask:255.255.255.0
        ...

5 Додайте фіктивний драйвер до запуску

Редагувати файл sys ядра.

nano /etc/sysconfig/kernel

і додайте " манекен " до MODULES_LOADED_ON_BOOT.

MODULES_LOADED_ON_BOOT = "..."

Вих. MODULES_LOADED_ON_BOOT = "манекен vmcp".

6 Налаштуйте параметри мережі для манекена0

Створіть файл ifcfg-dummy0.

nano /etc/sysconfig/network/ifcfg-dummy0

Додати у файл ifcfg-dummy0:

# Configuration for dummy0
BOOTPROTO=static

# This line ensures that the interface will be brought up during boot.
STARTMODE=onboot

# dummy0 - This is the main IP address that will be used for most outbound connections.
# The address, netmask and gateway are all necessary. The metric is not necessary but
# ensures you always talk to the same gateway if you have multiple public IPs from
# different subnets.
IPADDR=10.246.75.1
NETMASK=255.255.255.0
BROADCAST=10.246.75.255
GATEWAY=10.246.75.1



Створіть модуль ядра

1 Спочатку встановіть необхідні речі

Відкрийте YaST.

Перейдіть до Software-> Software Management.

Поставте галочку:

Development 

[X] Base Development
[X] Linux Kernel Development
[X] C/C++ Development

2 Поверніться до консолі та перейдіть до джерела ядра

cd /usr/src/linux

3 Імпортуйте поточну конфігурацію ядра

zcat /proc/config.gz > .config

4 Відкрийте меню ядраconfig

make menuconfig

5 Додайте чисту підтримку драйвера Dummy

Перейдіть до Device Drivers->Network device support

* Network core driver support
    M Dummy net driver support

(!) Якщо поруч із пунктом "Підтримка мережевого драйвера" є зірочка, ви можете пропустити кроки 7 та 9.

6 Складіть ядро

make -j(n+1)

Де (n + 1) = кількість ядер CPU плюс одне, що використовується для прискорення компіляції. Для чотирьох ядер використовуйте make -j5.

7 Встановіть нове ядро

make install

8 Встановіть модулі

make modules_install

9 Завантажте нове ядро

reboot



Визначення VIPA (Частина про модуль завантаження та ifcfg-dummy0): http://wiki.linuxvm.org/wiki/Defining_a_VIPA
Налаштування статичних IP-адрес: https://www.linode.com/wiki/index.php/Configure_Static_IPs
openSUSE 12.3 та встановлення нових версій ядра Linux з kernel.org: http://forums.opensuse.org/blogs/jdmcdaniel3/opensuse-installing-new-linux-kernel-versions-134/
OpenSUSE 11.2 - Як скласти ядро ​​для новачків : http://linuxtweaking.blogspot.dk/2010/04/opensuse-112-how-to-compile-kernel-for.html


Дякую за таке детальне пояснення. Я спробував цей метод. Мені вдалося створити інтерфейс dummy0 і почати завантажуватися. Але як зробити це бездротовим інтерфейсом? iwconfig дає: dummy0 не має бездротових розширень. hostapd не працює з цим. Це дає помилку: помилка ініціалізації драйвера
nl80211

Так, проблема полягає в тому, що у вас конфлікт із IP-адресою. Але це можна зробити за допомогою модуля Псевдо (Призначення декількох IP-адрес). Дайте мені трохи часу, щоб розглянути його для вашої системи.
Дібло Дк

Ви також можете подивитися тут linode.com/wiki/index.php/Configure_Static_IPs#OpenSUSE Можливо, ви можете побачити, як це зробити з wlan :)
Diblo Dk

, проблема полягає в тому, що ви отримаєте конфлікт із IP-адресою *
Diblo Dk

1

Створіть віртуальний інтерфейс

Створіть файл ifcfg-wlan0: 0

nano /etc/sysconfig/network/ifcfg-wlan0:0

Додати у файл ifcfg-wlan0: 0:

DEVICE=wlan0:0

# Configuration for wlan0:0
ONBOOT=yes

# This line ensures that the interface will be brought up during boot.
BOOTPROTO=static

# wlan0:0 - This is the main IP address that will be used for most outbound connections.
# The address, netmask and gateway are all necessary. The metric is not necessary but
# ensures you always talk to the same gateway if you have multiple public IPs from
# different subnets.
IPADDR=10.246.75.1
NETMASK=255.255.255.0
BROADCAST=10.246.75.255
GATEWAY=10.246.75.1

Команди для активації інтерфейсу

ifup wlan0:0

Примітка. Вимкнення основного інтерфейсу також вимикає всі його псевдоніми. Псевдоніми можна відключити незалежно від інших інтерфейсів.

Перевірте, чи працює інтерфейс

ifconfig

Це дасть вам аналогічний вихід.

wlan0:0  Link encap:Ethernet  HWaddr 00:2D:32:3E:39:3B
         inet addr:10.246.75.1  Bcast:10.246.75.255  Mask:255.255.255.0
         ...

http://forums.opensuse.org/english/get-technical-help-here/network-internet/461132-os-11-4-network-manager-default-connection-can-handle-virtual-interfaces.html# пост2350426


навіть це не працювало з hostapd. Це дало таку ж помилку: Не вдалося відкрити файл / sys / class / net / dummy0 / phy80211 / name: Немає такого файлу чи каталогу з dummy0 і не вдалося відкрити файл / sys / class / net / wlan0: 0 / phy80211 / name: Немає такого файлу чи каталогу з віртуальним інтерфейсом. Дякуємо за всю вашу допомогу. :) Проблема була з адресою mac. Я підтримав ваші відповіді, і я публікую рішення для інших.
adityap174
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.