在 Linux 中的单个接口上创建 WiFi 接入点

adi*_*174 15 linux dhcp wireless-access-point hotspot hostapd

我正在尝试在我的 Linux 笔记本电脑上创建 WiFi 热点或接入点。我正在使用 Opensuse Kde 12.3。

我发现了一个软件hostapd,它可以让你创建热点,但它需要两个界面。一个连接到 Internet,另一个连接到您要在其上创建接入点的(教程在这里)。我的问题是我没有以太网连接。该wlan接口用于连接到互联网。

有没有办法在连接到 Internet 的同一接口上创建热点(就像 Windows 上的软件 connectify)?我正在考虑创建一个虚拟接口(就像airmon-ng创建用于监控 wifi 的接口一样)并将其用作第二个接口。这可能吗?

更新

这是我到目前为止能够做的事情:

1)创建2个接口(一个作为站,另一个作为接入点)

  iw phy phy0 interface add mySta type station
  iw phy phy0 interface add myAcc type __ap
Run Code Online (Sandbox Code Playgroud)

2) 给他们单独的 Mac ID

ifconfig myAcc hw ether A4:17:FE:6E:00:53
ifconfig myAcc 192.168.27.1 up
Run Code Online (Sandbox Code Playgroud)

3)在myAcc界面启动hostapd

4) 启动 dnsmasq 为连接设备提供 IP 地址

所有这些都有效。设备能够连接到该网络并获取 IP 地址。下一步是提供ip伪装

iptables --table nat --append POSTROUTING --out-interface mySta -j MASQUERADE
iptables --append FORWARD --in-interface myAcc -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

但是 mySta 界面现在无法连接到互联网。可以获取Essid,但是不能获取ip地址。

命令 dhclient mySta 不显示任何消息,一段时间后给出错误:

ls: cannot access /var/run/netconfig//mySta/: No such file or directory
Run Code Online (Sandbox Code Playgroud)

有人可以弄清楚如何获取IP地址吗?

adi*_*174 9

对于面临此问题的其他任何人,问题出在 mac 地址上。我启动了接入点接口,给了它一个 mac 地址。然后运行hostapd后,添加站接口,给它一个不同的mac地址并连接到网络,并通过dnsmasq将站的ip地址作为客户端的默认网关。

现在一切正常。

正如 Diblo Dk 所指出的,您可以使用虚拟和虚拟接口,但 hostapd 无法使用它们。我不知道为什么。

以下是步骤:

  1. 关闭网络管理器服务,因为它会干扰虚拟接口
  2. 使用 ifconfig wlan0 down 关闭 wlan0
  3. 使用 iw 命令(类型 __ap)创建接入点接口,为其分配不同的 mac 和 ip 地址
  4. 在这个访问界面开启hostapd
  5. 使用dnsmasq在该接口分配连接的客户端,ip地址,并给默认网关作为要创建的站接口的ip
  6. 在访问界面开启dnsmasq。现在客户端将能够连接到接入点并获取 IP 地址。
  7. 创建新接口(类型站)为其分配单独的mac地址并通过分配essid并使用dhclient获取ip地址将其连接到网络。
  8. 如有必要,通过 iptables 命令执行 ip 伪装