私が設定しているルーターには、2つのイーサネットポートと1つのワイヤレスポートがあります。私はsystemd-networkdを使用しています。まず、ポートの名前を変更してからブリッジを作成し、次にイーサネットポートの1つとワイヤレスボードをブリッジして、単一のIPとDHCP / DNSMASQを含む組み合わせたLANポートを作成しました。他のイーサネットはワンポートです。ここでnetworkctlの出力を見ることができます。 lanはブリッジです。 wlanの状態がlan2と同じであることがわかります(NICであり、正常に動作します)。したがって、ブリッジとすべてのルーティングは大丈夫です。
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 wan ether routable configured
3 lan2 ether carrier configuring
4 wlan wlan carrier configuring
5 lan ether routable configured
だから…ほとんど終わりました。 systemd-networkd だけを使用して、タイムリーに Hostapd を起動できるようにします。 APが表示されますが、ワイヤレスインターフェイスがブリッジにバインドされているように見えません。クライアントはWPAパスワードを入力してそれを承認できますが、接続することはできません。ログは問題を識別するのに役立ちませんが、ワイヤレスポートがブリッジに固定されていないことは明らかです。これは、AP機能は問題ないようですが、実際には指定されたIPアドレスへの接続を確立しない理由を説明できます。
経験のある人がアドバイスできますか?ご覧のとおり、私が作成した Hostapd.service は、ネットワークが完了するまで、特にブリッジが作成されるまで Hostapd の起動を遅らせようとします。おそらく、これはネットワークを遅らせるHostapdに関連しているかもしれませんが、ネットワークはHostapdが起動する前にLANブリッジにWLANを追加します... catch22のようなものです。
ホスト構成ファイル
interface=wlan
# the interface used by the AP
hw_mode=g
# g simply means 2.4GHz band
channel=10
# the channel to use
#ieee80211d=1
# limit the frequencies used to those allowed in the country
#country_code=US
# the country code
ieee80211n=1
# 802.11n support
#wmm_enabled=1
# QoS support
#ignore_broadcast_ssid=0
ssid=645-gateway
# the name of the AP
auth_algs=1
# 1=wpa, 2=wep, 3=both
wpa=2
# WPA2 only
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=elf645Keb1920
ホスティングサービス
[Unit]
Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
Wants=network-online.target
After=systemd-networkd.service
After=sys-subsystem-net-devices-wlan.device
After=sys-subsystem-net-devices-lan.device
BindsTo=sys-subsystem-net-devices-lan.device
[Service]
Type=forking
PIDFile=/run/hostapd.pid
ExecStart=/usr/sbin/hostapd /etc/hostapd/hostapd.conf -P /run/hostapd.pid -B
[Install]
WantedBy=multi-user.target
30-br-wlan-lan.network
[Match]
Name=wlan
[Network]
Bridge=lan
答え1
あなたは近いです。私も同じ状況にいます。長年の努力の後、ついに正しい構成を見つけました。
システムネットワーク構成
systemd-networkd 構成には、/etc/systemd/network/
次のファイルが必要です。
.netdev
ブリッジ装置用1個.network
ブリッジ装置用1個.network
イーサネットデバイス用の1つ以上(LANおよびWAN).network
WiFiデバイス用のもの.network
同じデバイスで複数のSSIDを実行している場合は、他のWi-Fi SSIDを選択することもできます。
ブリッジユニット
これは私のブリッジデバイス構成であり、ここに特別なものはありません。しかし、ファイルが失われたという事実を理解するのに数年かかりました。.netdev
ネットワークが失敗したと報告されたにもかかわらず、明らかに正常に動作していたからです。networkctl
br0
cat /etc/systemd/network/10-bridge.netdev
[NetDev]
Name=br0
Kind=bridge
cat /etc/systemd/network/20-bridge.network
[Match]
Name=br0
[Network]
Description=...
Address=...
Address=...
ブリッジにイーサネットおよびWiFiデバイスを追加する
当然、すべての参加デバイスはbr0
これを宣言しなければなりません。Bridge=br0
cat /etc/systemd/network/21-enp2s0_bridged.network
[Match]
Name=enp2s0
[Link]
RequiredForOnline=no
[Network]
Description=Add enp2s0 to the bridge
Bridge=br0
cat /etc/systemd/network/21-wlp5s0_bridged.network
[Match]
Name=wlp5s0
[Link]
RequiredForOnline=no
[Network]
Description=Add wlp5s0 to the bridge
Bridge=br0
HostAPDサービスユニット
タイムリーに Hostapd を開始するには、次の依存関係が必要ですhostapd.service
。
- この
[Unit]
セクションのAfter=network.target BindsTo=sys-subsystem-net-devices-%i.device
%i
Wi-Fiデバイスの名前に変更してください。 - この
[Install]
セクションのWantedBy=multi-user.target WantedBy=sys-subsystem-net-devices-%i.device
%i
Wi-Fiデバイスの名前に戻してください。
他の依存関係は必要ありません。特にWants=network-online.target
この場合は Hostapd を起動しようとしているので、使用しないでください。今後ネットワークがオンラインになります。よりnetwork.target
と定義network-online.target
。
上記の設定をコピーした良いサンプルユニットファイルがあります。同じ Hostapd インスタンスに 1 つの SSID を構成する場合、または複数の SSID を構成する場合は、セルテンプレートは必要ありません。/lib/systemd/system/[email protected]
あなたは本当に必要ですデバイスに付属していますBindsTo
(Debianに出荷されたテンプレートではない場合は/lib/systemd/system/hostapd.service
欠落しています)。さらにsys-subsystem-net-devices-%i.device
、SSIDが複数ない場合、依存関係は「基本」Wi-Fiインターフェイスでのみ必要です。
結果
# networkctl
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 enp1s0 ether routable configured
3 enp2s0 ether enslaved configured
4 enp3s0 ether no-carrier configuring
5 enp4s0 ether off unmanaged
6 br0 bridge routable configured
7 wg0 wireguard routable configured
8 sit0 sit off unmanaged
9 he-ipv6 sit routable configured
10 wlp5s0 wlan enslaved configured
11 wlan-iot wlan routable configured
12 wlan-guest wlan routable configured
12 links listed.
そして幸せなシステム管理者になろう! :)
networkctl
wlp5s0失敗を報告して記録することはまだ可能ですsystemd-networkd
:
wlp5s0: netdev に参加できません。デバイスをブリッジにスレーブすることはできません。サポートされていないジョブwlp5s0:失敗
しかし、これがネットワークに障害を引き起こし、aが再びsystemctl restart systemd-networkd.service
緑色に変わる原因ではないようですnetworkctl
。私はこれが私がHostapdで構成する方法と対話していると思いますbridge=br0
。たぶんその行を削除する必要があります。
答え2
まだコメントできないため、回答として追加しています...これはKolargo00の素晴らしい回答のフォローアップです。
失敗の理由Device does not allow enslaving to a bridge.
は、ステーションモードのWLANデバイスをsystemd-networkdブリッジに追加できないためです。 Hostapdを起動すると今後 systemd-networkd.service
そして、network.target
WLANインターフェイスはAPモードにあり、ブリッジで制御できる必要があります。
したがって、After=network.target
Hostapd.service 単位ファイルを次に変更すると、Before=network.target systemd-networkd.service
すべてがスムーズに動作します。
そうでなければ、彼の答えは正しいです。