cht電腦資訊Linux
adm Find login register

使用 Ubuntu 12.04/12.10/13.04 當作 wifi hotspot / AP / 無線IP 分享器

eliu
1 使用 Ubuntu 12.04/12.10/13.04 當作 wifi hotspot / AP / 無線IP 分享器
Promote 0 Bookmark 02013-07-08quote  

網路架構

client(NAT IP:10.10.0.x)  → WIFI → Linux ppp0(VDSL, ADSL dialup,3G) → internet

其實目前很多目前在賣的 wifi hotspot / AP 就是用小型的 Linux 去弄的,用 desktop Linux 如 Ubuntu 等當然也是可以


首先要選 USB wifi 無線網路卡,要 Linux 有支援 & 有支援 master mode 的,這邊是用 

Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter chip 的 GM5「海盜王」, 選一個功率較強的,可以幫 gcin Windows 打廣告的範圍比較大 Laughing

先 install 需要的 .deb

sudo apt-get install isc-dhcp-server hostapd

DHCP 是用來 assign IP address & DNS IP 的 server

hostapd 是 WIFI AP/hostspot 用來回應列出清單 & 檢查 login 的 daemon process

sudo ifconfig wlan0 10.10.0.1

首先,用 ifconfig 把 USB 網路卡設定一個IP,10.10.x.x 是一個合法可用在 NAT 的 IP address block 


如果有用 shorewall iptables 防火牆,可能要加上底下的設定

/etc/shorewall/interfaces
net     wlan0   detect

/etc/shorewall/rules
ACCEPT net:10.10.0.0/16 all tcp -
ACCEPT net:10.10.0.0/16 all udp -
ACCEPT net:10.10.0.0/16 all icmp -


手動新增 NAT 部分,不清楚如果用 shorewall,這個 rules 要怎麼寫

NAT
iptables -t nat -F
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE


DHCP 的部分,168.95.192.1, 168.95.1.1 是 hinet 的,目前 dhcpd 目前似乎還不會從 /etc/resolv.conf 讀 DNS servers IP。

/etc/dhcp/dhcpd.conf
subnet 10.10.0.0 netmask 255.255.255.0 {
range 10.10.0.25 10.10.0.50;
option domain-name-servers 168.95.192.1, 168.95.1.1;
option routers 10.10.0.1;
}

sudo start isc-dhcp-server


hostapd 的部份 

/etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=your_AP_name (願意設定成 gcin Windows/Linux 打廣告更好 XD)
hw_mode=g
channel=11
wpa=1
wpa_passphrase=your_password
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
wpa_ptk_rekey=600

我們可以手動測試

sudo hostapd /etc/hostapd/hostapd.conf

執行 hostapd 之後,USB 網卡 的燈號閃不停是正常的,如果改用 hostapd -dd 執行還可以看到一堆 error,這也是正常的。

這時候 hotspot/AP 應該就可以使用了。要注意的是,如果用 ctrl-c 把 hostapd 砍掉,需要重新執行 sudo ifconfig wlan0 10.10.0.1

把 hostapd 設定成 service

/etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"


-- Reference --

edited: 18
eliu
2 把 AP 設定成導到固定網頁
Promote 0 Bookmark 02012-12-19quote  

底下的的 iptables 的 rule是讓 DNS 可以用,其餘的全部導到本站,連不上其他的網站,用來打廣告,這樣會不會太惡劣。Laughing

NAT

iptables -i wlan0 -D INPUT -p udp ! --dport 53 -j DROP > /dev/null 2>&1
iptables -i wlan0 -I INPUT -p udp ! --dport 53 -j DROP
iptables -t nat -F
iptables -t nat -A PREROUTING -i wlan0 -p tcp ! --dport 53 -j DNAT --to-destination 220.135.236.186:80
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

 

把 hostapd 設定成沒有密碼,這樣別人才可以進去。要注意的是, hostapd 從有密碼變成沒密碼,Ubuntu 等使用 NetworkManager 來連線 wifi 的用戶端需要重新開機,否則連不上。

hostapd-ad.conf

interface=wlan0
driver=nl80211
ssid=gcin Windows/Linux
hw_mode=g
channel=11
wpa=0

edited: 3
eliu
3 Atheros Communications Inc. AR928X 當 AP/hotspot
Promote 0 Bookmark 02012-12-29quote  

在 Acer 5738zg 的

無線網路 Atheros Communications Inc. AR928X Wireless Network Adapter (PCI-Express) (rev 01)

也可以。

但是我犯了一個錯,如果有用 Network Manager 時必須啟用無線網路(Enable Wireless Network),但是不要連線。沒有啟用會出現

sudo ifconfig wlan0 10.10.0.1
SIOCSIFFLAGS: Operation not possible due to RF-kill

的錯誤 hostapd 也沒辦法執行。

3G USB 網路卡是被當成 eth1,是用 ppp0 連線到 3G,所以基本上分享 3G USB 網路卡的方法與 ADSL/VDSL 網路撥接的方式是一樣的。

edited: 1
eliu
4 Vista DHCP 失敗
Promote 0 Bookmark 02013-01-19quote  

之前 Windows Vista 明明可以連線到這個 AP的,今天突然就不行了,試很多次才成功一次,後來終於找到原因,用 ipconfig 看 IP bind 到一個奇怪的 IP,沒有 DHCP 成功 (10.10.0.x)。google vista dhcp wifi 之後,找到一個 patch, 似乎有成功 fix 這個問題。

從某些路由器或某些非 Microsoft DHCP 伺服器,Windows Vista 無法取得 IP 位址

在 相同的 NB,用 Ubuntu 12.10 則完全沒有問題。

eliu
5
Promote 0 Bookmark 02014-09-17quote  

現在沒在用了,因為有點麻煩。我現在用一般的 IP 分享器。要用的時候就開電源,不用就關掉。因為有家裡其他的人要用,需要簡單一點。

要分享3G/LTE 網路,用手機裏面的 hotspot 熱點分享比較簡單,不用像3G/LTE modem 需要換卡,也不會造成手機無法接聽電話。

cht電腦資訊Linux
adm Find login register
views:37125