參考: 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