大家好,又见面了,我是你们的朋友全栈君。
由于要共享无线给android,虽然cm6.1可以用ad-hoc,但感觉android连ad-hoc要比连ap耗电。本来想看看有什么usb无线网卡可以在linux下用软ap,顺便用来替换掉上网本的无线网卡,我的上网本在linux下的无线驱动太差劲(可恨的rtl8187),连ad-hoc都不支持。结果在http://linuxwireless.org上发现我台式机的无线网卡的ath5k驱动很完善,可以用软ap,ath5k太可爱了。回来搞了一个晚上加一个中午,终于用hostapd,dnsmasq实现了软ap。可怜的netmanager要报废咯~
首先,系统是U10.10,安装软件:
sudo apt-get install hostapd dnsmasq
(1)为无线添加路由规则:
sudo iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -s 10.1.1.0/24 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -d 10.1.1.0/24 -m conntrack –ctstate ESTABLISHED,RELATED -i eth0 -j ACCEPT
10.1.1.0/24是我设置的地址段,可以自己改。
若要记录下路由的情况可以加如下语句:
sudo iptables -A INPUT -m conntrack –ctstate NEW -p tcp –dport 80 -j LOG –log-prefix “NEW_HTTP_CONN: “
其中NEW_HTTP_CONN是日记中的标识。
然后把现在iptables的规则写进/etc/iptables.rules:
sudo sh -c “iptables-save > /etc/iptables.rules”
配置interface文件,使每次eth0启动时自动写规则:
auto eth0
iface eth0 inet dhcp
pre-up iptables-restore < /etc/iptables.rules
post-down iptables-save > /etc/iptables.rulse
(2)配置hostapd.conf
interface=wlan0
bridge=br0 #貌似这个没有用
driver=nl80211
ssid=fortimefan
hw_mode=g
channel=11
dtim_period=1
rts_threshold=2347
fragm_threshold=2346
macaddr_acl=0
auth_algs=3
ieee80211n=0
(3)配置/etc/dnsmasq.conf:
interface=wlan0
bind-interfaces #这个是只监听wlan0,没有之会检测所有卡
except-interface=lo
dhcp-range=10.1.1.10,10.1.1.110,6h #设置dhcp地址范
#address=/#/10.1.1.1 #这个会把#(代表所有网址)的dns到10.1.1.1这个地址
(4)dnsmasq与named
一般情况下bind的named会占了53端口,然后dnsmasq会启动不了,所以我用killall named来杀了named再启动dnsmasq。
附自动链接代码:
#! /bin/sh
case “$1” in
start)
killall named
killall hostapd
linux1x -k
ifconfig wlan0 10.1.1.1
hostapd /home/fan/.hostapd.conf &>/dev/null &
/etc/init.d/dnsmasq restart
linux1x -d #校园网h3c,杀了named后好像会出问题,重连一下h3c
;;
esac
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143642.html原文链接:https://javaforall.cn