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

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

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

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

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

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

答案1

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

  1. 禁用 Wifi(取消选中启用 Wi-Fi)
  2. 转到网络连接(编辑连接......)
  3. 点击“添加”
  4. 选择“Wi-Fi”,点击“创建”
  5. 输入连接名称,如“wifi-hotspot”
  6. 输入您想要的 SSID
  7. 从下拉菜单中选择设备 MAC 地址 (wlan0)
  8. Wifi 安全选择“WPA 和 WPA2 个人”,然后设置密码
  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/

答案2

我看到之后此链接由...提供瓦西沙特,我设法设置了一个无线热点,以便从同一个无线接口设备共享互联网连接。此无线设备必须使用阿瑟罗斯已经构建的驱动程序nl80211支持。接下来我将向您展示如何。

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

在中运行以下命令终端

lsmod | grep ath

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

所需工具

检查下面提到的所有软件包是否都已安装:我爱hostapdiptablesudhcpd韓國麦克查格

您可以使用以下方式安装

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此命令将bin在您的文件夹中创建一个目录。home
  • 运行后- 这将在 gedit 中gedit ~/bin/hotspotsetup.sh创建新文件。hotspotsetup.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

证明

热点设置

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

来源: 具有单一无线接口的 Connectify for Linux

答案3

让我向你介绍一个可以简化一切的优秀工具:创建_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 <connected interface> <repeater interface> <essid repeated network> <WPA Key>

例子

sudo create_ap wlp2s0 wlp2s0 Bathroom_WiFi mysecuresecretkey

并且...就是这样! 创建_ap 难以置信,而且如此简单!现在您只需使用 Android 设备连接到重复网络即可。您将在笔记本电脑终端中看到笔记本电脑与客户端之间协商的握手: 在此处输入图片描述 您还可以享受互联网带来的美妙浴室时光……一切都通过单一界面和一个简单的命令完成。该工具有很多选项,有关更多信息,请访问 oblique 的 github 存储库(之前提供了链接),如果您会说西班牙语,您可以查看这个论坛主题:create_ap:将你的排序器转换为地球上通用的重复器的完美解决方案

编辑 停止了项目

该项目不再维护。

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

答案4

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

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

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

我曾经注意到 Ubuntu Linux 能够同时管理两个 wifi 设备,而且操作并不复杂。我没有测试过共享互联网连接等方式,但应该是可以的。复杂程度可能取决于您使用的连接类型。在 Linux 上,您可能不需要任何特殊软件。应该可以共享连接,而无需任何特殊工具。不幸的是,我现在无法尝试。

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

相关内容