rtl8188etv无线网卡+hostap+udhcp+iptables实现AP热点

时间:2024-03-14 07:21:23

1.移植hostap:

  1. 交叉编译ssl,编译时保证已经安装了ssl和 libl
  2. 使用git clonegit://w1.fi/srv/git/hostap.git下载源码,不能从官网直接下载,官网源码不包括nl80211驱动驱动编译时会出错
  3. 修改配置文件
        cp defconfig .config
        vi  .config找到这一行:#CONFIG_DRIVER_NL80211=y,去掉注释,注释掉其他的CONFIG_DRIVER

    4.   修改Makefile文件

            CFLAGS+=-I/home/ubuntu/BMIHI3521A/driver/wifi/ssl/install/include/

            CFLAGS+=-I/home/ubuntu/BMIHI3521A/driver/wifi/libnl/install/

            include/libnl3/

            CFLAGS+=-I/home/ubuntu/BMIHI3521A/driver/wifi/libnl/install/

            include/

            LIBS +=-L/home/ubuntu/BMI-HI3521A/driver/wifi/libnl/install/lib/

            LIBS +=-L/home/ubuntu/BMI-HI3521A/driver/wifi/ssl/install/lib/

     5. 编译

            当编译过程出现找不到lnl时,在.config文件中添加CONFIG_LIBNL32=y

     6.   拷贝

            拷贝hostapd目录下的hostpad和hostapd_cli到开发板

2.移植udhcp:

    下载udhcp源码,我使用的是udhcp-0.9.8.tar.gz,解压后修改下Makefile文件:

        1.19行添加CROSS_COMPILE=arm-linux-  

        2.注释12行的COMBINED_BINARY=1,否则不生成udhcpc命令。

        3.编译,然后把udhcpc和udhcpd拷贝到开发板上

3.移植Iptables:

    1.交叉编译libnfnetlink,将编译得到的libnfnetlink.so文件替换/usr/local/lib下相关库(可直接指定库寻找路径,但暂未找到如何修改)

编译方法与编译iptables类似

    2. 交叉编译iptables

    使用命令配置:

       ./configure --host=arm-hisiv400-linuxld-linux.so.3  libc.so.6     libm.so.6 CC=arm-hisiv400-linux-gcc--prefix=/home/ubuntu/BMI-HI3521A/driver/iptable/install --enable-static--disable-shared--with-ksource=/home/ubuntu/BMI-HI3521A/Hi3521A_SDK_V1.0.5.0/osdrv/opensource/kernel/linux-3.10.y

    编译 make

    安装 make install

    3. 将编译得到的sbin目录的下的可执行文件拷贝到目标板/usr/sbin目录下,并将依赖库拷贝到目标板/lib目录下,库文件:ld-linux.so.3  libc.so.6  libm.so.6,

    该编译模式是使用静态链接故不需要拷贝其他共享库,如果动态编译则需要拷贝相关共享库

4:配置内核:

按如下方式配置:

rtl8188etv无线网卡+hostap+udhcp+iptables实现AP热点

5.使用wifi:

1.insmod网卡驱动

2.打开网卡 ifconfig wlan0 up

3.开启hostapd,hostapd -B /etc/hostapd.conf,我的hostapd.conf如下:

    interface=wlan0
    #interface=wlan0
    driver=nl80211
    #driver=bmi123
    ssid=YOUR_SSID        无线名称
    channel=9
    hw_mode=g
    macaddr_acl=0
    ignore_broadcast_ssid=0
    auth_algs=1
    wpa=3
    wpa_passphrase=12345678    无线密码
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP
    rsn_pairwise=CCMP

4.开启udhchpd,其中udhcpd需要udhcpd.conf,我的udhcpd.conf如下:

    start 192.168.0.20 #default: 192.168.0.20
    end 192.168.0.254 #default: 192.168.0.25
    interface wlan0 #default: eth0
    opt dns 202.120.2.101
    option subnet 255.255.255.0
    opt router 192.168.0.1
    option domain local

    option lease 864000 # 10 days of seconds

    可能会提示没有一个叫做udhcpd.release的租赁文件,这个只要在相应的文件夹下创建即可。执行下面两条命令:

    #mkdir -p /var/lib/misc/

    #touch /var/lib/misc/udhcpd.leases

5.设置iptables:

    # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

    // 将局域网内地址通过eth0接口伪装后转发出去

    # iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISH -j ACCEPT 

    //对于已经建立连接的包以及该连接相关的包都允许通过!

    # iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT 

    // 配置数据包转发时候的接口 

    echo "1" >/proc/sys/net/ipv4/ip_forward 打开系统数据转发   

注意:连不上外网时也许是没有配置网关,使用如下命令配置网关:

    route add default gw  192.168.0.1 

参考链接:

     https://blog.csdn.net/u010944778/article/details/46969437

    https://blog.csdn.net/sanshiguan/article/details/49851775