精华内容
下载资源
问答
  • Linux中USB无线网卡实现AP模式(hostapd交叉编译环境下)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

    用手机APP来实现无线监控已经成功了,接下来准备讲解andriod相关的知识和客户端APP源程序


    以手机上WIFI热点为例,有4种常用的"认证/加密"
    a. open
    b. WEP
    c. WPA(TKIP)
    d. WPA2(AES)


    需要用到的源代码有:

    hostapd-2.0.tar.gz,下载地址:点击这里!

    openssl-1.0.1d.tar.gz,下载地址:点击这里!

    dhcp-4.2.5-P1.tar.gz,下载地址:点击这里!


    首先交叉编译dhcp-4.2.5-P1.tar.gz

    tar xzf dhcp-4.2.5-P1.tar.gz
    cd dhcp-4.2.5-P1
    /configure --host=arm-linux ac_cv_file__dev_random=yes

    cd bind
    修改Makefile:
    ./configure BUILD_CC=gcc ac_cv_file__dev_random=yes --host=arm-linux --disable-kqueue   /* 添加到./configure这行 */

    tar xzf bind.tar.gz
    cd bind-9.8.4-P2
    修改 lib/export/dns/Makefile.in 
    gen: ${srcdir}/gen.c
            ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o $@ ${srcdir}/gen.c ${LIBS}
    改为
    gen: ${srcdir}/gen.c
            ${BUILD_CC} ${ALL_CFLAGS} ${LDFLAGS} -o $@ ${srcdir}/gen.c ${LIBS}

    cd ../..
    make DESTDIR=$PWD/tmp install

    把生成tmp/usr/local/sbin目录下的dhcpd命令复制到根文件系统的bin目录,把tmp/usr/local/etc目录下的dhcpd.conf.example复制到根文件系统/etc目录下面,以后用得到(自动获取IP地址)


    交叉编译openssl-1.0.1d.tar.gz

    tar xzf openssl-1.0.1d.tar.gz
    cd openssl-1.0.1d/
    ./config shared no-asm --prefix=$PWD/tmp
    修改Makefile:
    CC= arm-linux-gcc
    AR= arm-linux-ar $(ARFLAGS) r
    RANLIB= arm-linux-ranlib
    MAKEDEPPROG= arm-linux-gcc

    make
    make install

    把编译出来的头文件应该放入:
    /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include

    把编译出来的库文件应该放入:
    /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib

    把编译出来的库文件应该放入根文件系统文件系统的lib目录:*so*


    交叉编译hostapd-2.0.tar.gz

    tar xzf hostapd-2.0.tar.gz
    cd hostapd-2.0/
    cd hostapd/
    cp defconfig .config
    修改.config, 加一行: CONFIG_LIBNL32=y
    修改Makefile:

    CC=arm-linux-gcc      /* 去掉前面的宏定义 */
    make
    make DESTDIR=$PWD/tmp install

    把生成的hostapd  hostapd_cli复制到根文件系统的bin目录


    启动开发板:vi /etc/hostapd.conf   内容如下:

    ctrl_interface=/var/run/hostapd           
    #change wlan0 to your wireless device
    interface=wlan0
    driver=nl80211
    ssid=Linux                /* 名字 */
    channel=1

    # 认证/加密方式
    macaddr_acl=0
    auth_algs=1
    ignore_broadcast_ssid=0
    wpa=3
    wpa_passphrase=linuxdrv     /* 密码*/
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP
    rsn_pairwise=CCMP


    hostapd: hostapd -B /etc/hostapd.conf        /* 启动AP模式,手机连接时候一直停在获取IP,需要配置dhcp */


    修改配置文件/etc/dhcpd.conf,添加:
    subnet 172.16.1.0 netmask 255.255.255.0 {                       
      range 172.16.1.10 172.16.1.100;                                                      
      option routers 172.16.1.1;                       /* 开发板IP地址 */                               
    }    


    创建空文件/var/db/dhcpd.leases:
    mkdit    /var/db/

    touch dhcpd.leases

    dhcpd -cf /etc/dhcpd.conf wlan0              /* 启动自动获取IP */


    在/etc/init.d/rcS目录下添加下面几条命令:/* 下面的命令折腾了很久才配置出来的 */

    ifconfig wlan0 up                        

    ifconfig wlan0 172.16.1.1  netmask 255.255.255.0
    route add default gw 172.16.1.1                /* 这两条路由命令需要添加 */
    route add default gw 172.16.148.111
    echo 1 > /proc/sys/net/ipv4/ip_forward         /* 打开IP转发 */
    dhcpd -cf /etc/dhcpd.conf wlan0  &              
    hostapd -B /etc/hostapd.conf



    下面是转载的:

    1、从官网上下载hostapd,编译之前先在hostapd目录下执行cp defconfig .config,配置文件默认只支持nl80211的驱动(CONFIG_DRIVER_NL80211=y)。

    make

    make install

    3、新建/etc/hostapd/hostapd.conf 

    interface=wlan0
    #interface=wlan0
    driver=nl80211
    #driver=madwifi
    ssid=YOUR_SSID
    channel=9
    hw_mode=g
    macaddr_acl=0
    ignore_broadcast_ssid=0
    auth_algs=1
    wpa=3
    wpa_passphrase=YOUR_PASSPHRASE
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP
    rsn_pairwise=CCMP

    最后执行:hostapd -d /etc/hostapd/hostapd.conf 

    hostapd.conf文件(也可以从这里获得),这个文件很大,里面的配置项相当的多,从简单到高级。但一般地我们能够使用到的功能只是其中很少的一部分,下面介绍一下我认为最常用的一些配置选项。首先介绍一些基本的配置项:

    复制代码
    ssid=testhw_mode=gchannel=10interface=wlan0bridge=br0driver=nl80211ignore_broadcast_ssid=0macaddr_acl=0accept_mac_file=/etc/hostapd.acceptdeny_mac_file=/etc/hostapd.deny
    复制代码

    上面列出的配置基本上是必须的,其中:

    • ssid:别人所看到的我们这个无线接入点的名称;
    • hw_mode:指定802.11协议,包括 a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g;
    • channel:设定无线频道;
    • interface:接入点设备名称,注意不要包含ap后缀,即如果该设备称为wlan0ap,填写wlan0即可;
    • bridge:指定所处网桥,对于一个同时接入公网、提供内部网和无线接入的路由器来说,设定网桥很有必要;
    • driver:设定无线驱动,我这里是nl80211;
    • macaddr_acl:可选,指定MAC地址过滤规则,0表示除非在禁止列表否则允许,1表示除非在允许列表否则禁止,2表示使用外部RADIUS服务器;
    • accept_mac_file:指定允许MAC列表文件所在;
    • deny_mac_file:指定禁止MAC列表文件所在;
    下面介绍关于认证方式的配置:
    auth_algs=1

    其中auth_algs指定采用哪种认证算法,采用位域(bit fields)方式来制定,其中第一位表示开放系统认证(Open System Authentication, OSA),第二位表示共享密钥认证(Shared Key Authentication, SKA)。我这里设置alth_algs的值为1,表示只采用OSA;如果为3则两种认证方式都支持。不过很奇怪的是,在我工作中如果配置了3,不管采用WEP/WPA/WP2加密的方式都从没连接成功过,配置为2也是如此。所以在我的配置当中,如果采用认证,则设置auth_algs为1;否则把这行代码注释掉(在前面加#)。

    由于RADIUS认证需要提供外部RADIUS服务器,我们没有这个功能,因此我只研究了WEP、WPA和WPA2这三种加密方式。

    复制代码
    #wep_default_key=0#wep_key0=1234567890#wep_key1="vwxyz"#wep_key2=0102030405060708090a0b0c0d#wep_key3=".2.4.6.8.0.23"#wep_key_len_broadcast=13#wep_key_len_unicast=13#wep_rekey_period=300
    复制代码

    如果要启用WEP加密,只需配置wep_default_key和其中一个wep_keyx,其中x的值只能在0~3之间,wep_default_key的值必须启用了。注意wep_keyx的值不是任意的,只能是5、13或16个字符(用双引号括住),或者是10、26或32个16进制数字。由于WEP加密算法已经被破解了,所以通常不启用它,全部注释掉。

    wpa=2wpa_passphrase=12345678wpa_key_mgmt=WPA-PSK#wpa_pairwise=TKIP CCMPrsn_pairwise=TKIP CCMP

    现在推荐的加密方式是WPA/WPA2,由于时间紧迫,我没有怎么去了解过这两者的差别。不过配置是很简单的:

    • wpa:指定WPA类型,这是一个位域值(bit fields),第一位表示启用WPA,第二位表示启用WPA2。在我的配置中,无论设置成1、2或3,都可以正常连接;
    • wpa_passphrase:WPA/WPA2加密需要指定密钥,这个选项就是配置WPA/WPA2的密钥。注意wpa_passphrase要求8~63个字符。另外还可以通过配置wpa_psk来制定密钥,不过要设置一个256位的16进制密钥,不适合我们的需求;
    • wpa_pairwise/rsn_pairwise:如果启用了WPA,需要指定wpa_pairwise;如果启用了WPA2,需要指定rsn_pairwise,或者采用wpa_pairwise的设定。都可以设定成TKIP、CCMP或者两者都有,具体含义我也没仔细弄清楚。一篇比较老的文章说TKIP不兼容Windows Mobile,但我的Windows Mobile 6.5在这两种算法下都没有遇到任何问题。

    经过这样一些配置,启动hostapd之后应该就可以按照自己的需求正常使用无线接入点功能了:

    /usr/bin/hostapd -f /etc/hostapd.conf

    4、安装dhcpd

    apt-get install dhcp3-server

    echo "1" > /proc/sys/net/ipv4/ip_forwardhostapd -B /etc/hostapd/hostapd.conf/etc/dhcp/dhcpd.conf:subnet 192.168.0.0 netmask 255.255.255.0{ range 192.168.0.2 192.168.0.10; option routers 192.168.0.1;}wlan0配置地址:ifconfig wlan0 192.168.0.1 netmask 255.255.255.0开启dhcp:dhcpd wlan0 -pf /var/run/dhcp-server/dhcpd.pid

    现在无线网卡就可以当成ap了。


    5、把无线网卡的ap继续扩展为连接到外网

    网上有很多资料,一般有2种方法:一种是bridge(桥接),另一种是nat方式,这里只介绍nat的方式。

    经过前面4个步骤,无线网卡已经可以自动分配IP,现在只需要把无线网卡的数据都经过eth0(有线网络)发到外网去,这就需要IP转发了。

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

    还需要修改/etc/dhcp/dhcpd.conf,添加dns:subnet 192.168.0.0 netmask 255.255.255.0{ range 192.168.0.2 192.168.0.10;
     option domain-name-servers 221.5.88.88; option routers 192.168.0.1;}

    (Linux系统缺省并没有打开IP转发功能,要确认IP转发功能的状态,可以查看/proc文件系统,使用下面命令: cat /proc/sys/net/ipv4/ip_forward
    如果上述文件中的值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开。
    要想打开IP转发功能,可以直接修改上述文件: echo 1 > /proc/sys/net/ipv4/ip_forward
    把文件的内容由0修改为1。禁用IP转发则把1改为0。
    上面的命令并没有保存对IP转发配置的更改,下次系统启动时仍会使用原来的值,要想永久修改IP转发,需要修改/etc/sysctl.conf文件,修 改下面一行的值: net.ipv4.ip_forward = 1 修改后可以重启系统来使修改生效,也可以执行下面的命令来使修改生效: sysctl -p /etc/sysctl.conf 进行了上面的配置后,IP转发功能就永久使能了。)


    6、嵌入式开发板上设置内核支持iptabel的设置如下:

    内核需要对iptables的支持并加上nat功能

    Networking support --->

                  Networking options --->

                       Network packet filtering framework (Netfilter)

    │ │    --- Network packet filtering framework (Netfilter)               │ │ 

      │ │    [*]   Network packet filtering debugging                         │ │ 

      │ │    [*]   Advanced netfilter configuration                           │ │ 

      │ │          Core Netfilter Configuration  --->                         │ │ 

      │ │    < >   IP virtual server support  --->                            │ │ 

      │ │          IP: Netfilter Configuration  --->

     

    Core Netfilter Configuration里面的配置如下:

    <*> Netfilter connection tracking support

    -*- Netfilter Xtables support (required for ip_tables)

    IP: Netfilter Configuration里面的配置如下:

    [*]   proc/sysctl compatibility with old connection tracking

    <*> IP tables support (required for filtering/masq/NAT)

       <*>   Packet filtering           

       <*>     REJECT target support      

       < >   LOG target support  

       < >   ULOG target support     

      <*>   Full NAT      

      <*>     MASQUERADE target support 

      <*>     NETMAP target support    

      <*>     REDIRECT target support

      <*>     Basic SNMP-ALG support



               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • hostapd: hostapd -B /etc/hostapd.conf /* 启动AP模式,手机连接时候一直停在获取IP,需要配置dhcp */ 修改配置文件/etc/dhcpd.conf,添加: subnet 172.16.1.0 netmask 255.255.255.0 {  range ...

    用手机APP来实现无线监控已经成功了,接下来准备讲解andriod相关的知识和客户端APP源程序


    以手机上WIFI热点为例,有4种常用的"认证/加密"
    a. open
    b. WEP
    c. WPA(TKIP)
    d. WPA2(AES)


    需要用到的源代码有:

    hostapd-2.0.tar.gz,下载地址:点击这里!

    openssl-1.0.1d.tar.gz,下载地址:点击这里!

    dhcp-4.2.5-P1.tar.gz,下载地址:点击这里!


    首先交叉编译dhcp-4.2.5-P1.tar.gz

    tar xzf dhcp-4.2.5-P1.tar.gz
    cd dhcp-4.2.5-P1
    /configure --host=arm-linux ac_cv_file__dev_random=yes

    cd bind
    修改Makefile:
    ./configure BUILD_CC=gcc ac_cv_file__dev_random=yes --host=arm-linux --disable-kqueue   /* 添加到./configure这行 */

    tar xzf bind.tar.gz
    cd bind-9.8.4-P2
    修改 lib/export/dns/Makefile.in 
    gen: ${srcdir}/gen.c
            ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o $@ ${srcdir}/gen.c ${LIBS}
    改为
    gen: ${srcdir}/gen.c
            ${BUILD_CC} ${ALL_CFLAGS} ${LDFLAGS} -o $@ ${srcdir}/gen.c ${LIBS}

    cd ../..
    make DESTDIR=$PWD/tmp install

    把生成tmp/usr/local/sbin目录下的dhcpd命令复制到根文件系统的bin目录,把tmp/usr/local/etc目录下的dhcpd.conf.example复制到根文件系统/etc目录下面,以后用得到(自动获取IP地址)


    交叉编译openssl-1.0.1d.tar.gz

    tar xzf openssl-1.0.1d.tar.gz
    cd openssl-1.0.1d/
    ./config shared no-asm --prefix=$PWD/tmp
    修改Makefile:
    CC= arm-linux-gcc
    AR= arm-linux-ar $(ARFLAGS) r
    RANLIB= arm-linux-ranlib
    MAKEDEPPROG= arm-linux-gcc

    make
    make install

    把编译出来的头文件应该放入:
    /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include

    把编译出来的库文件应该放入:
    /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib

    把编译出来的库文件应该放入根文件系统文件系统的lib目录:*so*


    交叉编译hostapd-2.0.tar.gz

    tar xzf hostapd-2.0.tar.gz
    cd hostapd-2.0/
    cd hostapd/
    cp defconfig .config
    修改.config, 加一行: CONFIG_LIBNL32=y
    修改Makefile:

    CC=arm-linux-gcc      /* 去掉前面的宏定义 */
    make
    make DESTDIR=$PWD/tmp install

    把生成的hostapd  hostapd_cli复制到根文件系统的bin目录


    启动开发板:vi /etc/hostapd.conf   内容如下:

    ctrl_interface=/var/run/hostapd           
    #change wlan0 to your wireless device
    interface=wlan0
    driver=nl80211
    ssid=Linux                /* 名字 */
    channel=1

    # 认证/加密方式
    macaddr_acl=0
    auth_algs=1
    ignore_broadcast_ssid=0
    wpa=3
    wpa_passphrase=linuxdrv     /* 密码*/
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP
    rsn_pairwise=CCMP


    hostapd: hostapd -B /etc/hostapd.conf        /* 启动AP模式,手机连接时候一直停在获取IP,需要配置dhcp */


    修改配置文件/etc/dhcpd.conf,添加:
    subnet 172.16.1.0 netmask 255.255.255.0 {                       
      range 172.16.1.10 172.16.1.100;                                                      
      option routers 172.16.1.1;                       /* 开发板IP地址 */                               
    }    


    创建空文件/var/db/dhcpd.leases:
    mkdit    /var/db/

    touch dhcpd.leases

    dhcpd -cf /etc/dhcpd.conf wlan0              /* 启动自动获取IP */


    在/etc/init.d/rcS目录下添加下面几条命令:/* 下面的命令折腾了很久才配置出来的 */

    ifconfig wlan0 up                        

    ifconfig wlan0 172.16.1.1  netmask 255.255.255.0
    route add default gw 172.16.1.1                /* 这两条路由命令需要添加 */
    route add default gw 172.16.148.111
    echo 1 > /proc/sys/net/ipv4/ip_forward         /* 打开IP转发 */
    dhcpd -cf /etc/dhcpd.conf wlan0  &              
    hostapd -B /etc/hostapd.conf



    下面是转载的:

    1、从官网上下载hostapd,编译之前先在hostapd目录下执行cp defconfig .config,配置文件默认只支持nl80211的驱动(CONFIG_DRIVER_NL80211=y)。

    make

    make install

    3、新建/etc/hostapd/hostapd.conf 

    interface=wlan0
    #interface=wlan0
    driver=nl80211
    #driver=madwifi
    ssid=YOUR_SSID
    channel=9
    hw_mode=g
    macaddr_acl=0
    ignore_broadcast_ssid=0
    auth_algs=1
    wpa=3
    wpa_passphrase=YOUR_PASSPHRASE
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP
    rsn_pairwise=CCMP

    最后执行:hostapd -d /etc/hostapd/hostapd.conf 

    hostapd.conf文件(也可以从这里获得),这个文件很大,里面的配置项相当的多,从简单到高级。但一般地我们能够使用到的功能只是其中很少的一部分,下面介绍一下我认为最常用的一些配置选项。首先介绍一些基本的配置项:

    复制代码
    ssid=test hw_mode=g channel=10 interface=wlan0 bridge=br0 driver=nl80211 ignore_broadcast_ssid=0 macaddr_acl=0 accept_mac_file=/etc/hostapd.accept deny_mac_file=/etc/hostapd.deny
    复制代码

    上面列出的配置基本上是必须的,其中:

    • ssid:别人所看到的我们这个无线接入点的名称;
    • hw_mode:指定802.11协议,包括 a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g;
    • channel:设定无线频道;
    • interface:接入点设备名称,注意不要包含ap后缀,即如果该设备称为wlan0ap,填写wlan0即可;
    • bridge:指定所处网桥,对于一个同时接入公网、提供内部网和无线接入的路由器来说,设定网桥很有必要;
    • driver:设定无线驱动,我这里是nl80211;
    • macaddr_acl:可选,指定MAC地址过滤规则,0表示除非在禁止列表否则允许,1表示除非在允许列表否则禁止,2表示使用外部RADIUS服务器;
    • accept_mac_file:指定允许MAC列表文件所在;
    • deny_mac_file:指定禁止MAC列表文件所在;
    下面介绍关于认证方式的配置:
    auth_algs=1

    其中auth_algs指定采用哪种认证算法,采用位域(bit fields)方式来制定,其中第一位表示开放系统认证(Open System Authentication, OSA),第二位表示共享密钥认证(Shared Key Authentication, SKA)。我这里设置alth_algs的值为1,表示只采用OSA;如果为3则两种认证方式都支持。不过很奇怪的是,在我工作中如果配置了3,不管采用WEP/WPA/WP2加密的方式都从没连接成功过,配置为2也是如此。所以在我的配置当中,如果采用认证,则设置auth_algs为1;否则把这行代码注释掉(在前面加#)。

    由于RADIUS认证需要提供外部RADIUS服务器,我们没有这个功能,因此我只研究了WEP、WPA和WPA2这三种加密方式。

    复制代码
    #wep_default_key=0 #wep_key0=1234567890 #wep_key1="vwxyz" #wep_key2=0102030405060708090a0b0c0d #wep_key3=".2.4.6.8.0.23" #wep_key_len_broadcast=13 #wep_key_len_unicast=13 #wep_rekey_period=300
    复制代码

    如果要启用WEP加密,只需配置wep_default_key和其中一个wep_keyx,其中x的值只能在0~3之间,wep_default_key的值必须启用了。注意wep_keyx的值不是任意的,只能是5、13或16个字符(用双引号括住),或者是10、26或32个16进制数字。由于WEP加密算法已经被破解了,所以通常不启用它,全部注释掉。

    wpa=2 wpa_passphrase=12345678 wpa_key_mgmt=WPA-PSK #wpa_pairwise=TKIP CCMP rsn_pairwise=TKIP CCMP

    现在推荐的加密方式是WPA/WPA2,由于时间紧迫,我没有怎么去了解过这两者的差别。不过配置是很简单的:

    • wpa:指定WPA类型,这是一个位域值(bit fields),第一位表示启用WPA,第二位表示启用WPA2。在我的配置中,无论设置成1、2或3,都可以正常连接;
    • wpa_passphrase:WPA/WPA2加密需要指定密钥,这个选项就是配置WPA/WPA2的密钥。注意wpa_passphrase要求8~63个字符。另外还可以通过配置wpa_psk来制定密钥,不过要设置一个256位的16进制密钥,不适合我们的需求;
    • wpa_pairwise/rsn_pairwise:如果启用了WPA,需要指定wpa_pairwise;如果启用了WPA2,需要指定rsn_pairwise,或者采用wpa_pairwise的设定。都可以设定成TKIP、CCMP或者两者都有,具体含义我也没仔细弄清楚。一篇比较老的文章说TKIP不兼容Windows Mobile,但我的Windows Mobile 6.5在这两种算法下都没有遇到任何问题。

    经过这样一些配置,启动hostapd之后应该就可以按照自己的需求正常使用无线接入点功能了:

    /usr/bin/hostapd -f /etc/hostapd.conf

    4、安装dhcpd

    apt-get install dhcp3-server

    echo "1" > /proc/sys/net/ipv4/ip_forward
    hostapd -B /etc/hostapd/hostapd.conf
    
    /etc/dhcp/dhcpd.conf:
    subnet 192.168.0.0 netmask 255.255.255.0
    {
     range 192.168.0.2 192.168.0.10;
     option routers 192.168.0.1;
    }
    
    wlan0配置地址:
    ifconfig wlan0 192.168.0.1 netmask 255.255.255.0
    开启dhcp:
    dhcpd wlan0 -pf /var/run/dhcp-server/dhcpd.pid

    现在无线网卡就可以当成ap了。


    5、把无线网卡的ap继续扩展为连接到外网

    网上有很多资料,一般有2种方法:一种是bridge(桥接),另一种是nat方式,这里只介绍nat的方式。

    经过前面4个步骤,无线网卡已经可以自动分配IP,现在只需要把无线网卡的数据都经过eth0(有线网络)发到外网去,这就需要IP转发了。

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

    还需要修改/etc/dhcp/dhcpd.conf,添加dns:
    subnet 192.168.0.0 netmask 255.255.255.0
    {
     range 192.168.0.2 192.168.0.10;
     option domain-name-servers 221.5.88.88;
     option routers 192.168.0.1;
    }

    (Linux系统缺省并没有打开IP转发功能,要确认IP转发功能的状态,可以查看/proc文件系统,使用下面命令: cat /proc/sys/net/ipv4/ip_forward
    如果上述文件中的值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开。
    要想打开IP转发功能,可以直接修改上述文件: echo 1 > /proc/sys/net/ipv4/ip_forward
    把文件的内容由0修改为1。禁用IP转发则把1改为0。
    上面的命令并没有保存对IP转发配置的更改,下次系统启动时仍会使用原来的值,要想永久修改IP转发,需要修改/etc/sysctl.conf文件,修 改下面一行的值: net.ipv4.ip_forward = 1 修改后可以重启系统来使修改生效,也可以执行下面的命令来使修改生效: sysctl -p /etc/sysctl.conf 进行了上面的配置后,IP转发功能就永久使能了。)


    6、嵌入式开发板上设置内核支持iptabel的设置如下:

    内核需要对iptables的支持并加上nat功能

    Networking support --->

                  Networking options --->

                       Network packet filtering framework (Netfilter)

    │ │    --- Network packet filtering framework (Netfilter)               │ │ 

      │ │    [*]   Network packet filtering debugging                         │ │ 

      │ │    [*]   Advanced netfilter configuration                           │ │ 

      │ │          Core Netfilter Configuration  --->                         │ │ 

      │ │    < >   IP virtual server support  --->                            │ │ 

      │ │          IP: Netfilter Configuration  --->

     

    Core Netfilter Configuration里面的配置如下:

    <*> Netfilter connection tracking support

    -*- Netfilter Xtables support (required for ip_tables)

    IP: Netfilter Configuration里面的配置如下:

    [*]   proc/sysctl compatibility with old connection tracking

    <*> IP tables support (required for filtering/masq/NAT)

       <*>   Packet filtering           

       <*>     REJECT target support      

       < >   LOG target support  

       < >   ULOG target support     

      <*>   Full NAT      

      <*>     MASQUERADE target support 

      <*>     NETMAP target support    

      <*>     REDIRECT target support

      <*>     Basic SNMP-ALG support



    展开全文
  • 这个帖子里的方法有点过时了,...一般情况下,每台笔记本里面只有一张无线网卡,按照常规的思路要一边作为 STA 连接在别的热点上,一边又要做 AP 给手机用的话似乎就非得再买一张 USB 的无线网卡了。不过现在有一种...

    这个帖子里的方法有点过时了,不推荐继续使用。

    有的时候会碰到这么一种情况,带着电脑和手机出去蹭网,无奈只有一个账号,手机上了电脑就没得用了,电脑用了手机就上不了网。如果能用电脑连接 Wifi 然后再开热点给手机用该多好。一般情况下,每台笔记本里面只有一张无线网卡,按照常规的思路要一边作为 STA 连接在别的热点上,一边又要做 AP 给手机用的话似乎就非得再买一张 USB 的无线网卡了。不过现在有一种方法可以让一张无线网卡同时处于 STA 和 AP 的状态,一边作为客户端连在别的 AP 上,一边又自己作为 AP 让别的客户端来连接。

    这种特殊的“一卡两用”的状态需要 WDS 的支持。WDS 是一个复杂的东西,现在只讲特定情况下的应用。一般来讲,采用 ath9k 驱动的无线网卡都是支持 WDS 的(其它基于 mac80211 的驱动不详,不过值得一试)。另外,为了能使用 WDS ,还要求 hostapd 的版本在 0.7.x 以上。

    下面是一个小脚本,它将在 wlan0 上启动一个 AP ,同时生成一个新的接口 wds0 ,可供 NetworkManager 直接作为 STA 使用。

    #!/bin/sh

    WIFI=wlan0 # NOTE 1

    PHY=phy0 # NOTE 2

    WAN=wds0 # NOTE 3

    # Extra NAT Module

    modprobe nf_nat_pptp

    modprobe nf_nat_ftp

    # NOTE 4

    # Config Wireless

    ifconfig $WIFI up

    ifconfig $WIFI 172.16.1.1/24

    ifconfig $WIFI mtu 1500

    # Configure dnsmasq

    cat > /etc/dnsmasq.conf << EOF

    dhcp-range=172.16.1.100,172.16.1.150,255.255.255.0,24h

    port=0

    dhcp-option=option:dns-server,8.8.8.8,8.8.4.4

    interface=$WIFI

    EOF

    # NOTE 5

    # DHCP server

    service dnsmasq stop

    service dnsmasq start

    # AP and WDS STA

    hostapd -B ./hostapd-wds.conf

    iw phy $PHY interface add $WAN type wds

    ifconfig $WAN hw ether b4:82:fe:54:c8:3e # NOTE 6

    ifconfig $WAN up

    # Enable IPv4 Forwarding

    echo "1" > /proc/sys/net/ipv4/ip_forward

    iptables -P FORWARD ACCEPT

    # NAT with iptables

    iptables -t nat -A POSTROUTING -o $WAN -s 172.16.1.1/24 -j MASQUERADE

    NOTES:

    wlan0 是无线网卡默认的接口名称。使用时请根据实际情况设定。对于使用基于 mac80211 架构驱动的网卡,其接口名一般是 wlanx ,系统中的第一张网卡一般是 wlan0 。稍后这个接口会被作为 AP 使用;

    这是对应的无线网卡的 PHY 的名称,一般为 phy0 ,可以这样找出:先 lspci 找出无线网卡的 PCI 地址,然后 ls /sys/bus/pci/devices/[对应的完整 PCI 地址]/ieee80211 即可找出;

    期望的 WDS STA 接口名称,完全依个人喜好填写,不要和已有的接口冲突即可;

    加载这些额外的 module 是为了保证在 NAT 后面的 PPTP 客户端和 FTP 服务器能正常工作;

    dnsmasq 的配置请参考 http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq.conf.example ,本例中 dnsmasq 只做 DHCP 服务器,IP 地址范围 172.16.1.100 – 172.16.1.150 ,租期 24 小时,DNS 服务器默认为 8.8.8.8 和 8.8.4.4 ;

    这里的 MAC 地址也是按照个人喜好设定的,不过不要和系统已有的任何网卡地址相同(包括无线网卡的 AP 接口)。

    有关的 hostapd-wds.conf 的内容如下,请放置在该脚本的工作目录下:

    auth_algs=1

    beacon_int=300

    channel=6 # NOTE 1

    country_code=CN

    ctrl_interface_group=adm

    ctrl_interface=/var/run/hostapd

    driver=nl80211 # NOTE 2

    dtim_period=2

    dump_file=/tmp/hostapd.dump

    eapol_key_index_workaround=0

    eap_server=0

    fragm_threshold=2346

    hw_mode=g #NOTE 3

    ieee80211d=1

    ieee80211n=1 #NOTE 4

    ignore_broadcast_ssid=0

    interface=wlan0 #NOTE 5

    logger_stdout=-1

    logger_stdout_level=2

    logger_syslog=-1

    logger_syslog_level=2

    macaddr_acl=0

    max_num_sta=16

    own_ip_addr=127.0.0.1

    preamble=1

    rsn_pairwise=CCMP

    rts_threshold=2347

    ssid=dword-relay # NOTE 6

    wds_sta=1

    wmm_ac_be_acm=0

    wmm_ac_be_aifs=3

    wmm_ac_be_cwmax=10

    wmm_ac_be_cwmin=4

    wmm_ac_be_txop_limit=0

    wmm_ac_bk_acm=0

    wmm_ac_bk_aifs=7

    wmm_ac_bk_cwmax=10

    wmm_ac_bk_cwmin=4

    wmm_ac_bk_txop_limit=0

    wmm_ac_vi_acm=0

    wmm_ac_vi_aifs=2

    wmm_ac_vi_cwmax=4

    wmm_ac_vi_cwmin=3

    wmm_ac_vi_txop_limit=94

    wmm_ac_vo_acm=0

    wmm_ac_vo_aifs=2

    wmm_ac_vo_cwmax=3

    wmm_ac_vo_cwmin=2

    wmm_ac_vo_txop_limit=47

    wmm_enabled=1

    wpa=2

    wpa_gmk_rekey=7200

    wpa_group_rekey=1200

    wpa_passphrase=qwertyuiop #NOTE 7

    wpa_ptk_rekey=600

    wpa_strict_rekey=1

    wps_state=0

    NOTES:

    在这里设置新生成的 AP 的信道,最好和 STA 界面要连接的 AP 的信道保持一致;

    驱动视网卡而定,如果网卡的驱动是 ath9k 这样基于 mac80211 的驱动的话,这里选 nl80211 就可以了;

    模式有 a/b/g 可选,视网卡的情况和需求而定;

    是否打开 802.11n ,视网卡的情况和需求而定;

    网卡 AP 界面名称;

    新 AP 的 ESSID ;

    新 AP 的 WPA2 密码句;

    关键是把 wds_sta 设置为“ 1 ”。

    最后,sudo 执行脚本,然后通过 NetworkManager 让 wds0 (或者其他你设置的名字)连接上一个热点,即可一边蹭网一边共享热点了。

    有图有真相:

    参考:

    展开全文
  • 试图将它设置进入 Master (也成为AP模式,软AP,Soft-AP)。但是发现随着需求越来越少,以及无线网卡的更新速度非常快,这似乎成了很困难的一件事情。在这里只讨论 USB 无线网卡的内容。如果你有条件使用 PCI,PCI-E ...

    Published by latteye on 八月 22. 2010 at 10:18 下午

     

    USB 无线网卡在 Linux 环境下的 AP (Master) 模式

    最近几个月都在看 Linux 下的 USB 无线网卡。试图将它设置进入 Master (也成为AP模式,软AP,Soft-AP)。但是发现随着需求越来越少,以及无线网卡的更新速度非常快,这似乎成了很困难的一件事情。在这里只讨论 USB 无线网卡的内容。如果你有条件使用 PCI,PCI-E 类型的无线网卡,那将很方便。

     

    比较权威的是 Linux Wireless 网卡,上面提供了很多信息。另外 Ubuntu Wiki 也很有参考意义。在这两个网站上 USB 无线网卡几乎全军覆没。

    1. ZyDAS ZD1211
    首先要提一下这个芯片的网卡。我有找到资料说这个网卡是可以进入 Master 模式的。但我实在是无法找到这种类型的网卡了(山寨卡不算)。几乎都已经停产了。

    2.Atheros (Madwifi)
    Atheros 口碑很好,在很多论坛都看到对它极高的评价。其配合 hostapd 使用的的驱动就是 Madwifi。但是,当你进入 Madwifi 首页就会看到,Madwifi 直接了当的告诉你,“我不支持任何 USB 网卡”

    3. Hostap
    先来说一下 hostap 和 hostapd 。hostap 只是一款驱动。它支持 Prism2/2.5/3 系列的网卡。我没有机会深入下去,因为市面上根本找不到这种芯片的网卡了。
    而 hostapd 是一款将无线网卡设置成 Master 模式的软件。

    4. RaLink 系列
    RaLink 系列非常庞大,在 Linux 下也有原生驱动支持。我接触过以下的 RaLink 芯片的网卡:
    RT73: D-Link WUA-1340
    RT2870: Linksys WUSB100
    RT25xx: Linksys WUSB54g
    RT3752: Linksys WUSB600N

    一些 rev 记不清楚了,随后我会补上。
    RT 的驱动主要分两类,一类是 官方提供的驱动。看起来这些驱动对 Master 模式没什么帮助。至少我没看到官方说可以。

    另外就是 rt2x00 项目。在这个项目驱动中明确提到有提供 Master 模式支持。

    但是,起初我通过 iwconfig 来设置 AP 模式,从来没有成功过。直到前天才发现 iwconfig 早已过时。下一代的无线控制命令是 iw。很多信息的查看都应该通过 iw 命令来获取。当然也不完全可信,比如 iw 告诉我 Linksys WUSB100 可以作为 AP 使用。但我设置它作 AP 的时候无论如何都看不到 ESSID 广播。

    正真解决问题的是 RT73。准确的说是 rt2x00 项目提供的 rt73usb 驱动。很可惜的是 rt73 芯片的usb无线网卡几乎都已经停产了。

    Hostapd
    在意识到 iwconfig 已经过时的时候,也意识到想将网卡设置成 AP 不应该再依赖这个命令了。而应该走 hostapd 的路。

    在这里插入批评 Ubuntu 一下。我对 Ubuntu 不负责任的态度感到非常失望。也很后悔当初将公司一批产品装上了 Ubuntu 9.04 Server。现在泼出去的水已经很难回来了。Ubuntu 的屁股只能我来擦了。
    在 9.04 中 dhcp3 client 最后一个更新包与新kernel 配合使用的时候,会有严重的 bug。获取到地址后 dhcp scripts 出错,无法将地址配置到网卡上。这样一个 bug ,居然不去修。

    回到 hostapd ,hostapd 在 Ubuntu 中的版本为 0.5.8 ,我起初认为 rt 系列的驱动应该属于 Linux 原生驱动,所以 wext 应该就是正确的驱动类型。但 hostapd 无法在这个驱动下配置 rt73usb 网卡。
    后来才发现 hostapd 0.6.9 提供的 nl80211 驱动可以正确配置。作为 Server 的 Ubuntu 9.04 Server 也没有提供新的 deb 包。我只好自己打包。很难想象 Ubuntu 对 Server 版本也保持着 6个月 一更新的思路。你想烦死我!?
    这里面还有些问题需要搞清楚,cfg80211,nl80211,wext 区别在哪里?以后弄清楚了再来更新。

    VIA VT6656
    在测试的过程中,还找到了 VIA VT6656 的网卡。由于在 Win 环境下这网卡可以作 AP 才对它开始测试的。从 VIA 网站上下来的驱动浪费了我很长时间。官方网站上提供了 1.91.20 两个版本。而 1.9 无法在 2.6.32 Kernel 下直接编译通过。1.20 可以。

    起初我认为这个驱动无法做 AP,那时候是用的 iwconfig 工具看的。后来发现随驱动有工具 wetctl。但是也没有发现 AP 可以通过这个模式去配置。
    后来老板自己看了 wetctl 源码,肯定的说是可以的。只是一些参数没有告诉你。于是自己看源码发现 apstart 参数就可以将其设置为 Master 模式。具体的参数有很多,类似这样:
    wetctl eth1 apstart ap test 11 100 open 8 2

    这种方式的确可以将 VIA VT6656 进入 Master 模式,但很莫名的机器会死机,而且我们没有找到死机的原因(规律)。就在想放弃的时候,我们和 VIA 的一个生产商抱怨了一通。对方很豪爽的说:“早说你们要作 AP 阿,我发你们一套作 Soft AP 的驱动。”。我靠!VIA 你作了驱动也不放出来阿……

    上周五才拿到 Soft AP 驱动。VIA 随驱动给了修改过的 hostapd 0.6.9 & 0.5.8 。修改的版本必须在 hostapd 中将 driver 定义为 viawget 才可以启动这个网卡。至于稳定性还在测试中,要过两天才能出结果, 在工作两天后VIA的卡还是稳定的,但在连续工作一周以后机器也死机了,在某些不严格的环境中,这样的结果也可以了。根据驱动文件的文件名判断 via 这个驱动还处在 beta 版本。

    另外还有一个问题,VIA 1.20 的驱动是无法同时支持两张无线网卡的。如果你查了两张,系统只会显示一张。

    现在的希望主要就在 rt 系列 和 VIA VT6656 。如果 VIA 的卡能看着不是那么的山寨,我还是愿意使用的。何况它价格也比较便宜,才 100 元上下。Linksys WUSB600N 要300-400呢。

    下周再更新测试结果。

    展开全文
  • 360随身WIFI支持STA和AP两种模式,其中STA模式使其充当一个无线网卡连接指定的WIFI进行上网,而AP模式下相当于一个热点自己向别人提供WIFI。在上篇中我们介绍了STA模式,本篇我们将介绍在嵌入式Linux系统上移植AP...
  • 不是所有的usb-wif模块在linux下面都...在linux下的ap模式是通过工具hostapd工具进行配置运行的,该工具一般使用nl80211协议驱动无线网卡ap模式的运行。所以一定要选择linux下能支持80211ap协议(ap模式)的无线网卡...
  • 只能创建AD-HOC的网络,要创建AP模式的网络只能在Win7下才可以 而在XP系统下,却可以使用USB无线网卡创建AP模式的无线网络 请问这个是什么原理呢? 谢谢!
  • Q:腾达USB无线网卡AP模式如何设置上网?适用类型:USB无线网卡问题分类:功能实现A:腾达USB无线网卡支持两种工作模式:station模式和AP模式。在AP模式下可以将您电脑上的有线信号转变为无线信号。具体设置步骤(以...
  • 首先,将网卡插入到usb接口后,终端输入lsusb,找到该端口ID信息。 BUS 001 Device 007:ID 0bda:c811 Realtek Semiconductor Corp 安装对应驱动版本: sudo apt update sudo apt install build-essential git ...
  • 这个帖子里的方法有点过时了,不...一般情况下,每台笔记本里面只有一张无线网卡,按照常规的思路要一边作为 STA 连接在别的热点上,一边又要做 AP 给手机用的话似乎就非得再买一张 USB 的无线网卡了。不过现在有...
  • 1.IBM T43 Intel ipw2200 虽说有说法称驱动支持AP模式,但一则驱动太老,失去维护,二则基本编译不能通过,除非你用老版本kernel。 2.HostAP Driver 与 HostAPd 很容易被混淆,HostAPd 只支持有限的几种Drivers,...
  •  当处于 Infrastructure 组网模式下,在各 AP(Access Point)之间支持无线漫游功能;  具有良好的抗干扰能力;  配置简单并提供检测信息;  支持 Windows XP, Windows 7、Windows 8 和 Windows 8.1 操作...
  • USB无线网卡应用

    2015-06-04 12:00:13
    1、AP模式 Access Point,提供无线接入服务,允许其它无线设备接入,提供数据访问,一般的无线路由/网桥工作在该模式下。AP和AP之间允许相互连接。比如:wifi热点 2、Sta模式 Station, 类似于无线终端,sta本身...
  • 对于我们的手机一般来说都会连着理由器的WIFI,此时手机为STA模式,而路由器为AP模式(也叫热点),因为我们可以让ARM开发板工作于STA模式或者AP模式 1、选型 确定网卡的VID和PID,原本可以在...
  • 最近想搞个无线路由,linux下的无线路由/无线AP的实现就是 hostapd 这个软件了。...硬件部分AP的工作模式我们只需要一块无线网卡和一块有线网卡。无线网卡PCI接口或者USB接口的都可以,有线网卡通常集成在主板...
  • 由于TX2板载WIFI的AP模式存在诸多问题,故采用usb网卡建立AP热点 查看usb网卡型号 lsusb 可以看到芯片型号为 RTL8188EUS Bus 001 Device 028: ID 0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n ...
  • 360随身WIFI作USB无线网卡使用教程

    千次阅读 2015-09-19 17:24:34
    那么理论上来说就能使用360随身WIFI来当者普通USB无线网卡一样使用,能接受无线路由器信号,插在台式机上,既能当做WIFI AP模式共享有线网络给手机使用,又可以当做普通USB无线网卡来共无网线的电
  • 使用WIFI网卡利用wpa_supplicant(STA模式) 1、编译过程 2、使用wpa_supplicant 使用WIFI网卡利用dhcp并且自动使用wifi 1、编译过程 2、使用 3、接上网卡自动连接AP并设置IP 使用WIFI网卡利用wpa_supplicant...
  • 1、wifi的STA模式和AP模式 Ap(Access Point)模式指的是可以将网卡设置为路由器用来共享流量或有线网络给别人使用, sta模式指的是当做网卡连接路由器上网2、网卡选型(1)选型标准:看linux内核是否已支持此款...
  • Realtek RTL8188CU Wireless LAN 802.11n USB 2.0 Network Adapter  然后下载这个软件(这个软件 比较不好找呢。) http://pan.baidu.com/share/link?shareid=448057&uk=453804283 打开之后设置为 接入点 ...
  • Ubuntu 安装网卡驱动

    2019-10-08 10:34:53
    试了下Ubuntu平台默认驱动并不支持AP模式,所以需要更换驱动,具体操作步骤如下: 1.找到自己网卡芯片的型号,由于我的环境是搭建在本地的虚拟机上的,wifi是usb网卡。所以查找usb设备:lsusb root@ubuntu:~/...
  • WIFI网卡使用分析

    2015-09-27 12:56:37
    1.当接上WiFi网卡的开发板去连接周围的WiFi热点(AP)进行上网时,开发板处于WiFi的STA模式,而热点称为AP模式,开发板要去连AP;当接上WiFi网卡的开发板处于AP模式时,就相当于手机开机便携式热点功能,这时让其他...
  • ,并且移植hostapd让无线网卡工作在AP模式,andriod手机能够连接上开发板发出来的WIFI ,但是开发板不能Ping通分配给手机的IP(有线网卡不能ping同无线网卡)。 开发板eth0IP:172.16.148.111 USB无线网卡wlan0 IP:...
  • tlwdn6200无线网卡驱动是由普联推出的一款无线网卡驱动程序,用户要想正常的使用无线网卡,就...官方介绍TL-WDN6200是普联最近推出的一款USB无线网卡,支持11ac协议、2.4/5G双频、USB3.0、AP模式(可分享w,欢迎下载体验
  • 一.USB无限网卡 使用Kali linux,先准备好一个适合Kali系统的USB外置无限网卡,注意内置网卡并不适合渗透测试。 ...1.RT3070(L)/RT5572:即插即用支持混杂模式、注入模式、AP模式。 2.RT8187...

空空如也

空空如也

1 2 3 4
收藏数 71
精华内容 28
关键字:

usb网卡ap模式