最近在搭建ATC运行环境,其中需要建立linux无线热点,因此在网上找到了教程并实践,遇到一些问题教程里可能没写的,这里补充一下
教程源于http://my.oschina.net/eechen/blog/227230,略有修改
1、在VirtualBox安装Ubuntu桌面版
note:我最初使用的是Ubuntu的server版,但是在配置hostapd并运行时会报错
hostapd: nl80211: Driver does not support authentication/association or connect commands
谷歌了几下后也没有完全解决这个问题,所以更换了桌面版
2、使用USB无线网卡(市面上这些免费wifi都行),在virtualbox的设置里把USB无线网卡给虚拟机使用
3、进入虚拟机ubuntu,这时在终端里输入lsusb,查看是否读到了这个网卡
4、终端里输入iwlist,查看该网卡是否支持无线接入功能
5、为了要创建一个wifi热点,我们需要三个大步骤,首先是DHCP服务器,它用来使手机在接入这个热点时能够获取ip地址,然后是hostapd,这个组件用于连wifi时输入密码,也就是认证,最后是转发,我们需要把热点接收到的数据都转发到另一个连接外网的网卡上,这样才能让连接到热点的手机正常上网。
6、
sudo apt-get install hostapd isc-dhcp-server 安装hostapd和dhcpd
7、sudo nano /etc/hostapd/hostapd.conf配置热点的ssid以及认证的相关信息
interface=wlan0 //使用的无线网卡接口名称 driver=nl80211 //这里基本是固定的,是驱动接口 ssid=YOUR_AP_NAME //设置热点的名称 hw_mode=g channel=10 macaddr_acl=0 auth_algs=3 wpa=2 //从这开始都是用来设置认证的,如果去掉这些设置,热点就是没有密码的 wpa_passphrase=YOUR_AP_PASSWORD wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP CCMP rsn_pairwise=TKIP CCMP
8、sudo nano /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; option domain-name-servers 8.8.8.8;//这里与源教程中不同,我最初使用192.168.0.1这个网关地址作为dns地址时,域名解析请求并没有被转发,导致手机不能打开网页,之后改成了公网的dns就可以了,8.8.8.8是谷歌的,也可以换成其他的,比如公司的dns会更快一点 }9、在个人的目录下编写启动和停止脚本,nano /home/ zhangshuai /hostapd/ap-start.sh
#!/bin/bash# 开启内核IP转发 bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward" # 开启防火墙NAT转发(如果本机使用eth0上网,则把ppp0改为eth0,可以过ifconfig查看那个分配了公网ip的网卡名称,一般直接分配ip的就是eth0,拨号连接的就是ppp0) iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE # 关闭NetworkManager对无线网卡的控制 nmcli nm wifi off # 设置并启动无线网卡 ifconfig wlan0 192.168.0.1 netmask 255.255.255.0 # 解锁无线设备,可以用rfkill list查看解锁结果. rfkill unblock wlan # 睡眠6秒,待rfkill解锁生效 sleep 6s # 启动dhcpd和hostapd,如果hostapd无法启动请查看日志hostapd.log,查看这两个进程 ps -ef|egrep "dhcpd|hostapd"nohup hostapd /etc/hostapd/hostapd.conf >/home/zhangshuai/hostapd/hostapd.log 2>&1 &dhcpd wlan0 -pf /var/run/dhcpd.pidps -ef|head -n1 && ps -ef| grep "dhcpd|hostapd"
nano /home/zhangshuai/hostapd/ap-stop.sh
#!/bin/bash killall hostapd dhcpd bash -c "echo 0 > /proc/sys/net/ipv4/ip_forward" ifconfig wlan0 down
10、为ap_start.sh和ap_stop.sh加上运行权限,我就直接chmod 777 *
11、运行./ap_start.sh启动热点,运行./ap_stop.sh关闭热点