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

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

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

我找到了一款名为的软件hostapd,它可以让您创建热点,但它需要两个接口。一个连接到互联网,另一个用于创建接入点(教程在这里) 。我的问题是没有以太网连接。该wlan接口正在用于连接互联网。

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

更新

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

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

  iw phy phy0 interface add mySta type station
  iw phy phy0 interface add myAcc type __ap

2)给他们单独的 Mac ID

ifconfig myAcc hw ether A4:17:FE:6E:00:53
ifconfig myAcc 192.168.27.1 up

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

但是mySta接口现在无法连接到互联网。它能够获取Essid,但无法获取IP地址。

命令 dhclient mySta 没有显示任何消息,并且一段时间后出现错误:

ls: cannot access /var/run/netconfig//mySta/: No such file or directory

有人能知道如何获取 IP 地址吗?

答案1

对于其他遇到此问题的人来说,问题在于 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 伪装

答案2

设置虚拟网络

1 打开控制台

su -

2 查看您是否有假司机

modprobe -l | grep /net/dummy.ko

(!)如果您没有虚拟驱动程序,请转到“创建内核模块“。

3 加载虚拟驱动程序

modprobe dummy

(!)如果失败,请不要将其添加到启动中。

4 测试 dummy0

ifconfig dummy0 10.246.75.1 netmask 255.255.255.0 broadcast 10.246.75.255 up

ifconfig

它会给你类似的输出。

dummy0  Link encap:Ethernet  HWaddr 00:2D:32:3E:39:3B
        inet addr:10.246.75.1  Bcast:10.246.75.255  Mask:255.255.255.0
        ...

5 将虚拟驱动程序添加到启动

编辑内核系统文件。

nano /etc/sysconfig/kernel

并添加“假的“到 MODULES_LOADED_ON_BOOT。

MODULES_LOADED_ON_BOOT = "..."

例如 MODULES_LOADED_ON_BOOT = “vmcp dummy”。

6 配置 dummy0 的网络设置

创建 ifcfg-dummy0 文件。

nano /etc/sysconfig/network/ifcfg-dummy0

添加至 ifcfg-dummy0 文件:

# Configuration for dummy0
BOOTPROTO=static

# This line ensures that the interface will be brought up during boot.
STARTMODE=onboot

# dummy0 - This is the main IP address that will be used for most outbound connections.
# The address, netmask and gateway are all necessary. The metric is not necessary but
# ensures you always talk to the same gateway if you have multiple public IPs from
# different subnets.
IPADDR=10.246.75.1
NETMASK=255.255.255.0
BROADCAST=10.246.75.255
GATEWAY=10.246.75.1



创建内核模块

1 首先安装必要的东西

打开 YaST。

导航至Software-> Software Management

打钩:

Development 

[X] Base Development
[X] Linux Kernel Development
[X] C/C++ Development

2 返回控制台并导航到内核源代码

cd /usr/src/linux

3 导入当前内核配置

zcat /proc/config.gz > .config

4 打开内核菜单配置

make menuconfig

5 添加虚拟网络驱动程序支持

导航至Device Drivers->Network device support

* Network core driver support
    M Dummy net driver support

(!)如果“网络核心驱动程序支持”旁边有一个星号,则可以跳过步骤 7 和 9。

6 编译内核

make -j(n+1)

其中 (n+1) = CPU 核心数加上用于加速编译的一个核心数。对于四核,请使用 make -j5。

7 安装新内核

make install

8 安装模块

make modules_install

9 加载新内核

reboot



定义VIPA(有关加载模块和ifcfg-dummy0的部分):http://wiki.linuxvm.org/wiki/Defining_a_VIPA
配置静态 IP: https://www.linode.com/wiki/index.php/Configure_Static_IPs
openSUSE 12.3 和从 kernel.org 安装新 Linux 内核版本:http://forums.opensuse.org/blogs/jdmcdaniel3/opensuse-installing-new-linux-kernel-versions-134/
OpenSUSE 11.2 - 如何为新手编译内核:http://linuxtweaking.blogspot.dk/2010/04/opensuse-112-how-to-compile-kernel-for.html

答案3

创建虚拟接口

创建 ifcfg-wlan0:0 文件

nano /etc/sysconfig/network/ifcfg-wlan0:0

添加至 ifcfg-wlan0:0 文件:

DEVICE=wlan0:0

# Configuration for wlan0:0
ONBOOT=yes

# This line ensures that the interface will be brought up during boot.
BOOTPROTO=static

# wlan0:0 - This is the main IP address that will be used for most outbound connections.
# The address, netmask and gateway are all necessary. The metric is not necessary but
# ensures you always talk to the same gateway if you have multiple public IPs from
# different subnets.
IPADDR=10.246.75.1
NETMASK=255.255.255.0
BROADCAST=10.246.75.255
GATEWAY=10.246.75.1

激活接口的命令

ifup wlan0:0

笔记:关闭主接口也会关闭其所有别名。别名可以独立于其他接口关闭。

检查接口是否工作

ifconfig

它会给你类似的输出。

wlan0:0  Link encap:Ethernet  HWaddr 00:2D:32:3E:39:3B
         inet addr:10.246.75.1  Bcast:10.246.75.255  Mask:255.255.255.0
         ...

http://forums.opensuse.org/english/get-technical-help-here/network-internet/461132-os-11-4-network-manager-default-connection-can-handle-virtual-interfaces.html#post2350426

相关内容