相当于 NetworkManager 的“用作热点”选项的终端命令

Dan*_*iel 10 networking wifi iptables internet networkmanager

我正在制作一个 gui 应用程序,它将控制我的笔记本电脑,使其充当 wifi 热点。我可能会更改发行版,因此我想找到一个通常适用于所有发行版的解决方案。我目前正在 Fedora 17 上执行此操作。

使用 NetworkManager 的“用作热点”按钮可以很好地创建临时热点: 在此处输入图片说明

我想用终端命令重新创建这个功能。

以下是我尝试完成此操作的两种方法,但我还没有找到解决方案。


方法 1:iwconfig
使用来自整个网络的研究,我尝试了以下命令:

# ifconfig wlan0 10.42.0.1 netmask 255.555.255.0 broadcast 10.42.0.255 up
# iwconfig wlan0 essid my-lappy mode ad-hoc key 0123456789
# iptables-restore < saved-hotspot-iptables
# echo 1 > /proc/sys/net/ipv4/ip_forward
# dhclient wlan0
Run Code Online (Sandbox Code Playgroud)

saved-hotspot-iptables我用iptables-save > saved-hotspot-iptables“用作热点”功能设置的 iptables生成的文件在哪里。

方法 1 问题
设备可以看到 SSID,但无法连接。运行ip a显示以下有关 wlan0 的信息:

...
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DORMANT qlen 1000
...
Run Code Online (Sandbox Code Playgroud)

通知NO-CARRIER存在时,并且状态是DORMANT代替UP

运行ifconfig wlan0显示如下:

...
wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
...
Run Code Online (Sandbox Code Playgroud)

请注意,RUNNING它作为标志之一缺失。


方法 2:nmcli
如果在系统上至少按下一次 NetworkManager 的“用作热点”按钮,/etc/sysconfig/network-scripts/ifcfg-Hotspot则会创建,我可以使用以下命令启动工作热点:

# ifconfig wlan0 up
# nmcli con up id Hotspot
# iwconfig wlan0 essid my-lappy key 0123456789
Run Code Online (Sandbox Code Playgroud)

方法 2 问题
如果用户之前从未在 NetworkManager 上按过“用作热点”,nmcli con up id Hotspot则不会工作。我看过,nm-connection-editor --create但找不到太多信息。我也研究过手动创建,/etc/sysconfig/network-scripts/ifcfg-Hotspot但这种方法似乎并不优雅或无法扩展到其他发行版。

ysd*_*sdx 2

有一个专用选项nmcli

nmcli device wifi hotspot ifname wlan0 ssid toto password toto
Run Code Online (Sandbox Code Playgroud)

手册中的更多信息:

wifi hotspot [ifname ifname] [con-name name] [ssid SSID] [ band { a | bg } ] [channel channel] [password password] 
Run Code Online (Sandbox Code Playgroud)