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

Rup*_*aya 135 wireless wireless-access-point hot-spot

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

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

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

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

Pur*_*oth 73

简单步骤:在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
    
    Run Code Online (Sandbox Code Playgroud)
  12. 找到mode=infrastructure并将其更改为mode=ap

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

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

  • 简单,但似乎没有回答这里提出的问题:在我手中,它不会导致使用单个无线网络接口共享无线到无线。 (10认同)
  • 来自@Purushoth 的来源(http://ubuntuhandbook.org/index.php/2014/09/3-ways-create-wifi-hotspot-ubuntu/),不要忘记第一步:`1. 禁用 WIFI 并将互联网电缆插入您的笔记本电脑,以便您的 Ubuntu 连接到有线互联网并禁用无线。` 换句话说,这个答案需要通过以太网连接互联网,然后才能将其作为无线接入点通过一个无线适配器。它*不*在单个 wifi 适配器上以无线方式接收互联网和广播互联网。相反,它接收有线和无线广播。 (7认同)
  • 12. a) 启用 Wifi(勾选启用 Wi-Fi) (3认同)
  • 无法理解最后一点 13. 我连接到一个名为“Wifi”的 wifi,我使用上面的路径“热点”创建了另一个。现在该怎么办?如果我断开与 Wifi 的连接,互联网资源将从哪里来? (3认同)
  • 真棒 :D,第 14 步 -> 将您的笔记本电脑连接到 LAN 并通过创建的热点在移动设备上使用它。超级棒 :D (2认同)
  • 14.启用wifi,15.在终端中ctrl+alt+t sudo service network-manager restart (2认同)
  • 在 18.04 上,您可以从 CLI 运行“nm-connection-editor”来获取“网络连接”屏幕。 (2认同)

Rad*_*anu 54

在我看到vasishath提供的这个链接后,我设法设置了一个无线热点来共享来自同一个无线接口设备的互联网连接。该无线设备必须使用已经构建的支持nl80211Atheros驱动程序。接下来我将向您展示如何。

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

终端中运行以下命令:

lsmod | grep ath
Run Code Online (Sandbox Code Playgroud)

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

所需工具

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

你可以安装这些

sudo apt-get install iw hostapd iptables udhcpd udhcpc macchanger
Run Code Online (Sandbox Code Playgroud)

编辑一些文件

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

sudo -H gedit /etc/hostapd.conf /etc/udhcpd.conf /etc/default/udhcpd /etc/wpa_supplicant.conf
Run Code Online (Sandbox Code Playgroud)
  • 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
    
    Run Code Online (Sandbox Code Playgroud)
  • 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
    
    Run Code Online (Sandbox Code Playgroud)
  • 在 /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"
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 保存所有文件并关闭它们。

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

编写一个shell脚本

  • 在终端运行中mkdir -p bin-如果您还没有,此命令将bin在您的home文件夹中创建一个目录。
  • 运行后gedit ~/bin/hotspotsetup.sh- 这将hotspotsetup.sh在 gedit 中创建新文件。
  • 将以下脚本复制并粘贴到新创建的文件中:
lsmod | grep ath
Run Code Online (Sandbox Code Playgroud)
  • 保存文件并关闭它。
  • 返回终端并运行:chmod +x ~/bin/hotspotsetup.sh- 授予脚本的执行访问权限。

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

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

sudo ~/bin/hotspotsetup.sh
Run Code Online (Sandbox Code Playgroud)

证明

热点设置.sh

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

来源: Connectify for Linux with Single wireless interface

  • 这是否可以通过硬件实现是不可能的。如果 Windows 和 FreeBSD 应用程序/驱动程序可以做到这一点,那么在 Ubuntu 中也应该是可能的。也许不是通过通常的 NetworkManager 方式,但这不是有效答案的标准。 (4认同)

kcd*_*dtv 33

让我给你介绍一个很好的工具,简单化了一切: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
Run Code Online (Sandbox Code Playgroud)

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

git clone https://github.com/oblique/create_ap.git
Run Code Online (Sandbox Code Playgroud)

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

cd create_ap
Run Code Online (Sandbox Code Playgroud)

安装工具:

sudo make install
Run Code Online (Sandbox Code Playgroud)

(不需要编译make
很简单,对吧?那么剩下的就更容易了... ...如果您的设备能够同时用作客户端和 PA(如 atheros wifi 芯片 -编辑:也有一些英特尔芯片,请参阅下面的第二条评论)您只需必须像往常一样使用网络管理器连接到您的家庭路由器,然后执行如下命令行:

sudo create_ap <connected interface> <repeater interface> <essid repeated network> <WPA Key>
Run Code Online (Sandbox Code Playgroud)

例子

sudo create_ap wlp2s0 wlp2s0 Bathroom_WiFi mysecuresecretkey
Run Code Online (Sandbox Code Playgroud)

还有……就是这样! 创建_ap 难以置信,如此简单!现在你只需要用你的安卓设备连接到重复的网络。您将在您的笔记本电脑终端中看到您的笔记本电脑和客户端之间协商的握手: 在此处输入图片说明 而且您可以通过互联网享受美好的浴室会话......一切都通过一个界面和一个简单的命令完成。该工具有很多选项,有关更多信息,请访问斜的 github 存储库(之前提供的链接),如果您会说西班牙语,则可以查看此论坛主题:create_ap: La solución perfecta para transformar tu ordenador en un repetidor Universal todo terreno

编辑 倾斜停止了项目

此项目不再维护。

免费代码的美妙之处在于好的项目永远不会消亡,并且有 2 个 github 存储库可以保持 Oblique 的出色工作:

  • 对于不同时支持 AP 和客户端的设备的重要说明,在您下载的 repo 中编辑文件“create_ap”,1. 找到并注释“CHANNEL=$WIFI_IFACE_CHANNEL”行 2. 找到函数“is_wifi_connected()”并注释除最后一行“return 1”之外的所有内容,然后运行“sudo make install”。这使它在 GPD Pocket 2 上的 ubuntu 18.04 对我有用。(如果您将其包含在答案中会很棒) (4认同)
  • 非常令人印象深刻的工具! (2认同)
  • 在上次评论中忘记提及我从 https://github.com/oblique/create_ap/issues/107 提供的说明 (2认同)

Lak*_*ash 22

这是我的项目Linux Wifi Hotspot,它有 GUI 和命令行界面。它可以在连接到互联网的同一 wifi 适配器上创建虚拟 wifi 热点。它具有附加功能,例如 MAC 过滤器、更改频道/频带、查看连接的设备等。

在此输入图像描述

  • 这是最不麻烦的选择。安装并开始。适用于我的 7 年旧 HP Folio 1040 笔记本电脑,配备 Intel Wireless 7260、Ubuntu 20 LTS。Linux WiFi 热点仅使用单个 NIC 同时连接和分配互联网连接。你救了我的命! (5认同)
  • 在 Ubuntu 22.04 上工作。非常感谢你做的这些!!Nordlynx 互联网接口 (NordVPN) 出现在 UI 下拉列表中,我对此感到很高兴!我无法让 5Ghz 工作,不确定是我的硬件问题还是软件问题。 (2认同)

ver*_*ilt 6

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

可能最简单和最常见的方法是使用两个物理网络接口。因此,您可以购买另一个 wifi 棒,或者只是使用另一种技术来进一步连接并通过 Wifi 仅执行其中一个。例如,可能性是:

  • 蓝牙 + 无线网络
  • 局域网/以太网 + Wifi
  • 3G/LTE + 无线网络
  • Wifi(外置)+ Wifi(内置或第二个外置)

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

如果您有另一个 wifi 棒,我建议您尝试使用 Wifi 到 Wifi,否则使用 LAN 或蓝牙(大多数笔记本电脑内置)。由于提供商的数据计划等原因,3G/LTE 共享有点糟糕。

  • 参见:[Linux/FreeBSD 下用一个 Wifi 适配器连接多个 AP?](http://serverfault.com/q/192144/135437) (2认同)

Mit*_*tch 5

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

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

iwconfig
Run Code Online (Sandbox Code Playgroud)

它很可能是 wlan0 或 wlan1。

在某些情况下,我们使用旧的 WiFi 适配器,我们想知道它使用的驱动程序。我们可以根据其类型是USB还是PCI来使用以下命令。

lsusb
lspci
Run Code Online (Sandbox Code Playgroud)

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

lsmod
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get install hostapd
Run Code Online (Sandbox Code Playgroud)

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

sudo gedit /etc/hostapd/hostapd.conf
Run Code Online (Sandbox Code Playgroud)

并像这样编辑它:

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
Run Code Online (Sandbox Code Playgroud)

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

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

sudo gedit /etc/default/hostapd
Run Code Online (Sandbox Code Playgroud)

并像这样改变它:

DAEMON_CONF="/etc/hostapd/hostapd.conf"
RUN_DAEMON="yes"
DAEMON_OPTS="-dd"
Run Code Online (Sandbox Code Playgroud)

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

DAEMON_CONF="/etc/hostapd/hostapd.conf /etc/hostapd/hostapd2.conf"
Run Code Online (Sandbox Code Playgroud)

配置完成。

运行守护进程

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

sudo update-rc.d hostapd defaults
sudo /etc/init.d/hostapd start
Run Code Online (Sandbox Code Playgroud)

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

来源:Hostapd:创建虚拟 Wifi 接入点的 Linux 方式& Hostapd Linux 文档页面