NetworkManager配置热点
一、配置NetworkManager,将下面配置丢到/etc/NetworkManger/system-connections/目录内命名hotspot.nmconnection即可:
[connection]
id=hotspot
uuid=93d709e2-f59b-41e4-b146-f81918508e3e
type=wifi
interface-name=wlan0
permissions=
timestamp=1741851917[wifi]
band=bg
channel=11
mac-address-blacklist=
mode=ap
seen-bssids=00:AD:A7:00:6D:6F;#改成自己网卡的MAC地址
ssid=box-wifi[wifi-security]
group=ccmp;tkip;
key-mgmt=wpa-psk
pairwise=ccmp;tkip;
proto=wpa;#这里不能配错,否则可能导致iphone连不上
psk=fe123456[ipv4]
address1=192.0.1.254/24
dns-search=
method=shared[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=auto
注意:NetworkManager配置热点时需要wpa_supplicant支持的,但不需要单独配置wpa_supplicant。上面文件权限是0600,权限配置错误会导致NetworkManager不能正确读取配置文件。
二、配置DHCP服务,我这里用dnsmasq,配置如下:
interface=wlan0
bind-dynamic
domain-needed
bogus-priv
dhcp-range=192.0.1.100,192.0.1.200,255.255.255.0,12h
三、多网卡配置上网优先级,将 下面配置丢到/etc/NetworkManger/dispatcher.d/目录命名99-metric.sh即可:
#!/bin/bashIF=$1
STATUS=$2
METRIC_PRI=(ppp0 usb0 eth1 eth0 wlan0)
#METRIC_PRI定义网口优先级,不要修改该文件
#自定义优先级文件丢到/etc/NetworkManager/dispatcher.d/metric.d/
if [ -d ./metric.d/ ] && [ ! -z $(ls ./metric.d/) ];thensource ./metric.d/*
fiLOG_FILE=/home/linaro/net.log
#if [ ! -f $LOG_FILE ];then
# touch $LOG_FILE
#fi
#echo "[`date`] IF=$IF STATUS=$STATUS DHCP4_ROUTERS=$DHCP4_ROUTERS IP4_GATEWAY=$IP4_GATEWAY IP4_ADDRESS_0=$IP4_ADDRESS_0 IP4_ROUTE_0=$IP4_ROUTE_0 IP4_NAMESERVERS=$IP4_NAMESERVERS" >> $LOG_FILEfunction get_route_metric()
{DEV_IF=$1LEN=${#METRIC_PRI[@]}for (( i=0; i<$LEN; i++ )); doif [ "${METRIC_PRI[$i]}" = "$DEV_IF" ]; thenreturn $(expr \( $i + 1 \) \* 10)fidonereturn 150
}if [ "$IF" = "eth0" ]
thencase "$STATUS" inup | dhcp4-change)ip route del default dev $IFif [ ! -z $DHCP4_ROUTERS ];thenget_route_metric $IFip route add default via $DHCP4_ROUTERS dev $IF metric $?elif [ "$IP4_GATEWAY" != "0.0.0.0" ];thenget_route_metric $IFip route add default via $IP4_GATEWAY dev $IF metric $?fi;;*);;esacexit 0
fiif [ "$IF" = "eth1" ]
thencase "$STATUS" inup | dhcp4-change)ip route del default dev $IFif [ ! -z $DHCP4_ROUTERS ];thenget_route_metric $IFip route add default via $DHCP4_ROUTERS dev $IF metric $?elif [ "$IP4_GATEWAY" != "0.0.0.0" ];thenget_route_metric $IFip route add default via $IP4_GATEWAY dev $IF metric $?fi;;*);;esacexit 0
fiif [ "$IF" = "ppp0" ]
thencase "$STATUS" inup | dhcp4-change)ip route del default dev $IFif [ ! -z $DHCP4_ROUTERS ];thenget_route_metric $IFip route add default via $DHCP4_ROUTERS dev $IF metric $?elif [ "$IP4_GATEWAY" != "0.0.0.0" ];thenget_route_metric $IFip route add default via $IP4_GATEWAY dev $IF metric $?fi;;*);;esacexit 0
fiif [ "$IF" = "usb0" ]
thencase "$STATUS" inup | dhcp4-change)ip route del default dev $IFif [ ! -z $DHCP4_ROUTERS ];thenget_route_metric $IFip route add default via $DHCP4_ROUTERS dev $IF metric $?elif [ "$IP4_GATEWAY" != "0.0.0.0" ];thenget_route_metric $IFip route add default via $IP4_GATEWAY dev $IF metric $?fi;;*);;esacexit 0
fiif [ "$IF" = "wl*" ]
thencase "$STATUS" inup | dhcp4-change)ip route del default dev $IFif [ ! -z $DHCP4_ROUTERS ];thenget_route_metric $IFip route add default via $DHCP4_ROUTERS dev $IF metric $?elif [ "$IP4_GATEWAY" != "0.0.0.0" ];thenget_route_metric $IFip route add default via $IP4_GATEWAY dev $IF metric $?fi;;*);;esacexit 0
fi
注意:上面文件权限0755,权限配置错误会导致NetworkManager不能正确读取脚本文件。
四、调试可以先基于wpa_supplicant,下面是配置文件:
ctrl_interface=/run/wpa_supplicant
ap_scan=2network={ ssid="box-hotspot"mode=2frequency=2412proto=WPApairwise=CCMP TKIPgroup=CCMP TKIPkey_mgmt=WPA-PSKpsk="fe123456"priority=2
}
以上所有配置都是基于传统网口命名规则,如较新系统可能不适用,需要根据需求调整!!!