1.文件系统有 hostapd 工具,如没有需自行移植
2.文件系统有 udhcpd 工具,如没有需自行移植
1)打开 hostapd 配置文件,修改配置内容:
vi /etc/hostapd.conf:
ctrl_interface=/var/run/hostapd
#change wlan0 to your wireless device
interface="wlan0"//这个是网卡设备节点,修改成 wlan0
driver=nl80211
ssid="test"//热点名称,可自定义
channel=1
# ....../............ macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=3
wpa_passphrase="12345678" //热点的密码,自定义
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
2)打开分配网络 ip 的配置文件(这里粘贴部分):
vi /etc/udhcpd.conf(只需修改开头部分即可)
# Sample udhcpd configuration file (/etc/udhcpd.conf)# Values shown are defaults
# The start and end of the IP lease block
start 192.168.0.20 //自动分配 ip 的开始范围
end 192.168.0.254 //自动分配 ip 的结束范围
# The interface that udhcpd will useinterface
wlan0 //自动分配的网卡设备节点
3)配置完这两个文件后开始创建热点:
hostapd -B /etc/hostapd.conf -f /var/log/hstap.log
4)设置 wlan0 的 ip
ifconfig wlan0 192.168.0.2
5)启动自动分配 ip 后台,为连接上的设备分配 ip
udhcpd -f /etc/udhcpd.conf &
6)执行以下发送热点命令脚本send_ap.sh
#!/bin/sh
ifconfig wlan0 down
ps -ef | grep hostapd | grep -v grep | awk '{print $1}' | xargs kill -9
ps -ef | grep wpa_supplicant | grep -v grep | awk '{print $1}' | xargs kill -9
ps -ef | grep udhcpd | grep -v grep | awk '{print $1}' | xargs kill -9
hostapd -B /etc/hostapd.conf -f /var/log/hostap.log
ifconfig wlan0 192.168.0.2
udhcpd -f /etc/udhcpd.conf &
然后可以用手机或者其他 wifi 设备连接 8723 发送的 ap 热点“test”,密码 12345678
7)以上几步仅仅保证了,AP服务,你可以连接、有了dhcp你可以获得动态IP,但是如何保证设备能通过这个无线网卡来上网呢,这需要配置,将无线网卡wlan0的设备传输数据转发到有线网卡eth0上面。所以需要配置一下路由转发规则,打通数据传输的链路。
执行以下路由转发脚本iptables.sh
#! /bin/sh
#设置linux系统允许ip包转发
echo "1" > /proc/sys/net/ipv4/ip_forward
#清除原设置
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
#设置filter table默认原则
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
#启用NAT功能
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
进行路由转发时如果iptables出错,需要进行相关的内核配置:
Networking —->
Networking options —->
[*] Network packet filtering (replaces ipchains) —>
Core Netfilter Configuration —>
<*> Netfilter Xtables support (required for ip_tables)
IP: Netfilter Configuration —>
<*> Connection tracking (required for masq/NAT)
<*> IP tables support (required for filtering/masq/NAT)
<*> IP range match support
<*> Packet filtering
<*> REJECT target support
<*> Full NAT
Type : tristate │
│ Prompt: iptables NAT support │
│ Location: │
│ -> Networking support (NET [=y]) │
│ -> Networking options │
│ -> Network packet filtering framework (Netfilter) (NETFILTER [=y]) │
│ -> IP: Netfilter Configuration │
│ (1) -> IP tables support (required for filtering/masq/NAT) (IP_NF_IPTABLES [=y])
CONFIG_IP_NF_NAT
│ Location: │
│ -> Networking support (NET [=y]) │
│ -> Networking options │
│ -> Network packet filtering framework (Netfilter) (NETFILTER [=y]) │
│ (1) -> IP: Netfilter Configuration
进行路由转发时如果nat出错,需要进行相关的内核配置:
另:也可不用udhcp,选择安装配置 isc-dhcp-server服务:
1. sudo apt-get install isc-dhcp-server
2. 安装isc-dhcp-server完毕后,在/etc/dhcp目录下会拷入一个配置文件dhcpd.conf,现在我们编辑这个文件,其它的参数设置我们不用理会,我们只是先根据我们的要求使用配置文件的subnet关键字加入一个子网的定义,如下:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.2 192.168.1.11;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
option domain-name-servers home;
}
3. 在/etc/default/isc-dhcp-server中添加dhcp server监听的端口:
INTERFACES="wlan0"
4. 然后重启isc dhcp server:
sudo /etc/init.d/isc-dhcp-server restart