【玩轉開源】BananaPi R2 —— 第三篇 基於Openwrt開發一個簡單的路由器

來源:互聯網
上載者:User

      上一篇講解了R2的網口配置,這一篇我們以BananaPi R2為例子來實現一個簡單的路由器;那麼一個簡單的路由器應該具備什麼樣的功能呢?最簡單的說就是wan+lan+ap這三個功能。

      首先wan+lan的功能,R2已經預設有了,接下來我們用橋接器(bridge)的方式搭建一個無線熱點(Ap)。

  • 開啟R2上mt6625(R2上的無線晶片)的ap模式
jack@jack: wmt_loader &jack@jack: stp_uart_launcher -p /etc/firmware &jack@jack: echo A > /dev/wmtWifi &
  • 開啟後,可以看到產生了一個虛擬網口ap0
root@LEDE:/# ifconfig -aap0       Link encap:Ethernet  HWaddr 02:08:22:4A:BA:50            BROADCAST MULTICAST  MTU:1500  Metric:1          RX packets:0 errors:0 dropped:0 overruns:0 frame:0          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
  • 接下來,我們需要建立一個無線熱點出來,這裡我使用的是hostapd(soft AP)的方式去建立,在這裡我引申一下hostapd的知識:
   什麼是hostapd?我截取官網一部分解釋:hostapd is a user space daemon for access point and authentication servers. It implements IEEE 802.11 access point management, IEEE 802.1X/WPA/WPA2/EAP Authenticators, RADIUS client, EAP server, and RADIUS authentication server. The current version supports Linux (Host AP, madwifi, mac80211-based drivers) and FreeBSD (net80211).簡單說就是hostapd是一個使用者空間1的守護進程,AP(access point)遵循IEEE的部分網路和安全性通訊協定。hostapd官網:https://w1.fi/hostapd/hostapd相關資料:https://w1.fi/cgit/hostap/plain/hostapd標註1:使用者空間是相對於核心空間去區別的,我們平時的操作基本都是在使用者空間去進行的,簡單的理解就是我們平時操作的Linux系統Gui,命令列,shell指令碼,編譯啟動並執行C程式等等都是在使用者空間的行為。
  • 以下是hostapd的簡單配置:
root@LEDE:~# cat hostapd.conf interface=ap0           #網口是ap0bridge=br-lan           #橋接器是br-lanssid=BPI_R2             #SSID即無線訊號的名稱是BPI-R2driver=nl80211          #使用的驅動是nl80211 country_code=CNhw_mode=g                #使用的是2.4Gchannel=1                #通道是1wpa_key_mgmt=WPA-PSK     #密碼編譯演算法wpa_passphrase=ledetest  #建立的無線AP密碼

關於hostapd.conf檔案更多的資訊,請查看這裡:w1.fi/cgit/hostap/plain/hostapd/hostapd.conf
  • 配置完成後,執行“hostapd -d hostapd.conf”建立無線熱點:
root@LEDE:~# hostapd -d hostapd.conf Configuration file: hostapd.conf[ 6102.269958] br-lan: port 5(ap0) entered blocking state[ 6102.275130] br-lan: port 5(ap0) entered disabled state[ 6102.280499] device ap0 entered promiscuous mode[ 6102.285076] br-lan: port 5(ap0) entered blocking state[ 6102.290176] br-lan: port 5(ap0) entered forwarding stateap0: interface state UNINITIALIZED->COUNTRY_UPDATEUsing interface ap0 with hwaddr 02:08:22:4a:ba:50 and ssid "BPI_R2"ap0: interface state COUNTRY_UPDATE->ENABLEDap0: AP-ENABLED 
  • 看列印的log,可以看出熱點以及建立成功了,接下來我用windows系統的筆記本去串連:

    

         串連成功,看來Openwrt已經把dhcp服務也配置好了,這裡再簡單引申一下dhcp服務:

  dhcp(Dynamic Host Configuration Protocol)動態主機設定通訊協定,其實簡單來講,就是裝置連入區域網路時,可以動態擷取到IP的一種協議。
  如果沒有配置dhcp服務,裝置連入區域網路後,就擷取不到IP,也就上不了Internet。
  • 我們來看一下R2上的dhcp服務:
root@LEDE:~# cat /etc/config/dhcp config dnsmasq                         #dnsmasq是一個輕量級的dhcp,dns服務        option domainneeded '1'        option boguspriv '1'        option filterwin2k '0'        option localise_queries '1'        option rebind_protection '1'        option rebind_localhost '1'        option local '/lan/'        option domain 'lan'        option expandhosts '1'        option nonegcache '0'        option authoritative '1'        option readethers '1'        option leasefile '/tmp/dhcp.leases'        option resolvfile '/tmp/resolv.conf.auto'        option nonwildcard '1'        option localservice '1'config dhcp 'lan'        option interface 'lan'        option start '100'        option limit '150'        option leasetime '12h'        option dhcpv6 'server'        option ra 'server'config dhcp 'wan'        option interface 'wan'        option ignore '1'config odhcpd 'odhcpd'        option maindhcp '0'        option leasefile '/tmp/hosts/odhcpd'        option leasetrigger '/usr/sbin/odhcpd-update'        option loglevel '4'

        乍看上去,這裡的dhcp配置讓人有點心生畏懼,其實也不用太擔心,我們先來簡單看一下這個dhcp的配置:

我們先暫時略過dnsmasq和odhcpd,後續會添加講解。這裡配置了兩個介面"lan"和"wan"為dhcp的方式,這兩個介面必須也是在/etc/config/network中被定義過的。“wan”配置很簡單,不用過多說明,我們來簡單分析一下“lan”的配置:
config dhcp
'lan' option interface 'lan' #必須是在/etc/config/network中被定義過的 option start '100' #從x.x.x.100開始分配IP option limit '150' #一共有150個IP,也就是說這裡的配置是x.x.x.100 - x.x.x.249 option leasetime '12h' #最長連線時間 option dhcpv6 'server' option ra 'server' #服務定義的模式是IPv6(RA & DHCPv6)

更多細節可以參考這裡:openwrt.org/docs/guide-user/base-system/dhcp

        接下來我用手機串連,然後測試R2無線網路的速度,當然這個速度是和R2串連的頻寬相關聯的,我這裡是;

     

        看起來網速還算是比較快的;現在,我們就已經成功在R2上面部署了一個具有基礎路由功能的Openwrt了。

        接下來有人可能會遇到這個問題,我的R2關機或者重啟了,之前配置好的環境沒了,又要重新設定,有沒有什麼方法可以開機啟動後去自動設定我要的環境呢?

        答案當然是有的:

  • 首先建立一個啟動Ap的指令碼
vim setup.sh         #!/bin/ashwmt_loader &sheep 3stp_uart_launcher -p /etc/firmware &sleep 5echo A > /dev/wmtWifi &sleep 5hostapd -d hostapd.conf
  • 然後再把setup.sh加到Openwrt的開機檔案裡
root@LEDE:~# vim /etc/rc.local# Put your custom commands here that should be executed once# the system init finished. By default this file does nothing.cd /root/             #我的setup.sh是放在/root目錄下的,所以要先進入/root目錄sleep 6               #這裡sleep 6s是因為在等系統其它服務init完成./setup.sh &exit 0
  • 然後再套個盒子,接根天線,就有那麼點意思了

    

        現在,一個簡單的路由器產品就完成了。最後,有人可能會問,既然是要做一個路由器產品,不可能老是用命令列去操作吧,再怎麼樣也要有一個web的頁面去配置吧。

        說的沒錯,要實現web頁面對路由器的配置,這裡不得不提到Openwrt的好幫手Luci,那麼下一篇我們就來看什麼是Luci,以及如何配置。

        歡迎大家批評指正,請註明出處,多謝。

    

    

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.