私は自分のLinuxベースのルーターを構築している最中であり、wifiとLANネットワークのブリッジングの問題に遭遇しました。ボックスは以前はpfSenseを実行していましたが、内部のWi-Fiアダプターを使用できないため、CentOS7上に独自のルーターを構築することにしました。
ボックスにはイーサネットポートが1つしかないため、マネージドスイッチをセットアップして2つのVLANを作成します。
Wi-Fiアクセスポイントに接続してhostapdをセットアップしましたが、デバイスがDHCPサーバーからIPをプルできないことに気付きました。ネットワークに接続されているwifiデバイスは、DHCPやDNSサービスなど、有線LAN上の他のデバイスにアクセスできる必要があります。
Enp3s0.10をwifiアダプター(wls4)でブリッジしようとしましたが、それではLANポートに外部からアクセスできなくなります。 VLANをワイヤレスアダプタでブリッジすることは可能ですか、それともこれを実現するためのより良い方法はありますか?安価なコンシューマールーターはこれをどのように実現しますか?
ネットワークトポロジ
要求に応じて(Damiano Verzulliに感謝)、ネットワークトポロジの図を追加しました。レピュテーションポイントが10未満だったため、リンクを提供する必要がありました。
注:
私はなんとか自分の問題を解決し、将来同様の問題に直面する可能性のある他の人と共有したいと思いました。
各ネットワークインターフェイスを定義します(brという名前のブリッジインターフェイスを含む)
/ etc/sysconfig/network-scripts/ifcfg-enp3sの値を次のように設定します。
TYPE=Ethernet
BOOTPROTO=none
DEVICE=enp3s0
ONBOOT=yes
/ etc/sysconfig/network-scripts/ifcfg-brの値を次のように設定します。
DEVICE=br0
TYPE=Bridge
IPADDR=192.168.1.1
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
/ etc/sysconfig/network-scripts/ifcfg-enp3s0.1の値を次のように設定します。
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
ネットワークを再起動します
[admin@router ~]$ Sudo service network start
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
Systemdサービスを作成してwls4をブリッジに追加brそしてhostapdを起動します。私は次の理由でこれを行いました:
rfkill unblock wlan
を呼び出す必要がありました作成/ 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
/ root/launch_hostapd.sh実行可能にする
[admin@router ~]$ Sudo chmod +x /root/launch_hostapd.sh
作成/ 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
Systemctlデーモンをリロードします
[admin@router ~]$ Sudo systemctl daemon-reload
Launch_hostpadサービスを有効/開始します
[admin@router ~]$ Sudo systemctl enable launch_hostapd
[admin@router ~]$ Sudo systemctl start launch_hostapd
これが、hostapdを介してAPをホストしようとしてLANおよびWLANインターフェイスをブリッジしたい人に役立つことを願っています。