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


111

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

在Windows中,我可以使用Connectify Hotspot,它使我可以在创建访问点时从同一无线适配器共享Internet连接。您可以在技术概述页面上阅读:

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

如何在Ubuntu上执行此操作?


3
您有两个Wifi贴纸或内置wifi吗?因为您总是需要一个接收和一个发送。我认为即使使用connectify。如果您在他们的网站上浏览,他们总是会展示如何通过wifi共享3G / 4G,但绝不会像他们在广告中所说的那样是两个wifi。可以,但只能使用两个wifi适配器。我从未听说过可以避免这种情况的软件技术。但是,还有其他可能性。
verpfeilt

5
我已投票决定重新开放此问题,因为它与“如何共享Internet连接”问题不同。首先,OP已经找到了该选项(因此在那里不需要答案);其次,有关使用单个网络设备共享往返连接的情况。另请参阅热点和Internet访问-为什么不呢?
gertvdijk

很有意思。我想补充一点,从物联网的硬件站点,您需要一个功能强大的无线网卡(我知道办公室中的联想无法创建无线AP,通过硬件,业务安全手段完全不可能),另一件事是,则至少需要两个天线才能真正发挥作用,或者是一个魔术软件,可以模拟一个天线上的两个连接。PS:我不是硬件技术员。我很可能一无所知并且在谈论垃圾。;)
mondjunge

@mondjunge单个天线只会强制您使用相同的频率/信道。但是可以,当然可以完全在硬件中禁用它。但是,大多数芯片组在硬件上是通用的。大多数情况下,只有固件+驱动程序才有意义。
gertvdijk

Answers:


69

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

  1. 禁用Wifi(取消选中启用Wi-Fi)
  2. 转到网络连接(编辑连接...)
  3. 点击“添加”
  4. 选择“ Wi-Fi”,然后单击“创建”
  5. 输入连接名称,例如“ wifi-hotspot”
  6. 根据需要输入SSID
  7. 从下拉列表中选择设备MAC地址(wlan0)
  8. Wifi安全性选择“ 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/


7
很简单,但是没有回答,似乎可以回答这里提出的问题:在我看来,这不会导致使用单个无线网络接口共享无线到无线。
亚历克斯·考文垂

1
12. a)启用Wifi(选中“启用Wi-Fi”)
Jess Telford

2
非常好:D,步骤14->将笔记本电脑连接到局域网,并通过创建的热点在移动设备上使用它。超级棒极了:D
Satys '17

3
无法理解最后一点。13.我连接到一个名为“ Wifi”的wifi,我使用上面的路径“ hotspot”创建了另一个。现在该怎么办?如果我断开Wifi的连接,互联网来源将来自哪里?
ahmadalibaloch '18

3
@Purushoth的源代码(ubuntuhandbook.org/index.php/2014/09/…),不要忘记第一步:1. Disable WIFI and plug in an internet cable to your laptop so that your Ubuntu is connect to a wired internet and wireless is disabled.换句话说,这个答案需要通过以太网访问互联网,然后才能以无线访问方式共享出去。通过WiFi适配器点。它无法在单个wifi适配器上以无线方式接收Internet和广播Internet。而是接收有线信号并以无线方式广播。
加布里埃尔·斯台普斯

46

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

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

终端中运行以下命令:

lsmod | grep ath

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

所需工具

检查是否安装了以下所有软件包: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"
    }
    
  • 保存所有文件并关闭它们。

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

制作一个shell脚本

  • 在终端运行中mkdir -p bin- 如果您还没有bin目录,此命令将在您的home文件夹中创建目录。
  • 运行后gedit ~/bin/hotspotsetup.sh-这将hotspotsetup.sh在gedit中创建新文件。
  • 将以下脚本复制并粘贴到新创建的文件中:
#!/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

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

资料来源: 具有单个无线接口的Connectify for Linux


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

1
Windows和Connectify的免费版本肯定可以使用相同的wifi卡来接收和共享Internet连接,我大量使用了此功能,这是Windows唯一想念的功能。如果有人创建具有与Connectify相同功能的开源驱动程序,我相信这在Ubuntu中也是可行的。
2013年

1
@Nur 数量有限,但已由Connectify测试过或已由多个用户报告,这些设备可以与Connectify Hotspot完全兼容。因此,并非所有设备都可以在这种意义上运行
RaduRădeanu13年

1
我非常确定我的atheros卡是可以正常使用的,因为我已经使用connectify很久了,没有一个问题发生过。要尝试此设置,我希望它会起作用。
2013年

1
这是一个很好的答案,但我无法使其正常工作!我必须在中启用udhcpd /etc/default/udhcp.conf,但还是没有运气。它一直在给我提供帮助Sending discover...new0: CTRL-EVENT-SCAN-STARTED即使其他一切都进行得不错...当我尝试连接到网络时,它也永远无法正常工作!我已经编辑了有关udhcpd的分析器,但是能否请您说一下如何解决连接问题?
理查德(Richard)

13

让我向您介绍一个简化一切的出色工具:create_ap(由oblique提供
这是官方存储库: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芯片- 编辑:也使用某些Intel芯片,请参见下面的第二条评论),您只需必须像通常那样使用网络管理器连接到家庭路由器,然后执行如下命令行:

sudo create_ap <connected interface> <repeater interface> <essid repeated network> <WPA Key>

sudo create_ap wlp2s0 wlp2s0 Bathroom_WiFi mysecuresecretkey

而且...就是这样! create_ap 难以置信,如此简单!现在,您只需要使用android设备连接到重复的网络即可。您将在便携式计算机终端中看到在便携式计算机与客户端之间进行协商的握手: 在此处输入图片说明 并且您可以通过Internet享受愉快的洗手间会话...一切都通过一个界面和一个简单命令完成。该工具有很多的选择,更多信息,请访问斜GitHub的仓库(前面给出的链接),如果你会说西班牙语,你可以检查此论坛主题:create_ap:拉soluciónPERFECTA对transformar TU ordenador恩未repetidor普遍待办事项TERRENO


1
令人印象深刻的工具!
George Udosen

哇,行得通。我有Intel Corporation Wireless 3160,它可以工作。我已连接到wifi,并在同一适配器:D thx上创建了ap。
QkiZ

感谢您的反馈意见!我将修改提到的某些英特尔芯片组也可以充当通用wifi中继器的说法。
kcdtv

2
对于不同时支持AP和客户端的设备的重要说明,请在下载的存储库中编辑文件'create_ap',1.找到并注释“ CHANNEL = $ WIFI_IFACE_CHANNEL”行2.找到函数“ is_wifi_connected()”并对其中的所有内容(最后一行“ return 1”除外)进行注释,然后运行“ sudo make install”。这使得它的工作对我来说在GPD掌上2的Ubuntu 18.04(将是巨大的,如果你将这一在你的答案)
Sruli

1
在我的最后一条评论中忘记提及我提供的说明来自github.com/oblique/create_ap/issues/107
Sruli

5

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

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

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

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

如果您仍然有其他wifi棒,或者如果局域网或蓝牙(大多数笔记本电脑内置),则建议您尝试使用Wifi到Wifi。由于提供商数据计划等原因,3G / LTE共享有点不好。



哇,这似乎并不难。至少在FreeBSD上。但是我仍然认为,如果应该经常使用它和/或应该通过这两个连接路由许多设备,则最好使用两个物理网络接口(如果可用)。同样,使用ubuntu网络设置(gui)应该相对容易配置。不过,这是一个非常有趣的想法。在某些情况下肯定有用。我注意到答案中有些东西是令人无法理解的(有些是您所注意到的,是错误的)。我将对其进行编辑。
verpfeilt

一台设备上设置多个ap与设置ap相同,并且同时连接到另一个ap。
QkiZ

4

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

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

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

第一行应该是您的网络适配器名称。在大多数情况下,不应更改第二行,除非您不走运并且需要第三方司机。第三行不需要解释。第4行应为您的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创建单独的原始配置文件(第一个文件),并进行如下更改:

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


1
您用自己的话说:“ 您需要知道连接到Internet的网络适配器的名称。该名称必须与在上面配置的网络适配器不同,但是您指定了相同的名称:“ 即wlan0 ”。同样,在给定源中,在“ 概念”部分中也非常明确地指定:“ 您需要具有2个接口,一个接口访问网络(例如eth0),另一个接口提供访问点服务(例如wlan0) ”。
RaduRădeanu13年

我认为OP希望使用相同的适配器:“ 但是,当我浏览Internet WiFi Internet连接并且要创建无线热点时,WiFi Internet已断开连接 ”。而gertvdijk在开始赏金时就指定了这一点。
RaduRădeanu'13

@RaduRădeanu这样好吗?你能告诉我吗?谢谢
米奇

我认为以前的版本更好(但仅是一种意见)。
RaduRădeanu13年

1

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

lspci | Wireless

或者,您可以直接尝试该方法。这是有关如何执行此操作的教程的链接: -Linux连单无线接口的connectify


请在答案中包括基本步骤。当前,这只是一个仅限链接的答案而已。看起来不错的资料和说明,因此+1,但请改善您的答案。
gertvdijk

1

我发现创建连接体验的最佳方法是使用AP-HOTSPOT!
(WPA2 ..不是像ubuntu中的Linux那样默认的哭泣)

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

然后运行安装命令:

qmake

make

创建一个程序...将其拖到桌面上并完成:)欢呼

就两个适配器而言... Windows和免费的bsd可以做到...截至目前,我仍在设法弄清楚,因为直到昨天我才为自己准备了这种方案!我将向您报告... Linux也可以。.这不是可以与其他操作系统一起使用的适配器的硬件限制...


欢迎来到AskUbuntu。此后,请避免在邮件中使用所有大写字母。它可以被认为是冒犯性或侵略性的
路易·德·索萨

1
这是最简单的工作解决方案,用于设置通过电缆连接到互联网的设备的热点。
jmary

0

Purushoth的答案一样,此答案也需要2个WiFi适配器(例如:一个内部和1个外部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”) ,为“ Wi-Fi安全”选择“ WPA和WPA2个人”,并输入密码,然后单击“创建”。
    • 注意:有一个错误使您有时无法插入内部USB WIFI适配器,因此有时无法选择此内部WIFI适配器。如果发生这种情况,请在执行此步骤以制作WIFI HOTSPOT时简单地拔出外部WIFI适配器,然后在完成时/如以下所述将其重新插入。
  3. 编辑您刚创建的新wifi热点的配置文件:
    • cd /etc/NetworkManager/system-connections
    • ls
    • 在上面的GUI步骤中找到刚创建的热点文件;例如:“ wifi热点”,然后对其进行编辑:
    • sudo nano wifi-hotspot
    • 向下箭头,将“ mode = adhoc”或更改为“ mode = ap”的内容更改。保存并退出。
  4. 现在,在仍未拔下外部USB WiFi适配器的情况下,通过再次左键单击面板中的WiFi图标并转到“连接到隐藏的WiFi网络...”,激活您刚刚创建的wifi热点→再次选择内部wifi适配器“ Wi-Fi适配器”,然后为“连接”选择接入点名称(例如:“ wifi-hotspot”)。“网络名称”,“ Wi-Fi安全”和“密码”字段现在将自动填写和灰色。点击“连接”。WiFi接入点将在您的内部卡上激活。您可以将设备(例如手机)连接到它。
  5. 最后,在WiFi热点处于活动状态的情况下,插入辅助/ USB WiFi适配器,然后使用它连接到付费网络。支付订阅费用或任何费用,通过此适配器的Internet现在将自动广播到通过您刚刚配置的内部“访问点”适配器连接到您的设备。
  6. 做完了!

参考:这是我在其中找到/etc/NetworkManager/system-connections文件夹路径和另一种方法的方法(对我不起作用):https : //askubuntu.com/a/609199/327339


阅读问题。“单个适配器”
QkiZ

我并没有忽略那部分问题。但是,如果最upvoted答案(由@Purushoth)获取是最upvoted,也没有使用单个适配器(它需要在外部以太网连接喂堵互联网上的PC),那么我想它我可以回答需要通过以太网的Internet IN和通过单个无线适配器访问点的Internet OUT的问题。尤其是考虑到最受支持的答案(需要以太网和wifi)对我不起作用。
加布里埃尔·斯台普斯

我使用了github.com/oblique/create_ap,它可以在单个适配器上工作。检查它是否适合您。
QkiZ
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.