有没有人使用他们的Raspberry Pi作为路由设备?
主要是我想使用它来监视我的网络,如果它具有用于以太网的输入和输出,那会很好,但是它没有,因此我想知道通过具有以太网输入来监视网络是否非常有效然后使用USB加密狗作为Wi-Fi路由器。有人做过这样的事情吗?它会大大降低互联网速度吗?
有没有人使用他们的Raspberry Pi作为路由设备?
主要是我想使用它来监视我的网络,如果它具有用于以太网的输入和输出,那会很好,但是它没有,因此我想知道通过具有以太网输入来监视网络是否非常有效然后使用USB加密狗作为Wi-Fi路由器。有人做过这样的事情吗?它会大大降低互联网速度吗?
Answers:
我一直在使用模型B作为具有流量整形的路由器,仅使用它附带的一个以太网端口。这是有关如何做的一个简单说明:
使用静态网络配置来配置您的Pi,这样它就不会受到下面建议的DHCP更改的影响。这是我的内容供/etc/network/interfaces
参考:
# pi@flux:/home/pi/projects/adsl/rrdlogger (master *) # cat /etc/network/interfaces auto lo iface lo inet loopback #iface eth0 inet dhcp iface eth0 inet static address 192.168.1.1 netemask 255.255.255.0 gateway 192.168.1.254 # IP of my ADSL router box allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
现在更改网络的DHCP设置,以使默认网关/路由器为Pi。这可能意味着更改现有ADSL路由器盒上的设置。在上面的示例中,Pi的IP地址为192.168.1.1
。
当您的设备下次重新连接到网络时,系统会告诉他们您的Pi是其通往Internet的网关,并且所有与Internet绑定的流量都将发送到该设备。您的Pi会依次将所有流量中继到您的普通路由器。您可能需要先断开连接,然后重新连接设备,才能使这些更改生效。
现在,您可以创建或安装工具来为您进行监视,例如vnstat。
关于流量整形,这是另一个快捷指南,它将使用我自己的Wondershaper变体。
为了使此功能有用,您需要了解您的互联网连接速度。通常,您可以从(原始)路由器的Web界面中找到它,但是如果失败,您可以使用speedtest进行估算。
sudo apt-get install iptables
wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershaper
sudo ./wondershaper eth0
将显示流量整形的当前状态。显然,预期状态是没有整形,这意味着有一个有效的规则,称为pfifo_fast
:
eth0
是型号B上的有线网络适配器ifconfig
的名称。有关系统上接口的名称,请参阅)。# pi@flux:/home/pi/projects/adsl/wondershaper (master *) # sudo ./wondershaper eth0 qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 Sent 1908 bytes 15 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0
sudo ./wondershaper eth0 3000 370
,其中:
3000
是我的互联网连接的下行速度,以kbit为单位。所以3Mbit == 3000kbit370
是我的互联网连接的上行速度,再次以千比特为单位。sudo ./wondershaper eth0
现在应该显示更多的输出:
# pi@flux:/home/pi/projects/adsl/wondershaper (master *) # sudo ./wondershaper eth0 qdisc htb 1: root refcnt 2 r2q 10 default 0 direct_packets_stat 0 Sent 1858 bytes 9 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 40: parent 1:40 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 1858 bytes 9 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 10: parent 1:10 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 20: parent 1:20 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 30: parent 1:30 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc ingress ffff: parent ffff:fff1 ---------------- Sent 768 bytes 12 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 class htb 1:1 root rate 370000bit ceil 370000bit burst 10Kb cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 3459453 ctokens: 540531 class htb 1:10 parent 1:1 leaf 10: prio 1 rate 370000bit ceil 370000bit burst 1599b cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 540531 ctokens: 540531 class htb 1:20 parent 1:1 leaf 20: prio 2 rate 246000bit ceil 246000bit burst 1599b cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 813000 ctokens: 813000 class htb 1:30 parent 1:1 leaf 30: prio 3 rate 74000bit ceil 74000bit burst 1599b cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 2702687 ctokens: 2702687 class htb 1:40 root leaf 40: prio 0 rate 100000Kbit ceil 100000Kbit burst 512Kb cburst 1600b Sent 3486 bytes 15 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 15 borrowed: 0 giants: 0 tokens: 654609 ctokens: 1250
您的出站网络现在正在影响您的出站网络流量,并且您的入站流量正在受到一些限制,以确保Pi(而不是原始路由箱)能够控制流量。
要禁用整形,只需运行sudo ./wondershaper eth0 clear
。您可以在不先清除的情况下更改上行链路和下行链路的速率,但这不会造成损害。
更新:您还需要禁用ICMP重定向的传输,因为我们需要所有流量都通过Pi进行整形。事实证明,Linux内核足够聪明,可以确定您家庭网络上的客户端可以直接与ADSL盒子进行通信,而不是通过Pi反弹流量,并且可以在任何机会告诉他们。然后,客户端将流量直接发送到您的ADSL盒,而Pi则没有机会对其进行调整。立即禁用它(下次重启时丢失):
echo 0 | sudo tee /proc/sys/net/ipv4/conf/*/send_redirects
更新以下内容以在引导过程中进行设置: /etc/sysctl.conf
net/ipv4/conf/eth0/send_redirects = 0
(感谢https://unix.stackexchange.com/a/58081/22537的提示)
您可能还对我有关配置Linux网关的个人说明感兴趣:http : //www.robmeerman.co.uk/unix/gateway
wondershaper
建议有疑问:每个客户或整个客户的限制?
具有一点网络背景,首先想到的是将其用作Snort框,然后您不必担心只有一个接口。您将设置交换机/路由器以将所有流量转发到Pi,但也将其传递到终端设备。这称为切换端口监视器,但您的设备可能不支持它。您可能需要管理型交换机才能执行此操作。然后,Snort将分析流量并进行报告。有关Snort的更多信息http://www.snort.org/
这种设置的好处是,您的Pi坐在一边,一边看着正在通过交换机运行的所有内容,而不是与数据串联。如果您通过这种方式遇到软件故障,流量仍然可以畅通无阻。用两个接口描述的内容,程序崩溃,网络崩溃。
它不使用pi作为路由器,但是允许您监视和报告跨网络传输的流量。
我已经使用Raspberry Pi进行路由,并且运行良好。如您所说,由于Raspberry Pi仅具有一个以太网端口,因此至少需要一个以上的网络接口。您可以添加连接到USB端口的另一个接口。我使用了GSM调制解调器和Wi-Fi棒。
注意事项:
这是我有关路由的博客文章,以及有关设置Wi-Fi接入点的博客文章。本指南帮助我进行了路由设置。路由的东西并不是Raspberry Pi所特有的。一般而言,在Linux上运行的任何东西都应该可行。详细信息取决于您使用的发行版。
我已经使用Raspberry Pi作为路由器大约一个月了,没有任何问题。我有一个实际的商用Wi-Fi接入端口,而不是家用Wi-Fi路由器,因此我使用了它。我也有一个从Wii“借来”的USB到以太网转换器。到达家庭局域网,Raspberry Pi的内置以太网进入WAN / Internet。
获取Raspberry Pi 的IPFire副本。您需要的是ARM版本,没有串行控制台和最新的稳定版本。单击“ ARM”选项卡。下载“ armv5tel体系结构的图像”。
启动它。连接HDMI电视和键盘。回答前几个问题。其余配置可通过家庭网络上的浏览器完成,因此此后您将不需要电视或键盘。
它并不难,并且像冠军一样工作!这是正式说明:http : //wiki.ipfire.org/en/hardware/arm/rpi
最后一件事。如果要使用USB供电的Wi-Fi加密狗,请检查Raspberry Pi的电源。700 mA USB电源可能足以为Raspberry Pi供电,但为Wi-Fi供电的余地并不多。请使用有源的USB集线器,或使用1至2 A USB电源为Raspberry Pi供电。
祝好运!
(此附录遵循我以前的回答,该指导是有关如何将Pi配置为LAN的互联网网关的指南)
我不满意监视我的整体 Internet使用情况,而是编写了一个工具来监视LAN中每个设备的Internet使用情况。这使我可以在控制台窗口中查看瞬时使用情况,并生成历史使用情况图表,以便可以一夜之间看到发生了什么。
Rhodes,一种用于监视LAN设备的实时和历史网络使用情况的工具(基于MAC地址):https : //github.com/meermanr/adsl/tree/master/rhodes
控制台输出示例:
193 kiB/s TX 17 kiB/s RX 0004edbf98c0 home.gateway (Billion Electric Co.)
0 kiB/s TX 0 kiB/s RX 2002af18dc15 Samsung Galaxy Tab 10.1, Vicky
0 kiB/s TX 0 kiB/s RX 34af2c01197b Nintendo 3DS:XL, Robert
0 kiB/s TX 0 kiB/s RX 34af2c3af204 Nintendo 3DS:XL, Vicky
0 kiB/s TX 0 kiB/s RX 34af2c9cfffd Nintendo WiiU
0 kiB/s TX 0 kiB/s RX 6045bd9c9dbc Xbox360 Slim
0 kiB/s TX 0 kiB/s RX 745e1c56c297 Pioneer SX-LX57
13 kiB/s TX 109 kiB/s RX 7831c1be0c34 Az Pro (Macbook Pro)
0 kiB/s TX 0 kiB/s RX 80ea96e6214e Roberts-AirPort-Time-Capsule
0 kiB/s TX 0 kiB/s RX 88308a770370 Samsung Galaxy S3, Vicky
189 kiB/s TX 211 kiB/s RX b827eb8fc0f3 Flux (Raspberry Pi)
2 kiB/s TX 39 kiB/s RX b8e8563acb34 Macbook Pro, Vicky
0 kiB/s TX 0 kiB/s RX d022be2c26ef Samsung Galaxy Note 3, Rob
0 kiB/s TX 0 kiB/s RX f82fa89368ea
第一列显示正在传输的设备数量,这通常意味着要上传到Internet。唯一的例外是ADSL路由器本身(上面示例中的home.gateway),它将从ISP接收的数据传输到请求它(即下载)的设备。当然,它也将上载传输到Internet,但是它使用其ADSL调制解调器来实现,该调制解调器不在LAN上,因此对于此工具不可见。
另一个例外是Raspberry Pi(上面的“ Flux”)本身,它当然会在两个方向上传输它管理的所有数据。
但是除了这些例外,TX(发送)编号是指上载,而RX(接收)编号是指要下载。第三列是设备的MAC地址(不带通常的“:”或“-”分隔符)。第四列显示设备的可读名称(如果已知)。
图表是通过运行生成的./index.py
,该运行旨在从类似的Web服务器中调用lighttpd
(已index.py
添加到中的index-file.names
配置设置中/etc/lighttpd/lighttpd.conf
)。您可以手动运行它,它将生成一些图像并将HTML打印到STDOUT。因此,您需要将其重定向到可以在浏览器中打开的文件:
./index.py > index.html
然后在您喜欢的浏览器中打开index.html。
安装要求(均可通过安装apt-get install
):
tcpdump
-用于捕获和描述网络流量的命令行工具rrdtool
-Round Robin数据库工具,记录和图表时间序列数据rrdcached
-循环数据库缓存守护程序,该服务可减少与多个RRD文件同时工作时的开销。pypy-upstream
(Python编程语言的快速实现)
python rhodes.py
(pypy
是一种备选实现了Python编程语言不只是在实时(JIT)编译的,所以长期运行的脚本将在更多的内存的成本使用更少的CPU周期)使用说明:该脚本使用的“ tcpdump”工具需要root特权才能访问原始网络流量。这是通过sudo tcpdump
在脚本启动时启动来实现的,因此可能会提示您输入密码。就个人而言,我已经向其中添加了NOPASSWD规则,/etc/sudoers
因此不会提示我。