[转]Raspberry Pi做成路由器
http://raspjason.blog.51cto.com/8565009/1426561/
曾经看到很多文章把Raspberry Pi制作成无线AP,但是我今天要做的是把Raspberry Pi做成一个有NAT功能的路由器,我做这个的初衷是因为到荷兰出差后发现我的bambook无法接入宿舍里的WiFi,也许是因为宿舍无线路由器是WEP的认证方式,总之死活连不上。后来决定用Raspberry Pi+北极星光无线路由器来解决问题。
思路:
【无线路由器】-----【无线网卡--Raspberry Pi--有线RJ45端口】------【有线RJ45端口--北极星光无线路由器--无线】----Bambook
步骤一:
配置Raspberry Pi的无线网卡与有线网卡
无线网卡通过WEP连到宿舍无线路由器,并配置一个固定IP,有线网卡也配置固定IP
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 |
步骤二:
在Raspberry Pi上架设DHCP服务器
1
|
pi@raspberrypi:~$ sudo apt-get install isc-dhcp-server |
编辑dhcp.conf文件
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通外网了。
邮箱:steven9801@163.com
QQ: 48039387
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2015-12-19 再谈IE的浏览器模式和文档模式[转]
2014-12-19 Tomcat7集群扩展session集中管理,tomcat-redis-session-manager使用
2014-12-19 Nginx配置文件nginx.conf中文详解
2014-12-19 axis2 WebService的发布与调用
2014-12-19 sql语句having子句用法,很多时候你曾忘掉
2011-12-19 [转载]jQuery 插件autocomplete 应用