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

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

在Windows中,我可以使用Connectify Hotspot ,这使我能够在创建接入点时从同一个无线适配器共享互联网连接。 您可以在技术概述页面上阅读:

接入点模式允许您使用用于访问Internet的相同Wi-Fi卡创建热点。

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

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

  1. 禁用Wifi(取消选中启用Wi-Fi)
  2. 转到网络连接(编辑连接…)
  3. 点击“添加”
  4. 选择“Wi-Fi”并点击“创建”
  5. 输入连接名称,如“wifi-hotspot”
  6. 根据需要输入SSID
  7. 从下拉列表中选择设备MAC地址(wlan0)
  8. Wifi Security选择“WPA和WPA2 Personal”并设置密码
  9. 转到IPv4设置选项卡,从方法下拉框中选择共享到其他计算机。
  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/

在我看到vasishath提供的这个链接 之后 ,我设法建立了一个无线热点,以便从同一个无线接口设备共享互联网连接。 此无线设备必须使用已构建支持nl80211Atheros驱动程序。 接下来我将告诉你如何。

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

在终端中运行以下命令:

 lsmod | grep ath 

如果输出为null或字符串cfg80211不在输出中,则继续没有意义,您应该注意此答案的第二点和第三点。

需要的工具

检查是否安装了以下所有软件包: iw , hostapd , iptables , udhcpd , udhcpc , macchanger 。

你可以安装这些

 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" } 
  • 保存所有文件并关闭它们。

注意:所有这些编辑都不会影响您当前的网络配置。

制作一个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 

certificate

hotspotsetup.sh

注意:要像以前一样重新启动网络管理器服务以运行hotspotsetup.sh脚本,请重新启动计算机( sudo reboot )。

来源: Connectify for Linux with Single wireless interface 。

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

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

 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 

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

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

 sudo gedit /etc/default/hostapd 

并改变它:

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

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

 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:创建虚拟Wifi接入点和Hostapd Linux文档页面 的Linux方式

正如你在这个答案的评论中看到的那样,这是一种方法。 这里有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
  • Wifi(外置)+ Wifi(内置或第二外置)

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

如果你还有其他无线网络棒,我推荐你尝试Wifi到Wifi,否则局域网或蓝牙(大多数笔记本电脑内置)。 由于提供商数据等等,3G / LTE共享有点糟糕。

我发现创建CONNECTIFY体验的最好方法是使用AP-HOTSPOT!
(WPA2 ..不像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

想要一个图形用户界面 ?

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

cd /home/USERNAME/LOCATION

然后运行install命令:

qmake

make

创建一个程序…将其拖动到桌面并完成:)干杯

至于两个适配器…… Windows和免费的bsd可以做到这一点……截至目前我还在努力解决这个问题,因为我昨天只为自己接近了这个场景! 我将报告回来…… Linux也可以做到这一点。对于可以与其他操作系统一起使用的适配器,这不是硬件限制……

它目前仅适用于Atheros卡和极少数Broadcom卡。 要知道您使用的是哪一个,请在终端中运行以下命令并将输出粘贴到此处: –

 lspci | Wireless 

或者您可以直接尝试该方法。 这是关于如何做到这一点的教程的链接: – connectify-for-linux-with-single-wireless-interface

像Purushoth的回答一样,这个答案还需要2个WiFi适配器(例如:一个内部和一个外部USB Wi-Fi适配器)。 然而,我无法得到他为我工作的答案,所以这就是我所做的。

在Xubuntu 14.04中测试过。

如何将Ubuntu / Xubuntu PC配置为WiFi热点(例如:在机场或飞机上使用,以便通过手机和其他设备与PC共享单个付费连接):

  1. 插入USB WiFi加密狗。 并非所有的加密狗都可以作为“ap”(接入点),但内部卡可以肯定,所以我们(至少现在,直到你可以找到一个可以充当接入点的USB wifi适配器)使用外部USB连接到付费服务(例如:机上WiFi),我们将使用内部wifi适配器来制作wifi接入点。
    • 重要提示:请勿使用错误的(外部)WIFI适配器支付和连接付费服务,或者您需要再次支付以便切换它,因为您的付费连接已经与您的WIFI适配器连接 – 可能是它的永久性MAC地址或东西。
  2. 左键单击面板中的wifi图标,然后选择“创建新的WiFi网络…”→选择内部Wi-Fi适配器(即wlan0),组成网络名称(SSID)(例如:“wifi-hotspot”) ,选择“WPA和WPA2 Personal”作为“Wi-Fi安全”,并输入密码,然后单击“创建”。
    • 注意:当你还有一个外接USB WIFI适配器时,有一个BUG让你有时无法选择内部WIFI适配器。 如果发生这种情况,在完成WIFI HOTSPOT的同时,将外部WIFI适配器简单地拔出,然后在完成/下方告知时将其重新插入。
  3. 编辑刚刚创建的新wifi热点的配置文件:
    • cd /etc/NetworkManager/system-connections
    • ls
    • 通过上面的GUI步骤找到刚刚创建的热点文件; 例如:“wifi-hotspot”,并编辑它:
    • sudo nano wifi-hotspot
    • 向下箭头并将“mode = adhoc”或其他任何内容更改为“mode = ap”。 保存并退出。
  4. 现在,在外部USB WiFi适配器仍然是UNplugged的情况下,再次通过左键单击面板中的WiFi图标并转到“连接到隐藏的WiFi网络……”激活刚创建的wifi热点→再次选择内部wifi适配器“Wi-Fi适配器”,并为“连接”选择接入点名称(例如:“wifi-hotspot”)。“网络名称”,“Wi-Fi安全”和“密码”字段现在将自动填充并且灰了。 单击“连接”。 WiFi接入点将在您的内部卡上激活。 您可以将设备(例如手机)连接到它。
  5. 最后,在您的WiFi热点处于活动状态时,将您的辅助/ USB WiFi适配器插入并使用它连接到付费网络。 支付您的订阅或其他任何内容,通过此适配器的互联网现在将自动通过您刚刚配置的内部“接入点”适配器广播到与您相连的设备。
  6. 完成!

参考文献:这里是我找到/etc/NetworkManager/system-connections文件夹路径和替代方法(对我来说不起作用): https : //askubuntu.com/a/609199/327339

让我向您介绍一个简化所有内容的优秀工具: create_ap (通过倾斜
这是官方存储库: https : //github.com/oblique/create_ap
这个工具是Arch Linux存储库的一部分,也应该在Ubuntu存储库中!
它非常易于使用且非常有效。
要在Ubuntu中安装它,您必须首先安装依赖项:

 sudo apt install bash util-linux procps hostapd iproute2 iw wireless-tools haveged iptables dnsmasq git 

除非您使用“迷你安装映像”,否则您已经拥有了90%的…
完成后,从倾斜中克隆存储库:

 git clone https://github.com/oblique/create_ap.git 

在下载的存储库中找到您的终端:

 cd create_ap 

安装工具:

 sudo make install 

(不需要使用make编译)
容易,对吗? 其余的更容易……如果您的设备能够同时用作客户端和PA(如atheros wifi芯片),您只需使用网络管理器连接到您的家用路由器,如你通常这样做,而不是像你那样执行命令行:

 sudo create_ap     

 sudo create_ap wlp2s0 wlp2s0 Bathroom_WiFi mysecuresecretkey 

而且……就是这样! create_ap 令人难以置信,如此简单! 现在你只需用你的Android设备连接到重复的网络。 您将在笔记本电脑终端中看到笔记本电脑和客户端之间协商的握手: 在此处输入图像描述 你可以享受一个很好的浴室会议与互联网…一切都通过一个界面和一个简单的命令完成。 该工具有很多选项,有关更多信息,请访问倾斜的github存储库(之前给出的链接),如果您能说西class牙语,您可以查看此论坛post: create_ap:Lasoluciónperfectapara transformar tu ordenador en un repetidor universal todo terreno