当前位置: 首页>>技术教程>>正文


如何创建WiFi热点共享无线网络连接(单个适配器)?

, , ,

问题描述

我知道如何在连接到有线网络时创建热点,但是当我通过WiFi连接使用互联网时,在激活热点时会断开无线连接。

在Windows中,我可以使用Connectify Hotspot,这使我可以在创建接入点时使用同一无线适配器共享互联网连接。正如你可以在technology overview page上阅读:

Access Point mode allows you to create a hotspot using the same Wi-Fi card that you are using to access the Internet.

我如何在Ubuntu上执行此操作?

最佳解决办法

在看到vasishath提供的this link后,我设法设置了一个无线热点,以便从同一个无线接口设备共享互联网连接。这款无线设备必须使用已经通过nl80211支持构建的Atheros驱动程序。接下来我会告诉你如何。

检测您的无线设备是否可以使用此方法

terminal中运行以下命令:

lsmod | grep ath

如果输出为空或者字符串cfg80211不在输出中,则继续使用无效,您应该注意this answer的第二个和第三个点。

需要的工具

检查是否安装了下面提到的所有软件包:iwhostapdiptablesudhcpdudhcpcmacchanger

您可以使用这些安装

sudo apt-get install iw hostapd iptables udhcpd udhcpc macchanger

编辑一些文件

在终端中运行以下命令以编辑相应的文件:

sudo -H gedit /etc/hostapd.conf /etc/udhcpd.conf /etc/default/udhcpd /etc/wpa_supplicant.conf
  • hostapd.conf文件中添加以下代码:

    interface=new1
    driver=nl80211
    ssid=my_wifi_hotspot      #Change the ssid name as you wish
    channel=11                #I sugest you to use the same channel as your wireless network
    hw_mode=g
    wme_enabled=1
    macaddr_acl=0
    auth_algs=1
    ignore_broadcast_ssid=0
    wpa=3
    wpa_passphrase=1234567890 #Change the passphrase as you wish
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP
    rsn_pairwise=CCMP
    
  • udhcpd.conf文件中注释所有当前行(通过在行前添加#字符)并添加以下新行:

    start 192.168.0.102         #These IPs must to be in the same subset as your current default route
    end 192.168.0.117 
    interface new1 
    
    opt dns 192.168.0.1         #Your current default route (Gateway)
    option subnet 255.255.255.0
    opt router 192.168.0.101    #This IP must to be in the same subset as your current default route
    option  domain  localhost
    
  • 在/etc /default /udhcp中,注释表示DHCPD_ENABLED="no"的行。

  • wpa_supplicant.conf中,您必须提供当前无线网络的设置。一些简单的例子参见man wpa_supplicant。你可能在/usr/share/doc/wpa_supplicant/目录中有更多的例子。我用了类似的东西:

    ctrl_interface=/var/run/wpa_supplicant
    network={
      ssid="my_wifi_network"
      key_mgmt=WPA-PSK
      proto=WPA
      pairwise=CCMP
      group=CCMP
      psk="mypassphrase"
    }
    
  • 保存所有文件并关闭它们。

Note: All of these edits doesn’t affect with nothing your current network configuration.

制作一个shell脚本

  • 在终端中运行mkdir -p bin – 如果您尚未拥有它,此命令将在home文件夹中创建一个bin目录。

  • 运行gedit ~/bin/hotspotsetup.sh后 – 这将在gedit中创建新文件change_sources.sh

  • 将以下脚本复制并粘贴到新创建的文件中:

#!/bin/bash

service network-manager stop
sleep 1

pkill -15 nm-applet
sleep 1

ifconfig wlan0 down             #wlan0 - the name of your wireless adapter
sleep 1

iw phy phy0 interface add new0 type station
iw phy phy0 interface add new1 type __ap
sleep 2

ifconfig new0 down
macchanger --mac 00:11:22:33:44:55 new0
ifconfig new1 down
macchanger --mac 00:11:22:33:44:66 new1
ifconfig new0 up
ifconfig new1 up

ifconfig new1 192.168.0.101 up  #192.168.0.101 - the same IP defined for router in 'udhcpd.conf' file 
hostapd /etc/hostapd.conf &
sleep 2

service udhcpd start

wpa_supplicant -inew0 -c/etc/wpa_supplicant.conf &
sleep 10

udhcpc -i new0

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables --table nat --append POSTROUTING --out-interface new0 -j MASQUERADE
iptables --append FORWARD --in-interface new1 -j ACCEPT
  • 保存该文件并关闭它。

  • 返回到终端并运行:chmod +x ~/bin/hotspotsetup.sh – 授予脚本的执行访问权限。

从同一无线适配器启动连接到无线网络的无线热点

以root权限在终端中运行上述脚本:

sudo ~/bin/hotspotsetup.sh

Proof

wireless,wireless-access-point,hot-spot,ubuntu

Note: To start again your network-manager service as it was before to run the hotspotsetup.sh script, restart your computer (sudo reboot).

来源:Connectify for Linux with Single wireless interface

次佳解决办法

简单的步骤:在Ubuntu中创建wifi热点

  1. 禁用Wifi(取消选中启用Wi-Fi)

  2. 转到网络连接(编辑连接…)

  3. 点击”Add”

  4. 选择”Wi-Fi”并单击”Create”

  5. 输入连接名称,如”wifi-hotspot”

  6. 根据您的需要键入SSID

  7. 从下拉菜单中选择设备MAC地址(wlan0)

  8. Wifi Security选择“WPA& WPA2 Personal”并设置密码。

  9. 转到IPv4设置选项卡,从方法drop-down框中选择共享到其他计算机。

  10. 然后保存并关闭。

  11. 打开终端(Ctrl + Alt + T)并输入以下命令,并在步骤5中使用连接名称。

    sudo gedit /etc/NetworkManager/system-connections/wifi-hotspot
    
  12. 找到mode=infrastructure并将其更改为mode=ap

  13. 现在检查wi-fi将自动连接到创建的热点的网络部分。如果找不到它,请转到连接到隐藏网络…找到连接并连接到它。

来源:http://ubuntuhandbook.org/index.php/2014/09/3-ways-create-wifi-hotspot-ubuntu/

第三种解决办法

这是另一个答案,因为另一个答案造成了很多争议。

最重要的是,您需要知道我们的无线适配器的名称。使用下面的命令来获取它:

iwconfig

这将是最有可能的wlan0或wlan1。

有些情况下,我们使用旧的WiFi适配器,我们想知道它使用的驱动程序。我们可以根据USB或PCI的类型使用下面的命令。

lsusb
lspci

使用以下命令查看您当前使用的驱动程序:

lsmod

需要安装一个程序。只需按下键盘上的Ctrl + Alt + T即可打开终端。打开时,运行下面的命令:

sudo apt-get install hostapd

通过以下命令打开主网络适配器配置文件:

sudo gedit /etc/hostapd/hostapd.conf

并像这样编辑它:

interface=wlan0
driver=nl80211
country_code=US
ssid=mySSID
hw_mode=g
channel=1
wpa=2
wpa_passphrase=MyWiFiPassword
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
auth_algs=1
macaddr_acl=0

第一行应该是您的网络适配器名称。第二行不应该在大多数情况下被改变,除非你不幸运并且你需要第三方驱动程序。第三行不需要解释。第四行应该是您的WiFi接入点名称(SSID)。第五行将您的网络标识为a /b /g /n模式。下一行是您的网络频道。其余行设置安全和加密。在大多数情况下,您只需要更改密码短语。

通过以下命令打开第二个配置文件:

sudo gedit /etc/default/hostapd

并像这样改变它:

DAEMON_CONF="/etc/hostapd/hostapd.conf"
RUN_DAEMON="yes"
DAEMON_OPTS="-dd"

第一行指向主网络适配器配置文件。第二行告诉hostapd在启动时在后台以DAEMON模式运行。最后一行告诉hostapd记录每条消息。这里的重要技巧是,如果您喜欢使用两个不同的无线网络适配器来设置双频带接入点,则应创建每个ard的原始配置文件(第1个文件)并将其更改为如下所示:

DAEMON_CONF="/etc/hostapd/hostapd.conf /etc/hostapd/hostapd2.conf"

配置完成。

运行DAEMON

现在,您必须确保hostapd DAEMON在启动时启动(下面的第一条命令),您现在也应该运行它以避免强制重新启动。

sudo update-rc.d hostapd defaults
sudo /etc/init.d/hostapd start

它完成了。现在我们可以连接到我们新建的接入点。

来源:Hostapd:The Linux Way to create Virtual Wifi Access Point& Hostapd Linux documentation page

第四种办法

正如你在这个答案的评论中看到的那样,它是一种方法来做到这一点。它在FreeBSD(不是Ubuntu /Linux)中有记录:https://serverfault.com/questions/192144/connect-to-multiple-ap-with-one-wifi-adapter-under-linux-freebsd(链接来自评论)。它在Linux上似乎没有完全相同的工作方式,但它应该是相似的。不幸的是,我无法找到关于此主题的更多详细信息。

最简单也是最常用的方法是使用两个物理网络接口。所以你可能会购买另一个wifi棒,或者只是使用其他技术进一步连接,并通过Wifi做其中一个。可能性例如是:

  • 蓝牙+ Wifi

  • LAN /以太网+ Wifi

  • 3G /LTE + Wifi

  • 无线(外部)+无线(内置或第二外部)

一旦我注意到Ubuntu Linux能够同时管理两个WiFi设备而不会变得复杂。我没有通过分享互联网连接等方式来测试,但它应该是可能的。它的复杂程度可能取决于您使用的连接类型。在Linux上,你可能不需要和某种特殊的软件。应该可以在不需要任何特殊工具的情况下共享连接。不幸的是,我现在无法尝试。

我建议你尝试无线连接到无线上网,如果你有另一个无线网卡或者LAN或蓝牙(这是大多数笔记本电脑中的内置)。由于提供商数据等,3G /LTE共享有点不好。

第五种办法

我发现创建CONNECTIFY体验的最佳方式是使用AP-HOTSPOT! (WPA2..not wep像linux在默认情况下在Ubuntu中)

sudo add-apt-repository ppa:nilarimogard/webupd8

sudo apt-get update

sudo apt-get install ap-hotspot

运行和选项

开始:sudo ap-hotspot start

停止:sudo ap-hotspot stop

配置:sudo ap-hotspot Configure

想要一个Graphical User Interface

要安装它打开一个终端,然后浏览到:

cd /home/USERNAME/LOCATION

然后运行安装命令:

qmake

make

创建一个程序…将其拖动到桌面并完成:)欢呼声

至于两个适配器… Windows和免费BSD可以做到这一点…截至目前我仍然试图弄清楚,因为我从昨天开始只为自己找到这个场景!我将回报… Linux也可以做到这一点。它不是适配器的硬件限制,可以与其他操作系统一起使用。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/926.html,未经允许,请勿转载。