Router

CentOS 6 路由器/防火牆似乎限制了吞吐量

  • January 9, 2017

TL;博士

在最近的更新和安全“強化”之後,120Mbps 電纜調製解調器連接後面的 CentOS6 NAT 路由器/防火牆似乎將吞吐量限制在 30Mbps。

在更新和強化之前,我獲得了 90Mbps。

我檢查了 CPU 和網路使用情況,這些似乎都不是限制因素。 tc沒有顯示任何流量整形正在進行,我不知道如何進一步排除故障。

細節

我有一個 CentOS 6 系統作為 NAT 路由器/防火牆在 Comcast 電纜調製解調器後面執行,它也作為 NAT 路由器執行

                             1000     100
                             eth1     eth0
Internet-------Modem-------------CentOS6-----------------LAN
                    10.0.0.0/24         192.168.10.0/24

雙 NAT 是 CentOS 系統的遺留物,之前它在以橋接模式執行的時代華納電纜調製解調器後面充當路由器/防火牆。當我搬到康卡斯特的領地時,我打算將調製解調器切換到橋接模式,但從來沒有解決過,而且雙 NAT 從來沒有引起過問題。我毫無問題地獲得了 90Mbps 的吞吐量。

在準備在 Comcast 調製解調器上轉換為橋接模式時,我決定通過禁用一些不需要的服務並進行“yum 更新”來“強化”CentOS 系統,而我已經有一段時間沒有這樣做了。加固後,我進行了速度測試,驚訝地發現吞吐量降至 30Mbps。

我嘗試像這樣將我的主桌面系統直接連接到調製解調器

                         eth1     eth0
Internet---Modem-------------CentOS6-----------------LAN
             |  10.0.0.0/24         192.168.10.0/24
             |
             +--------------Desktop(Win7)

執行 speedtest.net 驗證我的 Comcast 連接能夠達到 120Mbps,因此我在 CentOS 系統上進行的更改導致將吞吐量限制在 30Mbps。每次我從 LAN(在 CentOS 系統後面)進行速度測試時,我得到的值在 30Mbps 的 1-2% 範圍內,所以幾乎感覺像是人為地限制了吞吐量。

我想也許流量整形以某種方式啟用,但tc似乎表明它沒有啟動

[jhg@perseus ~]$ sudo tc -s qdisc
qdisc pfifo_fast 0: dev eth0 root refcnt 2 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 64159459406 bytes 44745482 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc pfifo_fast 0: dev eth1 root refcnt 2 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 2871293442 bytes 26151570 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0

“硬化”包括

  1. 刪除一些不需要的包
  2. 關閉不需要的服務
  3. 設置 iptables 以過濾除 ssh 的一個非標準埠之外的所有傳入流量
  4. 安裝和配置tripwire

刪除的包:

redis                    dovecot
redhat-lsb-compat        ipa-client
redhat-lsb               nfs-utils-lib
redhat-lsb-printing      nfs-utils
foomatic                 subversion
foomatic-db              spamassassin
foomatic-db-ppds         certmonger
cups                     yp-tools
mysql-server             ypbind
mysql                    rpcbind

目前啟用的服務:

abrt-ccpp            cpuspeed               kdump            nmb       
abrt-oops            crond                  lvm2-monitor     ntpd      
abrtd                dhcpd                  mcelogd          postfix   
acpid                dkms_autoinstaller     mdmonitor        rsyslog   
atd                  haldaemon              messagebus       smb       
auditd               ip6tables              named            sshd      
autofs               iptables               netfs            sysstat   
blk-availability     irqbalance             network          udev-post 

我的問題是:接下來我應該怎麼做才能弄清楚為什麼我的 CentOS 6 路由器似乎人為地將吞吐量限制在 30Mbps?

所以,這裡的問題原來是硬體問題。一個月前一切正常,人們並不認為故障硬體仍會在降級模式下“工作”,但這就是正在發生的事情。

發現問題的故障排除步驟是實際查看電纜調製解調器背面的乙太網埠燈。而不是綠色的“1Gbps”燈,它是橙色的,表示“100Mbps”。在這種模式下,調製解調器似乎只支持高達 30Mbps 左右的吞吐量。

我知道調製解調器(Arris TG-852G)有 GBEthernet 埠,所以有些東西阻止了 Centos 以 1Gbps 的速度與調製解調器通信。使用ethtool我看到了這個:

Settings for eth1:
       Supported ports: [ TP MII ]
       Supported link modes:   10baseT/Half 10baseT/Full
                               100baseT/Half 100baseT/Full
                               1000baseT/Half 1000baseT/Full
       Supported pause frame use: No
       Supports auto-negotiation: Yes
       Advertised link modes:  10baseT/Half 10baseT/Full
                               100baseT/Half 100baseT/Full
                               1000baseT/Half 1000baseT/Full
       Advertised pause frame use: Symmetric Receive-only
       Advertised auto-negotiation: Yes
       Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                            100baseT/Half 100baseT/Full
       Link partner advertised pause frame use: Symmetric Receive-only
       Link partner advertised auto-negotiation: Yes
       Speed: 100Mb/s
       Duplex: Full
       Port: MII
       PHYAD: 0
       Transceiver: internal
       Auto-negotiation: on
       Supports Wake-on: pumbg
       Wake-on: g
       Current message level: 0x00000033 (51)
                              drv probe ifdown ifup
       Link detected: yes

這基本上是說(從 Centos 適配器的角度來看)“我可以支持 GBEthernet,並且正在宣傳 GBEthernet,但對等方不支持 GBEthernet——所以我以 100Mbps 的速度連接”

我嘗試了多個線上論壇(包括此處)建議的各種修復方法,例如使用不同的電纜、關閉自動協商、僅宣傳 1GB 速度或手動將速度設置為 1GB。關閉 auto-neg 並嘗試幾條不同的 Cat6 電纜沒有任何效果,另外兩條根本無法建立連接。

我斷定它必須是適配器本身並訂購了一個新的適配器。安裝後,它立即以 1Gbps 的速度連接。問題解決了。

當然,這個故事的寓意是,儘管如今沒有移動元件的設備中的硬體故障很少見,但它們仍然有可能發生,應該在歸咎於軟體之前將其消除。

引用自:https://serverfault.com/questions/823822