美文网首页
arm使用hostapd创建热点

arm使用hostapd创建热点

作者: 坤kln | 来源:发表于2019-05-29 12:42 被阅读0次

    硬件:IMX6的arm板、树莓派 Raspberry Pi 无线USB网卡 EDUP EP-N8508GS 黄金版 免驱,并且已经带了驱动

    关于wifi连接可以看 https://blog.csdn.net/chenjk10/article/details/90521093

    • 普通热点

    开启普通热点,只有一个无线网卡,无法上网的热点

    # 如果启动了wpa_supplicant,先要停止
    killall wpa_supplicant > /dev/null 2>&1
    # 在停止了wpa_supplicant后,关联的网卡会被变成禁用状态
    # 注意:如果使用代码停止wpa_supplicant,需要休眠等待一下,要等待wpa_supplicant真的退出并且网卡状态变化
    

    修改或者创建hostapd.conf文件,这个文件一般在/etc/hostapd.conf

    ##### hostapd configuration file ##############################################
    
    interface=wlan0
    ctrl_interface=/var/run/hostapd
    
    ssid=MyAPName
    
    # Channel number (IEEE 802.11)
    # (default: 0, i.e., not set)
    # Please note that some drivers do not use this value from hostapd and the
    # channel will need to be configured separately with iwconfig.
    #
    # If CONFIG_ACS build option is enabled, the channel can be selected
    # automatically at run time by setting channel=acs_survey or channel=0, both of
    # which will enable the ACS survey based algorithm.
    channel=6
    
    # Enable WPA. Setting this variable configures the AP to require WPA (either
    # WPA-PSK or WPA-RADIUS/EAP based on other configuration). For WPA-PSK, either
    # wpa_psk or wpa_passphrase must be set and wpa_key_mgmt must include WPA-PSK.
    # Instead of wpa_psk / wpa_passphrase, wpa_psk_radius might suffice.
    # For WPA-RADIUS/EAP, ieee8021x must be set (but without dynamic WEP keys),
    # RADIUS authentication server must be configured, and WPA-EAP must be included
    # in wpa_key_mgmt.
    # This field is a bit field that can be used to enable WPA (IEEE 802.11i/D3.0)
    # and/or WPA2 (full IEEE 802.11i/RSN):
    # bit0 = WPA
    # bit1 = IEEE 802.11i/RSN (WPA2) (dot11RSNAEnabled)
    wpa=2
    
    # WPA pre-shared keys for WPA-PSK. This can be either entered as a 256-bit
    # secret in hex format (64 hex digits), wpa_psk, or as an ASCII passphrase
    # (8..63 characters) that will be converted to PSK. This conversion uses SSID
    # so the PSK changes when ASCII passphrase is used and the SSID is changed.
    # wpa_psk (dot11RSNAConfigPSKValue)
    # wpa_passphrase (dot11RSNAConfigPSKPassPhrase)
    #wpa_psk=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
    wpa_passphrase=12345678
    
    # Set of accepted key management algorithms (WPA-PSK, WPA-EAP, or both). The
    # entries are separated with a space. WPA-PSK-SHA256 and WPA-EAP-SHA256 can be
    # added to enable SHA256-based stronger algorithms.
    # (dot11RSNAConfigAuthenticationSuitesTable)
    #wpa_key_mgmt=WPA-PSK WPA-EAP
    wpa_key_mgmt=WPA-PSK
    
    # Set of accepted cipher suites (encryption algorithms) for pairwise keys
    # (unicast packets). This is a space separated list of algorithms:
    # CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]
    # TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]
    # Group cipher suite (encryption algorithm for broadcast and multicast frames)
    # is automatically selected based on this configuration. If only CCMP is
    # allowed as the pairwise cipher, group cipher will also be CCMP. Otherwise,
    # TKIP will be used as the group cipher.
    # (dot11RSNAConfigPairwiseCiphersTable)
    # Pairwise cipher for WPA (v1) (default: TKIP)
    wpa_pairwise=TKIP CCMP
    #wpa_pairwise=CCMP
    # Pairwise cipher for RSN/WPA2 (default: use wpa_pairwise value)
    #rsn_pairwise=CCMP
    rsn_pairwise=CCMP TKIP
    #rsn_pairwise=CCMP
    
    # Time interval for rekeying GTK (broadcast/multicast encryption keys) in
    # seconds. (dot11RSNAConfigGroupRekeyTime)
    #wpa_group_rekey=600
    #wpa_group_rekey=86400
    
    # auto add current network card into bridge
    #bridge=br0
    
    # IEEE 802.11 specifies two authentication algorithms. hostapd can be
    # configured to allow both of these or only one. Open system authentication
    # should be used with IEEE 802.1X.
    # Bit fields of allowed authentication algorithms:
    # bit 0 = Open System Authentication
    # bit 1 = Shared Key Authentication (requires WEP)
    #auth_algs=3
    
    ##### Wi-Fi Protected Setup (WPS) #############################################
    
    eap_server=1
    
    # WPS state
    # 0 = WPS disabled (default)
    # 1 = WPS enabled, not configured
    # 2 = WPS enabled, configured
    wps_state=2
    
    uuid=12345678-9abc-def0-1234-56789abcdef0
    
    # Device Name
    # User-friendly description of device; up to 32 octets encoded in UTF-8
    device_name=RTL8192CU
    
    # Manufacturer
    # The manufacturer of the device (up to 64 ASCII characters)
    manufacturer=Realtek
    
    # Model Name
    # Model of the device (up to 32 ASCII characters)
    model_name=RTW_SOFTAP
    
    # Model Number
    # Additional device description (up to 32 ASCII characters)
    model_number=WLAN_CU
    
    # Serial Number
    # Serial number of the device (up to 32 characters)
    serial_number=12345
    
    # Primary Device Type
    # Used format: <categ>-<OUI>-<subcateg>
    # categ = Category as an integer value
    # OUI = OUI and type octet as a 4-octet hex-encoded value; 0050F204 for
    #       default WPS OUI
    # subcateg = OUI-specific Sub Category as an integer value
    # Examples:
    #   1-0050F204-1 (Computer / PC)
    #   1-0050F204-2 (Computer / Server)
    #   5-0050F204-1 (Storage / NAS)
    #   6-0050F204-1 (Network Infrastructure / AP)
    device_type=6-0050F204-1
    
    # OS Version
    # 4-octet operating system version number (hex string)
    os_version=01020300
    
    # Config Methods
    # List of the supported configuration methods
    config_methods=label display push_button keypad
    
    ##### default configuration #######################################
    
    driver=rtl871xdrv
    beacon_int=100
    # Operation mode (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g,
    # ad = IEEE 802.11ad (60 GHz); a/g options are used with IEEE 802.11n, too, to
    # specify band)
    # Default: IEEE 802.11b
    hw_mode=g
    ieee80211n=1
    wme_enabled=1
    ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+]
    max_num_sta=8
    
    

    部分配置说明

    # 设置使用的网卡
    interface=wlan0
    # 配置热点名称
    ssid=MyAPName
    # 热点支持的加密类型,
    # bit0 = WPA
    # bit1 = IEEE 802.11i/RSN (WPA2) (dot11RSNAEnabled)
    wpa=2
    # 热点加密类型
    wpa_key_mgmt=WPA-PSK
    # 热点密码
    wpa_passphrase=12345678
    # 接受的密匙类型
    wpa_pairwise=TKIP CCMP
    rsn_pairwise=CCMP TKIP
    
    

    官方配置文件:http://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf

    热点要使用DHCP功能,所以还要配置DHCP配置文件,使用是udhcpd,配置文件在/etc/udhcpd.conf

    如果使用静态IP地址也可以不使用DHCP

    # Sample udhcpd configuration file (/etc/udhcpd.conf)
    
    # The start and end of the IP lease block
    
    start       192.168.0.150   #default: 192.168.0.20
    end     192.168.0.240   #default: 192.168.0.254
    
    # The interface that udhcpd will use
    interface    wlan0    #default: eth0
    
    # The maximim number of leases (includes addressesd reserved
    # by OFFER's, DECLINE's, and ARP conficts
    
    max_leases  21      #default: 254
    
    # If remaining is true (default), udhcpd will store the time
    # remaining for each lease in the udhcpd leases file. This is
    # for embedded systems that cannot keep time between reboots.
    # If you set remaining to no, the absolute time that the lease
    # expires at will be stored in the dhcpd.leases file.
    
    #remaining  yes     #default: yes
    
    # The time period at which udhcpd will write out a dhcpd.leases
    # file. If this is 0, udhcpd will never automatically write a
    # lease file. (specified in seconds)
    
    #auto_time  7200        #default: 7200 (2 hours)
    
    # The amount of time that an IP will be reserved (leased) for if a
    # DHCP decline message is received (seconds).
    
    #decline_time   3600        #default: 3600 (1 hour)
    
    # The amount of time that an IP will be reserved (leased) for if an
    # ARP conflct occurs. (seconds
    
    #conflict_time  3600        #default: 3600 (1 hour)
    
    # How long an offered address is reserved (leased) in seconds
    
    #offer_time 60      #default: 60 (1 minute)
    
    # If a lease to be given is below this value, the full lease time is
    # instead used (seconds).
    
    #min_lease  60      #defult: 60
    
    # The location of the leases file
    
    #lease_file /var/lib/misc/udhcpd.leases #defualt: /var/lib/misc/udhcpd.leases
    
    # The location of the pid file
    #pidfile    /var/run/udhcpd.pid #default: /var/run/udhcpd.pid
    
    # Everytime udhcpd writes a leases file, the below script will be called.
    # Useful for writing the lease file to flash every few hours.
    
    #notify_file                #default: (no script)
    
    #notify_file    dumpleases  # <--- usefull for debugging
    
    # The following are bootp specific options, setable by udhcpd.
    
    #siaddr     192.168.0.22        #default: 0.0.0.0
    
    #sname      zorak           #default: (none)
    
    #boot_file  /var/nfs_root       #default: (none)
    
    # The remainer of options are DHCP options and can be specifed with the
    # keyword 'opt' or 'option'. If an option can take multiple items, such
    # as the dns option, they can be listed on the same line, or multiple
    # lines. The only option with a default is 'lease'.
    
    #Examles
    opt dns 116.116.116.116
    option  subnet  255.255.255.0
    opt router  192.168.0.1
    #opt    wins    192.168.10.10
    option  dns 129.219.13.81   # appened to above DNS servers for a total of 3
    option  domain  local
    option  lease   864000      # 10 days of seconds
    
    # Currently supported options, for more info, see options.c
    #opt subnet
    #opt timezone
    #opt router
    #opt timesvr
    #opt namesvr
    #opt dns
    #opt logsvr
    #opt cookiesvr
    #opt lprsvr
    #opt bootsize
    #opt domain
    #opt swapsvr
    #opt rootpath
    #opt ipttl
    #opt mtu
    #opt broadcast
    #opt wins
    #opt lease
    #opt ntpsrv
    #opt tftp
    #opt bootfile
    
    # Static leases map
    #static_lease 00:60:08:11:CE:4E 192.168.0.54
    #static_lease 00:60:08:11:CE:3E 192.168.0.44
    
    

    部分参数说明:

    # 使用的无线网卡
    interface    wlan0
    # IP池范围
    start       192.168.0.100
    end     192.168.0.240
    # 路由地址
    opt router  192.168.0.1
    

    官方配置文件说明:https://udhcp.busybox.net/udhcpd.conf

    开始配置热点:

    # 启用网卡
    ifconfig wlan0 up
    # 给无线网卡设置IP地址
    ifconfig wlan0 192.168.0.1
    # 启动DHCP,必须先设置无线网卡地址,不然启动udhcp会失败
    udhcpd /etc/udhcpd.conf 
    # 启动热点
    hostapd /etc/hostapd.conf -B
    

    桥接方式建立热点

    配置文件和上面的一样,这里桥接的是以太网卡eth0。

    # 设置两个网卡IP为0.0.0.0
    ifconfig eth0 0.0.0.0
    ifconfig wlan0 0.0.0.0
    # 如果网桥已经存在则删除
    brctl delbr br0 >/dev/null 2>&1
    # 新建网桥br0
    brctl addbr br0
    # Stop STP(spanning tree protocol, this protocol seems to prevent the network from generating loops, because the self-defined network, there should be no loop, this protocol can be stopped)
    brctl stp br0 off
    # 添加无线网卡和以太网卡到网桥br0中
    brctl addif br0 wlan0
    brctl addif br0 eth0
    # Set the bridge forwarding delay time
    brctl setfd br0 0
    # 设置网桥静态IP地址
    ifconfig br0 192.168.1.205 netmask 255.255.255.0
    # 查看当前网桥配置
    brctl show
    
    # 启动hostapd
    hostapd /etc/hostapd.conf -B
    # 给无线网卡设置IP地址,这个和udhcpd.conf中配置的路由地址一样
    ifconfig wlan0 192.168.0.1
    # 启动udhcpd, 必须先设置wlan0的IP地址,不然这步会失败
    udhcpd /etc/udhcpd.conf 
    

    感觉上面有些步骤似乎是多余的,桥接eth0后,连通了eth0的路由,实际上似乎也是使用eth0连接的外部路由的DHCP,arm板上似乎也没必要开DHCP服务。

    启动热点后,连接并使用热点可能会有错误br0: received packet on eth0 with own address as source address,看了一下网桥br0和eth0的MAC地址是一样的,估计br0是复制了eth0的MAC地址,这里需要修改eth0的MAC地址,修改br0的MAC地址似乎还是继续报错,修改命令为:

    ifconfig eth0 hw ether dc:07:c1:00:ed:BB
    

    尝试了一下,去掉udhcpd部分,修改成如下:

    # 设置两个网卡IP为0.0.0.0
    ifconfig eth0 0.0.0.0
    ifconfig wlan0 0.0.0.0
    # 如果网桥已经存在则删除
    brctl delbr br0 >/dev/null 2>&1
    # 新建网桥br0
    brctl addbr br0
    # Stop STP(spanning tree protocol, this protocol seems to prevent the network from generating loops, because the self-defined network, there should be no loop, this protocol can be stopped)
    brctl stp br0 off
    # 添加无线网卡和以太网卡到网桥br0中
    brctl addif br0 wlan0
    brctl addif br0 eth0
    # Set the bridge forwarding delay time
    brctl setfd br0 0
    # 启用网桥
    ifconfig br0 up
    # 查看当前网桥配置
    brctl show
    
    # 启动hostapd
    hostapd /etc/hostapd.conf -B
    # 由于没有设置静态IP,这里使用udhcpc更新IP地址和DNS
    # -n    Exit with failure if lease is not immediately obtained
    udhcpc -i br0 -n
    

    完成后使用ifconfig显示的网卡配置为,可以正常连接热点上网

    br0       Link encap:Ethernet  HWaddr dc:07:c1:00:ed:85  
              inet addr:192.168.1.62  Bcast:192.168.1.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:1274 errors:0 dropped:0 overruns:0 frame:0
              TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:65848 (64.3 KiB)  TX bytes:1590 (1.5 KiB)
    
    eth0      Link encap:Ethernet  HWaddr dc:07:c1:00:ed:85  
              inet6 addr: fe80::de07:c1ff:fe00:ed85/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:4801 errors:0 dropped:0 overruns:0 frame:0
              TX packets:271 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:395515 (386.2 KiB)  TX bytes:44022 (42.9 KiB)
    
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:9 errors:0 dropped:0 overruns:0 frame:0
              TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:612 (612.0 B)  TX bytes:612 (612.0 B)
    
    wlan0     Link encap:Ethernet  HWaddr e8:4e:06:6f:87:dc  
              inet6 addr: fe80::ea4e:6ff:fe6f:87dc/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:240 errors:0 dropped:7 overruns:0 frame:0
              TX packets:1113 errors:0 dropped:7 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:183837 (179.5 KiB)  TX bytes:161991 (158.1 KiB)
    
    

    下面是一个arm上的脚本,用于启动wifi热点,原来有个脚本不过有些问题,我修改了一下

    #!/bin/sh
    
    # Check that the /etc/udhcpd.conf file exists and can be executed
    if [ ! -x /usr/sbin/hostapd ]
    then
        echo "/usr/sbin/hostapd no exist or can't execute"
        exit 0
    fi
    
    # check network card wlanX
    ifconfig -a|grep wlan > /dev/null
    if [[ $? -ne 0 ]]
    then
        echo no device wlanX
        exit 0
    fi
    # Gets the full name of the wlan and assigns it to wlanx
    wlanx=`ifconfig -a|grep wlan|awk '{print $1}'`
    if [[ $? -ne 0 ]]
    then
        echo failed to get device wlanX name
        exit 0
    fi
    
    # Check that the /etc/hostapd.conf file exists and can be write
    if [ ! -w /etc/hostapd.conf ]
    then
        echo "/etc/hostapd.conf no exist or can't write"
        exit 0
    fi
    
    # Check that the /etc/udhcpd.conf file exists and can be write
    if [ ! -w /etc/udhcpd.conf ]
    then
        echo "/etc/udhcpd.conf no exist or can't write"
        exit 0
    fi
    
    # network card configure file: /etc/network/interfaces
    #busybox sed -i "s/eth0/br0/g" /etc/network/interfaces
    #busybox sed -i "s/auto wlan0/#auto wlan0/g" /etc/network/interfaces
    #busybox sed -i "s/iface wlan0 inet dhcp/#iface wlan0 inet dhcp/g" /etc/network/interfaces
    
    # check command
    if [ "$1" != "start" -a "$1" != "stop" -a "$1" != "restart" ]
    then
        echo paramter error.only accept start/stop/restart.
    fi
    
    # Close all related programs
    if [ "$1" = "stop" -o "$1" = "restart" -o "$1" = "start" ]
    then                                                                            
        echo "Stopping the hostapd and udhcpd and wpa_supplicant : "
        killall hostapd >/dev/null 2>&1
        killall udhcpd >/dev/null 2>&1
        killall wpa_supplicant > /dev/null 2>&1
    fi
    
    if [ "$1" = "start" -o "$1" = "restart" ]
    then
        # /etc/hostapd.conf
        echo "Starting the hostapd and udhcpd : "
        wlan_old=`cat /etc/hostapd.conf|grep '^interface'`
        wlan_new="interface="$wlanx
        busybox sed -i "s/$wlan_old/$wlan_new/g" /etc/hostapd.conf
    
        # /etc/udhcpd.conf
        #wlan_old=`cat /etc/udhcpd.conf|grep '^interface'`
        #wlan_new="interface    "$wlanx"    #default: eth0"
        #busybox sed -i "s/$wlan_old/$wlan_new/g" /etc/udhcpd.conf
    
        #start bridge eth0
        ifconfig eth0 0.0.0.0
        ifconfig $wlanx 0.0.0.0
        ifconfig $wlanx up
        # Delete possible Bridges
        brctl delbr br0 >/dev/null 2>&1
        # add new bridge br0
        brctl addbr br0
        # Stop STP(spanning tree protocol, this protocol seems to prevent the network from generating loops, because the self-defined network, there should be no loop, this protocol can be stopped)
        brctl stp br0 off
        # Add the port eth0 and the wireless port to the bridge
        brctl addif br0 $wlanx
        brctl addif br0 eth0
        # Set the bridge forwarding delay time
        brctl setfd br0 0
        # set static ip addr
        #ifconfig br0 192.168.1.205 netmask 255.255.255.0
        # enabel br0
        ifconfig br0 up
        # Displays the current bridge configuration
        brctl show
    
        # Check the status of network card,Network cable plug status
        #ifplugd -I -i eth0 -d 0 -t 0 -r /usr/sbin/auto_bridge.sh
    
        # start hostapd
        hostapd /etc/hostapd.conf -B
        # set wlan new ip
        #ifconfig $wlanx 192.168.0.1
        # start udhcpd, must set $wlan static ip addr before start udhcpd
        #udhcpd /etc/udhcpd.conf 
        # get ip from dhcp server
        udhcpc -i br0 -n
    fi
    
    echo 'wifi ap shell exit'
    
    

    NAT方式建立热点:

    这种方式试的时候失败了,似乎是arm不支持

    start NAT

    sysctl net.ipv4.ip_forward=1

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

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

    上面这个命令一直失败,似乎是iptables不支持

    下面是一个shell脚本,以NAT方式启动热点,因为不支持,没测试过

    #!/bin/sh
    
    # Check that the /etc/udhcpd.conf file exists and can be executed
    if [ ! -x /usr/sbin/hostapd ]
    then
        echo "/usr/sbin/hostapd no exist or can't execute"
        exit 0
    fi
    
    # check network card wlanX
    ifconfig -a|grep wlan > /dev/null
    if [[ $? -ne 0 ]]
    then
        echo no device wlanX
        exit 0
    fi
    # Gets the full name of the wlan and assigns it to wlanx
    wlanx=`ifconfig -a|grep wlan|awk '{print $1}'`
    if [[ $? -ne 0 ]]
    then
        echo failed to get device wlanX name
        exit 0
    fi
    
    # Check that the /etc/hostapd.conf file exists and can be write
    if [ ! -w /etc/hostapd.conf ]
    then
        echo "/etc/hostapd.conf no exist or can't write"
        exit 0
    fi
    
    # Check that the /etc/udhcpd.conf file exists and can be write
    if [ ! -w /etc/udhcpd.conf ]
    then
        echo "/etc/udhcpd.conf no exist or can't write"
        exit 0
    fi
    
    # network card configure file: /etc/network/interfaces
    #busybox sed -i "s/eth0/br0/g" /etc/network/interfaces
    #busybox sed -i "s/auto wlan0/#auto wlan0/g" /etc/network/interfaces
    #busybox sed -i "s/iface wlan0 inet dhcp/#iface wlan0 inet dhcp/g" /etc/network/interfaces
    
    # check command
    if [ "$1" != "start" -a "$1" != "stop" -a "$1" != "restart" ]
    then
        echo paramter error.only accept start/stop/restart.
    fi
    
    # Close all related programs
    if [ "$1" = "stop" -o "$1" = "restart" -o "$1" = "start" ]
    then                                                                            
        echo "Stopping the hostapd and udhcpd and wpa_supplicant : "
        killall hostapd >/dev/null 2>&1
        killall udhcpd >/dev/null 2>&1
        killall wpa_supplicant > /dev/null 2>&1
    fi
    
    if [ "$1" = "start" -o "$1" = "restart" ]
    then
        # /etc/hostapd.conf
        echo "Starting the hostapd and udhcpd : "
        wlan_old=`cat /etc/hostapd.conf|grep '^interface'`
        wlan_new="interface="$wlanx
        busybox sed -i "s/$wlan_old/$wlan_new/g" /etc/hostapd.conf
    
        # /etc/udhcpd.conf
        wlan_old=`cat /etc/udhcpd.conf|grep '^interface'`
        wlan_new="interface    "$wlanx"    #default: eth0"
        busybox sed -i "s/$wlan_old/$wlan_new/g" /etc/udhcpd.conf
    
        #start bridge eth0
        ifconfig eth0 0.0.0.0
        ifconfig $wlanx 0.0.0.0
        # Delete possible Bridges
        brctl delbr br0 >/dev/null 2>&1
    
        # Check the status of network card,Network cable plug status
        #ifplugd -I -i eth0 -d 0 -t 0 -r /usr/sbin/auto_bridge.sh
        ifplugd -I -i eth0 -d 0 -t 0 -r `udhcpc -i eth0 -n`
    
        # start hostapd
        hostapd /etc/hostapd.conf -B
        # set wlan new ip
        ifconfig $wlanx 192.168.0.1
        # start udhcpd, must set $wlan static ip addr before start udhcpd
        udhcpd /etc/udhcpd.conf 
    
        # start NAT
        sysctl net.ipv4.ip_forward=1
        #echo 1 > /proc/sys/net/ipv4/ip_forward
        iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    fi
    
    echo 'wifi ap shell exit'
    
    

    参考:

    http://w1.fi/

    http://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf

    http://hantianliliang.blog.sohu.com/304891332.html

    http://hantianliliang.blog.sohu.com/304879882.html

    相关文章

      网友评论

          本文标题:arm使用hostapd创建热点

          本文链接:https://www.haomeiwen.com/subject/jznetctx.html