Iptables NAT / 内核 IP 转发限制为 ~10Mbit

Iptables NAT / 内核 IP 转发限制为 ~10Mbit

我目前正在设置我的物联网路由器,并遇到了一些有关连接速度的问题。路由器本身就是一个级联路由器。我的网速是100Mbit,通过速度测试直接连接到主路由器来验证。但是,如果我通过级联路由器连接它,我只能获得 10-18Mbit 之间的连接速度。我认为内核 IP 转发或 Iptables NAT 可能配置错误。

操作系统是 Debian 8 内核版本 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是连接主路由器的输出接口。)

ip转发通过systemctl启用
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 太弱而无法运行它,因为为什么它足够强大以与通用的ocks5代理一起工作,而太弱而无法与 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

任何想法将不胜感激。

答案1

Banana R1/Lamobo R1 虽然是一款有趣的硬件,但也有太多缺点。

首先,“交换机”内部接口带宽是共享的。所有共享 5 个端口理论上最高可达 1GBps;人们能够从它获得的每个接口的官方速度约为 300Mbit。

其次,必须在所使用的操作系统的设备树(覆盖?)中进行设置 - 无法记住具体细节。不然会很慢。

Bananian Linux 是一个丑陋的黑客,不能很好地工作,它会给你带来问题,并且可能无法很好地设置你的千兆位交换机。此外,自 2017 年第一季度末以来,Bananian 已正式成为已弃用的项目,并且其安全更新将在几个月后停止出现。

我在 Armbian 上使用 R1 有一段时间了;效果很好。我还从物理上切断了 Realtek wifi,它只会造成不稳定甚至不使用时。

您还可能遇到机械硬盘的电源问题;我用的是SSD。

建议停止使用 Bananian,并尝试 ArmBian。请注意,Armbian 中的交换机接口有所不同,因为它使用更新的内核 4.x。

最后,不要浪费时间尝试 R1 的 OpenWRT 版本。这是一项拙劣的工作,并且充满了绕过中国防火墙的黑客行为。

现在离开 R1 的具体考虑因素,转到路由方面,在大多数消费级 ISP 路由器中可以完成的一项优化是设置一个桥接端口并在那里连接您的 R1。因此,您的外部接口将获得一个公共 IP 地址,并且您的 NAT 不会再有来自 ISP 的双重 NAT。 (我在这里做同样的事情)

PS 致来到这里的读者。 R1/R1S 不值得你花时间和金钱,买一个可以用 OpenWRT 攻击的 AP 路由器。

相关内容