使用服务器作为 Wifi 范围扩展器

使用服务器作为 Wifi 范围扩展器

我刚刚搬到一个更大的公寓,我的路由器信号在它的边缘之前达到峰值,这是我刚刚安装的家庭服务器,一台带有 ubuntu 服务器的旧笔记本电脑,我用它来存储媒体和作为打印机服务器。

所以这个想法是让服务器也充当范围扩展器,问题是我找不到有关如何做到这一点的任何文档。

能做到吗?

答案1

我使用这篇文章中描述的脚本在我的 Ubuntu 服务器中创建热点:

http://www.webupd8.org/2013/06/how-to-set-up-wireless-hotspot-access.html

基本上,它可以帮助你创建热点。你需要在要使用的电脑上安装两个接口,一个连接到互联网,另一个用于热点。

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install ap-hotspot

安装完成后,运行:

sudo ap-hotspot configure

它会询问您几个问题(互联网接口、创建接入点的无线接口、密码),然后可以运行和停止热点:

sudo ap-hotspot start
sudo ap-hotspot stop

请注意,该脚本自动执行了创建热点的过程,可以通过手动安装和配置 dns-masq 和 hostapd 来完成,但结果是一样的。

答案2

创建_ap是创建任何接入点的绝佳工具。

我能够使用以下配置创建一个 wifi 扩展器:

CHANNEL=default
GATEWAY=192.168.2.1
WPA_VERSION=2
ETC_HOSTS=0
DHCP_DNS=gateway
NO_DNS=0
NO_DNSMASQ=0
HIDDEN=0
MAC_FILTER=0
MAC_FILTER_ACCEPT=/etc/hostapd/hostapd.accept
ISOLATE_CLIENTS=0
SHARE_METHOD=nat
IEEE80211N=0
IEEE80211AC=0
HT_CAPAB=[HT40+]
VHT_CAPAB=
DRIVER=nl80211
NO_VIRT=0
COUNTRY=
FREQ_BAND=2.4
NEW_MACADDR=
DAEMONIZE=0
NO_HAVEGED=0
WIFI_IFACE=wlan0
INTERNET_IFACE=wlan0
SSID=MyAccessPoint
PASSPHRASE=12345678
USE_PSK=0

此配置基本上创建了一个新的热点,其 SSID 为:MyAccessPoint,密码为:12345678,它将通过 ubuntu 服务器的 INTERNET_IFACE 连接到互联网

重要笔记:

  1. NO_VIRT=0WIFI_IFACE如果和INTERNET_IFACE相同,则为必定的。
  2. 可以使用这些参数IEEE80211N IEEE80211AC HT_CAPAB VHT_CAPAB来提高 ubuntu 服务器 wifi 的性能,但这需要你对 wifi 硬件有更多的了解
  3. 我使用SHARE_METHOD=nat因为它SHARE_METHOD=bridge给了我一个错误,但我想安装一些要求和/或更新内核可以解决这个问题。

答案3

以下说明假设笔记本电脑(服务器)按如下所示连接 - 请原谅我的 ASCII 艺术。具体来说,它与 LAN 有线连接,并且还具有无线接口。

                      ^             ^
                      |             |    SSID: This here be my WiFi
                      |             |     PSK: St@yTh3#ell0ut!
                      /             \ CHANNEL: 6
 -----------------   /               \   -----------------
|    Laptop   |   |wlan0           wlan0|   |  Router     |
|   (Server)   ---|                     |---              |
|              ---|                     |---              |
|             |   |eth0 --       -- eth0|   |             |
 -----------------        |     |        -----------------
                          |     | 
                     -----------------
                    |     Switch      |
                     -----------------

在这种情况下,您可以使用以下配置扩展路由器的 WiFi。以下步骤需要该配置hostapddnsmasq安装在笔记本电脑上:

cat <<EOF | ~/extendwifi.sh
#!/bin/bash
sudo apt install -y hostapd
sudo mv /etc/hostapd.conf{,.old}
wget -qO- https://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf | egrep -v '^$|^#' | sed -e 's/test/This here be my WiFi/;s/rts_threshold=-1/rts_threshold=2347/;s/fragm_threshold=-1/fragm_threshold=2346/' | sudo tee /etc/hostapd/hostapd.conf
echo -e "wpa=2\nwpa_passphrase=St@yTh3#ell0ut!\nwpa_key_mgmt=WPA-PSK WPA-EAP WPA-PSK-SHA256 WPA-EAP-SHA256" | sudo tee /etc/hostapd/hostapd.conf
EOF
chmod +x ~/extendwifi.sh
~/extendwifi.sh

执行完上述脚本后,您应该重新启动hostapd服务systemctl restart hostapd

如果您已WiFiAnalyzer (open-source)在 Android 手机上安装,那么您现在应该能够看到这个新接入点(检查 MAC 地址)。看到了吗?很好!如果没有,请仔细检查您的配置。值得注意的是频道;/etc/hostapd/hostapd.conf如果它们出现在同一个频道上,请务必更改它。

现在,由于此过程已将您的低端笔记本电脑变成了路由器,我们现在需要处理一些网络问题。为此,您肯定会需要dnsmasq,以下是您需要做的事情:

  • 安装 dnsmasq -sudo apt install -y dnsmasq
  • 启用 IP 转发(文件/etc/sysctl.conf
    • nano /etc/sysctl.conf
    • 取消注释net.ipv4.ip_forward=1
    • 保存文件并退出编辑器
    • sudo sysctl -p

现在我们需要为 dnsmasq 创建配置。假设我们将创建一个具有以下详细信息的新子网: - 子网 IP:10.11.12.0/24 - DHCP 范围:10.11.12.13 至 10.11.12.32 - 这样您就可以将 20 个设备连接到此 wifi 子网。 - 如果需要更多,请增加 - wlan0 IP:10.11.12.1/24 - 您需要以某种方式将此 IP 添加到接口 - 互联网上有很多关于如何完成此操作的教程 - 租用期:12 小时 - DNS 服务器:192.168.1.1 - 假设路由器的 IP 为 192.168.1.1,也是 DNS 服务器

将下面的几行复制并粘贴到终端上,然后按回车键:

cat <<EOF | sudo tee /etc/hostapd_dnsmasq.conf
bind_interfaces
interface=wlan0
dhcp-range=10.11.12.13,10.11.12.32,255.255.255.0,12h # increase if you need more
dhcp-option=option:router,10.11.12.1
dhcp-option=option:dns-server,192.168.1.1
EOF

现在我们需要创建一个服务文件来启动 dnsmasq 服务

将下面的几行复制并粘贴到终端上,然后按回车键:

cat <<EOF | sudo tee /etc/systemd/system/hostapd_dnsmasq.service
[Unit]
Description=DHCP and DNS caching server for wlan1.
After=network.target

[Service]
ExecStartPre=/sbin/iptables -t nat -A POSTROUTING ! -o wlan0 -j MASQUERADE
ExecStart=/usr/sbin/dnsmasq -k --conf-file=/etc/hostapd_dnsmasq.conf
ExecStopPost=/sbin/iptables -t nat -D POSTROUTING ! -o wlan0 -j MASQUERADE
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=300

[Install]
WantedBy=multi-user.target
EOF

现在所有部分都已准备就绪,让我们启动服务:

sudo systemctl restart hostapd_dnsmasq

restart即使服务停止,我也始终使用。这是我的最佳实践。

如果一切正常,那么您可以启用该服务,以便它在笔记本电脑重启时自动启动:

sudo systemctl enable hostapd_dnsmasq

享受!

NOTE:如果您的笔记本电脑没有 RJ45 端口,那么您唯一的选择就是使用多个 WiFi 适配器,并且新 WiFi AP 的 SSID 肯定不同。配置将类似;主要区别在于您不会扩展当前的 WiFi,而是创建一个新的 WiFi。

CAVEAT EMPTOR 我有一个类似的设置,我偶尔会在测试时使用。如果您的系统上出现任何损坏,您将独自对损坏负责,并且您可以保留所有部件。

相关内容