配置Linux无线路由器
将Linux配置为无线路由器。使用hostapd,可以配置无线网卡为AP模式。
这里使用buildroot来生成这个工具。Wi-Fi模块使用的是 rt8188eus。
1. 内核配置
2. buildroot配置
开启 rt8188eus 驱动
3. 启动hostapd
系统启动后,会自动加载无线网卡驱动,生成wlan0设备。
可以通过网桥方式上网,也可以通过路由模式上网。这里暂时没有配置NAT,因此使用网桥方式上网。
3.1 创建网桥
brctl addbr br0 # 创建网桥
brctl addif br0 eth0 # 将eth0加入到网桥br0中
ip link set eth0 promisc on # eth0网卡开启混杂模式:接受和发送任意端口地址的数据包
这里eth0是作为当前设备的 WAN口,可以dhcp一个IP地址:
udhcpc -i br0
# udhcpc -i br0
udhcpc: started, v1.36.1
udhcpc: broadcasting discover
udhcpc: broadcasting select for 192.168.47.193, server 192.168.47.254
udhcpc: lease of 192.168.47.193 obtained from 192.168.47.254, lease time 1800
adding dns 192.168.47.1
这里上级网络有DHCP server,可以直接获取到一个IP地址。在手机连接到AP热点后,就会通过这个DHCP server获取到IP地址。
3.2 修改 /etc/hostapd.conf
修改 hostapd.conf
:
mv /etc/hostapd.conf /etc/hostapd.conf.backup
touch /etc/hostpad.conf
添加内容:
country_code=CN
interface=wlan0
bridge=br0
ssid=Example-Wifi-Name
hw_mode=g
channel=11
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
名称是 Example-Wifi-Name
,密码是 12345678
。
3.3 启动hostapd
hostapd /etc/hostapd.conf -B
启动后,会作为一个后台进程运行。
# hostapd /etc/hostapd.conf -B
rfkill: Cannot open RFKILL control device
nl80211: Could not re-add multicdevice wlan0 entered promiscuous mode
ast membership for vendor events: -2 (Interrupted system call)
wlan0: interface state UNINITIALIZED->COUNTRY_UPDATE
# ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
这里要注意,必须要开启 dhcpd,否则,手机连接这个热点时,无法DHCP到IP地址,会导致连接不上。 由于是使用桥接模式进行上网,因此,DHCP server由上级路由设备提供。这里对应的是WAN口的上级设备。
4. 连接AP
测试手机与本机的连通:
测试手机与上级设备的连通:
这里只要上级设备出来的这个eth0能够上网,那么手机就可以正常上网了。