iptables NAT / 核心 IP 轉發限制為 ~10Mbit
我目前正在設置我的 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 路由器。