迷思
這幾天一直想著對(duì)BananaPro上增加輸入和輸出設(shè)備,折騰來(lái)折騰去的最后發(fā)現(xiàn)是自己的思路出問(wèn)題了。作為上位除了做媒體中心之時(shí)需要輸入輸出設(shè)備,貌似大多數(shù)情況下是不需要這些的,它只是一臺(tái)提供服務(wù)超小型服務(wù)器將它當(dāng)作普通PC來(lái)用確在是一種思路上誤區(qū)。
我們本來(lái)就擁有各種的輸入輸出設(shè)備,例如iMac, iPad, iPhone 作為交互與顯示的終端它們應(yīng)該首選而不是在上位機(jī)上加個(gè)LCD。我只需要將它作為一個(gè)中繼器鏈接我的所有設(shè)備,同時(shí)提供一些我所必備的服務(wù)就好了。
工作原理
- 啟動(dòng) WIFI 訪問(wèn)點(diǎn)和廣播頻道
- 啟用DHCP 服務(wù)為接入設(shè)備動(dòng)態(tài)分配IP
- 建立NAT 將 WIFI 的連接請(qǐng)求數(shù)據(jù)轉(zhuǎn)發(fā)至網(wǎng)卡
配置過(guò)程
在安裝之前先更新安源
sudo apt-get update
安裝必備的工具包 hostadp
和 udhcpd
sudo apt-get install hostadp udhcpd
配置 DHCP. 修改 /etc/udhcpd.conf
配置文件的內(nèi)容
start 192.168.42.2 # This is the range of IPs that the hostspot will give to client devices.
end 192.168.42.20
interface wlan0 # The device uDHCP listens on.
remaining yes
opt dns 8.8.8.8 4.2.2.2 # The DNS servers client devices will use.
opt subnet 255.255.255.0
opt router 192.168.42.1 # The Pi's IP address on wlan0 which we will set up shortly.
opt lease 864000 # 10 day DHCP lease time in seconds
將 DHCP 服務(wù)的默認(rèn)配置 /etc/default.udhcpd
:
DHCPD_ENABLED="no"
修改為
#DHCPD_ENABLED="no"
無(wú)線網(wǎng)卡作為中繼器時(shí)需要使用靜態(tài)地址:
sudo ifconfig wlan0 192.168.100.1
wlan0
是無(wú)線網(wǎng)卡的設(shè)備ID,可能你的設(shè)備ID會(huì)是其它的值,請(qǐng)先用 iwconfig
確認(rèn)無(wú)線網(wǎng)卡的設(shè)備ID。
如果要將上述配置添加到起動(dòng)項(xiàng)中,可以編輯 /etc/network/interfaces
并將 iface wlan0 inet dhcp
替換為:
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.100.1
netmask 255.255.255.0
配置 HostAPD
接下來(lái)就是配置WIFI 熱點(diǎn)服務(wù)了,打開(kāi) /etc/hostapd/hostapd.conf
文件,并將內(nèi)容修改如下:
interface=wlan0
driver=nl80211
ssid=My_AP
hw_mode=g
channel=6
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
這里有幾個(gè)參數(shù)是需要說(shuō)明的:
-
ssid
是 AP 在連接設(shè)備中所顯示的可用接入點(diǎn)名, -
wpa_passphrase
連接密碼
由于我們需要AP能在系統(tǒng)啟動(dòng)時(shí)就自動(dòng)生效,hostadp 是作為服務(wù)運(yùn)行的,此時(shí)我們需要將 hostadp 的默認(rèn)配置文件的指向聲明一下。
編輯 /etc/default/hostapd
配置文件,將
#DAEMON_CONF=""
修改為剛才編輯的配置文件的絕對(duì)路徑
DAEMON_CONF="/etc/hostapd/hostapd.conf"
配置NAT
NAT (Network Address Translation) 也叫做網(wǎng)絡(luò)掩蔽或者IP掩蔽(IP masquerading),是一種在IP封包通過(guò)路由器或防火墻時(shí)重寫源IP地址或目的IP地址的技術(shù)。這種技術(shù)被普遍使用在有多臺(tái)主機(jī)但只通過(guò)一個(gè)公有IP地址訪問(wèn)因特網(wǎng)的私有網(wǎng)絡(luò)中。根據(jù)規(guī)范,路由器是不能這樣工作的,但它的確是一個(gè)方便并得到了廣泛應(yīng)用的技術(shù)。當(dāng)然,NAT也讓主機(jī)之間的通信變得復(fù)雜,導(dǎo)致通信效率的降低。
我們配置NAT的原因是,由中繼器必定是具有兩個(gè)網(wǎng)卡(本例中與內(nèi)部設(shè)備連接為WIFI網(wǎng)卡,與路由器直連的是一個(gè)普通千兆網(wǎng)卡),這兩個(gè)網(wǎng)卡是處于兩個(gè)不同網(wǎng)段的,普通網(wǎng)卡的地址是從路由器的DHCP分配獲得的,那么就可以使得中繼器本身可以訪問(wèn)互聯(lián)網(wǎng),而WIFI網(wǎng)卡是與其它的設(shè)備連接是靜態(tài)地址,而且通過(guò)這個(gè)網(wǎng)卡向其它的連接設(shè)備分配動(dòng)態(tài)IP,那么這兩個(gè)網(wǎng)段之間是不會(huì)互通的,那么如果希望使得通過(guò)中繼連接的設(shè)備也可以連接到互聯(lián)網(wǎng),那么就得將WIFI連接設(shè)備上發(fā)來(lái)的請(qǐng)求轉(zhuǎn)發(fā)至普通網(wǎng)卡上,再通過(guò)該網(wǎng)卡連接到互聯(lián)網(wǎng)。也就是上述所說(shuō)的NAT結(jié)構(gòu)。接下來(lái)我們就需要配置NAT的地址表, 打開(kāi) /etc/sysctl.conf
配置文件,在文件最后一行加入:
net.ipv4.ip_forward=1
然后,在內(nèi)核啟動(dòng) NAT:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
接著,重新打開(kāi) /etc/network/interfaces
網(wǎng)絡(luò)接口配置文件,添加:
up iptables-restore < /etc/iptables.ipv4.nat
啟動(dòng)服務(wù)
至此已基本配置成功,下面就是啟動(dòng) hostapd
和 udhcpd
服務(wù)了:
sudo service hostapd start
sudo service udhcpd start
最后我將需要將這兩個(gè)服務(wù)在系統(tǒng)啟動(dòng)時(shí)一并啟動(dòng):
sudo update-rc.d hostapd enable
sudo update-rc.d uphcpd enable
重啟,大功告成!這個(gè)配置過(guò)程在 Lubuntu 和 Raspberry 上都測(cè)試成功