CentOS下做无线AP热点

自己的笔记本是装了个CentOS的系统,然后上面跑了个Vmware,又装了Win10,然后接两个屏幕,小的是linux跑gnome,大的是Win10屏幕,这样干活的。

路由更是混乱无比,网卡有tun0 / wlan0 / eth0 ,没有弄br0,这是大前提。如果弄br0的话,得改一堆东西。

这样的话wlan0无线网卡不联网就空闲了,于是想把无线网卡做AP共享出来,给手机用,做法真是比较复杂,弄了2天才弄好,网上的教程都是莫名啊,不太适合CentOS。

其实就是安装hostpapd,把做法记录一下:

首先不想改动已有的网络,那么桥接这条路就彻底断了,只能在无线网卡上做DHCP+NAT一条路了。

先检查网络:

1lspci -k | grep -A 3 -i "network"  
203:00.0 Network controller: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter (rev 01)  
3    Subsystem: Lite-On Communications Inc Device 0662
4    Kernel driver in use: ath9k
5    Kernel modules: ath9k

看到自己的网卡驱动是ath9k,再看看模块

1modinfo ath9k | grep 'depend'  
2depends:        mac80211,ath9k_hw,ath9k_common,cfg80211,ath  

mac80211, cfg80211看到这个就放心了,driver就是nl80211

再确认一下,里面有* AP 字样这样就没问题了:

 1iw list|grep -A8 "Supported interface modes:"  
 2    Supported interface modes:
 3         * IBSS
 4         * managed
 5         * AP
 6         * AP/VLAN
 7         * WDS
 8         * monitor
 9         * P2P-client
10         * P2P-GO

首先看看自己的无线网卡物理地址,30:10:B3:6A:22:AA记下来

1ifconfig -a  
2......
3wlan0     Link encap:Ethernet  HWaddr 30:10:B3:6A:22:AA  
4......

再看看自己的缺省路由网卡,是虚拟网卡tun0,也记下来

1route -n  
2......
30.0.0.0         10.10.0.9       0.0.0.0         UG    0      0        0 tun0  
4......

下载hostapd并安装,如果提示libnl没装,那就补装一下

1wget http://mirrors.ustc.edu.cn/epel/6/x86_64/hostapd-2.0-7.el6.x86_64.rpm  
2yum -y install hostapd-2.0-7.el6.x86_64.rpm  

禁止掉NetworkManager对无线网卡的管理

1vi /etc/NetworkManager/NetworkManager.conf  
2......
3#在文件最后加两行
4[keyfile]
5unmanaged-devices=mac:30:10:B3:6A:22:AA  

然后瞬间大家就可以在gnome的桌面网卡里看到无线网卡失联了,这就对了!

编辑/etc/hostapd/hostapd.conf

 1vi /etc/hostapd/hostapd.conf  
 2interface=wlan0  
 3driver=nl80211  
 4ssid=dontMessWithVincentValentine  
 5hw_mode=g  
 6channel=6  
 7macaddr_acl=0  
 8auth_algs=1  
 9ignore_broadcast_ssid=0  
10wpa=3  
11wpa_passphrase=KeePGuessinG  
12wpa_key_mgmt=WPA-PSK  
13wpa_pairwise=TKIP  
14rsn_pairwise=CCMP  

注意,上面hwmode是无线工作的模式,g、b、a都可以,一般是g,channel是信道,找个没多少人用的信道最好,11、6、3、1都可以。interface就是无线网卡了,wlan0。ssid和wpapassphrase按你的需求来设置即可。

ok,然后运行:

1rfkill unblock all  

rfkill是控制无线和蓝牙的开关,我们放行一切,否则hostapd无法启动。

现在,启动hostapt测试一下

1hostapd /etc/hostapd/hostapd.conf  

没有意外的话,就应该成功了。但这只是做了一半,首先改改dnsmasq,给无线网卡分配地址

1vi /etc/dnsmasq.conf  
2interface=wlan0  
3bind-interfaces  
4listen-address=192.168.0.1  
5#no-dhcp-interface= 
6dhcp-range=192.168.0.2,192.168.0.224,12h  
7dhcp-option=3,192.168.0.1  
8dhcp-option=6,223.5.5.5  

注意,我的dnsmasq.conf就只有这么7行,没有别的了。里面很简单,首先dhcp是放到了wlan0上并分配地址,dhcp-option中3表示网关,gateway;6表示dns,这里设置的是阿里的公共dns 223.5.5.5。

剩下的我们就写个脚本来完成吧: 内容其实就是

  • 解除无线block
  • 配置wlan0的ip为192.168.0.1
  • 启动dnsmasq
  • 做iptable的nat 注意里面我是用的tun0,如果你的缺省路由是eth0,改了即可。
 1vi /usr/local/bin/initSoftAP.sh  
 2#!/bin/bash
 3
 4start() {  
 5rfkill unblock all  
 6ifconfig wlan0 up 192.168.0.1 netmask 255.255.255.0  
 7sleep 2
 8
 9if [ -z "$(ps -e | grep dnsmasq)" ]  
10then  
11 dnsmasq
12fi
13
14#Enable NAT
15iptables -F  
16iptables -X  
17iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
18
19#Thanks to lorenzo
20#Uncomment the line below if facing problems while sharing PPPoE, see lorenzo's comment for more details
21#iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
22
23sysctl -w net.ipv4.ip_forward=1
24
25#start hostapd
26hostapd -B /etc/hostapd/hostapd.conf  
27}
28
29stop() {  
30service iptables stop  
31service dnsmasq stop  
32pkill hostapd  
33/sbin/ip link set down dev wlan0
34}
35
36case $1 in  
37        start)
38                start
39        ;;
40        stop)
41                stop
42        ;;
43        *)
44        echo "Usage: $0 {start|stop}"
45        exit 2
46esac  

ok, 这么就搞定了。

1#启动
2/usr/local/bin/initSoftAP.sh start
3
4#停止
5/usr/local/bin/initSoftAP.sh stop

给老旧的CentOS系统设置yum源
Ext4分区的缩小
comments powered by Disqus