Wireless Networking in the Developing World (Second Edition)

Wireless Networking in the Developing World (Second Edition)
Page144
1.将无线AP通过Masquerading/NAT与有线连入internet(作为无线网关)
2.将无线AP作为透明桥,桥接被用来做一个简单的AP或者两个无线设备的中继器。

预准备工作:
1.Wireless Tools (iwconfig, iwlist commands),目前iw有替代这些命令的趋势。
2.iptables firewall
3.dnsmasq (caching DNS server and DHCP server)

方案1: Masquerading access point(NAT方式:此方式可以保证接口名不变,启用新的网络段,正好适合我目前使用的情况)
这是最简单的方案,在linux上运行了防火墙和网关,你只需要添加无线接口。
你至少需要有一个有线的接口(如eth0)和一个无限的接口(wlan0),eth0连入了internet,wlan0提供ap功能。
iwconfig wlan0 mode Master
如果报错说明不支持access point模式,你可以尝试Ad-hoc模式
apt-get install dnsmasq
eth0使用DHCP连入internet,使用下面命令获取IP和默认网关
dhclient eth0
然后设置无线接口为Master模式并输入SSID名,关闭加密:
iwconfig wlan0 essid "my wlan" mode Master enc off
也可以开启wep加密:
iwconfig wlan0 essid "my wlan" mode Master enc 1A2B3C4D5E
或者
iwconfig wlan0 essid "my wlan" mode Master enc "s:apple"
设置wlan0一个私有子网地址,不能和eth0同段。
ifconfig wlan0 10.0.0.1 netmask 255.255.255.0 broadcast 10.0.0.255 up
为了两个地址之间的联系,我们需要在kernel中开启masquerading (NAT)
1.加载有关的kernel模块
modprobe ipt_MASQUERADE
清空防火墙规则,确保包数据不被阻塞
iptables -F
开启两接口之间的NAT功能
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
最后我们要开启kernel到两个接口之间的前向包
echo 1 > /proc/sys/net/ipv4/ip_forward
在ubuntu系统下,
vi /etc/network/options中确保
ip_forward=yes
然后/etc/init.d/network restart
开启DHCP服务器
目前为止,我们已经能访问一个叫"my wlan"的无线网络,但是只能通过手动设置IP才能进行通信,接下来我们需要让我们的AP可以为连接他的设备动态获取IP。
需要使用dnsmasq工具包,可以从
http://www.thekelleys.org.uk/dnsmasq/doc.html
获取相关信息;其配置为
vi /etc/dnsmasq.conf
interface=wlan0
dhcp-range=10.0.0.10,10.0.0.110,255.255.255.0,6h
保存之后重启:
/etc/init.d/dnsmasq restart
到此,连入该wifi热点的设备可以自动获取IP了。




方案2:透明桥AP(桥接方式:使用简单,将新增一个桥接口,本地接口使用桥接口访问网络,都在同一个网段中)

他们可以保持在同一个子网中,也就是说eth0获取的192.168.1.23;那么桥接后的接口都还是在192.168.1.段中,他们使用的是192.168.1.之前的同一个DHCP服务器分配的IP地址。桥接方式不需要使用dnsmasq工具包,但需要使用到bridge-utils工具包,主要用到里面的brctl命令
在ubuntu系统下,修改的配置文件如下:你需要将名字和IP改为你自己网络中的名字和IP
vi /etc/network/interfaces
auto br0
iface br0 inet static
address 192.168.1.2
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
pre-up ifconfig wlan 0 0.0.0.0 up
pre-up ifconfig wlan1 0.0.0.0 up
pre-up iwconfig wlan0 essid “office” mode Managed
pre-up iwconfig wlan1 essid “repeater” mode Master
bridge_ports wlan0 wlan1
post-down ifconfig wlan1 down
post-down ifconfig wlan0 down

iface br0 inet static
pre-up ifconfig wlan 0 0.0.0.0 up
pre-up ifconfig wlan1 0.0.0.0 up
pre-up iwconfig wlan0 essid “office” mode Managed
pre-up iwconfig wlan1 essid “repeater” mode Master
pre-up brctl addbr br0
pre-up brctl addif br0 wlan0
pre-up brctl addif br0 wlan1
post-down ifconfig wlan1 down
post-down ifconfig wlan0 down
post-down brctl delif br0 wlan0
post-down brctl delif br0 wlan1
post-down brctl delbr br0
开启桥
ifup -v br0
#ifconfig br0 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255
#route add default gw 192.168.1.1
查看桥信息
#brctl show br0


在看这本书之前,我已经尝试了桥接OK,以下是我使用的命令
桥接网卡的方法:
ifconfig eth0 0.0.0.0 promisc
brctl addbr br0
brctl addif br0 eth0
ifconfig mon.wlan0 0.0.0.0 promisc
brctl addif br0 mon.wlan0
./hostapd hostapd.conf -B
brctl show
ifconfig br0 up

【hostapd.conf】内容如下:
interface=wlan0
bridge=br0
driver=nl80211
ssid=bcmstb
hw_mode=g
channel=1

你可能感兴趣的:(Wireless Networking in the Developing World (Second Edition))