我正在制作一个 GUI 应用程序,它将控制我的笔记本电脑,使其充当 wifi 热点。我可能会更改发行版,因此我想找到一个适用于所有发行版的解决方案。我目前正在 Fedora 17 上执行此操作。
使用 NetworkManager 的“用作热点”按钮可以很好地创建临时热点:
我想用终端命令重新创建此功能。
以下是我尝试实现此目的的两种方法,但我尚未找到解决方案。
方法一: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
其中是我使用“用作热点”功能设置的 iptablessaved-hotspot-iptables
生成的文件。iptables-save > saved-hotspot-iptables
方法一问题
设备可以看到 SSID 但无法连接。运行ip a
显示有关 wlan0 的以下信息:
...
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DORMANT qlen 1000
...
存在通知NO-CARRIER
,并且状态DORMANT
而不是UP
。
运行ifconfig wlan0
显示如下:
...
wlan0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
...
请注意,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
方法2问题
如果用户以前从未在 NetworkManager 上按过“用作热点”,则nmcli con up id Hotspot
不起作用。我看过nm-connection-editor --create
但找不到太多信息。我也研究过手动创建,/etc/sysconfig/network-scripts/ifcfg-Hotspot
但这种方法似乎并不优雅或无法扩展到其他发行版。
答案1
有一个专用选项nmcli
:
nmcli device wifi hotspot ifname wlan0 ssid toto password toto
更多信息来自手动的:
wifi hotspot [ifname ifname] [con-name name] [ssid SSID] [ band { a | bg } ] [channel channel] [password password]
答案2
我使用 GNOME 网络管理器创建了一个热点。问题是,我无法在 GUI 中配置 SSID 和密码。如果您使用网络管理器 GUI 创建热点,它会创建文件/etc/NetworkManager/system-connections/Hotspot
.在该文件中可以编辑 SSID 和密码。
sudo vim /etc/NetworkManager/system-connections/Hotspot
该文件的内容如下所示:
[connection]
id=Hotspot
uuid=0bf627gd-8e34-48c6-865a-06f898b4y1hb
type=wifi
autoconnect=false
permissions=
secondaries=
[wifi]
hidden=false
mac-address=YOUR_WIFI_INTERFACE_MAC_ADDRESS
mac-address-blacklist=
mode=ap
seen-bssids=
ssid=SSID_NAME
[wifi-security]
group=ccmp;
key-mgmt=wpa-psk
pairwise=ccmp;
proto=rsn;
psk=YOUR_WIFI_AP_PASSWORD
[ipv4]
dns-search=
method=shared
[ipv6]
dns-search=
method=auto
我只根据我的需要更改了ssid
和属性。psk
然后我重新启动了计算机,因为命令:sudo systemctl restart NetworkManager
网络重新启动似乎无法正常工作,因为在网络管理器 GUI 中我不再有无线网络设置,并且以下命令在重新启动之前也无法正常工作。重新启动后,您可以使用该nmcli
命令来启动接入点。
nmcli con up Hotspot ifname YOUR_WIFI_INTERFACE
YOUR_WIFI_INTERFACE
你可以通过命令找出来iwconfig
。
答案3
需要 DHCP 服务器来为 wifi 连接分配 IP 地址。我使用了dnsmasq
DNS 和 DHCP 服务器。
以下是启动 ad-hoc wifi 热点的命令:
# 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
# dnsmasq -C /dev/null >/dev/null 2>&1 --bind-interfaces --listen-address=10.42.0.1 --dhcp-range=10.42.0.10,10.42.0.200,12h