OpenWRT中使用无线网卡做中继器与AP热点

中继器与AP的实现

这里我们假定中继器完成下面这样的一个功能:

Wired Network —> Wireless Network —> 上级无线路由器

即从外部插入一个网线,通过imx6UL上面的无线网卡将数据转发到上级的路由器上面, 当然也可以完成下面这样的传送:

Wireless Network(AP mode) –> Wireless Network(Client) –> 上级无线路由器

即设立一个AP热点,相当于一个路由器,然后再将这个AP的数据通过另外一个无线网卡转发到上一级的路由器或者WLAN上面。

用图片来表示如下:


要完成这些功能, 我们需要:

  • 1. 驱动无线网卡
  • 2. 建立AP热点
  • 3. 其中一个wired或者wireless介入到上一级路由器或者WLAN中
  • 4. 使用IPTables来对数据包进行转发

对于1,我们在前面已经完成,对于Wired Network访问WLAN我们也已经在前面完成。所以这篇我们将完成2与3, 以及4。

AP热点的建立

建立AP热点,我们使用经典的Hostapd工具来完成, 这个在OpenWRT中已经存在, 直接选上,然后build即可。

Hostapd的使用

然后我们可以查看对应的使用帮助

因此可以确定需要一个config文件, 这个configuration file我们如下填写:

即我们创建一个SSID为TonyOpenWRT的热点, wpa_passphrase为密码, 后面的为加密方式, 然后还选择了channel, 这个channel可以通过前面的iw list来查看, 例如其中一个为:

后面的【】中的就是channel了。

建立AP

然后我们使用后台运行的方式启动hostapd,并且打开debug信息,便于我们查看:

其中里面用到了加密时候需要的随机数,这个是使用内核中的random节点来生成的,所以我们在内核这两个还需要添加random驱动。

验证AP

在验证之前,我们需要给我们的这个网卡自己一个IP地址, 因此直接:

然后我们打开手机查看是否可以看到我们的热点:


然后我们使用手动配置IP方式连接热点


连接完成后, 我们可以看到已经连接的状态:


然后在手机上面可以Ping一把确定是否连通:


然后在iMX6UL上面也来ping一把这个手机:

至此,基本的连接就好了, 如果想要自动获取IP地址,那么我们还需要配置DHCPD。

wpa_supplicant的配置

前面我们使用其中一个网卡,配置好了AP, 接下来我们使用另外一个Wireless作为上一级router的接入设备。 这个可以参考我以前写的文章: Yocto i.MX6 (TQIMX6) (03) : wifi网卡的相关工具wpa_supplicant与dhcp
但是wpa_supplicant的版本升级后, 和hostapd的使用基本一致起来, 因此以前的使用方法稍微有些不同了。

配置

创建一个配置文件,写明需要接入的SSID,密码等信息:

其中XXX是路由器的热点名字, psk填写Password, 加密方式TKIP需要根据实际情况填写,不明白可以看我以前的文章,或者直接man。

运行

先创建一个runtime目录:

然后直接在后台运行:

验证

使用wpa_cli看查看连接的状态

status为COMPLETED那么表示连接上了, 然后我们获取IP地址, 并尝试ping国内的某个网站:

至此, 我们就完成了基本的配置工作。

Leave a Reply

Your email address will not be published. Required fields are marked *