歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Raspberry Pi做成路由器

Raspberry Pi做成路由器

日期:2017/2/28 14:30:49   编辑:Linux教程

曾經看到很多文章把Raspberry Pi制作成無線AP,但是我今天要做的是把Raspberry Pi做成一個有NAT功能的路由器,我做這個的初衷是因為到荷蘭出差後發現我的bambook無法接入宿捨裡的WiFi,也許是因為宿捨無線路由器是WEP的認證方式,總之死活連不上。後來決定用Raspberry Pi+北極星光無線路由器來解決問題。

Raspberry Pi 樹莓派搭LAMP服務器 http://www.linuxidc.com/Linux/2013-06/86687.htm

在樹莓派Raspberry Pi上安裝游戲模擬器 http://www.linuxidc.com/Linux/2013-07/86842.htm

Raspberry Pi 樹莓派上安裝Weston http://www.linuxidc.com/Linux/2013-06/86685.htm

用於Raspberry Pi 的Linux 操作系統已經可用 http://www.linuxidc.com/Linux/2012-03/56058.htm

Raspberry Pi(樹莓派)試用小記 http://www.linuxidc.com/Linux/2013-10/91008.htm

Raspberry Pi(樹莓派)的安裝、配置IP及軟件源等入門 http://www.linuxidc.com/Linux/2013-10/91009.htm

思路:
【無線路由器】-----【無線網卡--Raspberry Pi--有線RJ45端口】------【有線RJ45端口--北極星光無線路由器--無線】----Bambook

步驟一:
配置Raspberry Pi的無線網卡與有線網卡

無線網卡通過WEP連到宿捨無線路由器,並配置一個固定IP,有線網卡也配置固定IP

pi@raspberrypi:~$ cat /etc/network/interfaces
auto lo

iface lo inet loopback

iface eth0 inet static
address 172.16.1.100
netmask 255.255.255.0
gateway 172.16.1.1

#########################################
allow-hotplug wlan0
iface wlan0 inet static
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
wireless-essid ADSL-WiFi-c91f44
wireless-key 1234567890
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.254

步驟二:
在Raspberry Pi上架設DHCP服務器

pi@raspberrypi:~$ sudo apt-get install isc-dhcp-server
編輯dhcp.conf文件

pi@raspberrypi:~$ sudo vi /etc/dhcp/dhcpd.conf
在dhcp.conf文件的最後加上以下幾行

subnet 172.16.1.0 netmask 255.255.255.0 {
range 172.16.1.1 172.16.1.99;
option routers 172.16.1.100;
option domain-name-servers 8.8.8.8,8.8.4.4;
}
在Raspberry Pi的RJ45口上連上筆記本後測試是否可以分配IP地址

pi@raspberrypi:~$ sudo service isc-dhcp-server restart
Stopping ISC DHCP server: dhcpd.
Starting ISC DHCP server: dhcpd.

步驟三:

啟用Raspberry Pi的路由轉發功能,並開啟NAT

開啟路由轉發功能

pi@raspberrypi:~$ sudo vi /etc/sysctl.conf

把sysctl.conf裡的 net.ipv4.ip_forward=1前的"#"號去掉後保存

開啟NAT功能

制作一個開啟NAT的腳本,保存為nat

#!/bin/sh
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
運行此腳本

pi@raspberrypi:~$ ls | grep nat
nat
pi@raspberrypi:~$ sh ./nat
pi@raspberrypi:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
pi@raspberrypi:~$ sudo iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
pi@raspberrypi:~$
在/etc/network/目錄下創建一個iptables的文件

pi@raspberrypi:~$ sudo touch /etc/network/iptables
把iptables內容保存到/etc/network/iptables中

pi@raspberrypi:~$ sudo sh -c "iptables-save > /etc/network/iptables"
pi@raspberrypi:~$ cat /etc/network/iptables
# Generated by iptables-save v1.4.14 on Sun Jun 15 05:45:28 2014
*filter
:INPUT ACCEPT [22972:1979567]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2421:275063]
-A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o wlan0 -j ACCEPT
COMMIT
# Completed on Sun Jun 15 05:45:28 2014
# Generated by iptables-save v1.4.14 on Sun Jun 15 05:45:28 2014
*nat
:PREROUTING ACCEPT [9719:1105033]
:INPUT ACCEPT [1273:238753]
:OUTPUT ACCEPT [675:88515]
:POSTROUTING ACCEPT [219:34192]
-A POSTROUTING -o wlan0 -j MASQUERADE
COMMIT
# Completed on Sun Jun 15 05:45:28 2014
pi@raspberrypi:~$

在/etc/network/interfaces上加上一句up iptables-restore < /etc/network/iptables使得每次啟動的時候自動生效

pi@raspberrypi:~$ cat /etc/network/interfaces
auto lo

iface lo inet loopback

iface eth0 inet static
address 172.16.1.100
netmask 255.255.255.0
gateway 172.16.1.1

#########################################
allow-hotplug wlan0
iface wlan0 inet static
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
wireless-essid ADSL-WiFi-c91f44
wireless-key 1234567890
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.254

up iptables-restore < /etc/network/iptables
保存重啟發現連上Raspberry Pi的RJ45口的便攜機能自動獲取IP地址,並且可以ping通外網了。

Copyright © Linux教程網 All Rights Reserved