Raspberry Pi配置爲無線路由器

本文參考自,Source: http://elinux.org/RPI-Wireless-Hotspot前端

由於本身有個RPi,可是以前用的8188CUS芯片的無線網卡不支持,雖然當時買的時候是爲了讓筆記本連雙WiFi的,所以只挑了個最便宜的。後來發現無法在RPi上面作AP,因而就又從新買了個。國內也有樹梅派的論壇討論過哪些無線網卡的支持,發現Ralink的芯片能夠,所以就再花了34塊錢買了個騰達的W331M,使用最新的Raspbian內核來進行操做(非最新的話可能須要本身編譯驅動)。linux

如下是結合上面的參考連接給出的如何將RPi搭建爲一個路由器:網絡

首先是必備材料:less

  • RaspberryPi B版(就是帶有線網卡的那個版),內存512/256均可以,個人是256的。
  • 一個已經能夠正常運行的SD卡,這個如何準備我在個人另一篇隨筆當中提到過,因此這裏再也不贅述。
  • 一個能夠支持AP模式的無線網卡。
  • 有線網卡也得聯網。

而後是必備技能:編輯器

  • 若是你是無顯示器運行的,則須要會使用nano(vi也能夠)
  • 若是你是有顯示器運行的,那麼能夠在圖形界面下面以root或者sudo來運行文本編輯器
  • 總之,就是你得會編輯文本文件才能夠進行下面的操做。

感謝原文給出的驅動提示,這裏也抄一下。請確認無線網卡支持AP模式或者Master模式,已知下列網卡的具體狀況:加密

  • Edimax  不支持 Access Point
  • AirLink 101 / AWL5088 不支持 Access Point
  • Ralink RT5370 支持 Access Point

想看你使用的是那種芯片?用lsusb吧!(省略了部分輸出)spa

pi@raspberrypi ~ $ lsusb
...
Bus 001 Device 007: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter

呼……一大波前提說完了,下面要幹正事了!.net

先說一下大概步驟:rest

  • 打開WiFi
  • 指定IP,也就是創建一個WiFi局域網
  • 使用NAT,也就是能讓你WiFi網絡和有線網絡能夠通訊。

正文開始了:code

  1. 安裝軟件
    sudo apt-get install hostapd udhcpd
  2. 配置DHCP,也就是編輯文件/etc/udhcpd.conf ,基本上按照下列內容來作:
    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

    將/etc/default/udhcpd 當中的這一行 DHCPD_ENABLED="no"  變爲

    #DHCPD_ENABLED="no"

    固然,你須要給無線網卡指定一個地址(靜態地址,不會變的),爲了達到開機啓動就設置好的目的,你須要編輯/etc/network/interfaces:

    iface wlan0 inet static
      address 192.168.42.1
      netmask 255.255.255.0

    若是原來有「iface wlan0 inet dhcp」之類的那麼就刪除,「wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf」什麼的也刪除。

     

  3. 配置hostapd。在這一部你就能夠建立一個無線網絡,能夠選加密或者不加密模式。建議選擇WPA2加密,那麼你須要編輯/etc/hostapd/hostapd.conf文件(若不存在則須要手動建立)
    interface=wlan0
    driver=nl80211
    ssid=Daochen_AP
    hw_mode=g
    channel=6
    macaddr_acl=0
    auth_algs=3
    ignore_broadcast_ssid=0
    wpa=2
    wpa_passphrase=DaochenShi
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP
    rsn_pairwise=CCMP
    其中的wpa_passphrase可使用
    wpa_passphrase <ssid> [明文密碼]
    來進行生成,生成的結果爲:(已經修改psk部分,這裏僅作示意用)
    pi@raspberrypi ~ $ wpa_passphrase Daochen_AP DaochenShi
    network={
            ssid="Daochen_AP"
            #psk="DaochenShi"
            psk=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
    }

    也就是你把wpa_passphrase去掉,換爲wpa_psk=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef便可

    若是你想使用開放網絡(不含密碼),那麼就這樣配置:
    interface=wlan0
    ssid=Daochen_AP
    hw_mode=g
    channel=6
    auth_algs=1
    wmm_enabled=0

    以後還要接着編輯 /etc/default/hostapd

    把原來的DAEMON_CONF="/etc/hostapd/hostapd.conf" 變爲:
    DAEMON_CONF="/etc/hostapd/hostapd.conf"

     

  4. 配置NAT,也就是路由了

    首先編輯/etc/sysctl.conf文件,主要是打開ipv4的轉發功能。

    net.ipv4.ip_forward=1

    那麼這就在內核當中開啓了ipv4的轉發,以後須要設置iptables來讓數據包經過:

    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

     爲了之後重啓以後能夠自動加載,所以運行命令來保存爲一個文件:

    sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
    並在/etc/network/interfaces文件的末尾添加這麼一句:
    up iptables-restore < /etc/iptables.ipv4.nat

     

  5. 啓動服務,看看你的無線是否搭建好了?

    運行一下命令:

    sudo service hostapd start
    sudo service udhcpd start

     若是你想開機啓動的話,那麼就這麼作:

    sudo update-rc.d hostapd enable
    sudo update-rc.d udhcpd enable

     

固然,最開始用8188CUS的時候參考的是 http://sirlagz.net/2012/08/09/how-to-use-the-raspberry-pi-as-a-wireless-access-pointrouter-part-1/

可是從hostapd那一步以後就失敗了,因此我實際上在此次設置無線網絡的時候不少地方都不須要怎麼操做了。這個連接的是有三部分組成,有興趣的也能夠看一下。

 

我本身遇到了安裝好udhcpd以後死活啓動不了,報錯是:

udhcpd: is interface wlan0 up and configured?: Cannot assign requested address

並且sudo ifup wlan0的時候報錯,不過它指出來了錯誤地點:

pi@raspberrypi /etc/hostapd $ sudo ifup wlan0
ip6tables-restore v1.4.14: Couldn't load match `icmp':No such file or directory

Error occurred at line: 17
Try `ip6tables-restore -h' or 'ip6tables-restore --help' for more information.
Failed to bring up wlan0.

由於我也設置了ip6tables,而wlan0目前沒有設置ipv6,因此就出錯了,解決方法也很簡單,把錯的那一行刪了就能夠了。若是你也以爲udhcpd啓動不了,可使用

sudo udhcpd -f

來進行前端顯示。

 

最後,接下來須要作的是:將eth0的ipv6經過相似brouter之類的東西使得無線網也有ipv6. 查過說有ebtables能夠,可是具體怎麼弄我一直沒搞明白過(這個問題1年前就在關注了,可是沒作,太懶了……

相關文章
相關標籤/搜索