CentOS 6 路由器/防火牆似乎限制了吞吐量
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
“硬化”包括
- 刪除一些不需要的包
- 關閉不需要的服務
- 設置 iptables 以過濾除 ssh 的一個非標準埠之外的所有傳入流量
- 安裝和配置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 的速度連接。問題解決了。
當然,這個故事的寓意是,儘管如今沒有移動元件的設備中的硬體故障很少見,但它們仍然有可能發生,應該在歸咎於軟體之前將其消除。