Linux制作wifi热点/无线路由
Posted 大海中的一粒沙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux制作wifi热点/无线路由相关的知识,希望对你有一定的参考价值。
参考: http://blog.csdn.net/u011641885/article/details/49512199
1.工具/原料
有无线网卡(usb接口的RT3070无线网卡)、有线网卡的台式机
安装linux操作系统,我使用的是ubuntu14.04
2.方法/步骤
a.检查确认无线网卡支持master模式
执行命令:iw list
在命令执行结果中如果看到了下面的内容(AP, AP/VLAN),就说明这张网卡是支持用于ap做路由的
Supported interface modes:
* IBSS
* managed
* AP
* AP/VLAN
* monitor
* mesh point
b.安装hostapd
我是手动编译的, 目录在/home/edward/opt/edward/hostapd/
修改hostapd配置文件vim /etc/dhcp/dhcpd.conf
将此文件改成如下:
ctrl_interface=/var/run/hostapd
interface=wlan0
driver=nl80211
ssid=emma
hw_mode=g
channel=10
macaddr_acl=0
auth_algs=3
wpa=2
wpa_passphrase=fah191430
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=TKIP CCMP
AP热点名称为emma, 密码为fah191430
然后开启hostapd, 进入到/home/edward/opt/edward/hostapd/hostapd目录
sudo ./hostapd -B /etc/hostapd.conf
发现有以下错误:
Configuration file: /etc/hostapd/hostapd.conf
nl80211: Could not configure driver mode
nl80211: deinit ifname=wlan0 disabled_11b_rates=0
nl80211 driver initialization failed.
wlan0: interface state UNINITIALIZED->DISABLED
wlan0: AP-DISABLED
wlan0: CTRL-EVENT-TERMINATING
hostapd_free_hapd_data: Interface wlan0 wasn‘t started
解决办法:
改变NetworkManager里的状态,关闭wifi,同时软锁定
sudo nmcli nm wifi off
sudo rfkill unblock wlan
然后再启动hostapd服务
sudo hostapd -B /etc/hostapd.conf
c.安装配置dhcp服务器
sudo apt-get install isc-dhcp-server
修改配置文件/etc/dhcp/dhcpd.conf
option domain-name-servers 218.85.157.99;
subnet 192.168.1.0 netmask 255.255.255.0 { //注意:这里192.168.1.0不能写成192.168.1.1
range 192.168.1.77 192.168.1.250;
option routers 192.168.1.3; // 网关 要写成这台机器的 wlan0 的ip
option broadcast-address 192.168.1.255;
}
启动dhcp服务器
启动前先配置网卡的IP和子网掩码
sudo ifconfig wlan0 192.168.1.3 netmask 255.255.255.0 up
sudo /etc/init.d/isc-dhcp-server restart
d.iptables配置转发规则
配置转发前需要打开linux转发功能
临时改变,重启后恢复
sudo sysctl -w net.ipv4.ip_forward=1
永久改变
vim /etc/sysctl.conf
#添加或修改这样一段:
net.ipv4.conf.default.rp_filter = 1
#然后执行命令
sysctl -p
使用 iptables 设置转发
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.1.0/24 -j ACCEPT
其中第一条表示将通过本机的转发数据包从eth0(外网)这个网卡发出去,另外两条表示只转发192.168.1.0/24这个网段过来的数据包,
这个网段正好是wlan0其它设备连上本机以后分配的网段
以上是关于Linux制作wifi热点/无线路由的主要内容,如果未能解决你的问题,请参考以下文章