我目前正在设置我的 iot 路由器,但遇到了一些有关连接速度的问题。路由器本身就是一个级联路由器。我的网速是 100Mbit,我通过速度测试直接连接到主路由器来验证。但是,如果我通过级联路由器连接它,我只能获得 10-18Mbit 之间的连接速度。我认为内核 IP 转发或 Iptables NAT 可能配置错误。
操作系统是 Debian 8 Kernel Version 3.4 (Bananian Linux)
路由器本身是 Banana PI BPI R1
Iptables 运行版本 v1.4.21
我为设置网络而运行的相关命令是
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o eth0.101 -j MASQUERADE
(eth0.101是连接到主路由器的输出接口。)
通过 systemctl 启用 ip 转发
ipv6 完全禁用
,因为路由器的网卡使用内部交换机,我必须使用 vlan 将“lan”与“wan”分开我通过工具 swconfig 实现这一点
swconfig dev eth0 set reset 1
swconfig dev eth0 set enable_vlan 1
swconfig dev eth0 vlan 101 set ports '3 8t'
swconfig dev eth0 vlan 102 set ports '4 0 1 2 8t'
swconfig dev eth0 set apply 1
为什么我认为这是 NAT/转发?我的第一个想法是,我的网卡无法达到更高的速度,尽管它说可以。但是为了确认这一点,我在我的路由器上运行了一个 socks5 代理并禁用了 IP 转发进行测试,当通过这个 socks5 代理运行速度测试时,我能够达到 100Mbit,这让我得出结论,这不是我的网卡瓶颈.
我已经尝试了一些事情,包括增加我的 VLAN 接口的数据包队列的大小,因为它们是零,这没有改变。
我也不认为我的路由器的 CPU 太弱而无法运行它,因为为什么它足够强大以使用通用 socks5 代理而太弱而无法使用 iptables?
这是一个输出ifconfig
:
eth0 Link encap:Ethernet HWaddr 02:07:0b:02:15:ac
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:370503 errors:0 dropped:0 overruns:0 frame:0
TX packets:365330 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:310436570 (296.0 MiB) TX bytes:308685327 (294.3 MiB)
Interrupt:117 Base address:0xc000
eth0.101 Link encap:Ethernet HWaddr 02:07:0b:02:15:ac
inet addr:192.168.178.2 Bcast:192.168.178.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:209032 errors:0 dropped:0 overruns:0 frame:0
TX packets:171418 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:203959632 (194.5 MiB) TX bytes:102579119 (97.8 MiB)
eth0.102 Link encap:Ethernet HWaddr 02:07:0b:02:15:ac
inet addr:10.8.0.1 Bcast:10.8.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:161471 errors:0 dropped:0 overruns:0 frame:0
TX packets:193912 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:99807884 (95.1 MiB) TX bytes:204644888 (195.1 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
以及/etc/network/interfaces
:
auto lo
iface lo inet loopback
auto eth0.101
iface eth0.101 inet static
address 192.168.178.2
network 192.168.178.0
netmask 255.255.255.0
gateway 192.168.178.1
nameserver 8.8.8.8
auto eth0.102
iface eth0.102 inet static
address 10.8.0.1
network 10.8.0.0
netmask 255.255.255.0
任何想法将不胜感激。
Banana R1/Lamobo R1 虽然是一款有趣的硬件,但缺点太多。
首先,“交换机”内部接口带宽是共享的。所有共享 5 个端口的理论速率最高为 1GBps;人们能够从每个接口获得的官方速度约为 300Mbit。
其次,它必须在设备树(覆盖?)中由正在使用的操作系统进行设置 - 无法记住具体细节。否则会很慢。
Bananian Linux 是一个丑陋的 hack,不能很好地工作,它会给你带来问题,并且可能无法很好地设置你的千兆交换机。此外,自 2017 年第一季度末以来,Bananian 正式被弃用,其安全更新将在几个月后停止出现。
我将 R1 与 Armbian 一起使用了一段时间;它运作良好。我还从物理上切断了realtek wifi,即使不使用它也只会造成不稳定。
您可能还会遇到机械硬盘的电源问题;我用的是SSD。
作为建议,停止使用 Bananian,并尝试 ArmBian。请注意,Armbian 中的开关接口不同,因为它使用更新的内核 4.x。
最后,不要浪费时间尝试 R1 的 OpenWRT 版本。这是一项拙劣的工作,并且充满了绕过中国大防火墙的技巧。
现在离开 R1 特定的考虑因素,并转到路由方面,可以在大多数消费级 ISP 路由器中完成的一项优化是设置一个带有桥接的端口并将您的 R1 连接到那里。因此,您的外部接口将获得一个公共 IP 地址,并且您的 NAT 不会再有来自 ISP 的双重 NAT。(我在这里做同样的事情)
PS 对于来这里的读者。R1/R1S 不值得你花时间和金钱,换一个可以被 OpenWRT 入侵的 AP 路由器。