http://raspjason.blog.51cto.com/8565009/1426561/bash
曾经看到不少文章把Raspberry Pi制做成无线AP,可是我今天要作的是把Raspberry Pi作成一个有NAT功能的路由器,我作这个的初衷是由于到荷兰出差后发现个人bambook没法接入宿舍里的WiFi,也许是由于宿舍无线路由器是WEP的认证方式,总之死活连不上。后来决定用Raspberry Pi+北极星光无线路由器来解决问题。服务器
思路:less
【无线路由器】-----【无线网卡--Raspberry Pi--有线RJ45端口】------【有线RJ45端口--北极星光无线路由器--无线】----Bambookdom
步骤一:oop
配置Raspberry Pi的无线网卡与有线网卡测试
无线网卡经过WEP连到宿舍无线路由器,并配置一个固定IP,有线网卡也配置固定IPspa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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
|
步骤二:rest
在Raspberry Pi上架设DHCP服务器code
1
|
pi@raspberrypi:~$
sudo
apt-get
install
isc-dhcp-server
|
编辑dhcp.conf文件router
1
|
pi@raspberrypi:~$
sudo
vi
/etc/dhcp/dhcpd
.conf
|
在dhcp.conf文件的最后加上如下几行
1
2
3
4
5
|
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地址
1
2
3
|
pi@raspberrypi:~$
sudo
service isc-dhcp-server restart
Stopping ISC DHCP server: dhcpd.
Starting ISC DHCP server: dhcpd.
|
步骤三:
启用Raspberry Pi的路由转发功能,并开启NAT
开启路由转发功能
1
|
pi@raspberrypi:~$
sudo
vi
/etc/sysctl
.conf
|
把sysctl.conf里的 net.ipv4.ip_forward=1前的"#"号去掉后保存
开启NAT功能
制做一个开启NAT的脚本,保存为nat
1
2
3
4
|
#!/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
|
运行此脚本
1
2
3
|
pi@raspberrypi:~$
ls
|
grep
nat
nat
pi@raspberrypi:~$ sh .
/nat
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
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的文件
1
|
pi@raspberrypi:~$
sudo
touch
/etc/network/iptables
|
把iptables内容保存到/etc/network/iptables中
1
|
pi@raspberrypi:~$
sudo
sh -c
"iptables-save > /etc/network/iptables"
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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使得每次启动的时候自动生效
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
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通外网了。