樹莓派製作路由器,手機連接wifi

樹莓派製作路由器,手機連接wifi

在製作之前總的介紹本文用到的包:hostapd  以及dhcp服務

hostapd- 一個用戶態用於AP和認證服務器的守護進程。它實現了IEEE 802.11相關的接入管理,IEEE 802.1X/WPA/WPA2/EAP 認證, RADIUS客戶端,EAP服務器和RADIUS 認證服務器。實現的是無線共享

dhcp--是一個局域網的網絡協議,使用UDP協議工作, 主要有兩個用途:給內部網絡或網絡服務供應商自動分配IP地址


1.首先我我們檢查我們的硬件設施是否齊全,是否擁有無線網卡我用的是樹莓派2代,沒有自帶無線網卡。我自行插入usb網卡

pi@nameserver114:~ $ lsusb
Bus 001 Device 004: ID 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. LAN9500 Ethernet 10/100 Adapter / SMSC9512/9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

用以上命令查看端口信息,發現多了個device004,說明系統檢測成功,機器支持本usb網卡,你也可以使用ifconfig/iwconfig查看網卡信息

pi@nameserver114:~ $ ifconfig
eth0      Link encap:Ethernet  HWaddr b8:27:eb:27:89:39
          inet addr:192.168.2.13  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::c7ef:d38e:e9f8:b3db/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9227 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3761 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:8832536 (8.4 MiB)  TX bytes:663388 (647.8 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  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:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

mon.wlan0 Link encap:UNSPEC  HWaddr 00-12-04-23-A1-DC-30-30-00-00-00-00-00-00-00-00
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:19214 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:4909781 (4.6 MiB)  TX bytes:0 (0.0 B)

wlan0     Link encap:Ethernet  HWaddr 00:12:04:23:a1:dc
          inet addr:192.168.9.1  Bcast:192.168.9.255  Mask:255.255.255.0
          inet6 addr: fe80::aaa9:d4ea:9646:fb2d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2257 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1509 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:411152 (401.5 KiB)  TX bytes:637782 (622.8 KiB)

可以看到網卡信息,wlan0。以上是我已經配置好的信息,剛開始查看是沒有inet addr 的,之後我們會配置

2.硬件設施齊全,我們進入配置環節

2.1首先進行hostapd軟件包安裝

sudo apt-get hostapd

2.2對hostapd配置文件進行修改

sudo nano /etc/hostapd/hostapd.conf,以下是我的配置信息,完成並保存退出

# 把無線網卡wlan0 作爲接入點
interface=wlan0
# 使用nl80211驅動
driver=nl80211
#共享網絡的SSID是RaspberryPi
ssid=RaspberryPi
# 網卡工作在802.11G模式
hw_mode=g
#無線網卡選用11信道
channel=11
# WPA2 配置
wpa=2
#wpa密碼是raspberry
wpa_passphrase=raspberry
#認證方式爲WPA-PSK 加密方式爲CCMP
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
beacon_int=100

2.3對配置文件路徑進行指定

sudo nano /etc/default/hostapd

DAEMON_CONF=“”修改爲DAEMON_CONF="/etc/hostapd/hostapd.conf"

這樣我們就能讀取到其配置裏面的信息。

2.4雖然我們已經配置好相應的信息,但是我們沒有設置無線網卡相關的信息,

sudo nano /etc/network/interfaces此路徑對無線網卡進行配置。(順便提一句:有線網卡配置路徑爲:sudo nano /etc/dhcpcd.conf)

因爲我們要做到服務器,所以使用靜態ip,設置如下

auto lo     //表示使用localhost
iface lo inet loopback   
iface eth0 inet dhcp //如果有網卡ech0 則用dhcp獲取ip地址

#allow-hotplug wlan0   //表示wlan設備可以熱插撥
#iface wlan0 inet manual  //表示如果有WLAN網卡wlan0 (就是WIFI網卡), 則用dhcp獲得IP地址
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf


allow-hotplug wlan0
iface wlan0 inet static
address 192.168.9.1  
netmask 255.255.255.0
dns-nameservers 114.114.114.114
dns-nameservers 8.8.8.8
up iptables-restore < /etc/iptables.ipv4.nat


保存並退出後,重啓此設備sudo service hostapd start

正常情況下是可以看見wlan0的配置信息,本文開始提到過。如果沒有,

用sudo ifconfig wlan0 192.168.9.1設置,後再看看是否正常

sudo hostapd -B /etc/hostapd/hostapd.conf 

這個時候我們會看見我們有wifi熱點了,但是無法連接。是因爲我們沒有設置dhcp。

3安裝dhcp服務

sudo apt-get isc-dhcp-server 

3.1我們進行dhcp服務配置

首先對其/etc/dhcp/dhcpd.conf配置文件進行備份

sudo cp etc/dhcp/dhcpd.conf  etc/dhcp/dhcpd.conf _bak  (我用了絕對路徑)

3.2配置文件如下

pi@nameserver114:~ $ sudo nano /etc/dhcp/dhcpd.conf
  GNU nano 2.2.6           文件: /etc/dhcp/dhcpd.conf

default-lease-time 600;
max-lease-time 7200;
log-facility local7;

subnet 192.168.9.0 netmask 255.255.255.0 {
  range 192.168.9.10 192.168.9.100;
  option routers 192.168.9.1;
  option broadcast-address 192.168.9.127;
  option domain-name-servers 114.114.114.114;
  default-lease-time 600;
  max-lease-time 7200;
}

保存退出,重啓服務sudo service  isc-dhcp-server restart

個時候我們手機能夠連上wifi熱點,並能夠獲得相應的ip地址,但是無法上網。接下來我們進行路由轉發

4.配置路由轉發
通過前面的配置過程,已經可以通過無線網絡連接到Raspberry pi的無線網卡,但是還不能連接到互聯網,下一步就是讓從無線網卡 wlan0 進來的數據 轉發到 有線網卡 eth0上面 通過有線網卡連接網絡接到互聯網。
因爲eth0是獲取的動態ip,所以這裏通過iptables來實現簡單的路由轉發

sudo iptables -F
sudo iptables -X
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo bash
iptables-save > /etc/iptables.up.rules
exit

輸入命令sudo nano /etc/network/if-pre-up.d/iptables

pi@nameserver114:~ $ sudo nano /etc/network/if-pre-up.d/iptables
  GNU nano 2.2.6      文件: /etc/network/if-pre-up.d/iptables
#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules

保存退出,輸入命令

sudo chmod 755 /etc/network/if-pre-up.d/iptables

開啓內核轉發,輸入命令sudo nano /etc/sysctl.conf並將net.ipv4.ip_forward=1的註釋去掉使其生效

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

保存退出,輸入命令

sudo sysctl -p

更改完之後,我們再次進入無線網卡配置文件

sudo nano /etc/network/interfaces

在文件最後加入up iptables-restore < /etc/iptables.ipv4.nat,以便永久有效,如下所示

allow-hotplug wlan0
iface wlan0 inet static
address 192.168.9.1
netmask 255.255.255.0
dns-nameservers 114.114.114.114
dns-nameservers 8.8.8.8
up iptables-restore < /etc/iptables.ipv4.nat

完成以上設施後,將它們加入啓動項。
$ sudo chkconfig --add hostapd  加入啓動項
$ sudo chkconfig --add isc-dhcp-server
完成所有配置後,sudo reboot 重啓機器。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章