有没有人把Raspberry Pi用作路由设备?

主要是我想用它来监视我的网络,如果它具有用于以太网的输入和输出,那就太好了,但是它没有,因此我想知道通过具有以太网输入然后使用USB软件狗作为Wi-Fi路由器来监视网络是否非常有效。有人做过这样的事情吗?它会大大减慢互联网速度吗?

评论

取决于您的互联网连接速度。我的是100Mb,所以我很确定它会降低速度;)

我有30Mbps的互联网连接,而此时的流量为5Mbps,我的带有snort的嵌入式树莓派正在消耗〜50-95%的CPU和85%的内存。我的设置尚未微调,但我想向您展示一些真实的人物。

没有人没有坏宽度分配如何与使用树莓派的定制路由器一起工作?像,我有3Mbps的互联网连接速度,我有10个用户。您能解释一下如何划分吗? 3Mbps的速度。谢谢。希望你能理解。 :)

你好,孩子们。请不要再问其他问题。而是使用页面顶部的“提问”链接打开一个新问题。谢谢。

也许这个吗? Learn.adafruit.com/…

#1 楼

我一直在使用模型B作为具有流量整形的路由器,仅使用它附带的一个以太网端口。以下是有关如何进行以下操作的简要说明:



启用IPv4转发,因此您的Pi可以通过转发接收到的所有流量来充当路由器

使用静态网络配置来配置您的Pi,这样它就不会受到下面建议的DHCP更改的影响。以下是我的/etc/network/interfaces的内容,供您参考:皮。这可能意味着更改现有ADSL路由器盒上的设置。在上面的示例中,我的Pi的IP地址是192.168.1.1。被发送给它。您的Pi会依次将所有流量中继到您的普通路由器。您可能需要先断开连接,然后重新连接设备才能使这些更改生效。

现在,您可以创建或安装工具来为您进行监视,例如vnstat。

流量整形

关于流量整形,这是另一本快速入门指南,将使用我自己的Wondershaper变体。

对此有用您需要知道您的互联网连接速度。通常,您可以从(原始)路由器的Web界面中找到它,但是如果失败,您可以使用Speedtest进行估算。


/> sudo apt-get install iptables将显示流量整形的当前状态。显然,期望的状态是没有整形,这意味着有一个有效的规则,称为wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershapersudo ./wondershaper eth0是模型B上的有线网络适配器的名称。 pfifo_fast(系统上的接口名称)


# 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




eth0,其中:



ifconfig是我的互联网连接的下行链路速度(千比特)。所以3Mbit == 3000kbit

sudo ./wondershaper eth0 3000 370是我的互联网连接的上行速度,再次以kbit为单位。 br />

# 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




您的出站网络流量现在受到Pi的影响,您的入站流量正在被稍微限制以确保Pi而不是您原来的路由盒可以控制流量。

要禁用整形,只需运行3000即可。您可以先更改上行链路速率和下行链路速率,而无需先清除,但这不会造成伤害。塑造发生。事实证明,Linux内核足够聪明,可以确定您家庭网络上的客户端可以直接与ADSL框进行通信,而不是通过Pi反弹流量,并且可以在任何机会告诉他们。然后,客户端将其流量直接发送到您的ADSL盒,而Pi则没有机会对其进行调整。立即禁用它(下次重新启动时丢失):

# 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


更新以下内容以在引导期间进行设置:370

echo 0 | sudo tee /proc/sys/net/ipv4/conf/*/send_redirects


(感谢https://unix.stackexchange.com/a/58081/22537的提示)

您可能也对我的个人笔记感兴趣Linux网关:http://www.robmeerman.co.uk/unix/gateway

评论


如何设置其他设备可以连接的wifi网络名称和密码?

– Fommil
2013年9月2日上午11:35

很好的指南。不过,我确实有一个关于您的不可思议的建议的问题:每个客户或整个客户的限制?

–鲍勃
2013年9月6日上午11:15

@fommil:上面的指南假设您仍在使用ISP提供给您的调制解调器/路由器/ WiFi接入点,但是您对其进行了配置,以便所有连接的客户端都被告知“将流量发送到Pi”。这通常是通过在ISP框的DHCP设置中输入Pi的(静态!)IP地址来完成的。通常在名为“网关”,“默认网关”或“默认路由”的字段中。

–RobM
13年10月13日在12:15

@Bob:您输入的数字是您的Internet链接的总数。然后,Wondershaper脚本会尝试根据需求将其公平分享给所有客户。因此,如果只有一个客户端正在使用Internet,则应该获得100%的互联网。如果另一个客户端启动,他们将在经过一段时间的“稳定时间”(约10秒)后分别使用50%,依此类推。

–RobM
13-10-13在12:17

完善。只是对@fommil的注释,我的所有路由器(而且我想还有更多相同)都没有提供设置DHCP分配的网关的简便方法。我最终关闭了路由器上的DHCP并在Pi上设置了DHCP服务器-这是一个相当简单的过程(如果需要,请搜索指南)。

–鲍勃
13-10-13在12:27

#2 楼

具有一点网络背景,首先想到的是将其用作Snort框,然后您不必担心只有一个接口。您将设置交换机/路由器以将所有流量转发到Pi,也将其传递到终端设备。这称为切换端口监视器,但您的设备可能不支持它。您可能需要管理型交换机才能执行此操作。然后,Snort将分析流量并进行报告。有关Snort的更多信息,请访问http://www.snort.org/而不是与数据内联。如果您通过这种方式遇到软件故障,流量仍然可以畅通无阻。使用两个接口描述的内容,您的程序将崩溃,网络将崩溃。网络。

#3 楼

我已经使用Raspberry Pi进行路由,并且运行良好。如您所说,由于Raspberry Pi仅具有一个以太网端口,因此至少需要一个以上的网络接口。您可以添加连接到USB端口的另一个接口。我使用了GSM调制解调器和Wi-Fi棒。

注意事项:


使用有源USB集线器。 Wi-Fi和GSM设备所需的功率超过Raspberry Pi的USB端口所能提供的功率。
如果您购买Wi-Fi设备,请购买具有良好Linux支持的设备。您需要一个可以在接入点模式下工作的设备,但并非所有设备都可以。在linuxwireless.org上进行检查。

这是我的博客文章,内容涉及路由,另一篇关于设置Wi-Fi接入点。本指南帮助我进行了路由设置。路由的东西并不是Raspberry Pi特有的。一般而言,在Linux上运行的任何东西都应该可行。详细信息取决于您使用的发行版。

#4 楼

我已经使用Raspberry Pi作为路由器大约一个月了,没有任何问题。我有一个实际的商用Wi-Fi接入端口,而不是家用Wi-Fi路由器,因此我使用了它。我也有一个从Wii“借来”的USB到以太网转换器。这将到达家庭局域网,Raspberry Pi的内置以太网也将到达WAN / Internet。
获得Raspberry Pi的IPFire副本。您需要ARM版本,而没有串行控制台和最新的稳定版本。单击“ ARM”选项卡。下载“ armv5tel体系结构映像”。
启动它。连接HDMI电视和键盘。回答前几个问题。其余的配置可以通过家庭网络上的浏览器完成,因此之后就不需要电视或键盘了。这是正式说明:https://wiki.ipfire.org/hardware/arm/rpi/threeplus
最后一件事。如果要使用USB供电的Wi-Fi加密狗,请检查Raspberry Pi的电源。 700 mA USB电源可能足以为Raspberry Pi供电,但为Wi-Fi供电的余地并不多。使用有源USB集线器或使用1至2 A USB电源为Raspberry Pi供电。
祝你好运!

#5 楼

(此附录遵循了我以前的回答,该指导是有关如何将Pi配置为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上,因此对该工具不可见。 “ Flux”本身),它当然会在两个方向上传输它管理的所有数据。 (接收)要下载的号码。第三列是设备的MAC地址(不带通常的“:”或“-”分隔符)。第四列显示了设备的可读名称(如果已知)。通过运行./index.py生成图表,该图表旨在从lighttpd之类的Web服务器调用(添加了index.py中的index-file.names配置设置)。您可以手动运行它,它将生成一些图像并将HTML打印到STDOUT。因此,您需要将其重定向到可以在浏览器中打开的文件:

./index.py > index.html


然后在首选的浏览器中打开index.html。

安装要求(都可以与/etc/lighttpd/lighttpd.conf一起安装):



apt-get install-命令行工具用于捕获和描述网络流量的信息

tcpdump-循环数据库工具,记录和图表时间序列数据

rrdtool-循环数据库缓存守护程序,该服务可减少工作时的开销并发多个RRD文件。是Python编程语言的替代实现,它可以进行即时(JIT)编译,因此长时间运行的脚本将使用较少的CPU周期,但需要更多的内存。)

用法说明:该脚本使用的'tcpdump'工具需要root特权才能访问原始网络流量。这是通过在脚本启动时启动rrdcached来实现的,因此可能会提示您输入密码。就个人而言,我已向pypy-upstream添加了NOPASSWD规则,因此从未提示我。