2つの無線インターフェイスがあり、各インターフェイスで異なるAPを実行したいと思います。 (両方のハードウェアは複数のSSIDをサポートしていません。)
.conf
各インターフェイスのファイルがあります。どのようにhostapd
自動的に使用できますか?
これはうまくいきます:
# hostapd -dd /etd/hostapd/hostapd.wlan0.conf /etc/hostapd/hostapd.wlan1.conf
問題は自動的に動作させることです。
請求は設定することです/etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.wlan0.conf /etc/hostapd/hostapd.wlan1.conf"
ただし、文字列全体が存在しないファイルとして解釈されるため、これは機能しません。
私はこれが/usr/lib/systemd/system/hostapd.service
次のように使用されるのを見ます。
ExecStart=/usr/sbin/hostapd -B -P /run/hostapd.pid -B $DAEMON_OPTS ${DAEMON_CONF}
しかし、私は何か他のことをするのを見ました:/usr/lib/systemd/system/[email protected]
ExecStart=/usr/sbin/hostapd -B -P /run/hostapd.%i.pid $DAEMON_OPTS /etc/hostapd/%i.conf
(どういう%i
意味ですか?) ところでに関するよりもsystemctl
知っていることについてのようです。hostapd
hostapd@
答え1
質問の終わりにほぼ達しました。%i
に使用されます私インスタンス化提供する。以下は、で説明されているインスタンスの役割から抜粋したものです。システムユニット(5):
ユニットファイルは、「インスタンス名」という単一のパラメータを使用してパラメータ化できます。その後、ユニットは、複数のサービスまたは他のユニットの定義として機能する「テンプレートファイル」に基づいて構築されます。テンプレート単位は、名前の末尾(タイプのサフィックスの前)に「@」を付ける必要があります。完全なユニット名は、「@」とユニットタイプのサフィックスの間にインスタンス名を挿入することで構成されます。ユニットファイル自体内では、インスタンスパラメータは "%i"などの指定子を使用して参照できます。下記をご覧ください。
または指定子リスト:
├─────────┼───────────────┼───────────────────────────────────────────────────┤ │ │ │For instantiated units this is the string between │ │"%i" │Instance name │the first "@" character and the type suffix. Empty │ │ │ │for non-instantiated units. │ ├─────────┼───────────────┼───────────────────────────────────────────────────┤
インスタンス化されたサービスを使用すると、スタンドアロンサービスが実行されます。所有者各インターフェイスのデーモンです。たとえば、あるインスタンスが変更または終了している間、他のインスタンスはアクティブであることが保証されるため、他のインターフェイスは影響を受けません。
インスタンスを使用してこれを実行できます。
どこでもデフォルト設定を復元、無効化、停止
hostapd.service
変更されていない内容に合わせて構成名を変更します。所有者サービスをインスタンス化するには、
%i.conf
インターフェイス名の後に次のものが必要です.conf
。mv -i /etd/hostapd/hostapd.wlan0.conf /etd/hostapd/wlan0.conf mv -i /etd/hostapd/hostapd.wlan1.conf /etd/hostapd/wlan1.conf
使用インスタンス化文字で区別される Hostapd サービスのバージョンは、
@
OP にすでに作成されている一般インスタンスと構成が異なります。インターフェイスごとに1回:systemctl enable --now hostapd@wlan0 systemctl enable --now hostapd@wlan1
最後に、デーモンは2回実行されます。
/usr/sbin/hostapd -B -P /run/hostapd.wlan0.pid /etc/hostapd/wlan0.conf
/usr/sbin/hostapd -B -P /run/hostapd.wlan1.pid /etc/hostapd/wlan1.conf
(その中に何かがない限り$DAEMON_OPTS
)。
答え2
/usr/lib/systemd/system/hostapd.service
これら2つの設定ファイルをハードコードするように編集しました。
編集後に実行する必要があるようです。
# systemctl daemon-reload
不快なハッキングのように見えますが、うまくいきます。