我正在尝试在我的 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 无法使用它们。我不知道为什么。
步骤如下:
- 关闭网络管理器服务,因为它会干扰虚拟接口
- 使用 ifconfig wlan0 down 关闭 wlan0
- 使用 iw 命令(类型 __ap)创建接入点接口,并为其分配不同的 mac 和 ip 地址
- 在此访问接口开启hostapd
- 使用 dnsmasq 分配此接口上的连接客户端、IP 地址,并将默认网关指定为要创建的站点接口的 IP
- 在接入接口上打开dnsmasq。现在客户端将能够连接到接入点并获取ip地址。
- 创建新接口(类型站)为其分配单独的 mac 地址,并通过分配 essid 和使用 dhclient 获取 ip 地址将其连接到网络。
- 如果有必要,通过 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
...