在systemd和networkd的Linux系统上,我需要在一个WLAN接口上运行一个WLAN接入点,同时在普通站(“客户”)模式下运行更多的(热插拔)WLAN接口。
事实certificate, wpa_supplicant.service在我的所有WLAN接口上都可以正常使用,如果只有所有这些WLAN接口都可以在站点/客户端模式下运行的话,那就没问题了。 然而,当wpa_supplicant.service服务于WLAN接口时, hostapd.service在AP接入点模式下操作WLAN接口。
所以我想只为特定的接口禁用wpa_supplicant.service ,比如wls35u2 。 我的想法是有一个[email protected]单元,我可以有select地禁用,但离开wpa_supplicant.service启用。 但是,这似乎不工作,或者我在[email protected]做错了。
那么,如何才能在特定的接口上禁用WPA请求者服务,而不是全局禁用呢?
[编辑:看@rweisse回答一个更好的方式来做到这一点]
我在树莓派上遇到了同样的问题。
我发现wpa_supplicant @ wlan0和wpa_supplicant @ wlan1 (我有两个wlan接口)和wpa_supplicant.service都被禁用。
我设法find(至less在raspbian,我不知道它是如何在其他debian版本) dhcpcd负责wpa_supplicant启动。
在/ lib / dhcpcd / dhcpcd-hooks下 ,有一个名为“10-wpa-supplicant”的文件,您可以在其中findwpa_supplicant的启动/重新configuration/停止过程。
在这个文件中,我只是在正在处理的$接口上添加条件。 对于每个PROCEDURE_NAME(开始/停止/重新configuration):
PROCEDURE_NAME( ) if [ "$interface" != "TheInterfaceWPASupplicantShouldBeDisabledOn" ] then Code of the prodecure else return 0 fi
之后,我重新启动了dhcpcd服务
systemctl restart dhcpcd
现在InterfaceWPASupplicant应该被禁止使用hostapd不再是一个问题。 这个解决scheme有点残酷,因为我不认为这样做应该是这样的,但是我没有find任何手册来说明如何做到这一点。
希望这个帮助。
我有同样的问题。 @Nprojectfind了一个很好的解决scheme。 但是你不必修改这些程序。 简单地去到Nproject提到的文件( /lib/dhcpcd/dhcpcd-hooks/10-wpa-supplicant )的末尾并修改下面的if子句:
原版的
if [ "$ifwireless" = "1" ] && \ type wpa_supplicant >/dev/null 2>&1 && \ type wpa_cli >/dev/null 2>&1 then case "$reason" in PREINIT) wpa_supplicant_start;; RECONFIGURE) wpa_supplicant_reconfigure;; DEPARTED) wpa_supplicant_stop;; esac fi
以这种方式添加[ "$interface" != "TheInterfaceWPASupplicantShouldBeDisabledOn" ] :
改性
if [ "$ifwireless" = "1" ] && [ "$interface" != "TheInterfaceWPASupplicantShouldBeDisabledOn" ] && \ type wpa_supplicant >/dev/null 2>&1 && \ type wpa_cli >/dev/null 2>&1 then case "$reason" in PREINIT) wpa_supplicant_start;; RECONFIGURE) wpa_supplicant_reconfigure;; DEPARTED) wpa_supplicant_stop;; esac fi
此外,这将阻止任务栏中的networkingpipe理器(GUI)显示此界面。