Соединение VLAN и Wifi

604

Я нахожусь в процессе создания своего собственного маршрутизатора на основе Linux и столкнулся с проблемой, соединяющей сети Wi-Fi и LAN. Раньше на устройстве работал pfSense, но из-за невозможности использовать мой внутренний адаптер Wi-Fi я решил построить свой собственный маршрутизатор поверх CentOS 7.

Коробка имеет только один порт Ethernet, поэтому я настроил управляемый коммутатор для создания двух VLAN:

  • enp3s0.10: LAN
  • enp3s0.99: WAN

Я установил hostapd, подключенный к точке доступа Wi-Fi, но заметил, что моему устройству не удалось получить IP-адрес с моего DHCP-сервера. Устройства Wi-Fi, подключенные к моей сети, должны иметь доступ к другим устройствам в проводной локальной сети, таким как мои службы DHCP и DNS.

Я попытался соединить enp3s0.10 с адаптером Wi-Fi (wls4), но это только привело к тому, что мой порт LAN стал недоступен извне. Можно ли соединить VLAN с помощью беспроводного адаптера или есть лучший способ сделать это? Как это делают недорогие потребительские маршрутизаторы?

Топология сети

В соответствии с просьбой (спасибо Дамиано Верзулли) я добавил диаграмму топологии своей сети. Из-за того, что у меня было менее 10 очков репутации, я был вынужден предоставить ссылку.

Диаграмма топологии сети

Заметки:

  • Блок Linux для маршрутизатора (на схеме «Router») имеет один порт Ethernet (enp3s0) и внутренний адаптер Wi-Fi (wls4)
  • За исключением enp3s0.99 (который получает свой адрес / подсеть от моего кабельного модема), все другие устройства в моей локальной сети имеют адрес в пространстве 192.168.1.0/24
3
Sophos UTM - это бесплатное маршрутизаторное устройство для домашнего использования, оно работает хорошо, в нем есть все функции Enteprise yagmoth555 6 лет назад 0
спасибо, но мне больше интересно узнать, как сделать эту работу. 6 лет назад 0
Пожалуйста, вы можете подробно описать топологию вашей сети? Например: как ваша точка доступа подключена к локальной сети? Это действительно действует как тупой AP, а не как маршрутизатор Wi-Fi? Какое устройство выступает в роли DHCP-сервера? Какие IP-подсети / адреса вы используете на своих интерфейсах / устройствах? Также была бы полезна черновая схема (даже ручная, прикрепленная в виде изображения) всей сети. Damiano Verzulli 6 лет назад 1
@DamianoVerzulli Я добавил диаграмму топологии сети. Это моя первая попытка ее создания, поэтому, если я что-то упустил, пожалуйста, дайте мне знать, чтобы я мог обновить ее. Моя точка доступа создается через сервис ** hostapd **, работающий на том же компьютере, и указывает на внутренний адаптер Wi-Fi (wls4). За исключением enp3s0.99 (получает IP / подсеть от кабельного модема), все устройства на моей локальной сети принадлежат 192.168.1.0/24. 6 лет назад 0

1 ответ на вопрос

3

Мне удалось решить мою проблему, и я хотел поделиться с другими, которые могут столкнуться с подобной проблемой в будущем.

Моя сеть

  • enp3s0 - физический сетевой адаптер
  • enp3s0.10 - VLAN; подключается к локальной сети
  • enp3s0.99 - VLAN; подключается к WAN (кабельный модем)
  • wls4 - беспроводной адаптер

Решение

  1. Определите каждый сетевой интерфейс (включая мостовой интерфейс с именем br0 )

    Установите значение / etc / sysconfig / network-scripts / ifcfg-enp3s0 в:

    TYPE=Ethernet BOOTPROTO=none DEVICE=enp3s0 ONBOOT=yes 

    Установите значение / etc / sysconfig / network-scripts / ifcfg-br0 в:

    DEVICE=br0 TYPE=Bridge IPADDR=192.168.1.1 NETMASK=255.255.255.0 ONBOOT=yes BOOTPROTO=none 

    Установите значение /etc/sysconfig/network-scripts/ifcfg-enp3s0.10 в:

    DEVICE=enp3s0.10 BOOTPROTO=none ONBOOT=yes BRIDGE=br0 VLAN=yes 

    Установите значение /etc/sysconfig/network-scripts/ifcfg-enp3s0.99 в:

    DEVICE=enp3s0.99 BOOTPROTO=dhcp ONBOOT=yes VLAN=Yes 
  2. Перезагрузите сеть

    [admin@router ~]$ sudo service network start 
  3. Настройка hostapd

    Установите значение /etc/hostapd/hostapd.conf в:

    # # For more information: # # https://wireless.wiki.kernel.org/en/users/Documentation/hostapd # https://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf #  # Wireless Interface interface=wls4 driver=nl80211  # Wireless Environment ssid=[router_ssid_here] hw_mode=g channel=1  # Authentication and Encryption macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=[ap_password_here] wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP  # Country country_code=US ieee80211d=1  # IEEE 802.11ac (req hw_mode=a) # ieee80211ac=1  # IEEE 802.11n ieee80211n=1  # WMM wmm_enabled=1 
  4. Создайте сервис systemd для добавления wls4 к мосту br0 и запустите hostapd. Я сделал это по следующим причинам:

    • wls4 время от времени удалялся с моста br0, когда я добавлял объявление моста в hostapd.conf
    • Прежде чем hostapd может успешно запустить, мне сначала нужно было позвонить rfkill unblock wlan
  5. Создайте /root/launch_hostapd.sh (должен быть от имени root)

    #!/bin/bash  # Set 4addr on wifi adapter iw dev wls4 set 4addr on  # Add wifi adapter to bridge br0 ip link set wls4 master br0  # Unblock wlan rfkill unblock wlan  # Launch hostapd systemctl start hostapd 
  6. Сделайте /root/launch_hostapd.sh исполняемым

    [admin@router ~]$ sudo chmod +x /root/launch_hostapd.sh 
  7. Создайте /etc/systemd/system/launch_hostapd.service (должно быть сделано от имени пользователя root)

    [Unit] Description=Runs "rfkill unblock wlan" and then launches hostapd After=network.target  [Service] Type=simple ExecStart=/root/launch_hostapd.sh TimeoutStartSec=0  [Install] WantedBy=default.target 
  8. Перезагрузить демон systemctl

    [admin@router ~]$ sudo systemctl daemon-reload 
  9. Включить / запустить сервис launch_hostpad

    [admin@router ~]$ sudo systemctl enable launch_hostapd [admin@router ~]$ sudo systemctl start launch_hostapd 

Заключение

Я надеюсь, что это поможет всем, кто захочет соединить свои интерфейсы LAN и WLAN в попытке разместить AP через hostapd.

Похожие вопросы