在 Linux 中使用 Wifi 适配器设置接入点

在 Linux 中使用 Wifi 适配器设置接入点

我的路由器坏了,所以我尝试临时设置一些东西来通过自组织网络将互联网连接从我的主电脑(互联网来自直接连接到以太网卡的调制解调器)共享到其他设备,为此我有一个使用 zd1211rw 驱动程序的 wifi 适配器(我也有 alfa rtl8187,但该适配器在 ubuntu 12.04 上根本不起作用)。

我遇到的问题是我无法连接到我创建的 wifi AP,它只是保持“获取网络地址”状态并且无法完成连接。

我的主计算机操作系统是 Ubuntu 12.04,这就是我正在做的事情。首先,我将 wifi 适配器置于监控模式:

airmon-ng start wlan2

这将创建一个 mon0 接口,然后我使用:

airbase-ng -e MyNetName -c 11 -v mon0

从这里我已经可以使用我的笔记本电脑(装有 Windows)查看 MyNetName 网络,但如果我尝试连接,它会停留在“获取网络地址”状态。我遵循的教程继续使用以下命令:

ifconfig at0 up
ifconfig at0 192.168.1.254 netmask 255.255.255.0
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.254

iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo > '/var/lib/dhcp/dhcpd.leases'

然后我启动 dhcp 服务器

dhcpd -d -f -cf /etc/dhcp/dhcpd.conf at0

dhcpd.conf 文件如下所示:

ddns-update-style interim; <- also tried ad-hoc instead of interim
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {
  option subnet-mask 255.255.255.0;
  option broadcast-address 198.168.1.255;
  option routers 192.168.1.254;
  option domain-name-servers 8.8.8.8;
  range 192.168.1.1 192.168.1.253;
}

输出如下所示:

Internet Systems Consortium DHCP Server 4.1-ESV-R4
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file
Wrote 0 leases to leases file.
Listening on LPF/at0/00:02:72:69:28:c8/192.168.2.128/25
Sending on   LPF/at0/00:02:72:69:28:c8/192.168.2.128/25
Sending on   Socket/fallback/fallback-net
Can't create PID file /var/run/dhcpd.pid: Permission denied.

最后一条命令:

echo "1" > /proc/sys/net/ipv4/ip_forward

airbase-ng 命令输出如下所示:

11:34:03  Created tap interface at0
11:34:03  Trying to set MTU on at0 to 1500
11:34:03  Trying to set MTU on mon0 to 1800
11:34:03  Access Point with BSSID 00:02:72:69:28:C8 started.
11:34:10  Client 70:F3:95:B3:27:76 associated (unencrypted) to ESSID: "MyNetName"
11:34:13  Client 70:F3:95:B3:27:76 reassociated (unencrypted) to ESSID: "MyNetName"
11:34:17  Client 70:F3:95:B3:27:76 reassociated (unencrypted) to ESSID: "MyNetName"
11:34:21  Client 70:F3:95:B3:27:76 reassociated (unencrypted) to ESSID: "MyNetName"

所以我的问题是我无法在尝试连接的笔记本电脑上获取内部 IP,Windows wifi 管理器只是停留在“获取网络地址”,airbase 的反应是在笔记本电脑尝试连接时显示更多重新关联的消息。另一个问题是在iptables --flush主 PC 上运行互联网后停止工作,但我想在能够完全连接到 MyNetName 后处理这个问题。

有人知道我做错了什么吗?

答案1

我从未见过使用 airbase-ng 的这种设置……也许你可以尝试一下hostapd解决不断重新关联的问题。

此外,这条路线没有多大意义:

route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.254

尝试不用它。

最后,您可以尝试安装 tcpdump 并在客户端尝试获取 dhcp 时监控 at0 上的网络流量。也许 dhcp 请求甚至没有通过。

答案2

您可以尝试使用 isc-dhcp-server。我目前的设置与您的非常相似,唯一的区别就在于此。

安装它 -> 更改/etc/default/isc-dhcp-server为在 at0 接口上提供服务 -> 使用以下方式启动它

服务 isc-dhcp-服务器启动

这仍将使用您的 dhcpd.conf 文件。

答案3

使用此命令:
sudo dhcpd -d -f -cf /etc/dhcp/dhcpd.conf at0
然后:
sudo /etc/init.d/isc-dhcp-server start

相关内容